如何仅通过更改参数来更改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 的值。