首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2013-09-05 
这个程序有点瑕疵(已标出),求改正这个程序主要是输入正整数执行结果,输入字符和负数时,提醒你输入错误,请

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

热点排行