欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      2011年計算機(jī)二級考試C語言程序設(shè)計考試大綱

      時間:2019-05-15 07:22:35下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《2011年計算機(jī)二級考試C語言程序設(shè)計考試大綱》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《2011年計算機(jī)二級考試C語言程序設(shè)計考試大綱》。

      第一篇:2011年計算機(jī)二級考試C語言程序設(shè)計考試大綱

      2011年計算機(jī)二級考試C語言程序設(shè)計考試大綱

      ◆ 基本要求

      1.GoShu8.Com熟悉 Visual C++ 6.0 集成開發(fā)環(huán)境。

      2.掌握結(jié)構(gòu)化程序設(shè)計的方法,具有良好的程序設(shè)計風(fēng)格。

      3.掌握程序設(shè)計中簡單的數(shù)據(jù)結(jié)構(gòu)和算法并能閱讀簡單的程序。

      4.在 Visual C++ 6.0 集成環(huán)境下,能夠編寫簡單的C程序,并具有基本的糾錯和調(diào)試程序的能力

      ◆ 考試內(nèi)容

      一、C語言程序的結(jié)構(gòu)

      1.程序的構(gòu)成,main函數(shù)和其他函數(shù)。

      2.頭文件,數(shù)據(jù)說明,函數(shù)的開始和結(jié)束標(biāo)志以及程序中的注釋。

      3.源程序的書寫格式。

      4.C語言的風(fēng)格。

      二、數(shù)據(jù)類型及其運(yùn)算

      1.C的數(shù)據(jù)類型(基本類型,構(gòu)造類型,指針類型,無值類型)及其定義方法。

      2.C運(yùn)算符的種類、運(yùn)算優(yōu)先級和結(jié)合性。

      3.不同類型數(shù)據(jù)間的轉(zhuǎn)換與運(yùn)算。

      4.C表達(dá)式類型(賦值表達(dá)式,算術(shù)表達(dá)式,關(guān)系表達(dá)式,邏輯表達(dá)式,條件表達(dá)式,逗號表達(dá)式)和求值規(guī)則。

      三、基本語句

      1.表達(dá)式語句,空語句,復(fù)合語句。

      2.輸入輸出函數(shù)的調(diào)用,正確輸入數(shù)據(jù)并正確設(shè)計輸出格式。

      四、選擇結(jié)構(gòu)程序設(shè)計

      1.用if語句實(shí)現(xiàn)選擇結(jié)構(gòu)。

      2.用switch語句實(shí)現(xiàn)多分支選擇結(jié)構(gòu)。

      3.選擇結(jié)構(gòu)的嵌套。

      五、循環(huán)結(jié)構(gòu)程序設(shè)計

      1.for循環(huán)結(jié)構(gòu)。

      2.while和do-while循環(huán)結(jié)構(gòu)。

      3.continue語句和break語句。

      4.循環(huán)的嵌套。

      第二篇:C語言程序設(shè)計考試大綱

      《C語言程序設(shè)計》考試大綱

      Ⅰ考試性質(zhì)

      普通高等學(xué)校本科插班生招生考試是由??飘厴I(yè)生參加的選拔性考試。高等學(xué)校根據(jù)考生的成績,按已確定的招生計劃,德、智、體全面衡量,擇優(yōu)錄取。因此,本科插班生考試應(yīng)有較高的信度、效度、必要的區(qū)分度和適當(dāng)?shù)碾y度。

      本大綱適用于所有需要參加《C語言程序設(shè)計》考試的各專業(yè)考生。Ⅱ考試內(nèi)容

      總體要求:考生應(yīng)按本大綱的要求了解或理解“C語言程序設(shè)計”中的數(shù)據(jù)類型、運(yùn)算符與表達(dá)式、順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)控制、數(shù)組、函數(shù)、指針、預(yù)處理命令、結(jié)構(gòu)體與共用體、文件的基本概念。熟練掌握程序設(shè)計的基本方法和C語言本身的語法、語句和使用方法。掌握一般問題的分析思路、數(shù)據(jù)存儲結(jié)構(gòu)表達(dá)及建立在存儲結(jié)構(gòu)之上的程序設(shè)計方法,具備初步運(yùn)用C語言解決問題的程序設(shè)計能力;能熟練地閱讀、理解和編制簡單的C程序;具備進(jìn)一步學(xué)習(xí)計算機(jī)各專業(yè)后續(xù)課程的能力和基礎(chǔ)。

      一、數(shù)據(jù)類型、運(yùn)算符與表達(dá)式

      ⒈ 考試內(nèi)容

      ⑴關(guān)鍵字與標(biāo)識符的概念:關(guān)鍵字的含義,標(biāo)識符的定義,常量和變量的分類。

      ⑵數(shù)據(jù)類型:數(shù)據(jù)類型的含義、特點(diǎn),不同類型常量的表達(dá),不同類型變量的定義、賦初值方法。

      ⑶運(yùn)算符:各類運(yùn)算符的含義、優(yōu)先級,各類表達(dá)式的表示方法、運(yùn)算特點(diǎn)、值的類型和計算方法,各類公式的表達(dá)式描述和各類表達(dá)式的混合運(yùn)算。

      ⒉ 考試要求

      ⑴理解關(guān)鍵字與標(biāo)識符的概念、應(yīng)用特點(diǎn),理解數(shù)據(jù)類型的含義和常量、變量的分類。⑵掌握各數(shù)據(jù)類型的含義、特點(diǎn),不同類型常量的表達(dá),不同類型變量的定義和賦初值方法。

      ⑶熟練掌握各類運(yùn)算符的含義、優(yōu)先級,各類表達(dá)式的表示方法、運(yùn)算特點(diǎn)、值的類型和計算方法。能夠進(jìn)行各類公式的表達(dá)式描述和各類表達(dá)式的混合運(yùn)算。

      二、順序結(jié)構(gòu)程序設(shè)計 ⒈ 考試內(nèi)容

      ⑴輸入輸出:常用的輸入輸出函數(shù),基本的輸入輸出格式。⑵賦值語句:賦值語句功能和表達(dá)方法。

      ⑶順序程序設(shè)計:編寫順序結(jié)構(gòu)語句及程序。

      ⒉ 考試要求

      ⑴了解數(shù)據(jù)輸入輸出的概念以及在C語言中的實(shí)現(xiàn)方法。

      ⑵掌握賦值語句表達(dá)方法;掌握兩組輸入輸出函數(shù)的格式、表達(dá)方式和使用功能、特點(diǎn)。

      ⑶熟練掌握順序程序設(shè)計的思想和編程方法,能夠熟練編寫簡單問題的程序并上機(jī)調(diào)試。

      三、選擇結(jié)構(gòu)程序設(shè)計 ⒈ 考試內(nèi)容

      ⑴條件的表達(dá)方式:算術(shù)表達(dá)式、關(guān)系表達(dá)式、邏輯表達(dá)式,各種運(yùn)算結(jié)果的表達(dá)與判別。

      ⑵條件語句:if語句、if~else語句、else~if結(jié)構(gòu)以及switch和break語句的使用方法。⑶選擇結(jié)構(gòu)程序設(shè)計:編寫帶有選擇結(jié)構(gòu)的語句及程序。⒉ 考試要求

      ⑴掌握問題中條件的表達(dá)方式(關(guān)系表達(dá)式、邏輯表達(dá)式)和運(yùn)算結(jié)果。

      ⑵熟練掌握編程中條件的描述方法(用不同格式的if語句或switch語句)和使用方法,能夠進(jìn)行各種條件下的問題的程序設(shè)計。

      四、循環(huán)程序設(shè)計 ⒈ 考試內(nèi)容

      ⑴循環(huán)語句: while、do~while和for語句的格式、循環(huán)條件的設(shè)置以及在循環(huán)結(jié)構(gòu)中使用break和continue語句。

      ⑵循環(huán)程序設(shè)計:編寫帶有循環(huán)結(jié)構(gòu)語句及程序。

      ⒉ 考試要求

      ⑴了解循環(huán)的概念,解決語句重復(fù)執(zhí)行的方法。

      ⑵理解各種實(shí)現(xiàn)循環(huán)的語句的執(zhí)行過程、執(zhí)行步驟和相關(guān)參數(shù)量的變化情況,理解break和continue的使用形式和理由。

      ⑶掌握循環(huán)語句的格式和應(yīng)用特點(diǎn),掌握循環(huán)程序設(shè)計的方法。

      五、數(shù)組 ⒈ 考試內(nèi)容

      ⑴數(shù)組的概念:數(shù)組的概念、一維數(shù)組和二維數(shù)組。

      ⑵數(shù)組的使用:數(shù)組的定義、數(shù)組的初始化、數(shù)組元素的引用,數(shù)組的一般編程方法。⒉ 考試要求

      ⑴了解數(shù)組的基本概念。

      ⑵掌握不同類別數(shù)組的特點(diǎn),掌握數(shù)組的定義、初始化和數(shù)組元素引用方法;掌握數(shù)組的實(shí)際應(yīng)用方式、特點(diǎn)和程序設(shè)計方法。

      六、函數(shù) ⒈ 考試內(nèi)容

      ⑴函數(shù):函數(shù)定義的格式,包括類型、參數(shù)及返回值。⑵存儲類別:存儲類別的含義、使用方法。

      ⑶函數(shù)的運(yùn)用:定義函數(shù)、調(diào)用函數(shù)、遞歸函數(shù)。⒉ 考試要求

      ⑴理解一般問題的解決方法和程序的結(jié)構(gòu)化、模塊化設(shè)計思想,理解函數(shù)的調(diào)用方法,理解變量的數(shù)據(jù)類型、存儲類別,理解內(nèi)部函數(shù)與外部函數(shù)的含義。

      ⑵掌握函數(shù)定義的一般格式,掌握形式參數(shù)的表達(dá)方式,函數(shù)返回值類型和返回值的表達(dá)方式,掌握函數(shù)調(diào)用的方法、特點(diǎn)和不同調(diào)用形式(嵌套調(diào)用、遞歸調(diào)用),掌握局部變量、全局變量的定義方法和聲明形式。

      七、指針 ⒈ 考試內(nèi)容

      ⑴指針概念:指針的概念,指針的類型、指針的分類。

      ⑵指針的運(yùn)用:運(yùn)用指針處理變量、數(shù)組、字符串、函數(shù)等。⒉ 考試要求

      ⑴理解指針的概念、特點(diǎn),理解指針的分類、指針的數(shù)據(jù)類型描述。

      ⑵掌握指針的含義、不同類型指針與所指變量、數(shù)組、字符串、函數(shù)等的內(nèi)在聯(lián)系。

      八、預(yù)處理命令 ⒈ 考試內(nèi)容

      ⑴預(yù)處理概念:宏的含義,文件包含的含義。

      ⑵預(yù)處理的運(yùn)用:無參宏和有參宏,系統(tǒng)頭文件的加載。⒉ 考試要求

      ⑴理解預(yù)處理的含義和理由,理解文件包含的含義和宏的含義。⑵區(qū)分宏與函數(shù)的異同點(diǎn);掌握文件包含命令的使用方法。

      九、結(jié)構(gòu)體與共用體 ⒈ 考試內(nèi)容

      ⑴結(jié)構(gòu)體與共用體的概念:結(jié)構(gòu)體的含義,共用體的含義。

      ⑵結(jié)構(gòu)體與共用體的運(yùn)用:結(jié)構(gòu)體與共用體的類型聲明、初始化和引用。⒉ 考試要求

      ⑴了解C語言基本類型與構(gòu)造類型的含義,了解類型聲明與變量等定義的區(qū)別。

      ⑵掌握結(jié)構(gòu)體、共用體、枚舉類型的聲明方法和相應(yīng)變量等的定義、初始化、引用方法。

      十、文件 ⒈ 考試內(nèi)容

      ⑴文件的概念:文件的定義、分類和特點(diǎn)。

      ⑵文件的基本操作:文件打開與關(guān)閉、文件讀/寫操作,出錯檢測。⒉ 考試要求

      ⑴了解文件的含義、分類和特點(diǎn)。

      ⑵理解文件指針的使用方法,掌握文件打開與關(guān)閉、文件讀寫、文件定位和出錯檢測函數(shù)的使用方法。

      ⑶掌握不同問題使用文件的定義和操作方法。Ⅲ 考試形式及試卷結(jié)構(gòu)

      一、考試形式

      閉卷、筆試。考試時間為120分鐘,試卷滿分為100分。

      二、試卷內(nèi)容比例

      數(shù)據(jù)類型、運(yùn)算符與表達(dá)式

      約占10% 順序結(jié)構(gòu)程序設(shè)計、選擇結(jié)構(gòu)程序設(shè)計、循環(huán)程序設(shè)計、數(shù)組

      約占60% 函數(shù)、指針

      約占15% 預(yù)處理命令、結(jié)構(gòu)體與共用體、文件

      約占15%

      三、試卷題型比例 正誤判斷題

      占10% 單項(xiàng)選擇題

      占40% 綜合題(包括寫程序結(jié)果、改正程序錯誤和程序填空等)

      占30% 編程題

      占20%。

      四、試卷難易度比例

      試題按其難度分為容易、中等題、難題,三種試題分值的比例為4:4:2 Ⅳ.題型示例

      一、正誤判斷題(每題1分,共10分)1. 算法就是程序。

      二、單項(xiàng)選擇題(每題2分,共40分)1.下列數(shù)據(jù)中,為字符常量的是________。A)'My' B)“B” C)Yours D)'K'

      三、綜合題(每題10分,共30分)1.閱讀程序?qū)懡Y(jié)果

      #include

      #define NULL 0

      struct student{

      long num;

      float score;

      struct student *next;

      };

      void main()

      {

      struct student a,b,c,*head, *p;

      a.num=1;a.score=90.0;

      b.num=2;b.score=95.0;

      c.num=3;c.score=70.0;

      head=&a;

      a.next=&b;

      b.next=&c;

      c.next=NULL;

      p=head;

      do {

      printf(“%d %5.1fn”,p->num,p->score);

      p=p->next;

      } while(p!=NULL);}

      四、編程題(每題10分,共20分)

      1.計算1至10000之間不能被3或5整除的整數(shù)之和。Ⅴ.參考書目

      《C程序設(shè)計》(第三版),譚浩強(qiáng)編,清華大學(xué)出版社,2005年7 月 第3版。

      第三篇:《全國計算機(jī)等級考試二級教程C語言程序設(shè)計》

      《全國計算機(jī)等級考試二級教程——C語言程序設(shè)計》

      課后題及參考答案

      第一章 程序設(shè)計基本概念

      1.1 在TRUBO C環(huán)境中用RUN命令運(yùn)行一個C程序時,所運(yùn)行的程序的后綴是______。答案:.exe 1.2 C語言源程序文件的后綴是_____,經(jīng)過編譯后,生成文件的后綴是_____,經(jīng)過連接后,生成文件的后綴是_____。

      答案:.c.obj.exe 1.3 結(jié)構(gòu)化程序由_____、_____、_____三種基本結(jié)構(gòu)組成。答案:順序、選擇、循環(huán) 第二章 C程序設(shè)計的初步知識

      一、選擇題

      2.1 以下選項(xiàng)中正確的整型常量是

      A)12.B)-20

      C)1,000

      D)4 5 6

      答案:B 2.2 以下選項(xiàng)中正確的實(shí)型常量是

      A)0

      B)3.1415

      C)0.329×10(2)(10的2次方)

      D).871

      答案:D 2.3 以下選項(xiàng)中不正確的實(shí)型常量是

      A)2.607E-1

      B)0.8103e 2

      C)-77.77

      D)456e-2

      答案:B 2.4 以下選項(xiàng)中不合法的用戶標(biāo)識符是

      A)abc.c

      B)file

      C)Main

      D)PRINTF

      答案:A 2.5 以下選項(xiàng)中不合法的用戶標(biāo)識符是

      A)_123

      B)printf

      C)A$

      D)Dim

      答案:C 2.6 C語言中運(yùn)算對象必需是整型的運(yùn)算符是

      A)%

      B)/

      C)!

      D)**

      答案:A 2.7 可在C程序中用作用戶標(biāo)識符的一組標(biāo)識符是

      A)void

      define

      WORD

      B)as_b3

      _123

      If

      C)For

      -abc

      case

      D)2c

      DO

      SIG

      答案:B 2.8 若變量已正確定義并賦值,符合C語言語法的表達(dá)式是

      A)a=a+7;

      B)a=7+b+c,a++

      C)int(12.3%4)

      D)a=a+7=c+b

      答案:B 2.9 以下敘述中正確的是

      A)a是實(shí)型變量,C允許進(jìn)行以下賦值a=10,因此可以這樣說:實(shí)型變量中允許存放整型值。

      B)在賦值表達(dá)式中,賦值號右邊既可以是變量也可以是任意表達(dá)式。

      C)執(zhí)行表達(dá)式a=b后,在內(nèi)存中a和b存儲單元中的原有值都將被改變,a的值已由原值改變?yōu)閎的值,b的值由原值變?yōu)?。

      D)已有a=3,b=5。當(dāng)執(zhí)行了表達(dá)式a=b,b=a之后,已使a中的值為5,b中的值為3。

      答案:B 2.10 以下敘述中正確的是

      A)在C程序中無論是整數(shù)還是實(shí)數(shù),只要在允許的范圍內(nèi)都能準(zhǔn)確無誤的表示。

      B)C程序由主函數(shù)組成。

      C)C程序由函數(shù)組成。

      D)C程序由函數(shù)和過程組成。

      答案:C 2.11 TURBO C中int類型變量所占字節(jié)數(shù)是

      A)1

      B)2

      C)3

      D)4

      答案:B 2.12 不合法的八進(jìn)制數(shù)是

      A)0

      B)028

      C)077

      D)01

      答案:B 2.13 不合法的十六進(jìn)制數(shù)是

      A)oxff

      B)0Xabc

      C)0x11

      D)0x19

      答案:A

      二、填空題

      2.14 若k為int整型變量且賦值11。請寫出運(yùn)算k++后表達(dá)式的值A(chǔ))_____和變量的值B)_____。

      答案:

      11、12 2.15 若x為double型變量,請寫出運(yùn)算x=3.2,++x后表達(dá)式的值A(chǔ))_____和變量的值B)_____。

      答案:4.2、4.2 2.16 函數(shù)體由符號____開始,用符號____結(jié)束。函數(shù)體的前面是____部分,其后是____部分。

      答案:{、}、定義、執(zhí)行

      2.17 C語言中的標(biāo)識符可分為____、____、和預(yù)定義標(biāo)識符三類。

      答案:關(guān)鍵字、用戶標(biāo)識符

      2.18 在C語言程序中,用關(guān)鍵字____定義基本整型量,用關(guān)鍵字____定義單精度實(shí)型變量,用關(guān)鍵字___定義雙精度實(shí)型變量。

      答案:int、float、double 2.19 把a(bǔ)1、a2定義成單精度實(shí)型變量,并賦初值1的定義語句是____。

      答案:float a1=1.0,a2=1.0;

      2.20 C程序中定義的變量,代表內(nèi)存中的一個____。

      答案:存儲單元

      2.21 表達(dá)式3.5+1/2的計算結(jié)果是____。

      答案:3.5 2.22 對以下數(shù)學(xué)式,寫出三個等價的C語言表達(dá)式____、____、____。

      a×b

      ——

      c

      答案:a*b/c、a/c*b、b/c*a 2.23 表達(dá)式s=10應(yīng)當(dāng)讀做“____”。

      答案:將10賦給變量s 2.24 計算機(jī)中內(nèi)存儲器的最小存儲單位稱____,其中能容納的數(shù)是____。

      答案:位、0或1 2.25 通常一個字節(jié)包含____個二進(jìn)制位。在一個字節(jié)中能存放的最大(十進(jìn)制)整數(shù)是____,它的二進(jìn)制數(shù)的形式是____;最?。ㄊM(jìn)制)整數(shù)是____,它的二進(jìn)制數(shù)的形式是____。

      答案:8、255、1111 1111、-128、1000 0000 2.26 當(dāng)計算機(jī)用兩個字節(jié)存放一個整數(shù)時,其中能存放的最大(十進(jìn)制)整數(shù)是____、最小(十進(jìn)制)整數(shù)是____,它的二進(jìn)制數(shù)的形式是____。

      答案:65535、-32768、1000 0000 0000 0000 2.27 在C語言中整數(shù)可用____進(jìn)制數(shù)、____進(jìn)制數(shù)和____進(jìn)制數(shù)三種數(shù)制表示。

      答案:十、八、十六

      三、上機(jī)改錯題

      2.24 【分析與解答】

       第1行的錯誤:

      (1)include是一個程序行,因此在此行的最后不應(yīng)當(dāng)有分號(;)。

      (2)include程序行中后面的stdio.h是一個文件名,按規(guī)定,文件名應(yīng)當(dāng)放在一對雙引號(″ ″)內(nèi),或放在一對尖括號(< >)內(nèi)。 第2行的錯誤:

      (1)main()是主函數(shù)的起始行,不是語句,因此最后不應(yīng)當(dāng)有分號(;)。

      (2)在同一行上的/ * main function * / 顯然是注釋;C語言規(guī)定:注釋由/*開頭,由*/結(jié)束,但在*號和/之間不得插入任何空格,而在此處“/

      *”和“/

      *”之間存在空格,因此,/ * main function * /的寫法式是錯誤的,而應(yīng)寫成:/* main function */。

      第3行的錯誤:

      (1)在主函數(shù)的起始行main()的后面是函數(shù)體,函數(shù)體由左花括號({)開始。但在函數(shù)體的第一行:float的前面缺少了左花括號({)。

      (2)在同一行上的/* /*r is radius*/, /* s is area of circular*/ */ 顯然是注釋;C語言規(guī)定:注釋由/*開頭,由*/結(jié)束,并且開頭的/*將去找最近的*/去配對,因此在/* /*r is radius*/中,第一個/*與最后的那個*/配上了對,結(jié)果緊跟在后面的那個逗號(,)落在了注釋的外面,而構(gòu)成了一個多余符號,為此,在編譯時將報告“語法錯”。

      第6行的錯誤:

      (1)printf(″%f \[KG-*3]n″,s)應(yīng)當(dāng)是一條輸出語句,但在最后缺少了一個分號。

      (2)printf(″%f \[KG-*3]n″,s);是程序的最后一條語句,程序應(yīng)當(dāng)結(jié)束;但缺少了程序體結(jié)束所需的右花括號(});此右花括號可以放在printf(″%f \[KG-*3]n″,s);的后面,也可以放在printf(″%f \[KG-*3]n″,s);的下一行上。

      2.25 【分析與解答】

      第1行的錯誤:在include行中的文件名應(yīng)該是stdio.h,而不是stdio.a。 第2行的錯誤:在main的后面缺少一對圓括號。 第4行的錯誤:在c=40的后面缺少分號。

      第6行的錯誤:在printf(″%f \〖KG-*3〗n″,v)的后面缺少分號。

      第三章、順序結(jié)構(gòu)

      一、選擇題

      3.1 若a、b、c、d都是int類型變量且初值為0,以下選項(xiàng)中不正確的賦值語句是

      A)a=b=c=100;

      B)d++;

      C)c+b;

      D)d=(c=22)-(b++);

      答案:C 3.2 以下選項(xiàng)中不是C語句的是

      A){int i;i++;printf(“%d”, i);}

      B);

      C)a=5,c=10

      D){;}

      答案:C 3.3 以下合法的C語言賦值語句是

      A)A=B=58

      B)k=int(a+b);

      C)a=58,b=58

      D)--i;

      答案:D 3.4 以下程序的輸出結(jié)果是

      A)0

      B)1

      C)3

      D)不確定的值

      main()

      {

      int x=10,y=3;

      printf(“%d”, y=x/y);

      }

      答案:C 3.5 若變量已正確說明為int類型,要給a、b、c輸入數(shù)據(jù),以下不正確的輸入語句是

      A)read(a,b,c);

      B)scanf(“%d%d%d”,a,b,c);

      C)scanf(“%D%D%D”,&a,&b,&c);

      D)scanf(“%d%d%d”,&a,&b,&c);

      答案:D 3.6 若變量已正確說明為float類型,要通過以下賦值語句給a賦予

      10、b賦予

      22、c賦予33,以下不正確的輸入形式是

      A)10 22 33

      B)10.0,22.0,33.0

      C)10.0 22.0 33.0

      D)10 22 33

      scanf(“%f %f %f”, &a, &b, &c);

      答案:B 3.7 若變量以正確定義,要將a和b中的數(shù)進(jìn)行交換,下面不正確的語句組是

      A)a=a+b,b=a-b,a=a-b;

      B)t=a,a=b,b=t;

      C)a=t;t=b;b=a;

      D)t=b;b=a;a=t;

      答案:C 3.8 若變量已正確定義,以下程序段的輸出結(jié)果是

      A)輸出格式說明與輸出項(xiàng)不匹配,輸出無定值

      B)5.17000

      C)5.168000

      D)5.169000

      x=5.16894;

      printf(“%f”,(int)(x*1000+0.5)/(float)1000);

      答案:D 3.9 若有以下程序段,c3中的值是

      A)0

      B)1/2

      C)0.5

      D)1

      int c1=1,c2=2,c3;

      c3=c1/c2;

      答案:A 3.10 若有以下程序段,其輸出結(jié)果是

      A)0,0,-10

      B)0,0,5

      C)-10,3,-10

      D)3,3,-10

      int a=0,b=0,c=0;

      c=(a-=a-5),(a=b,b+3);

      printf(“%d,%d,%d”,a,b,c);

      答案:B 3.11 當(dāng)運(yùn)行以下程序時,在鍵盤上從第一列開始輸入9876543210(此處代表Enter),則程序的輸出結(jié)果是

      A)a=98,b=765,c=4321

      B)a=10,b=432,c=8765

      C)a=98,b=765.000000,c=4321.000000

      D)a=98,b=765,c=4321.0

      main(){

      int a;float b,c;

      scanf(“%2d%3f%4f”,&a,&b,&c);

      printf(“a=%d,b=%f,c=%f”,a,b,c);}

      答案:C 3.12 以下程序的輸出結(jié)果是

      A)a=%2,b=%5

      B)a=2,b=5

      C)a=%%d,b=%%d

      D)a=%d,b=%d

      main(){ int a=2,b=5;

      printf(“a=%%d,b=%%d”,a,b);}

      答案:D 3.13 若int類型占兩個字節(jié),則以下程序段的輸出是

      A)-1,-1

      B)-1,32767

      C)-1,32768

      D)-1,65535

      int a=-1;

      printf(“%d,%u”,a,a);

      答案:D 3.14 以下程序段的輸出是

      A)*496 *

      B)* 496*

      C)*000496* D)輸出格式符不合法

      int x=496;

      printf(“*%-06d*”,x);

      答案:A 3.15 以下程序段的輸出是

      A)|3.1415|

      B)| 3.0|

      C)|

      3|

      D)|

      3.|

      float a=3.1415;

      printf(“|%6.0f|”,a);

      答案:C 3.16 以下程序段的輸出是

      A)|2345.67800|

      B)|12345.6780|

      C)|12345.67800|

      D)|12345.678|

      printf(“|%10.5f|”,12345.678);

      答案:C 3.17 以下程序段的輸出是

      A)*0000057.66*

      B)*

      57.66*

      C)*0000057.67*

      D)*

      57.67*

      float a=57.666;

      printf(“*%010.2f*”,a);

      答案:C 3.18 若從終端輸入以下數(shù)據(jù),要給變量C賦以283.19,則正確的輸入語句是

      A)scanf(“%f”,c);

      B)scanf(“%8.4f”,&c);

      C)scanf(“%6.2f”,&c);

      D)scanf(“%8”,&c);

      283.1900 表示Enter鍵

      答案:由于印刷錯誤,本題沒有正確答案。改正意見:

      把選項(xiàng)A改為:scanf(“%f”,&c);或者把選項(xiàng)D改為:scanf(“%8f”,&c);則可分別選擇A或者D為正確答案。

      3.19 若變量已正確說明,要求用以下語句給a賦予3.12、給b賦予9.0,則正確的輸入形式是(□代表空格)

      A)3.12□□9.0

      B)a=□□3.12b=□□□9

      C)a=3.12,b=9

      D)a=3.12□□,b=9□□□□

      scanf(“a=%f,b=%f”,&a,&b);表示Enter鍵

      答案:C 3.20 以下程序的輸出結(jié)果是

      A)9 8

      B)8 9

      C)6 6

      D)以上三個都不對

      #include “math.h” main(){ double a=-3.0, b=2;

      printf(“%3.0f %3.0f”,pow(b,fabs(a)),pow(fabs(a),b));}

      答案:B

      二、填空題

      3.21 若有以下定義,請寫出以下程序段中輸出語句執(zhí)行后的輸出結(jié)果。(1)____(2)____(3)____

      int i=-200,j=2500;

      printf(“(1)%d %d”,i,j);

      printf(“(2)i=%d, j=%d”,i,j);

      printf(“(3)i=%d j=%d”,i,j);

      答案:

      -200 2500

      i=-200, j=2500

      i=-200 j=2500 3.22 變量i、j、k已定義為int類型并有初值0,用以下語句進(jìn)行輸入時

      scanf(“%d”,&i);scanf(“%d”,&j);scanf(“%d”,&k);當(dāng)執(zhí)行第一個輸入語句,從鍵盤輸入:

      12.3 表示Enter鍵

      則變量i、j、k的值分別是____、____、____。

      答案:12、0、0 3.23 復(fù)合語句在語法上被認(rèn)為是____??照Z句的形式是____。

      答案:一條語句、; 3.24 C語句的最后用____結(jié)束。

      答案:;

      3.25 以下程序段,要求通過scanf語句給變量賦值,然后輸出變量的值。寫出運(yùn)行時給k輸入100,給a輸入25.81,給x輸入1.89234時的三種可能的輸入形式____、_____、____。

      int k;float a;double x;

      scanf(“%d%f%lf”,&k,&a,&x);

      printf(“k=%d,a=%f,x=%f”,k,a,x);

      答案:

      (1)100 25.81 1.89234

      (2)100 25.811.89234

      (3)100 25.81 1.89234 3.26 以下程序段的輸出結(jié)果是____。

      int x=0177;

      printf(“x=%3d,x=%6d,x=$%6o,x=%6x,x=%6u”,x,x,x,x,x);

      答案:x=127,x= 127,x= 177,x=

      7f,x= 127 3.27 以下程序段的輸出結(jié)果是____。

      int x=0177;

      printf(“x=%-3d,x=%-6d,x=$%-06d,x=$%06d,x=%%06d”,x,x,x,x,x);

      答案:

      27、x=127,x=127,x=$127,x=$000127,x=%06d 3.28 以下程序段的輸出結(jié)果是____。

      double a=513.789215;

      printf(“a=%8.6f,a=%8.2f,a=%14.8f,a=%14.8lf”,a,a,a,a);答案:a=513.789215,a= 513.79,a= 513.78921500,a= 513.78921500

      三、編程題和改錯題

      3.16 【分析與解答】

      (1)主函數(shù)名main后應(yīng)有一對圓括號。(2)變量定義語句中,v的前面缺逗號。

      (3)第三行的printf語句用以提示輸入,但是原樣輸出的字符串沒有用雙引號括起來;另外,從輸入的形式看,輸入的數(shù)據(jù)緊跟在提示之后,因此,printf格式串中最后不應(yīng)該有換行符——\n。

      (4)因?yàn)檩斎腠?xiàng)a、b、c從定義和計算結(jié)果來看都是double類型,因此,第四行scanf語句格式串中的格式說明不應(yīng)當(dāng)用%d而應(yīng)當(dāng)用%lf;且每一個變量之前應(yīng)該加地址運(yùn)算符&。

      (5)第七行的printf語句中應(yīng)當(dāng)把%d都改成%lf或%f;按輸出要求在格式串中應(yīng)添加相應(yīng)的原樣輸出的字符;因?yàn)橄乱粋€printf的輸出從新的一行開始,因此在本輸出語句的格式串的最后應(yīng)當(dāng)加換行符——\n。

      (6)第八行的printf語句中應(yīng)當(dāng)把格式串整理合并放在輸出項(xiàng)的前面,輸出項(xiàng)放在后面,%d都改成%lf或%f;中間的\n刪去。

      (7)請讀者自己寫出修改后的程序,并上機(jī)調(diào)試。

      3.17【分析與解答】

      (1)分析:可用算術(shù)式560÷60把分鐘換算成小時和分鐘,商數(shù)就是小時數(shù),余數(shù)就是分鐘數(shù)。

      (2)確定變量的名字和定義變量的類型:在程序中把小時數(shù)放在變量h中,把分鐘數(shù)放在變量m中。這兩個變量的類型可以是整型(本題中采用整型),也可以是實(shí)型。

      (3)確定所用算法:求〖SX()560〖〗60〖SX〗〗的商數(shù),在C語言中可以用整除的算法,語句是h=560/60。求余數(shù)可用求余運(yùn)算符 %:560%60,其值放入變量m中的語句是:m=560%60。(4)設(shè)計輸出格式。若輸出的形式定為:小時:分鐘,則按此形式設(shè)計輸出語句。(5)把以上內(nèi)容放在主函數(shù)的一對花括號中。(6)編寫程序如下:

      main() {

      int h, m;

      h=560/60;

      m=560%60;

      printf(″The result: %3d : %3d\n″, h,m);

       } 

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

      The result:

      : 20

      3.18 【分析與解答】

      (1)確定變量的名字和定義變量的類型。若用a存放1500,用b存放350;用q存放商數(shù),用r存放余數(shù),所有變量應(yīng)定義成int類型。

      (2)設(shè)計輸入語句從終端輸入1500和350;在輸入語句之前,應(yīng)當(dāng)設(shè)計一個輸出語句,用以提示輸入。(3)可用整除求商數(shù),結(jié)果放在變量q中。可用求余運(yùn)算符%求兩數(shù)之余數(shù),結(jié)果放在變量r中。(4)設(shè)計輸出語句。輸出a、b、q、r。

      (5)把以上內(nèi)容放在主函數(shù)的一對花括號中。

      本題的程序與3.30相似,請讀者參考上題并根據(jù)本題的解釋自己編程,并上機(jī)調(diào)試。

      3.19 【分析與解答】

      (1)定義4個雙精度變量a、b、c和ave,變量a、b、c分別存放讀入的3個雙精度數(shù),ave存放它們的平均值。

      (2)設(shè)計輸入語句,以及在此之前用于提示輸入的(printf)語句。(3)設(shè)計求平均值的算法,把所求得的平均值放入變量ave中。

      (4)設(shè)計把變量ave中的數(shù),從小數(shù)點(diǎn)后第二位數(shù)進(jìn)行四舍五入的算法。現(xiàn)舉例說明:若ave中的數(shù)為123.4644,為了保留此值小數(shù)點(diǎn)后一位,可用表達(dá)式:(int)(123.4644*10)/10.0;依次推算,為了保留此值小數(shù)點(diǎn)后二位,可用表達(dá)式:(int)(123.4644*100)/100.0;其他依此類推。

      (5)若要求對小數(shù)點(diǎn)后第二位數(shù)進(jìn)行四舍五入,則可對原數(shù)加0.05后再進(jìn)行以上運(yùn)算。如要求保留123.4644小數(shù)點(diǎn)后一位且對第二位數(shù)進(jìn)行四舍五入,可用表達(dá)式:(int)((123.467+0.05)*10)/10.0。注意:分母一定要用實(shí)數(shù)10.0而不能用整數(shù)10,否則就變成整除了;若要求保留123.4644小數(shù)點(diǎn)后兩位且對第三位數(shù)進(jìn)行四舍五入,可用表達(dá)式:(int)((123.467+0.005)*100)/100.0;其他依此類推。(6)設(shè)計輸出語句。輸出a、b、c和ave。(7)把以上內(nèi)容放在主函數(shù)的一對花括號中。(8)編寫程序如下: main()

      {

      double a,b,c,ave; printf(″Enter a ,b ,c : ″);

      scanf(″%lf%lf%lf″, &a, &b, &c); ave=(a+b+c)/3; printf(″ave=%f\n″, ave);

      /*用以比較四舍五入前后的數(shù)據(jù)*/ ave=(int)((ave+0.05)*10)/10.0;

      printf(″a=%f, b=%f, c=%f, ave=%f\n″, a,b,c,ave);

       } 

      3.20 【分析與解答】

      (1)關(guān)于對變量中的數(shù)進(jìn)行交換的算法請參考3.7題中的解釋和《教程》中有關(guān)的例題。

      (2)定義4個整型變量a、b、c和t,變量a、b、c分別存放讀入的3個整數(shù),t用作臨時存儲單元。(3)設(shè)計輸入語句,以及在此之前用于提示輸入的(printf)語句。(4)輸出a、b、c中的值,以便于比較。(5)交換的步驟如下: ① 把c中的值賦給t。 ② 把b中的值賦給c。 ③ 把a(bǔ)中的值賦給b。 ④ 把t中的值賦給a。

      經(jīng)過以上步驟,已按要求進(jìn)行了交換。(6)輸出a、b、c中的值。(7)編寫程序如下: main()

      {

      int a, b, c, t;

      printf(″Enter a, b, c :\n″); scanf(″%d%d%d″,&a,&b,&c);

      printf(″(1)a=%d,b=%d,c=%d\n″,a,b ,c); t=c;c=b;b=a;a=t;

      printf(″(2)a=%d,b=%d,c=%d\n″,a,b,c);

       } 

      第四章、選擇結(jié)構(gòu)

      一、選擇題

      4.1 下列運(yùn)算符中優(yōu)先級最高的運(yùn)算符是

      A)!

      B)%

      C)-=

      D)&&

      答案:A 4.2 下列運(yùn)算符中優(yōu)先級最低的運(yùn)算符是

      A)||

      B)!=

      C)<=

      D)+

      答案:A 4.3 為表示關(guān)系x≥y≥z,應(yīng)使用的C語言表達(dá)式是

      A)(x>=y)&&(y>=z)

      B)(x>=y)AND(y>=z)

      C)(x>=y>=z)

      D)(x>=y)&(y>=z)

      答案:A 4.4 設(shè)a、b和c都是int型變量,且a=3,b=4,c=5;則以下的表達(dá)式中,值為0的表達(dá)式是

      A)a&&b

      B)a<=b

      C)a||b+c&&b-c

      |1)

      答案:D 4.5 以下程序的輸出結(jié)果是

      A)0

      B)1

      C)2

      D)3

      main()

      { int a=2,b=-1,c=2;

      if(a

      if(b<0)c=0;

      else c+=1;

      printf(“%d”,c);

      }

      D)!((a

      答案:C 4.6 以下程序的輸出結(jié)果是

      A)1

      B)2

      C)3

      D)4

      main(){ int w=4,x=3,y=2,z=1;

      printf(“%d”,(w

      答案:A 4.7 若執(zhí)行以下程序時從鍵盤上輸入3和4,則輸出結(jié)果是

      A)14

      B)16

      C)18

      D)20

      main(){ int a,b,s;

      scanf(“%d%d”,&a,&b);

      s=a;

      if(a

      s*=s;

      printf(“%d”,s);}

      答案:B 4.8 下面的程序片段所表示的數(shù)學(xué)函數(shù)關(guān)系是

      -1(x<0)A)y= 0(x=0)

      1(x>0)

      1(x<0)B)y=-1(x=0)

      0(x>0)

      0(x<0)C)y=-1(x=0)

      1(x>0)

      -1(x<0)D)y= 1(x=0)

      0(x>0)

      y=-1;if(x!=0)y=1;

      if(x>0)y=1;else y=0;答案:A 4.9 運(yùn)行以下程序后,輸出

      A)****

      B)&&&&

      C)####&&&&

      D)有語法錯誤不能通過編譯

      main(){ int k=-3;

      if(k<=0)printf(“****”)

      else printf(“&&&&”);}

      答案:D 4.10 若a和b均是正整型變量,以下正確的switch語句是 A)switch(pow(a,2)+pow(b,2))

      { case 1: case 3: y=a+b;break;

      case 0: case 5: y=a-b;

      } B)switch(a*a+b*b);

      { case 3:

      case 1: y=a+b;break;

      case 0: y=b-a;break;

      } C)switch a

      { default: x=a+b;

      case 10: y=a-b;break;

      case 11: x=a*d;break;

      } D)switch(a+b)

      { case10 : x=a+b;break;

      case11 : y=a-b;break;

      }

      答案:沒有正確答案。如果C選項(xiàng)改為: switch(a){ default: x=a+b;

      case 10: y=a-b;break;

      case 11: x=a*b;break;} 則答案可以選擇C

      二、填空題

      4.11 C語言中用____表示邏輯值“真”,用____表示邏輯值“假”。

      答案:非0、0 4.12 C語言中的關(guān)系運(yùn)算符按優(yōu)先級別是____、____、____、____。

      答案:>、<、>=、<=、==、!= 4.13 C語言中的邏輯運(yùn)算符按優(yōu)先級別是____、____、____。

      答案:!、&&、|| 4.14 C語言中的關(guān)系運(yùn)算符和邏輯運(yùn)算符的優(yōu)先級別是____、____、____、____、____、____、____。

      答案:!、<、>、==、!=、&&、|| 4.15 C語言中邏輯運(yùn)算符____的優(yōu)先級高于算術(shù)運(yùn)算符。

      答案:!

      4.16 將下列數(shù)學(xué)式改寫成C語言的關(guān)系表達(dá)式或邏輯表達(dá)式A)____B)____。

      A)a=b或a

      B)|x|>4

      答案:A)a==b||a4||x<-4 4.17 請寫出以下程序的 輸出結(jié)果____。

      main(){ int a=100;

      if(a>100)printf(“%d”,a>100);

      else

      printf(“%d”,a<=100);}

      答案:1 4.18 請寫出與以下表達(dá)式等價的表達(dá)式A)____B)____。A)!(x>0)

      B)!0

      答案:A)x<=0 B)1 4.19 當(dāng)a=1,b=2,c=3時,以下if語句執(zhí)行后,a、b、c中的值分別為____、____、____。

      if(a>c)

      b=a;a=c;c=b;

      答案:3、2、2 4.20 若變量已正確定義,以下語句段的輸出結(jié)果是____。

      x=0;y=2;z=3;

      switch(x)

      { case 0: switch(y==2)

      { case 1: printf(“*”);break;

      case 2: printf(“%”);break;

      }

      case 1: switch(z)

      { case

      1: printf(“$”);

      case

      2: printf(“*”);break;

      default : printf(“#”);

      }

      } 答案:*#

      三、編程題

      4.21 【分析與解答】

      相關(guān)內(nèi)容請參考《教程》4.2節(jié)和4.4節(jié)。(1)改寫如下: switch(a/10)

      { default : m=5;break;

      case 0 : case 1 : case 2 : m=1;break; case 3 : m=2;break; case 4 : m=3;break; case 5 : m=4;break; };

      (2)本題中對a的判斷條件有一定的規(guī)律可尋;關(guān)鍵是,在switch語句后的表達(dá)式中利用了a/10,從而簡化了case標(biāo)號。

      4.22 【分析與解答】

      編寫本題的程序,首先要解決如何計算學(xué)生當(dāng)前的年齡(設(shè)存放實(shí)足年齡的變量是age)。(1)如果當(dāng)前的月份大于生日的月份,則學(xué)生的實(shí)足年齡age=y1-y0。

      (2)如果當(dāng)前的月份等于生日的月份,就要看日數(shù),當(dāng)前的日數(shù)大于或等于生日的日數(shù),則學(xué)生的實(shí)足年齡age=y1-y0。

      (3)如果不滿足以上的條件,就可斷定當(dāng)前的日期沒有超過生日日期,就是說學(xué)生的年齡應(yīng)當(dāng)是age=y1-y0-1。 以上3條,用C語言可以描述如下:

      if((m1>m0)[JB>1|][JB>1|](m1==m0&&d1>=d0))age=y1-y0;

      else age=y1-y0-1;

      讀者可以參考以上語句寫出程序,也可以根據(jù)分析寫出與此形式不同的語句和程序。 4.23【分析與解答】

      (1)若輸入的整數(shù)a是奇數(shù),輸出 dd number,是偶數(shù)輸出:even number。

      (2)若一個a是偶數(shù),它就能被2除盡,即a%2==0,輸出even number;若是奇數(shù),它就不能被2除盡,即a%2!〖KG-*2〗=0,輸出odd number。

      讀者可以參考以上給出的算法,寫出相應(yīng)的C語句,并編寫出完整的程序。 4.24 【分析與解答】

      本題的主要算法是從3個數(shù)中找出最大的那個數(shù)。假定始終把最大的數(shù)放在變量max中。(1)假定a中的數(shù)最大,把a(bǔ)賦給max。

      (2)用b去和max比較,若b大于max,則把b賦給max;若不大于max,則什么也不做。(3)用c去和max比較,若c大于max,則把c賦給max;若不大于max,則什么也不做。(4)經(jīng)過以上操作,max中已放入了a、b、c三個數(shù)中的最大數(shù),輸出max即可。 讀者可以參考以上給出的算法,寫出相應(yīng)的C語句,并編寫出完整的程序。 4.25 【分析與解答】

      (1)本題已給出了非常明確的條件,只要寫出正確的條件判斷語句就可基本完成程序的編寫。

      (2)由給出的函數(shù)可知,只有x的值在規(guī)定的范圍內(nèi)時,才求出y的值,因此程序應(yīng)當(dāng)對輸入的x進(jìn)行判斷,若超過范圍就不求y的值。

      (3)現(xiàn)以使用if[CD#*2]else語句為例寫出程序供參考。

      main() {

      int x,y;printf(″Enter x : ″);scanf(″%d″, &x); if(x>-5&&x<10)

      {

      if(x==0)y=x-1;

      else if(x<10 && x>0)y=x+1; else if(x<0 && x>-5)y=x;

      printf(″x=%d y=%d\n″, x,y);

       }

      printf(″***END***\n\n″);

       } 

      第五章、循環(huán)結(jié)構(gòu)

      一、選擇題

      5.1 以下程序段的輸出結(jié)果是

      A)9

      B)1

      C)11

      int k,j,s;

      for(k=2;k<6;k++,k++)

      { s=1;

      for(j=k;j<6;j++)s+=j;

      }

      printf(“%d”, s);

      答案:D 5.2 以下程序段的輸出結(jié)果是

      A)12

      B)15

      C)20

      int i,j,m=0;

      for(i=1;i<=15;i+=4)

      for(j=3;j<=19;j+=4)m++;

      printf(“%d”, m);

      答案:C 5.3 以下程序段的輸出結(jié)果是

      A)10

      B)9

      C)10

      D)9

      D)10 D)25

      int n=10;

      while(n>7)

      { n--;

      printf(“%d”, n);

      }

      答案:B 5.4 以下程序段的輸出結(jié)果是

      A)1

      B)3 0

      C)1-2

      int x=3;

      do

      { printf(“%3d”,x-=2);}

      while(!(--x));

      答案:C 5.5 以下程序段的輸出結(jié)果是

      A)15

      B)14

      C)不確定

      main()

      { int i,sum;

      for(i=1;i<6;i++)sum+=sum;

      printf(“%d”,sum);

      }

      答案:C 5.6 以下程序段的輸出結(jié)果是

      A)741

      B)852

      C)963

      main()

      { int y=10;

      for(;y>0;y--)

      if(y%3==0)

      { printf(“%d”,--y);continue;

      }

      答案:B 5.7 若x是int型變量,以下程序段的輸出結(jié)果是

      A)**3

      ##4

      **5

      B)##3

      **4

      ##5

      C)##3

      **4##5

      D)**3##4

      **5

      for(x=3;x<6;x++)

      printf((x%2)?(“**%d”):(##%d“),x);

      D)死循環(huán)

      D)0 D)875421 }

      答案:D 5.8 以下程序的輸出結(jié)果是

      A)*#*#*#$

      B)#*#*#*$

      C)*#*#$

      D)#*#*$

      main(){ int i;

      for(i=1;i<=5;i++)

      { if(i%2)printf(”*“);

      else

      contionue;

      printf(”#“);

      }

      printf(”$“);}

      答案:A 5.9 以下敘述正確的是

      A)do_while語句構(gòu)成的循環(huán)不能用其它語句構(gòu)成的循環(huán)來代替。

      B)do_while語句構(gòu)成的循環(huán)只能用break語句退出。

      C)用do_while語句構(gòu)成循環(huán)時,只有在while后的表達(dá)式為非零時結(jié)束循環(huán)。

      D)用do_while語句構(gòu)成循環(huán)時,只有在while后的表達(dá)式為零時結(jié)束循環(huán)。

      答案:D 5.10 以下程序的輸出結(jié)果是

      A)39 81

      B)42 84

      C)26 68

      D)28 70

      main(){ int x,i;

      for(i=1;i<=100;i++)

      { x=i;

      if(++x%2==0)

      if(++x%3==0)

      if(++x%7==0)

      printf(”%d “, x);

      }

      printf(”“);}

      答案:D

      二、填空題

      5.11 當(dāng)執(zhí)行以下程序段后,i的值是____、j的值是____、k的值是____。

      int a,b,c,d,i,j,k;a=10;b=c=d=5;i=j=k=0;for(;a>b;++b)i++;while(a>++c)j++;do k++;while(a>d++);

      答案:5、4、6 5.12 以下程序段的輸出結(jié)果是____。

      int k,n,m;n=10;m=1;k=1;while(k<=n)m*=2;printf(”%d“,m);

      答案:死循環(huán)

      5.13 以下程序的輸出結(jié)果是____。

      main(){ int x=2;

      while(x--);

      printf(”%d“,x);}

      答案:-1 5.14 以下程序段的輸出結(jié)果是____。

      int i=0,sum=1;

      do { sum+=i++;}while(i<5);

      printf(”%d“,sum);

      答案:11 5.15 有以下程序段:

      s=1.0;

      for(k=1;k<=n;k++)s=s+1.0/(k*(k+1));

      printf(”%f“,s);請?zhí)羁?,使下面的程序段的功能完全與之等同。

      s=0.0;

      ____;

      k=0;

      do

      { s=s+d;

      ____;

      d=1.0/(k*(k+1));

      }

      while(____);

      printf(”%f“,s);

      答案:d=1.0、k++、k<=n 5.16 以下程序的功能是:從鍵盤上輸入若干個學(xué)生的成績,統(tǒng)計并輸出最高成績和最低成績,當(dāng)輸入負(fù)數(shù)時結(jié)束輸入。請?zhí)羁铡?/p>

      main()

      { float x,amax,amin;

      scanf(”%f“,&x);

      amax=x;amin=x;

      while(____)

      { if(x>amax)

      amax=x;

      if(____)

      amin=x;

      scanf(”%f“,&x);

      }

      printf(”amax=%famin=%f“,amax,amin);

      }

      答案:x>=0、x

      三、編程題

      5.17【分析與解答】

      (1)本題的基本算法是求累加值。累加項(xiàng)的值有規(guī)律的遞增,每一項(xiàng)的絕對值比前一項(xiàng)增2,因此可以利用循環(huán)的控制變量的遞增來得到累加項(xiàng)的絕對值。例如:

      for(i=1;i<=101;i+=2)?

      (2)按所給的算式可以看到,累加項(xiàng)的符號是在交叉改變的,為此應(yīng)當(dāng)在循環(huán)體內(nèi)設(shè)

      置一個變量,使它的符號按此規(guī)律交叉改變,這可用:s=-s;來實(shí)現(xiàn),s的初值為1;當(dāng)s的值為1時,賦值后s中新的值為-1,當(dāng)s的值為-1時,賦值后s中新的值為1。用s去乘累加項(xiàng),將使累加項(xiàng)的符號也隨之有規(guī)律地改變。(3)若累加和放在變量sum中,累加項(xiàng)放在變量t中,按照以上敘述,for循環(huán)體內(nèi)的語句可以設(shè)計如下:

      s=-s;t=s*i;sum=sum+t;(4)sum的值是51。

      (5)請讀者自己對變量做出正確的定義并賦初值,設(shè)計輸出語句,完善程序。

      5.18 【分析與解答】

      (1)本題的基本算法是求累加值。累加項(xiàng)的分子部分都是1;分母的值有規(guī)律的遞增,依次為1!、2!、?、n!,即,若第i-1項(xiàng)的累加項(xiàng)為

      t(i-1),則第i項(xiàng)的累加項(xiàng)是 t(i-1)*i,在程序中可用表達(dá)式:t=t/i(i從1變化到n)來表示。(2)根據(jù)以上分析,若用變量t來存放累加項(xiàng),當(dāng)i的值從1變化到n時,可用以下語句來實(shí)現(xiàn)累加:

      t=t/i;e+=t;

      (3)為了實(shí)現(xiàn)累加過程,以上語句應(yīng)當(dāng)放在循環(huán)內(nèi),循環(huán)控制變量從1變化到n。

      (4)若用for循環(huán),按題目要求已指定n的值是50。若用while循環(huán),并沒有指定n的值,但已指定了循環(huán)結(jié)束的條件,當(dāng)t的值小于10-4結(jié)束循環(huán)。(5)現(xiàn)例示用while循環(huán)來求e值的部分程序: i=1;e=1.0;t=1.0; while(t>=1e-4) {

      t=t/i; e+=t; i++; } 

      (6)請讀者自己對變量做出正確的定義,設(shè)計輸出語句,完善程序;也可以參考此程序段,按照自己的思路獨(dú)立地完成程序。(7)e的值應(yīng)當(dāng)是:2.71828。

      (8)根據(jù)以上分析,讀者已不難用for循環(huán)來實(shí)現(xiàn)求e值的計算。

      (9)注意:在完成此程序時,不要對分母中的階乘值進(jìn)行單獨(dú)計算,因?yàn)?7!的值已超過long類型的最大值,更無法求到50!。

      5.19【分析與解答】

      (1)從1880年至2000年的年數(shù)可用一個for循環(huán)來取得。

      (2)對每一年,用以上指定的條件來進(jìn)行判斷,若滿足條件即為閏年,進(jìn)行輸出。

      (3)按輸出的要求,需要設(shè)一個變量用于統(tǒng)計一行中輸出的個數(shù),若在一行上已連續(xù)輸出了5個年數(shù),就需輸出一個換行符,使下一個輸出項(xiàng)在新的一行上開始;若用變量n來做此統(tǒng)計,則當(dāng)表達(dá)式n%5==0時就應(yīng)輸出一個換行符,同時使n重新置0值。

      (4)若變量y代表年數(shù),if語句的邏輯表達(dá)式可以寫成如下:

      (y%4==0 && y%100!=0[JB>1|][JB>1|]y%400==0)(5)以下程序段供參考:

      for(y=1880;y<=2000;y++)

      if(y%4==0 && y%100![KG-*2]=0[JB>1|][JB>1|]y%400==0) {

      printf(″%d ″,y); n++;

      if(n%5==0)

      { printf(″\n″);n=0;} }

      (6)請讀者自己對變量做出正確的定義并賦初值,完善程序;也可以參考此程序段,按照自己的思路獨(dú)立地完成程序。從1880年至2000年有30個閏年。

      5.20 【分析與解答】

      (1)不難理解利用以下的for循環(huán)可以在一行上連續(xù)輸出n個*號:

      for(i=1;i<=n;i++)printf(″*″);

      printf(″\n″);

      若n的值是6,則連續(xù)輸出6個*號。

      (2)以上圖形是在各行上輸出數(shù)目不等的*號,只是*號的數(shù)目依次有規(guī)律地變化。在上半部分各行依次是1、3、5、7個,因此可以用以下的程序段來實(shí)現(xiàn)這樣的輸出:

      for(k=1;k<=7;k++,k++)

      {

      for(i=1;i<=k;i++)printf(″*″); printf(″\n″);

       } 

      在下半部依次是5、3、1個;因此可以用以下的程序段來實(shí)現(xiàn)這樣的輸出:

      for(k=5;k>=1;k--,k--)

      {

      for(i=1;i<=k;i++)printf(″*″); printf(″\n″);

       } 

      以上程序段從第一列起輸出的結(jié)果如下: * *** ***** ******* ***** *** * 

      現(xiàn)在我們已完成了在每行輸出指定數(shù)目的*號。

      (3)輸出結(jié)果與題目要求不同,它們的區(qū)別是:按題目每一行之前有不同的空格,而這里則是所有的行都在第一列上開始輸出*號;所以接著就應(yīng)當(dāng)解決這一問題。(4)分析題目要求,每行第一個*號位置的縮進(jìn)是有規(guī)律的,假定中間這一行第一個*號位置是在第一列,則可看出,第一至第三行的縮進(jìn)分別是3、2、1個空格;而圖形下半部的縮進(jìn)數(shù)則剛好相反。這可在以上循環(huán)中添加輸出連續(xù)空格的for循環(huán)來實(shí)現(xiàn),對于上半部程序如下:

      b=3; for(k=1;k<=7;k++,k++)

      {

      for(j=1;j<=b;j++)printf(″ ″);b--;

      for(i=1;i<=k;i++)printf(″*″); printf(″\n″);

       } 

      (5)請讀者在理解以上給出的示例的基礎(chǔ)上,自己添加下半部空格的輸出。

      第六章、字符型數(shù)據(jù)

      一、選擇題

      6.1 C語言中的簡單數(shù)據(jù)類型有

      A)整型、實(shí)型、邏輯型

      B)整型、實(shí)型、字符型

      C)整型、字符型、邏輯型

      D)整型、實(shí)型、邏輯型、字符型

      答案:B 6.2 C語言中,字符(char)型數(shù)據(jù)在微機(jī)內(nèi)存中的存儲形式是

      A)反碼

      B)補(bǔ)碼

      C)EBCDIC碼

      D)ASCII碼

      答案:D 6.3 設(shè)有語句char a=''72'';,則變量a

      A)包含1個字符

      B)包含2個字符

      C)包含3個字符

      D)說明不合法

      答案:A 6.4 C語言中不合法的字符常量是

      A)''