这个程序有点瑕疵(已标出),求改正
这个程序主要是输入正整数执行结果,输入字符和负数时,提醒你输入错误,请继续输入正数
输入字符没问题,但由于清空缓冲区,在请输入正整数的地方输入数字时要输入两遍
#include<stdio.h>
#define A 60
int main(void)
{ int s,t,m,a;
printf("请输入分钟:\n");
for(;(a=scanf("%d",&s))==0||s<0;)
{
part1: printf("请输入正整数:"); /*输入字符没问题,但由于清空缓冲区,输入数字是要输入两遍*/
fflush(stdin); /*scanf("%*[^\n]");scanf("%*c");*/
a=scanf("%d",&s);
}
for(;a==1&&s>=0;)
{ t=s/A;
m=s%A;
printf("%d分钟转化为%d小时和%d分钟\n",s,t,m);
printf("请再输入秒:\n");
a=scanf("%d",&s);
if(a==0||s<0)
goto part1;
}
printf("DONE!\n");
return 0;
} c
[解决办法]
for(;(a=scanf("%d",&s))==0
[解决办法]
s<0;)
{
part1: printf("请输入正整数:"); /*输入字符没问题,但由于清空缓冲区,输入数字是要输入两遍*/
fflush(stdin); /*scanf("%*[^\n]");scanf("%*c");*/
// a=scanf("%d",&s);
}
去掉循环里边的scanf语句,你相当于连续等待输入两次。
[解决办法]
while(!(a=scanf("%d",&s))
[解决办法]
a<0)
{
printf("请输入正整数:"); /*输入字符没问题,但由于清空缓冲区,输入数字是要输入两遍*/
fflush(stdin);
}