【发布时间】:2022-09-22 21:04:44
【问题描述】:
我目前正在尝试制作一个数字伪计算器,它应该添加任意数量的整数,直到给出负数,然后将添加的整数数量、最大、最小、平均值相加,并计算给定的整数数量.我已经设法做到了所有这些,现在我应该在不使用无限循环的情况下循环它,我已经尝试了几个小时,但我就是想不通。我尝试让代码回到开头,但这似乎不起作用。我想知道是否有可能使代码返回到开头,或者是否存在另一种使其循环的方法。
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int number = 0;
int big = -1;
int small = -1;
float average = 0;
int sum = 0;
int counter = 0;
do
{
printf(\"Enter a number: \");
scanf_s(\"%d\", &number);
if (number < 0)
break;
sum += number;
if (big == -1 || number > big)
{
big = number;
}
if (small == -1 || number < small)
{
small = number;
}
counter++;
average = (float) sum / counter;
printf(\"sum =%d, big = %d, small = %d, counter = %d\", sum, big, small, counter);
printf(\"average = %.2f\", average);
} while (number >= 0);
int yes = 1;
int no = 0;
printf(\"Would you like to run the program again (1 for yes, 0 for no)?: \");
scanf_s(\"%d, %d\", &yes, &no);
if (yes == 1 || no != 1)
{
goto main;
}
else
return 0;
}
-
像其他人一样使用 while 循环
-
“回到起点”是什么意思?如果您尝试递归调用
main,那将是一个坏主意。循环是你的朋友。使用goto被广泛反对。仅在有充分理由的情况下使用它。更换一个简单的循环不是这样的原因。 -
另外:我不明白最后一个
scanf_s(\"%d, %d\", &yes, &no);的意图,它需要像1,0这样的输入,而不是提示要求的简单1或0。 -
@pmg:\“...不使用无限循环\”。 ;)
-
正如pmg 所指出的,您可以提取一个方法并使用
for或while循环多次调用该方法。您将在主循环中留下“您想再次运行程序吗”部分并将其结果用作循环的退出条件;您也可以使用break或do...while构造。
标签: c loops nested-loops do-while