problem description
hoho,終於從speakless手上贏走了所有的糖果,是gardon吃糖果時有個特殊的癖好,就是不喜歡將一樣的糖果放在一起吃,喜歡先吃一種,下一次吃另一種,這樣;可是gardon不知道是否存在一種吃糖果的順序使得他能把所有糖果都吃完?請你寫個程式幫忙計算一下。
input
第一行有乙個整數t,接下來t組資料,每組資料佔2行,第一行是乙個整數n(0#includeusing namespace std;
分類: linux基礎
c語言2013-01-25 20:46
1652人閱讀
收藏 舉報
scanf()
函式是格式化輸入函式,它從標準輸入裝置(鍵盤) 讀取輸入的資訊。
其呼叫格式為: scanf("格式化字串》",《位址表》);
格式化字串包括以下三類不同的字元;
1、 格式化說明符:
格式化說明符與printf()函式中的格式說明符基本相同。但和printf()函式中格式字串的用法有一些小區別。我們來看下面這個表。
格式字元 說明
%d 從鍵盤輸入十進位制整數
%o 從鍵盤輸入八進位制整數
%x 從鍵盤輸入十六進製制整數
%c 從鍵盤輸入乙個字元
%s 從鍵盤輸入乙個字串
%f 從鍵盤輸入乙個實數
%e 與%f的作用相同
附加格式說明字元表
字元 說明
l 輸入"長"資料
h 輸入"短"資料
m 指定輸入資料所佔寬度
* 空讀乙個資料
2、 空白字元: 空白字元會使scanf()函式在讀操作中略去輸入中的乙個或多個空白字元。
3、 非空白字元: 乙個非空白字元會使scanf()函式在讀入時剔除掉與這個非空白字元相同的字元。
位址表是需要讀入的所有變數的位址,而不是變數本身。這與printf()函式完全不同,要特別注意。各個變數的位址之間同","分開。
首先我們來看一下格式化說明符「%d」,從鍵盤輸入乙個十進位制整數,當多個輸入時,採用乙個或多個空格做為分隔符,看下面的例子:
執行結果如下:
分析如下:
scanf格式化輸入中有多個空格和』\n』,但是我們採用的是%d格式化輸入,所以空格和』\n』等轉義字元是沒有讀入的,這裡有乙個」%*3d」,意思是跳過輸入的前三個整型數字,從第四個數字開始讀入,所以我們輸入「432432432」,輸出的卻是432432,而不是432432432.
有同學就要問了,為什麼輸入「432432432」後還有輸入乙個字母』d』呢?其實這個地方輸入任何乙個非空位元組都是可以的。因為scanf必須從緩衝區讀入乙個非空字元再回車才會重新整理緩衝區,這裡scanf已經把「432432432」讀入變數,緩衝區裡就為空了,所以必須輸入乙個非空位元組,這樣按回車才會結束scanf輸入。
好,下面我們來看」%c」,還是先寫乙個例子:
執行結果如下:
分析:這裡一目了然,採用「%c」輸入時,scanf不僅會讀入非空字元,遇到空字元他也會讀入。
再看乙個例子:
#include
void main()
本例表示scanf格式控制串"%c %c"之間有空格時, 輸入的資料之間可以有空格間隔。這時候我們應該這樣輸入』a』空格』b』。
下面看一下」%s」,遇到空格換行等轉義字元不讀入,
分析:這裡一目了然,採用「%c」輸入時,scanf不僅會讀入非空字元,遇到空字元他也會讀入。
再看乙個例子:
#include
void main()
本例表示scanf格式控制串"%c %c"之間有空格時, 輸入的資料之間可以有空格間隔。這時候我們應該這樣輸入』a』空格』b』。
下面看一下」%s」,遇到空格換行等轉義字元不讀入,
執行結果如下:
能不能,不再只是競賽?
其實作為一名蒟蒻應該是沒有資格來說這個的,而下午看了一系列的文章之後,我還是憋不住來寫這篇東西。感謝自家老媽,把這篇文章發到了我的手機上 一開始看到,我也是驚了一下,歐美已經開始工業革命4.0了?粗略一翻,看到一句話,這次不帶上中國,更是驚了一下。我想每個oier踏上這條路,並且堅持下去都會有乙個說...
測試能不能發文章
本markdown編輯器使用stackedit修改而來,用它寫部落格,將會帶來全新的體驗哦測試一下能不能使用 markdown和擴充套件markdown簡潔的語法 塊高亮 latex數學公式 uml序列圖和流程圖 離線寫部落格 匯入匯出markdown檔案 豐富的快捷鍵 markdown 是一種輕量...
試試能不能獲取積分
建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...