按递减顺序求减法

Find the subtraction in decrementing order

我一直在尝试用 C 语言编写从 n 到 0 的数字减法(我的意思是按递减顺序,如果 n 为 5,则为 5-4-3-2-1-0)。但我没有得到正确的答案。 这是我的代码,不对的地方请指正。

#include<stdio.h>

int main(void) {

    int i, n, sum;
    printf("Enter any number:");
    scanf("%d", &n);

    for(i=n; i>=0; i--) { 
        sum -= i;
    }

    printf("%d\n", sum);
}

我用相同的代码将 0 到 n 个数字相加。我做对了,根据那个代码,我尝试了减法,但没有得到正确的答案。 请帮帮我,谢谢。

首先,您必须初始化变量 sum。此外 - 当 i 为 0 时,循环不需要迭代,因为它只是从数字中减去 0。 最后一件事 - 您缺少 main 函数的 return 语句。 这段代码可以 -

#include<stdio.h>

int main(void) {

    int i, n, sum = 0;
    printf("Enter any number: ");
    scanf("%d", &n);

    for(i = n; i > 0; i--) { 
        sum -= i;
    }

    printf("%d\n", sum);
    return 0;
}
  1. 始终检查 scanf 的 return 值。
  2. sum -= i 没有意义,因为它在第一次迭代时使总和为 0。只需减小控制变量即可。
  3. 你试图在没有任何必要的情况下把它复杂化。
int main(void)
{
    int  start;
    do
    {
        printf("\nEnter number:");
    }while(scanf(" %d", &start) != 1);

    printf("\n");

    for(int current = start; current >= 0; current--) 
        printf("%d%s", current, current ? ", " : "\n");
}

https://godbolt.org/z/6bqnEr7nq

变量sum没有初始化

int i, n, sum;

所以它有一个不确定的值。结果这个语句

sum -= i;

调用未定义的行为。

您需要先将其设置为变量n的输入值。

此外,由于变量 n 具有带符号的整数类型 int,因此没有什么可以阻止用户输入负数。在这种情况下for循环将不会被执行。

如果我理解正确的话

i mean in decrementing order like if n is 5 then 5-4-3-2-1-0)

那么你的程序可以如下所示

#include<stdio.h>

int main(void) 
{
    printf( "Enter any number: " );
    
    int n = 0;
    scanf( "%d", &n );
    
    int sum = n;

    while ( n < 0 ? n++ : n-- ) sum -= n;
    
    printf( "sum = %d\n", sum );
}

如果输入数字5那么输出将是

Enter any number: 5
sum = -5

如果输入数字-5那么输出将是

Enter any number: -5
sum = 5