按递减顺序求减法
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;
}
- 始终检查 scanf 的 return 值。
sum -= i
没有意义,因为它在第一次迭代时使总和为 0。只需减小控制变量即可。
- 你试图在没有任何必要的情况下把它复杂化。
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");
}
变量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
我一直在尝试用 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;
}
- 始终检查 scanf 的 return 值。
sum -= i
没有意义,因为它在第一次迭代时使总和为 0。只需减小控制变量即可。- 你试图在没有任何必要的情况下把它复杂化。
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");
}
变量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