c - 我的 break 语句没有破坏我的代码中的 while 语句?
问题描述
我正在尝试编写一个用户可以输入正数的程序,但如果用户输入负数,则程序应该中断并打印出这些数字的最小、最大、总和和平均值。问题是,当用户输入 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: %d\n", small); // added \n so output is readable
printf("The biggest number is: %d\n ", bigg);
printf("\nThe sum of the number: %d\n", sum);
printf("The average value is: %f\n", average);
return 0;
}
还有一个小问题。我让你自己去了解。
推荐阅读
- wordpress - 如何在 WSL + VS Code 和 Docker 容器之间设置文件所有权?
- python - 带有 pytorch 的二维向量化函数
- sql-server - 当第一列有多个单词时,从一列中的字符串中删除最后一个单词并作为字符串放在现有的空列中?SQL 服务器
- amazon-web-services - 如何使用 AWS SAM 更新现有的 lambda 函数
- sas - SAS使用循环根据其他列的值添加新的多列
- javascript - 我想要使用 JS 正则表达式在字符串中出现双字符的计数
- c# - unity raycast CS1003: ',' 预期
- javascript - 如何将html信息重新加载到js文件?
- twilio - 有没有办法在不使用 webhook 的情况下获得对通过可编程消息发送的消息的响应
- bert-language-model - 在测试BERT模型期间分配权重