我一直在尝试编写这个程序,它接受任意数量的整数,直到条件为真,使用do while循环,但即使满足条件,循环也会终止。我无法理解代码中的缺陷......我会感谢任何帮助
#include<stdio.h>
#include<conio.h>
int main()
{
int max,min,test;
char next;
printf("enter an integer:\n");
scanf("%d",&max);
min=max;
do
{
printf("enter next integer:\n");
scanf("%d",&test);
if(test>max)
max=test;
else if(test<min)
min=test;
printf("want to enter next number y/n\n");
scanf("%c",&next);
}while(next=='y');
printf("Maximum=%d\nMinimum=%d\nRange=%d\n",max,min,max-min);
getch();
}
答案 0 :(得分:1)
试试这个......
#include<stdio.h>
#include<conio.h>
int main()
{
int max,min,test;
char next;
printf("enter an integer:\n");
scanf("%d",&max);
min=max;
do
{
printf("enter next integer:\n");
scanf("%d",&test);
getchar(); // added this
if(test>max)
max=test;
else if(test<min)
min=test;
printf("want to enter next number y/n\n");
scanf("%c",&next);
}while(next=='y');
printf("Maximum=%d\nMinimum=%d\nRange=%d\n",max,min,max-min);
getch();
}
在您按输入后输入测试后,您的代码将输入作为新行字符。要避免这种情况,请通过 getchar()获取新行字符。
答案 1 :(得分:1)
通过scanf()
读取输入时,它不会消耗返回键,因此'\ n'将保留在stdin
中,等待读取下一个char
输入。这就是你的程序失控的原因。因此,要避免此问题,请在getchar()
之后使用scanf("%d",&test);
。
答案 2 :(得分:-1)
在 else if (condition)
中您编写了test<min
,其中变量min
没有任何值。你应该写
else if(test<max)
(
min = test
)