【发布时间】:2018-03-26 21:54:23
【问题描述】:
在学习 C 语言课程时,我们学习了 if/else 语句、重复、运算符、循环和 switch。
此分配的目的是让用户输入 5 个数字并返回以下输出:
显示输入的最小数字
显示输入的最大数字
显示输入的五个数字的总和
显示输入的五个数字的平均值
我知道它很长并且可能陷入困境,但它运行并适用于除重复输出零而不是实际最小数字的“最小值”之外的所有内容。不知道我在哪里出错了。任何提示都会有所帮助。
int choice = 0, number, sum = 0, count = 0, minim = 0, max = 0;
float average;
printf("Please enter your first number: ");
scanf("%i", &number);
if (number < minim) {
minim = number; }
if (max < number) {
max = number; }
count += number;
printf("Please enter your second number: ");
scanf("%i", &number);
if (number < minim) {
minim = number; }
if (max < number) {
max = number; }
count += number;
printf("Please enter your third number: ");
scanf("%i", &number);
if (number < minim) {
minim = number; }
if (max < number) {
max = number; }
count += number;
printf("Please enter your fourth number: ");
scanf("%i", &number);
if (number < minim) {
minim = number; }
if (max < number) {
max = number; }
count += number;
printf("Please enter your fifth number: ");
scanf("%i", &number);
if (number < minim) {
minim = number; }
if (max < number) {
max = number; }
count += number;
sum += count;
average = sum / 5;
while (choice != -1) {
printf("\n\nChoose an option from the menu below to see the results (1,2,3,4) or use (-1) to exit:\n");
printf("1. Smallest number entered\n");
printf("2. Largest number entered\n");
printf("3. Sum of the five numbers entered\n");
printf("4. Average of the five numbers entered\n\n");
printf("\nEnter your selection: ");
scanf("%i", &choice);
switch (choice) {
case 1:
printf("\n The smallest number entered is %i\n", minim);
break;
case 2:
printf("\n The largest number entered is %i\n", max);
break;
case 3:
printf("\n The sum of the five numbers entered is %i\n", sum);
break;
case 4:
printf("\n The average of the five numbers entered is %.2lf\n", average);
break;
default:
printf("Incorrect menu option selected.\n");
}
}
printf("\nThank you for your time. Exiting program.\n");
}
【问题讨论】:
-
将
minim初始化为一个非常大的数字。例如:INT_MAX在limits.h 中。 (另外,你说你已经学会了循环。这将是一个使用循环的好地方。) -
问题(没有深入研究代码)似乎是您将
minim变量初始化为0。当这与用户输入进行比较时,它几乎总是会失败,因为检查 (userInput -
...和
max = INT_MIN; -
除此之外,我很好奇为什么每个条目都有
count += number;,最后是sum += count;,什么时候可以使用sum += number并摆脱count。 -
为了便于阅读和理解:1) 遵循公理:每行只有一个语句,并且(最多)每条语句一个变量声明。(考虑右大括号' }' 作为单独的语句。2)通过单个空行分隔代码块(
forifelsewhiledo...whileswitchcasedefault)