如何仅通过更改参数来更改C中变量的值
How do I change the value of variable in C just by changing the parameter
我希望能够让变量不断变化。
现在他们依赖于一个参数但是当我改变那个参数时没有任何改变,
下面是我的代码。
#include <stdio.h>
#include <cs50.h>
int main(void)
{
int n;
do
{
printf ("Please put in a positive number no larger than 24.");
n = GetInt();
}
while (n < 0 || n > 23);
int rownumber = 0;
int numberofhashes = rownumber + 2;
int numberofspaces = rownumber + 1 - numberofhashes;
while (rownumber < n)
{
printf ("rownumber is %d", rownumber);
printf ("hashes # is %d", numberofhashes);
printf ("numerofspaces is %d", numberofspaces);
while (numberofspaces > 0)
{
printf ("passed");
printf (" ");
numberofspaces = numberofspaces - 1;
}
while (numberofhashes > 0)
{
printf ("passed");
printf ("#");
numberofhashes = numberofhashes - 1;
}
rownumber = rownumber + 1;
printf ("\n");
}
}
(如果你想知道,来自 CS 50 的项目,出于某种原因我不能 post 到那些论坛)
我将 numberofhashes 和 numberofspaces 设置为依赖于行号,但显然它们没有改变,然后我更改了行号。请帮忙!
编辑:伙计们,感谢您的回复,我能够修复它,除了,现在它打印金字塔全错了。正在打印
##
###
####
#####
而不是
##
###
####
#####
就像它应该的那样。
所以,这里又是代码。另外,我是新手,所以请告诉我是否不喜欢此类后续问题。
#include <stdio.h>
#include <cs50.h>
int main(void)
{
int n;
do
{
printf ("Please put in a positive number no larger than 24.");
n = GetInt();
}
while (n < 0 || n > 23);
int rownumber = 0;
int numberofhashes = rownumber + 2;
int numberofspaces = rownumber + 1 - numberofhashes;
while (rownumber < n)
{
numberofhashes = rownumber + 2;
numberofspaces = rownumber + 1 - numberofhashes;
while (numberofspaces > 0)
{
printf (" ");
numberofspaces = numberofspaces - 1;
}
while (numberofhashes > 0)
{
printf ("#");
numberofhashes = numberofhashes - 1;
}
rownumber = rownumber + 1;
printf ("\n");
}
}
编辑:问题已解决。
您写道:
int numberofhashes = rownumber + 2;
int numberofspaces = rownumber + 1 - numberofhashes;
这意味着:
numberofspaces = rownumber + 1 - (rownumber + 2) = rownumber + 1 - rownumber - 2 = -1
numberofspaces
将始终为负数。
你怎么能进入while?
while (numberofspaces > 0)
我认为您的代码中有一些逻辑问题需要修复。
你的问题似乎是基于对你的代码正在做什么的根本误解。你似乎相信这条线
int numberofhashes = rownumber + 2;
应该创造某种连续的'dependency';也就是说,每次rownumber
变化,numbernumberofhashes
的值也要随之变化。
这不是 C 的工作方式;该语句的作用是将 numberofhashes
的值设置为等于 rownumber + 2
的值,仅在那个时刻 .
如果你希望 numberofhashes 不断地变为 rownumber + 2,那么你需要包含语句
numberofhashes = rownumber + 2;
循环中内部的某处。这样,每次循环执行时,都会重新评估您的语句并更新 numberofhashes
的值。
我希望能够让变量不断变化。 现在他们依赖于一个参数但是当我改变那个参数时没有任何改变, 下面是我的代码。
#include <stdio.h>
#include <cs50.h>
int main(void)
{
int n;
do
{
printf ("Please put in a positive number no larger than 24.");
n = GetInt();
}
while (n < 0 || n > 23);
int rownumber = 0;
int numberofhashes = rownumber + 2;
int numberofspaces = rownumber + 1 - numberofhashes;
while (rownumber < n)
{
printf ("rownumber is %d", rownumber);
printf ("hashes # is %d", numberofhashes);
printf ("numerofspaces is %d", numberofspaces);
while (numberofspaces > 0)
{
printf ("passed");
printf (" ");
numberofspaces = numberofspaces - 1;
}
while (numberofhashes > 0)
{
printf ("passed");
printf ("#");
numberofhashes = numberofhashes - 1;
}
rownumber = rownumber + 1;
printf ("\n");
}
}
(如果你想知道,来自 CS 50 的项目,出于某种原因我不能 post 到那些论坛)
我将 numberofhashes 和 numberofspaces 设置为依赖于行号,但显然它们没有改变,然后我更改了行号。请帮忙!
编辑:伙计们,感谢您的回复,我能够修复它,除了,现在它打印金字塔全错了。正在打印
##
###
####
#####
而不是
##
###
####
#####
就像它应该的那样。
所以,这里又是代码。另外,我是新手,所以请告诉我是否不喜欢此类后续问题。
#include <stdio.h>
#include <cs50.h>
int main(void)
{
int n;
do
{
printf ("Please put in a positive number no larger than 24.");
n = GetInt();
}
while (n < 0 || n > 23);
int rownumber = 0;
int numberofhashes = rownumber + 2;
int numberofspaces = rownumber + 1 - numberofhashes;
while (rownumber < n)
{
numberofhashes = rownumber + 2;
numberofspaces = rownumber + 1 - numberofhashes;
while (numberofspaces > 0)
{
printf (" ");
numberofspaces = numberofspaces - 1;
}
while (numberofhashes > 0)
{
printf ("#");
numberofhashes = numberofhashes - 1;
}
rownumber = rownumber + 1;
printf ("\n");
}
}
编辑:问题已解决。
您写道:
int numberofhashes = rownumber + 2;
int numberofspaces = rownumber + 1 - numberofhashes;
这意味着:
numberofspaces = rownumber + 1 - (rownumber + 2) = rownumber + 1 - rownumber - 2 = -1
numberofspaces
将始终为负数。
你怎么能进入while?
while (numberofspaces > 0)
我认为您的代码中有一些逻辑问题需要修复。
你的问题似乎是基于对你的代码正在做什么的根本误解。你似乎相信这条线
int numberofhashes = rownumber + 2;
应该创造某种连续的'dependency';也就是说,每次rownumber
变化,numbernumberofhashes
的值也要随之变化。
这不是 C 的工作方式;该语句的作用是将 numberofhashes
的值设置为等于 rownumber + 2
的值,仅在那个时刻 .
如果你希望 numberofhashes 不断地变为 rownumber + 2,那么你需要包含语句
numberofhashes = rownumber + 2;
循环中内部的某处。这样,每次循环执行时,都会重新评估您的语句并更新 numberofhashes
的值。