首頁 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡(luò)課程 模擬考試 考友錄 實(shí)用文檔 求職招聘 論文下載
2011中考 | 2011高考 | 2012考研 | 考研培訓(xùn) | 在職研 | 自學(xué)考試 | 成人高考 | 法律碩士 | MBA考試
MPA考試 | 中科院
四六級 | 職稱英語 | 商務(wù)英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT
新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學(xué)習(xí) | 法語 | 德語 | 韓語
計(jì)算機(jī)等級考試 | 軟件水平考試 | 職稱計(jì)算機(jī) | 微軟認(rèn)證 | 思科認(rèn)證 | Oracle認(rèn)證 | Linux認(rèn)證
華為認(rèn)證 | Java認(rèn)證
公務(wù)員 | 報(bào)關(guān)員 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 期貨從業(yè)資格 | 司法考試 | 法律顧問 | 導(dǎo)游資格
報(bào)檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務(wù)師 | 跟單員 | 單證員 | 物流師 | 價格鑒證師
人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業(yè)資格 | 廣告師職業(yè)水平
駕駛員 | 網(wǎng)絡(luò)編輯
衛(wèi)生資格 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 執(zhí)業(yè)護(hù)士
會計(jì)從業(yè)資格考試會計(jì)證) | 經(jīng)濟(jì)師 | 會計(jì)職稱 | 注冊會計(jì)師 | 審計(jì)師 | 注冊稅務(wù)師
注冊資產(chǎn)評估師 | 高級會計(jì)師 | ACCA | 統(tǒng)計(jì)師 | 精算師 | 理財(cái)規(guī)劃師 | 國際內(nèi)審師
一級建造師 | 二級建造師 | 造價工程師 | 造價員 | 咨詢工程師 | 監(jiān)理工程師 | 安全工程師
質(zhì)量工程師 | 物業(yè)管理師 | 招標(biāo)師 | 結(jié)構(gòu)工程師 | 建筑師 | 房地產(chǎn)估價師 | 土地估價師 | 巖土師
設(shè)備監(jiān)理師 | 房地產(chǎn)經(jīng)紀(jì)人 | 投資項(xiàng)目管理師 | 土地登記代理人 | 環(huán)境影響評價師 | 環(huán)保工程師
城市規(guī)劃師 | 公路監(jiān)理師 | 公路造價師 | 安全評價師 | 電氣工程師 | 注冊測繪師 | 注冊計(jì)量師
繽紛校園 | 實(shí)用文檔 | 英語學(xué)習(xí) | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲

2011等考C語言:輸入輸出函數(shù)及控制流程語句

考試吧整理了2011計(jì)算機(jī)等級考試二級C語言基礎(chǔ)教程,幫助考生備考。

  二、scanf()函數(shù)

  scanf()函數(shù)是格式化輸入函數(shù), 它從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤) 讀取輸入的信息。

  其調(diào)用格式為:

  scanf("<格式化字符串>", <地址表>);

  格式化字符串包括以下三類不同的字符;

  1. 格式化說明符: 格式化說明符與printf()函數(shù)中的格式說明符基本相同。

  2. 空白字符: 空白字符會使scanf()函數(shù)在讀操作中略去輸入中的一個或多 個空白字符。

  3. 非空白字符: 一個非空白字符會使scanf()函數(shù)在讀入時剔除掉與這個非空白字符相同的字符。

  地址表是需要讀入的所有變量的地址, 而不是變量本身。這與printf()函數(shù)完全不同, 要特別注意。各個變量的地址之間同","分開。

  例2:

  main()

  {

  int i, j;

  printf("i, j=?\n");

  scanf("%d, %d", &i, &j);

  }

  上例中的scanf()函數(shù)先讀一個整型數(shù), 然后把接著輸入的逗號剔除掉, 最后讀入另一個整型數(shù)。如果","這一特定字符沒有找到, scanf()函數(shù)就終止。若參數(shù)之間的分隔符為空格, 則參數(shù)之間必須輸入一個或多個空格。

  說明:

  (1). 對于字符串?dāng)?shù)組或字符串指針變量, 由于數(shù)組名和指針變量名本身就是地址, 因此使用scanf()函數(shù)時, 不需要在它們前面加上"&"操作符。

  例3

  mian()

  {

  char *p, str[20];

  scanf("%s", p); /*從健盤輸入字符串*/

  scanf("%s", str);

  printf("%s\n", p); /*向屏幕輸出字符串*/

  printf("%s\n", str);

  }

  (2). 可以在格式化字符串中的"%"各格式化規(guī)定符之間加入一個整數(shù), 表示任何讀操作中的最大位數(shù)。

  如例3中若規(guī)定只能輸入10字符給字符串指針p, 則第一條scanf() 函數(shù)語句變?yōu)?/P>

  scanf("%10s", p);

  程序運(yùn)行時一旦輸入字符個數(shù)大于10, p就不再繼續(xù)讀入, 而后面的一個讀入函數(shù)即scanf("%s", str)就會從第11個字符開始讀入。

  實(shí)際使用scanf()函數(shù)時存在一個問題, 下面舉例進(jìn)行說明:

  當(dāng)使用多個scanf()函數(shù)連續(xù)給多個字符變量輸入時, 例如:

  main()

  {

  char c1, c2;

  scanf("%c", &c1);

  scanf("%c", &c2);

  printf("c1 is %c, c2 is %c", c2\1, c2);

  }

  運(yùn)行該程序, 輸入一個字符A后回車 (要完成輸入必須回車), 在執(zhí)行scanf ("%c", &c1)時, 給變量c1賦值"A", 但回車符仍然留在緩沖區(qū)內(nèi), 執(zhí)行輸入語句 scanf("%c", &c2)時, 變量c2輸出的是一空行, 如果輸入AB后回車, 那么輸出結(jié)果為: c1 is A, c2 is B。

  要解決以上問題, 可以在輸入函數(shù)前加入清除函數(shù)fflush()( 這個函數(shù)的使用方法將在本節(jié)最后講述)。修改以上程序變成:

  #include

  main()

  {

  char c1, c2;

  scanf("%c", &c1);

  fflush(stdin);

  scanf("%c", &c2);

  printf("c1 is %c, c2 is %c", c1, c2);

  }

  1.1.2 非格式化輸入輸出函數(shù)

  非格式化輸入輸出函數(shù)可以由上面講述的標(biāo)準(zhǔn)格式化輸入輸出函數(shù)代替, 但這些函數(shù)編譯后代碼少, 相對占用內(nèi)存也小, 從而提高了速度, 同時使用也比較方便。下面分別進(jìn)行介紹。

  一、puts()和gets()函數(shù)

  1. puts()函數(shù)

  puts()函數(shù)用來向標(biāo)準(zhǔn)輸出設(shè)備(屏幕)寫字符串并換行, 其調(diào)用格式為:

  puts(s);

  其中s為字符串變量(字符串?dāng)?shù)組名或字符串指針)。

  puts()函數(shù)的作用與語printf("%s\n", s)相同。

  例4:

  main()

  {

  char s[20], *f; /*定義字符串?dāng)?shù)組和指針變量*/

  strcpy(s, "Hello! Turbo C2.0"); /*字符串?dāng)?shù)組變量賦值*/

  f="Thank you"; /*字符串指針變量賦值*/

  puts(s);

  puts(f);

  }

  說明:

  (1). puts()函數(shù)只能輸出字符串, 不能輸出數(shù)值或進(jìn)行格式變換。

  (2). 可以將字符串直接寫入puts()函數(shù)中。如:

  puts("Hello, Turbo C2.0");

  2. gets()函數(shù)

  gets()函數(shù)用來從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤)讀取字符串直到回車結(jié)束, 但回車符 不屬于這個字符串。其調(diào)用格式為:

  gets(s);

  其中s為字符串變量(字符串?dāng)?shù)組名或字符串指針)。

  gets(s)函數(shù)與scanf("%s", &s)相似, 但不完全相同, 使用scanf("%s", &s) 函數(shù)輸入字符串時存在一個問題, 就是如果輸入了空格會認(rèn)為輸入字符串結(jié)束, 空格后的字符將作為下一個輸入項(xiàng)處理, 但gets() 函數(shù)將接收輸入的整個字符串直到回車為止。

  例5

  main()

  {

  char s[20], *f;

  printf("What’s your name?\n");

  gets(s); /*等待輸入字符串直到回車結(jié)束*/

  puts(s); /*將輸入的字符串輸出*/

  puts("How old are you?");

  gets(f);

  puts(f);

  }

  說明:

  (1). gets(s)函數(shù)中的變量s為一字符串。如果為單個字符, 編譯連接不會有錯誤, 但運(yùn)行后會出現(xiàn)"Null pointer asignmemt"的錯誤。

  二、putchar()、getch()、getche()和getchar()函數(shù)

  1. putchar()函數(shù)

  putchar()函數(shù)是向標(biāo)準(zhǔn)輸出設(shè)備輸出一個字符, 其調(diào)用格式為:

  putchar(ch);

  其中ch為一個字符變量或常量。

  putchar()函數(shù)的作用等同于printf("%c", ch);

  例6:

  #include

  main()

  {

  char c: /*定義字符變量*/

  c=’B’; /*給字符變量賦值*/

  putchar(c); /*輸出該字符*/

  putchar(’\x42’); /*輸出字母B*/

  putchar(0x42); /*直接用ASCII碼值輸出字母B*/

  }

  從本例中的連續(xù)四個字符輸出函數(shù)語句可以分清字符變量的不同賦值方法。

上一頁  1 2 3 4 5 6 7 8 9 下一頁
  相關(guān)推薦:計(jì)算機(jī)等考二級C語言備考:C語言/C++編譯過程

       2010年計(jì)算機(jī)等級考試二級公共基礎(chǔ)知識教程

       考試吧:2010年計(jì)算機(jī)等考二級C預(yù)測題匯總

文章搜索
版權(quán)聲明:如果計(jì)算機(jī)等級考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系800@exam8.com,我們將會及時處理。如轉(zhuǎn)載本計(jì)算機(jī)等級考試網(wǎng)內(nèi)容,請注明出處。