亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 一個運行結(jié)果,怎么也想不通。請朋友們指教 [打印本頁]

作者: alarum    時間: 2004-08-10 10:07
標(biāo)題: 一個運行結(jié)果,怎么也想不通。請朋友們指教
因為不知道屬于哪類問題,只好這樣命名,請斑竹見諒。
代碼很簡單:

  1. #include <stdio.h>;
  2. #include <ctype.h>;
  3. //------------------------------------------
  4. 01void main()
  5. 02{
  6. 03        char ch;
  7. 04        int i=1;
  8. 05        while(i){
  9. 06
  10. 07                do{
  11. 08                        printf("(E) enter name\n");
  12. 09                        printf("(R) report name\n");
  13. 10                        printf("(Q) quit\n");
  14. 11                        scanf("%c",&ch);
  15. 12                        ch=toupper(ch);
  16. 13                }while(ch!='E' && ch!='R' && ch!='Q');
  17. 14
  18. 15                switch(ch){
  19. 16
  20. 17                     case 'E': printf("enter name!\n");
  21. 18                                                 break;
  22. 19                     case 'R': printf("report name!\n");
  23. 20                                                  break;
  24. 21                     case 'Q': printf("quit\n");i=0;
  25. 22                }
  26. 23        }
  27. 24}

復(fù)制代碼

但是運行結(jié)果很怪

  1. (E) enter name
  2. (R) report name
  3. (Q) quit
  4. e
  5. enter name!
  6. (E) enter name
  7. (R) report name
  8. (Q) quit
  9. (E) enter name
  10. (R) report name
  11. (Q) quit
復(fù)制代碼

為什么會顯示兩遍?
我在第11行 "scanf" 的后面加了一個printf("%d======",ch);
結(jié)果如下:


  1. (E) enter name
  2. (R) report name
  3. (Q) quit
  4. e
  5. 101====================
  6. enter name!
  7. (E) enter name
  8. (R) report name
  9. (Q) quit
  10. 10====================
  11. (E) enter name
  12. (R) report name
  13. (Q) quit
復(fù)制代碼

第二次輸出前面那個10是怎么回事?我想不通.
這段代碼在VC6.0和TC3上結(jié)果相同(WIN2K)[/quote]
作者: kj501    時間: 2004-08-10 10:37
標(biāo)題: 一個運行結(jié)果,怎么也想不通。請朋友們指教
很正常,輸入的回車也是一個字符嘛。
作者: alarum    時間: 2004-08-10 11:50
標(biāo)題: 一個運行結(jié)果,怎么也想不通。請朋友們指教
ASIC碼前幾個值的含義我忘了。如果如樓上所說的話,這個回車是很可惡的。如果寫兩個scanf就會陷入死循環(huán)。對于這個例子當(dāng)然是無所謂了,這只是個簡化的程序。可有時候他會影響程序的輸入的,有什么辦法避免這樣嗎?
作者: lchhcllch    時間: 2004-08-10 14:51
標(biāo)題: 一個運行結(jié)果,怎么也想不通。請朋友們指教
在scanf()后面加一行:

fflush(stdin);

就OK了!
作者: whyglinux    時間: 2004-08-11 03:38
標(biāo)題: 一個運行結(jié)果,怎么也想不通。請朋友們指教
>;>; 在scanf()后面加一行:
>;>; fflush(stdin);
>;>; 就OK了!

上述回答不盡正確。請參照這個帖子的說明:http://www.72891.cn/forum/v ... t=whyglinux#2335679
作者: alarum    時間: 2004-08-11 09:19
標(biāo)題: 一個運行結(jié)果,怎么也想不通。請朋友們指教
感謝大家的幫助,問題解決。




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2