有谁可以告诉我为什么输入的正确值没有存储在这个程序中?
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num, sum=0;
printf("Enter the number: ");
while(num!=0)
{
sum = sum+num;
scanf("%d", &num);
}
printf("Answerr = %d", sum);
return 0;
}
这是输出:
Enter the number: 2 0 Sum = 10
答案 0 :(得分:3)
更好:
num= 0;
do
{
scanf("%d", &num);
sum = sum+num;
} while(num!=0);
请注意,num
的初始化仍然需要scanf
可能会失败,这不会影响num
。
答案 1 :(得分:2)
你无法知道这部分究竟会做什么:
while (num != 0)
{
sum = sum + num;
scanf("%d", &num);
}
因为num
未初始化,因此您要向sum
添加一个您不知道的值。将其更改为:
while(num != 0)
{
scanf("%d", &num);
sum = sum + num;
}
这样num
在您添加时就会有一个值,并且还会将num
初始化为与0
不同的值,例如:
int num = 2;
这样您的while
循环至少会执行一次(换句话说,这样您就有机会阅读num
)。
更好的方法是使用这样的do-while循环:
int num = 0;
do
{
scanf("%d", &num);
sum = sum + num;
}while (num != 0);
以确保您的循环至少执行一次。即使采用这种方法,您仍应初始化num
以防scanf
失败(因此num
无法获取值)。
为了检查scanf
的返回值,请使用以下代码:
if ( scanf("%d", &num) == 1)
sum = sum + num;
答案 2 :(得分:0)
将您的代码更改为:
int main()
{
int num = 0, sum = 0;
printf("Enter the number: ");
do
{
scanf_s("%d", &num);
sum = sum + num;
} while (num != 0);
printf("Answer = %d", sum);
return 0;
}
我将while
循环替换为do while
循环。您已初始化sum
,否则您将在首次运行中使用未定义的值(如果使用while
循环)。
答案 3 :(得分:0)
变量num
未初始化。结果,循环具有未定义的行为。您还应该在添加值之前检查输入是否有效。考虑到标题<stdlib.h>
中的声明均未使用。所以你可以删除标题。
程序可以按以下方式查看
#include <stdio.h>
int main( void )
{
long long int sum = 0;
while ( 1 )
{
int num;
printf( "Enter number (0 - exit): " );
if ( scanf( "%d", &num) != 1 || num == 0 ) break;
sum += num;
}
printf( "\nAnswer = %lld\n", sum );
return 0;
}
或者您可以在循环之前放置提示,例如
#include <stdio.h>
int main( void )
{
long long int sum = 0;
printf( "Enter numbers (0 - exit): " );
while ( 1 )
{
int num;
if ( scanf( "%d", &num) != 1 || num == 0 ) break;
sum += num;
}
printf( "\nAnswer = %lld\n", sum );
return 0;
}
根据C标准函数main,不带参数应声明为
int main( void )
答案 4 :(得分:0)
您在读取之前添加num的值 喜欢这个
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num, sum=0;
printf("Enter the number: ");
do{
scanf("%d", &num);
sum = sum+num;
}
while(num!=0);
printf("Answerr = %d", sum);
return 0;
}