本代码执行它应该做的事情,只要你真的输入一个整数,因为它在第10行问你,但如果你输入一个不是整数的字母,它只打印出10行和14一遍又一遍我真的不明白为什么,在它再次执行之前不应该检查while循环的条件吗?
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <time.h>
4
5 int raten(int zuErraten){
6 int geraten = 0, check = 1, versuche = 0;
7 while (versuche < 100 || geraten != zuErraten) {
8 versuche++;
9 printf("%i\n", versuche);
10 printf("Gib eine Zahl zwischen 1 und 100 ein:\n");
11 check = scanf("%i", &geraten);
12
13 if (check == 0) {
14 printf("Gib lediglich eine Zahl ein und drücke Enter:\n");
15 check = 1;
16 geraten = 0;
17 continue;
18 }
19
20 if (geraten < 1 || geraten > 100){
21 printf("Die Zahl sollte wirklich zwischen 1 und 100 sein, wobei 1 und 100 auch erlaubt sind!\n");
22 continue;
23 }
24
25 if (geraten < zuErraten) {
26 printf("Du hast %i geraten, diese Zahl ist leider zu klein!\n", geraten);
27 }
28
29 if (geraten > zuErraten) {
30 printf("Du hast %i geraten, diese Zahl ist leider zu groß!\n", geraten);
31 }
32
33 }
34
35 return versuche;
36 }
37
38 int main (int argc, char **argv){
39 time_t t;
40 srand((unsigned) time(&t));
41 int zuErraten, geraten, versuche;
42
43 zuErraten = (rand()%100) + 1;
44 printf("%i\n", zuErraten);
45 versuche = raten(zuErraten);
46 printf("Herrzlichen Glückwunsch, du hast die Zahl erraten.\nDu hast dafür %i Versuche gebraucht!\n", versuche);
47 }