gpt4 book ai didi

c - 如果语句没有被捕获

转载 作者:行者123 更新时间:2023-11-30 18:19:36 25 4
gpt4 key购买 nike

我一生都无法弄清楚为什么 C 会忽略我的 if 语句。

当输入为-1000时,我试图跳过while语句中的所有过程(以便在退出程序之前不会打印)。这是我的代码:

int main()
{
int count = 1;
int grade1;
int grade2;
double sum;
double average;

printf("Please input a number of grades: \n");

scanf("%d", &grade1);
printf("Sum is: %d.000000 \n", grade1);
printf("Average is: %d.000000 \n", grade1);
count++;

sum = grade1;

while(grade2 != -1000)
{
if(grade2 != -1000)
{
scanf("%d", &grade2);

sum = sum + grade2;
average = sum / count;

printf("Sum is: %lf \n", sum);
printf("Average is: %lf \n", average);

grade1 = sum; //Converting the sum back into an int
count++;
}
}
return 0;
}

enter image description here

这是我的输出图像的链接。正如你所看到的,即使 Grade2 被赋予 -1000,if 语句也会被忽略,并且在程序退出之前另外 2 行会被打印到屏幕上。我怎样才能解决这个问题?这是 C 的工作方式的某种奇怪之处吗?

最佳答案

当你第一次这样做时

  while(grade2 != -1000) 

变量grade2未初始化。

因此您的代码具有未定义的行为

确保将其初始化为:

int grade2 = 0; // To zero or whatever you want

此外 - 始终检查 scanf 返回的值。所以而不是

scanf("%d", &grade1);

if (scanf("%d", &grade1) != 1)
{
// Add error handling here
}

你的下一个问题是你在检查grade2是否为-1000之前没有扫描它。将扫描移到 if 语句之前。

也许你想做的是:

  int grade2 = 0;
while(grade2 != -1000)
{
if (scanf("%d", &grade2) != 1)
{
// Add error handling here
}
if(grade2 != -1000)
{
...

以便您在执行 if(grade2 != -1000) 并输入计算代码之前扫描第一个 grade2

换一种写法,这可能是:

  while(1) 
{
if (scanf("%d", &grade2) != 1)
{
// Add error handling here
}
if(grade2 == -1000) break; // Terminate the while

sum = sum + grade2;
....

关于c - 如果语句没有被捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48552293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com