基本上我在C中有这个分配,我必须输入数字直到我输入0,并且在我输入0之后我必须从所有这些数字打印第1和第2分钟数,我不能使用数组。我得到了我必须使用do-while循环进行输入,但我无法弄清楚如何从所有这些中找到两个最小的。我认为可以使用if循环但不知道如何制作它,因为我只有一个变量来输入数字(int a)。在输入中,当我输入0时我有错误。我可以在程序退出之前再输入一个数字。
#include <stdio.h>
int main() {
int a;
do {
printf("Enter numbers: ");
scanf("%d\n", &a);
//what to do here
}while(a != 0);
答案 0 :(得分:3)
您需要添加2个变量来保存到目前为止检测到的最小值。像
int smallest = INT_MAX;
int second_smallest = INT_MAX;
然后在循环中,您需要测试新输入值是否小于目前存储的值。类似的东西:
if (a <= smallest)
{
second_smallest = smallest;
smallest = a;
}
else if (a < second_smallest)
{
second_smallest = a;
}
答案 1 :(得分:0)
您可以使用两个变量来完成您需要的操作
#include <stdio.h>
#include <limits.h>
int main(void)
{
int a = INT_MAX;
int min_1 = INT_MAX;
int min_2 = INT_MAX;
int valid;
do
{
if (a < min_1)
{
min_2 = min_1;
min_1 = a;
}
else if (a < min_2)
{
min_2 = a;
}
printf("Enter numbers: ");
valid = scanf("%d", &a);
}
while ((a != 0) && (valid == 1));
if (valid == 1)
{
printf("Minimum numbers entered are: %d %d\n", min_1, min_2);
}
else
{
fprintf(stderr, "Error in data input\n");
}
}
所以:
limits.h
定义初始化最小变量为int
类型INT_MAX
的最高值。 scanf
返回值。\n
。scanf
醇>