luors 发表于 2020-1-15 21:23:06

请教一下大家~~

s1e14的一课后题,输入数值和字符时,情况是正常的。但回车,或TAB键,程序会卡着不动,请教一下为什么会卡一下?还有为什么输入0也会退出。

4goodworld 发表于 2020-1-15 21:30:20

我感觉死循环了

jackz007 发表于 2020-1-15 22:04:42

      楼主试试这个代码,只要不能从键盘输入中提取到整型数就会立即结束循环。
#include <stdio.h>

main(void)
{
      int k                                                       ;
      char s                                                ;
      for(;;) {
                fgets(s , 82 , stdin)                               ;
                if (sscanf(s , "%d" , & k) == 1) printf("%d\n" , k) ;
                else break                                          ;
      }
      printf("\n")                                                ;
}

sunrise085 发表于 2020-1-15 22:27:12

是因为tab和回车呗scanf认为是空白符跳过去了。所以等着你输入。
#include <stdio.h>

int main()
{
    int c,i,num=0,flag;
    do{
      printf("请输入一个整数:");
      flag=scanf("%d",&i);
    }
    while((flag==1)&&(num=num+i));
    printf("%d",num);

    return 0;
}
页: [1]
查看完整版本: 请教一下大家~~