读书人

这个程序有些瑕疵(已标出)求改正

发布时间: 2013-09-05 16:02:07 作者: rapoo

这个程序有点瑕疵(已标出),求改正
这个程序主要是输入正整数执行结果,输入字符和负数时,提醒你输入错误,请继续输入正数
输入字符没问题,但由于清空缓冲区,在请输入正整数的地方输入数字时要输入两遍
#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);
}

[解决办法]
rewind(stdio);

读书人网 >C语言

热点推荐