多次輸入輸出問題

  • 知識點概述

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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章