我的中断语句它没有破坏我的代码中的 while 语句?

  • 本文关键字:语句 代码 while 中断 c
  • 更新时间 :
  • 英文 :


我试图编写一个程序,用户可以在其中输入正数,但如果用户输入负数,程序应该分解并打印出这些数字的最小值、最大值、和值和平均值。问题是,当用户输入0并且在while函数之后不运行代码时,代码会中断。

#include <stdio.h>
int main(void) {
int integer, small, bigg, sum, i;
float average;
while (1) {
printf("Enter an integer: ");
scanf_s("%d", &integer);
i++;
integer = bigg = small;
if (integer > bigg) {
bigg = integer;
}
if (integer < small) {
small = integer;
}
sum = integer + sum;
average = sum / i;
if (integer < 1) {
break;
}
}
printf("The smallest number is: %d", small);
printf("The biggest number is: %d", bigg);
printf("nThe sum of the number: %d", sum);
printf("The average value is: %f", average);
return 0;
}

默认情况下,局部变量不会初始化。最初,它们的值是不确定的。还有一些其他问题(请参阅注释了解解释(。

你想要这样的东西:

#include <stdio.h>
#include <limits.h>     // needed for INT_MAX and INT_MIN constants
int main(void) {
int integer;
int small = INT_MAX;   // initialize to biggest possible number
int bigg = INT_MIN;    // initialize to smallest possible number
int sum = 0;           // initialize to 0
int i = 0;             // initialize to 0
float average;
while (1) {
printf("Enter an integer: ");
scanf_s("%d", &integer);
i++;
//// integer = bigg = small;    // this statement is pointless, it just
// overwrites integer inputted 2 lines above
if (integer > bigg) {
bigg = integer;
}
if (integer < small) {
small = integer;
}
sum = integer + sum;
average = (float)sum / i;    // (float)sum : converts to float prior to division
// because otherwise we'd have an integer division
if (integer < 1) {
break;
}
}
printf("The smallest number is: %dn", small);  // added n so output is readable
printf("The biggest number is: %dn  ", bigg);
printf("nThe sum of the number: %dn", sum);
printf("The average value is: %fn", average);
return 0;
}

还有一个小问题。我让你自己发现。

最新更新