- 知識點概述
EOF初見面,鍵盤緩存區,if循環的逗號表達式
- 知識點詳解
1、可嘗試用EOF來作爲循環結束標誌,EOF在Windows中爲Ctrl+C ,在 Unix中一般是Ctrl+C,說的簡單一點也就是,只要你不在Windows系統中使用Ctrl+C,循環就會一直執行,不會出現“按任意鍵繼續”(表示編譯結束)。
2、並且要麼明確一點,在喫回車的那一節博客中也講到c語言在讀取鍵盤數據時,一般是帶緩存的數據輸入。如用戶在按回車之前輸入了不止一個字符,其他字符會保留在鍵盤緩存區中。而C語言一般以回車作爲輸入結束標誌。所以只要你不輸入回車,輸入很多次的數據時,會發現編譯器完成了很多次的打印,你以爲編譯器是一次循環,但仔細思考會發現,編譯器其實已經完成了很多次循環。
3、在if循環中每個語句都很簡短時,可嘗試使用if的逗號表達式,他更爲簡潔,個人覺得看起來也比較舒服,尤其是在代碼很長時,更體現了其優越性。沒有了大括號,用逗號隔開每句話,以分號作爲結束標誌。如: if(a>b) tmp=a,a=b,b=tmp;
可嘗試帶着思考完成下面的一道題:
- Description
輸入三個字符後,按各字符的ASCII碼從小到大的順序輸出這三個字符。
- Input
輸入數據有多組,每組佔一行,有三個字符組成,之間無空格。
- Output
對於每組輸入數據,輸出一行,字符中間用一個空格分開。
- Sample Input
qwe asd zxc
- Sample Output
e q w
a d s
c x z
- 答案示例
#include <stdio.h>
int main()
{
char a,b,c,temp;
while(scanf("%c%c%c%*c",&a,&b,&c)!=EOF) //用"%*c"(空字符,不存儲字符的字符)喫掉回車
{
if(a>b) temp=a,a=b,b=temp; //if的逗號表達式,看起來簡潔多了
if(a>c) temp=a,a=c,c=temp;
if(b>c) temp=b,b=c,c=temp;
printf("%c %c %c\n",a,b,c);
}
return 0;
}