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

2013年計(jì)算機(jī)等考二級(jí)《C語言》復(fù)習(xí)筆記第三章第3節(jié)

  數(shù)據(jù)輸入語句

  C語言的數(shù)據(jù)輸入也是由函數(shù)語句完成的。 本節(jié)介紹從標(biāo)準(zhǔn)輸入設(shè)備-鍵盤上輸入數(shù)據(jù)的函數(shù)scanf和getchar。 scanf函數(shù) scanf函數(shù)稱為格式輸入函數(shù),即按用戶指定的格式從鍵盤上把數(shù)據(jù)輸入到指定的變量之中。

  一、scanf函數(shù)的一般形式

  scanf函數(shù)是一個(gè)標(biāo)準(zhǔn)庫函數(shù),它的函數(shù)原型在頭文件“stdio.h”中,與printf函數(shù)相同,C語言也允許在使用scanf函數(shù)之前不必包含stdio.h文件。scanf函數(shù)的一般形式為: scanf(“格式控制字符串”,地址表列); 其中,格式控制字符串的作用與printf函數(shù)相同,但不能顯示非格式字符串, 也就是不能顯示提示字符串。地址表列中給出各變量的地址。 地址是由地址運(yùn)算符“&”后跟變量名組成的。例如,&a,&b分別表示變量a和變量b 的地址。這個(gè)地址就是編譯系統(tǒng)在內(nèi)存中給a,b變量分配的地址。在C語言中,使用了地址這個(gè)概念,這是與其它語言不同的。 應(yīng)該把變量的值和變量的地址這兩個(gè)不同的概念區(qū)別開來。變量的地址是C編譯系統(tǒng)分配的,用戶不必關(guān)心具體的地址是多少。 變量的地址和變量值的關(guān)系如下: &a--->a567 a為變量名,567是變量的值,&a是變量a的地址。在賦值表達(dá)式中給變量賦值,如: a=567 在賦值號(hào)左邊是變量名,不能寫地址,而scanf函數(shù)在本質(zhì)上也是給變量賦值,但要求寫變量的地址,如&a. 這兩者在形式上是不同的。&是一個(gè)取地址運(yùn)算符,&a是一個(gè)表達(dá)式,其功能是求變量的地址。

  void main(){

  int a,b,c;

  printf("input a,b,c\n");

  scanf("%d%d%d",&a,&b,&c);

  printf("a=%d,b=%d,c=%d",a,b,c);

  }

  注意&的用法!

  在本例中,由于scanf函數(shù)本身不能顯示提示串,故先用printf語句在屏幕上輸出提示,請(qǐng)用戶輸入a、b、c的值。執(zhí)行scanf語句,則退出TC屏幕進(jìn)入用戶屏幕等待用戶輸入。用戶輸入7、8、9后按下回車鍵,此時(shí),系統(tǒng)又將返回TC屏幕。在scanf語句的格式串中由于沒有非格式字符在“%d%d%d”之間作輸入時(shí)的間隔, 因此在輸入時(shí)要用一個(gè)以上的空格或回車鍵作為每?jī)蓚(gè)輸入數(shù)之間的間隔。

  如: 7 8 9

  或

  7

  8

  9

  格式字符串

  格式字符串的一般形式為: %[*][輸入數(shù)據(jù)寬度][長度]類型 其中有方括號(hào)[]的項(xiàng)為任選項(xiàng)。各項(xiàng)的意義如下:

  1.類型

  表示輸入數(shù)據(jù)的類型,其格式符和意義下表所示。

  格式 字符意義

  d 輸入十進(jìn)制整數(shù)

  o 輸入八進(jìn)制整數(shù)

  x 輸入十六進(jìn)制整數(shù)

  u 輸入無符號(hào)十進(jìn)制整數(shù)

  f或e 輸入實(shí)型數(shù)(用小數(shù)形式或指數(shù)形式)

  c 輸入單個(gè)字符

  s 輸入字符串

  2.“*”符

  用以表示該輸入項(xiàng)讀入后不賦予相應(yīng)的變量,即跳過該輸入值。 如 scanf(“%d %*d %d”,&a,&b);當(dāng)輸入為:1 2 3 時(shí),把1賦予a,2被跳過,3賦予b。

  3.寬度

  用十進(jìn)制整數(shù)指定輸入的寬度(即字符數(shù))。例如: scanf("%5d",&a);

  輸入:

  12345678

  只把12345賦予變量a,其余部分被截去。又如: scanf("%4d%4d",&a,&b);

  輸入:

  12345678將把1234賦予a,而把5678賦予b。

  4.長度

  長度格式符為l和h,l表示輸入長整型數(shù)據(jù)(如%ld) 和雙精度浮點(diǎn)數(shù)(如%lf)。h表示輸入短整型數(shù)據(jù)。

  使用scanf函數(shù)還必須注意以下幾點(diǎn):

  a. scanf函數(shù)中沒有精度控制,如: scanf("%5.2f",&a); 是非法的。不能企圖用此語句輸入小數(shù)為2位的實(shí)數(shù)。

  b. scanf中要求給出變量地址,如給出變量名則會(huì)出錯(cuò)。如 scanf("%d",a);是非法的,應(yīng)改為scnaf("%d",&a);才是合法的。

  c. 在輸入多個(gè)數(shù)值數(shù)據(jù)時(shí),若格式控制串中沒有非格式字符作輸入數(shù)據(jù)之間的間隔則可用空格,TAB或回車作間隔。C編譯在碰到空格,TAB,回車或非法數(shù)據(jù)(如對(duì)“%d”輸入“12A”時(shí),A即為非法數(shù)據(jù))時(shí)即認(rèn)為該數(shù)據(jù)結(jié)束。

  d. 在輸入字符數(shù)據(jù)時(shí),若格式控制串中無非格式字符,則認(rèn)為所有輸入的字符均為有效字符。例如:

  scanf("%c%c%c",&a,&b,&c);

  輸入為:

  d e f

  則把'd'賦予a, 'f'賦予b,'e'賦予c。只有當(dāng)輸入為:

  def

  時(shí),才能把'd'賦于a,'e'賦予b,'f'賦予c。 如果在格式控制中加入空格作為間隔,如 scanf ("%c %c %c",&a,&b,&c);則輸入時(shí)各數(shù)據(jù)之間可加空格。

  void main(){

  char a,b;

  printf("input character a,b\n");

  scanf("%c%c",&a,&b);

  printf("%c%c\n",a,b);

  }

  scanf("'C14F14%c%c",&a,&b);

  printf("%c%c\n",a,b); 由于scanf函數(shù)"%c%c"中沒有空格,輸入M N,結(jié)果輸出只有M。

  而輸入改為MN時(shí)則可輸出MN兩字符,見下面的輸入運(yùn)行情況: input character a,b

  MN

  MN

  void main(){

  char a,b;

  printf("input character a,b\n");

  scanf("%c %c",&a,&b);

  printf("\n%c%c\n",a,b);

  }

  scanf("%c %c",&a,&b); 本例表示scanf格式控制串"%c %c"之間有空格時(shí), 輸入的數(shù)據(jù)之間可以有空格間隔。e. 如果格式控制串中有非格式字符則輸入時(shí)也要輸入該非格式字符。

  例如:

  scanf("%d,%d,%d",&a,&b,&c); 其中用非格式符“ , ”作間隔符,故輸入時(shí)應(yīng)為: 5,6,7

  又如: scanf("a=%d,b=%d,c=%d",&a,&b,&c);

  則輸入應(yīng)為

  a=5,b=6,c=7g. 如輸入的數(shù)據(jù)與輸出的類型不一致時(shí),雖然編譯能夠通過,但結(jié)果將不正確。

  void main(){

  int a;

  printf("input a number\n");

  scanf("%d",&a);

  printf("%ld",a);

  }

  由于輸入數(shù)據(jù)類型為整型, 而輸出語句的格式串中說明為長整型,因此輸出結(jié)果和輸入數(shù)據(jù)不符。如改動(dòng)程序如下:

  void main(){

  long a;

  printf("input a long integer\n");

  scanf("%ld",&a);

  printf("%ld",a);

  }

  運(yùn)行結(jié)果為:

  input a long integer

  1234567890

  1234567890 當(dāng)輸入數(shù)據(jù)改為長整型后,輸入輸出數(shù)據(jù)相等。

  鍵盤輸入函數(shù)

  getchar函數(shù)getchar函數(shù)的功能是從鍵盤上輸入一個(gè)字符。其一般形式為: getchar(); 通常把輸入的字符賦予一個(gè)字符變量,構(gòu)成賦值語句,如:

  char c;

  c=getchar();

  #include

  void main(){

  char c;

  printf("input a character\n");

  c=getchar();

  putchar(c);

  }

  使用getchar函數(shù)還應(yīng)注意幾個(gè)問題:

  1.getchar函數(shù)只能接受單個(gè)字符,輸入數(shù)字也按字符處理。輸入多于一個(gè)字符時(shí),只接收第一個(gè)字符。

  2.使用本函數(shù)前必須包含文件“stdio.h”。

  3.在TC屏幕下運(yùn)行含本函數(shù)程序時(shí),將退出TC 屏幕進(jìn)入用戶屏幕等待用戶輸入。輸入完畢再返回TC屏幕。

  void main(){

  char a,b,c;

  printf("input character a,b,c\n");

  scanf("%c %c %c",&a,&b,&c);

  printf("%d,%d,%d\n%c,%c,%c\n",a,b,c,a-32,b-32,c-32);

  }

  輸入三個(gè)小寫字母

  輸出其ASCII碼和對(duì)應(yīng)的大寫字母。

  void main(){

  int a;

  long b;

  float f;

  double d;

  char c;

  printf("%d,%d,%d,%d,%d",sizeof(a),sizeof(b),sizeof(f)

  ,sizeof(d),sizeof(c));

  }

  輸出各種數(shù)據(jù)類型的字節(jié)長度。

1 2  下一頁

  編輯推薦:

  2012年9月計(jì)算機(jī)等級(jí)考試成績(jī)查詢短信提醒

  2013年上半年計(jì)算機(jī)等級(jí)考試報(bào)名時(shí)間預(yù)測(cè)

  2012年計(jì)算機(jī)等級(jí)考試二級(jí)VB重點(diǎn)知識(shí)匯總

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