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

2013年計算機等考二級《C語言》復習筆記第三章第3節(jié)

來源:考試吧Exam8.com) 2012-11-12 15:18:43 考試吧:中國教育培訓第一門戶 模擬考場

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

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

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

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

  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語句在屏幕上輸出提示,請用戶輸入a、b、c的值。執(zhí)行scanf語句,則退出TC屏幕進入用戶屏幕等待用戶輸入。用戶輸入7、8、9后按下回車鍵,此時,系統(tǒng)又將返回TC屏幕。在scanf語句的格式串中由于沒有非格式字符在“%d%d%d”之間作輸入時的間隔, 因此在輸入時要用一個以上的空格或回車鍵作為每兩個輸入數(shù)之間的間隔。

  如: 7 8 9

  或

  7

  8

  9

  格式字符串

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

  1.類型

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

  格式 字符意義

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

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

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

  u 輸入無符號十進制整數(shù)

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

  c 輸入單個字符

  s 輸入字符串

  2.“*”符

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

  3.寬度

  用十進制整數(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) 和雙精度浮點數(shù)(如%lf)。h表示輸入短整型數(shù)據(jù)。

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

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

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

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

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

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

  輸入為:

  d e f

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

  def

  時,才能把'd'賦于a,'e'賦予b,'f'賦予c。 如果在格式控制中加入空格作為間隔,如 scanf ("%c %c %c",&a,&b,&c);則輸入時各數(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,結果輸出只有M。

  而輸入改為MN時則可輸出MN兩字符,見下面的輸入運行情況: 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ù)據(jù)之間可以有空格間隔。e. 如果格式控制串中有非格式字符則輸入時也要輸入該非格式字符。

  例如:

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

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

  則輸入應為

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

  void main(){

  int a;

  printf("input a number\n");

  scanf("%d",&a);

  printf("%ld",a);

  }

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

  void main(){

  long a;

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

  scanf("%ld",&a);

  printf("%ld",a);

  }

  運行結果為:

  input a long integer

  1234567890

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

  鍵盤輸入函數(shù)

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

  char c;

  c=getchar();

  #include

  void main(){

  char c;

  printf("input a character\n");

  c=getchar();

  putchar(c);

  }

  使用getchar函數(shù)還應注意幾個問題:

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

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

  3.在TC屏幕下運行含本函數(shù)程序時,將退出TC 屏幕進入用戶屏幕等待用戶輸入。輸入完畢再返回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);

  }

  輸入三個小寫字母

  輸出其ASCII碼和對應的大寫字母。

  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月計算機等級考試成績查詢短信提醒

  2013年上半年計算機等級考試報名時間預測

  2012年計算機等級考試二級VB重點知識匯總

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