while中同时使用scanf和break的易错点


1
#include <iostream> 2 #include <cstdio> 3 using namespace std; 4 /* run this program using the console pauser or add your own getch, system("pause") or input loop */ 5 6 int main(int argc, char** argv) { 7 int n, difficulty; 8 bool flag = true; 9 while(scanf("%d", &n) != EOF){ 10 while(n){ 11 n--; 12 scanf("%d", &difficulty); 13 if(difficulty){ 14 flag = false; 15 //break;不可以写break,一旦写了break,一遇到1就跳出,输入行的1后的其余部分被认为是下次输入 16 } 17 } 18 if(!flag) 19 printf("HARD\n"); 20 else 21 printf("EASY\n"); 22 flag = true; 23 } 24 }

如果加入了break,当输入为

4

0 1 0 1

输出为

HEAD

EASY

(等待输入一个数字)

 

原因是当检测到1break跳出while(n)循环

输出HEAD

n被0赋值

输出EASY

n被1赋值

等待输入一个数字

当在输入一个1时,会输出

HEAD

posted @ 2019-10-24 23:25  DriftingAE86  阅读(361)  评论(0)    收藏  举报