




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
PAGE56第1章一、選擇題1.完整的計算機系統(tǒng)包括_________兩大部分。A)控制器和運算器 B)CPU和I/O設(shè)備C)硬件和軟件 D)操作系統(tǒng)和計算機設(shè)備答案:C2.計算機硬件系統(tǒng)包括_________。A)內(nèi)存儲器和外部設(shè)備 B)顯示器、機箱和鍵盤C)主機和外部設(shè)備 D)主機和打印機答案:C3.計算機軟件系統(tǒng)包括_________。A)操作系統(tǒng)和語言處理系統(tǒng) B)數(shù)據(jù)庫軟件和管理軟件C)程序和數(shù)據(jù) D)系統(tǒng)軟件和應(yīng)用軟件答案:D4.銀行的儲蓄程序?qū)儆赺________。A)表格處理軟件 B)系統(tǒng)軟件C)應(yīng)用軟件 D)文字處理軟件答案:C5.系統(tǒng)軟件中最重要的是_________。A)解釋程序 B)操作系統(tǒng)C)數(shù)據(jù)庫管理系統(tǒng) D)工具軟件答案:B6.計算機能直接執(zhí)行_________。A)使用高級語言編寫的源程序 B)機器語言程序C)英語程序 D)十進(jìn)制程序答案:B7.將高級語言翻譯成機器語言的方式有_________兩種。A)解釋方式和編譯方式 B)文字處理和圖形處理C)圖像處理和翻譯 D)語音處理和文字編輯答案:A8.“程序存儲思想”是由_________提出來的。A)丹尼爾·里奇 B)馮·諾依曼 C)貝爾 D)馬丁·理查德答案:B9.(10110110)2+(111101)2=(_________)2。A)110101 B)11110011C)11001100 D)11010111答案:B10.(10010100)2-(100101)2=(_________)2。A)11110101 B)10010011C)1101111 D)1100111答案:C11.(1101)2×(101)2=(_________)2。A)1000001 B)1010011C)1011100 D)1101111答案:A12.(10010)2÷(11)2=(_________)2。A)1010 B)111C)1100 D)110答案:D13.將如下補碼轉(zhuǎn)換為十進(jìn)制數(shù):(11110110)補=(_________)10。A)8 B)-9C)-10 D)11答案:C14.已知字符8的ASCII碼值是56,那么字符5的ASCII碼值是_________。A)52 B)53C)54 D)55答案:B15.1KB表示_________。A)1024位 B)1000位C)1000字節(jié) D)1024字節(jié)答案:D16.指令存儲在存儲器的_________存儲區(qū)。A)程序 B)數(shù)據(jù) C)棧 D)堆答案:A二、填空題1.計算機由如下5個基本部分組成:運算器、控制器、_________和輸出設(shè)備。答案:存儲器、輸入設(shè)備2.運算器的主要功能是算術(shù)運算和_________。答案:邏輯運算3.存儲器通常分為內(nèi)存儲器和_________。答案:外存儲器4.計算機能夠直接識別和執(zhí)行的計算機語言是_________。答案:機器語言5.中央處理器是決定計算機性能的核心部件,由________組成。答案:運算器和控制器6.(254)10=()2=()8=()16。答案:11111110376FE7.(3.40625)10=()2=()8=()16。答案:11.011013.323.688.(125)10=()原=()反=()補。答案:0111110101111101011111019.(-25)10=()原=()反=()補。答案:10011001111001101110011110.十進(jìn)制數(shù)3527的8421BCD碼的表示形式為________________。答案:001101010010011111.已知字符a的ASCII碼值是97,那么字符f的ASCII碼值是________。答案:102第2章一、選擇題1.C程序的基本單位是________。A)函數(shù) B)過程C)子程序 D)子例程答案:A分析:C程序由main函數(shù)和若干(包括零個)其他函數(shù)組成,函數(shù)是C程序的基本單位。2.下列敘述中不正確的是________。A)main函數(shù)在C程序中必須唯一。B)C程序的執(zhí)行是從main函數(shù)開始的,所以main函數(shù)必須放在程序的最前面。C)函數(shù)可以帶參數(shù),也可以不帶參數(shù)。D)函數(shù)在執(zhí)行時,將按函數(shù)體中語句的先后次序,依次執(zhí)行每條語句。答案:B分析:C程序是由函數(shù)組成的,函數(shù)的排列順序是任意的。因此,main函數(shù)放在其他函數(shù)的前面、后面或中間均可。3.以下敘述中正確的是________。A)C程序中的注釋只能出現(xiàn)在程序的開始位置或語句的后面。B)C程序書寫格式嚴(yán)格,要求一行內(nèi)只能寫一條語句。C)C程序書寫格式自由,一條語句可以寫在多行中。D)使用C語言編寫的程序只能放在一個程序文件中。答案:C分析:C語言書寫格式自由,一條語句可以寫在多行中,一行中也可以寫多條語句。4.以下敘述中正確的是________。A)C程序的基本組成單位是語句。B)C程序中的每一行只能寫一條語句。C)簡單的C語句必須以分號結(jié)束 。D)C語句必須在一行內(nèi)寫完。答案:C分析:分號是C語句的一部分,不能省略。5.計算機能直接執(zhí)行的程序是________。A)源程序 B)目標(biāo)程序 C)匯編程序 D)可執(zhí)行程序答案:D二、填空題1.在C源程序中,注釋部分兩側(cè)的分界符分別為________和________。答案:/**/分析:C程序的注釋部分需要使用分界符/*和*/括起來。注釋部分可以使用任何文字符號,但分界符不能出現(xiàn)嵌套形式。換言之,注釋內(nèi)不能再出現(xiàn)分界符,例如/*……/*……*/……*/是錯誤的。2.C程序總是從________開始執(zhí)行。答案:main函數(shù)分析:C程序總是從main函數(shù)開始執(zhí)行,而不論main函數(shù)被放在何處。3.C語言既可用來編寫________軟件,也可用來編寫應(yīng)用軟件。答案:系統(tǒng)分析:C語言既像匯編語言那樣允許直接訪問物理地址,能進(jìn)行位運算,還能實現(xiàn)匯編語言的大部分功能,比如直接對硬件進(jìn)行訪問;也有高級語言的面向用戶、容易記憶、容易學(xué)習(xí)且易于書寫的特點。因此,C語言既可以用來編寫系統(tǒng)軟件,也可以用來編寫應(yīng)用軟件。4.C源程序的后綴是________;經(jīng)過編譯后,生成的目標(biāo)程序的后綴是________;經(jīng)過鏈接后,生成的可執(zhí)行程序的后綴是________。答案:.c.obj.exe三、編程題1.編寫程序,在屏幕上顯示如下信息:*****************************MerryChristmas!HappyNewYear!*****************************分析:可利用庫函數(shù)printf的輸出功能方便地實現(xiàn)上述效果。程序如下:#include<stdio.h>intmain(){printf("*****************************\n");printf("MerryChristmas!\n");printf("HappyNewYear!\n");printf("*****************************\n");return0;}2.輸入a和b后,輸出一元一次方程ax+b=0的解。分析:這個方程的解為x=-b/a。程序如下:#include<stdio.h>intmain(){floata,b,x; /*定義存放實數(shù)的3個變量a、b、c*/scanf("%f%f",&a,&b); /*輸入兩個實數(shù),分別賦給a和b*/x=-b/a; /*求方程的解x*/printf("x=%f\n",x); /*輸出變量x的值*/return0;}程序運行結(jié)果如下:56↙x=-1.2000003.輸入3個數(shù),輸出其中的最小值。分析:既可采用例2.3中的形式,也可按如下算法編寫程序。第1步:輸入3個數(shù)并分別賦給a、b、c。第2步:將a的值賦給min。第3步:如果min>b,將b的值賦給min。第4步:如果min>c,將c的值賦給min。第5步:輸出min的值。提示:上面的第3步可通過語句if(min>b)min=b;來實現(xiàn)。程序如下:#include<stdio.h>intmain(){floata,b,c,min; /*定義存放實數(shù)的變量a、b、c、min*/printf("a,b,c=?\n"); /*輸出提示信息"a,b,c=?"*/scanf("%f%f%f",&a,&b,&c); /*輸入3個數(shù)并分別賦給a、b、c*/min=a; /*將a的值賦給min*/if(min>b)min=b; /*當(dāng)min>b時,將b的值賦給min*/if(min>c)min=c; /*當(dāng)min>c時,將c的值賦給min*/printf("min=%f\n",min); /*輸出變量min的值*/return0;}程序運行結(jié)果如下:a,b,c=?538↙min=3.000000第3章一、選擇題1.在C程序中,________。A)用戶標(biāo)識符中可以出現(xiàn)下畫線和中畫線(減號)。B)用戶標(biāo)識符中不可以出現(xiàn)中畫線,但可以出現(xiàn)下畫線。C)用戶標(biāo)識符中可以出現(xiàn)下畫線,但不可以放在用戶標(biāo)識符的開頭。D)用戶標(biāo)識符中可以出現(xiàn)下畫線和數(shù)字,它們都可以放在用戶標(biāo)識符的開頭。答案:B分析:在C語言中,標(biāo)識符的命名規(guī)則如下。(1)標(biāo)識符由數(shù)字、字母、下畫線組成。(2)標(biāo)識符的首字符必須為字母或下畫線。(3)標(biāo)識符不能是C語言中的保留字。(4)C語言對英文字母區(qū)分大小寫。例如,A與a表示不同的標(biāo)識符。2.以下選項中不合法的標(biāo)識符是________。A)print B)FOR C)&a D)_00答案:C3.以下選項中不屬于C語言數(shù)據(jù)類型的是________。A)signedshortint B)unsignedlongintC)unsignedint D)longshort答案:D分析:選項D不是合法的C語言數(shù)據(jù)類型。C語言中的整型變量可分為以下6種類型:有符號基本整型[signed]int(方括號表示可省略,比如signedint可簡寫為int)、無符號基本整型unsignedint、有符號短整型[signed]short[int]、無符號短整型unsignedshort[int]、有符號長整型[signed]long[int]和無符號長整型unsignedlong[int]。4.C語言中的基本數(shù)據(jù)類型包括________。A)整型、實型、邏輯型 B)整型、實型、字符型C)整型、邏輯型、字符型 D)整型、實型、邏輯型、字符型答案:B分析:C語言中沒有邏輯型數(shù)據(jù),而是使用數(shù)值0表示“假”,并使用非零值表示“真”。5.以下關(guān)于long、int和short型數(shù)據(jù)所占內(nèi)存大小的敘述中,正確的是________。A)均占用4字節(jié) B)根據(jù)數(shù)據(jù)的大小來決定所占內(nèi)存的字節(jié)數(shù)C)由用戶自己定義 D)由C語言編譯系統(tǒng)決定答案:D6.C源程序中不能表示的數(shù)制是________。A)二進(jìn)制 B)八進(jìn)制 C)十進(jìn)制 D)十六進(jìn)制答案:A分析:C語言只支持使用十進(jìn)制、八進(jìn)制和十六進(jìn)制。7.下列選項中能夠正確地定義符號常量的是________。A)#definen=10 B)#definen10C)#definen10; D)#DEFINEN10答案:B分析:符號常量的定義格式為“#define符號常量名常量”。符號常量可用標(biāo)識符命名,注意符號常量名的前后要有空格。8.以下所列的C語言常量中,錯誤的是________。A)0xFF B)l.2e0.5 C)2L D)'\n'答案:B分析:選項A中的常量是以0x開頭的十六進(jìn)制數(shù);選項C中的常量是長整型常量;選項D中的常量是轉(zhuǎn)義字符常量;選項B中的常量表示形式錯誤,e的右側(cè)不能是小數(shù),而只能是整數(shù)。9.在C語言中,字符型數(shù)據(jù)在內(nèi)存中的存儲形式是________。A)原碼 B)反碼 C)補碼 D)ASCII碼答案:D分析:字符型數(shù)據(jù)在內(nèi)存中保存的是ASCII碼,而ASCII碼都是正整數(shù),正整數(shù)的原碼、反碼和補碼完全相同。10.若有定義語句charc='\72';,則變量c________。A)包含1個字符 B)包含2個字符C)包含3個字符 D)定義不合法答案:A分析:11.不合法的八進(jìn)制數(shù)是________。A)0 B)028 C)077 D)01答案:B分析:八進(jìn)制數(shù)由數(shù)字0~7組成,并且以0開頭,不包含數(shù)字8。12.以下選項中正確的字符串常量是________。A)"\\\" B)'abc' C)OlympicGames D)""答案:D13.以下選項中正確的定義語句是________。A)doublea;b; B)doublea=b=7;C)doublea=7,b=7; D)double,a,b;答案:C分析:選項A錯,a和b應(yīng)該用逗號分開。選項B錯,應(yīng)為doublea=7,b=7;。選項D錯,double和a之間應(yīng)使用空格隔開,而不能使用逗號。14.假設(shè)c1、c2為字符型變量,執(zhí)行語句cl=getchar();c2=getchar();時,從鍵盤輸入A↙,此時c1和c2的值分別為________。A)都是'A' B)c1是'A',c2未輸入C)c1未輸入,c2是'A' D)c1是'A',c2是'\n'答案:D分析:getchar函數(shù)的功能是從鍵盤接收一個字符,當(dāng)輸入A↙(↙表示按回車鍵,也就是輸入換行符'\n')時,第一個字符'A'被賦給c1,第二個字符'\n'被賦給c2。15.假設(shè)c為字符型變量,值為'A';a為整型變量,值為97;執(zhí)行語句putchar(c);putchar(a);后,輸出結(jié)果為________。A)Aa B)A97 C)A9 D)aA答案:A分析:putchar(x)函數(shù)的功能是輸出字符x。參數(shù)x可以是字符,也可以是整數(shù)。當(dāng)x是整數(shù)時,就輸出以這個整數(shù)作為ASCII碼值的字符。16.假設(shè)a和b是整型變量,執(zhí)行語句scanf("a=%d,b=%d",&a,&b);,為了使a和b的值分別為1和2,正確的輸入應(yīng)該是________。A)12 B)1,2 C)a=1,b=2 D)a=lb=2答案:C分析:當(dāng)scanf輸入函數(shù)的格式字符串中包含普通字符時,必須原樣輸入。在這里,格式字符串"a=%d,b=%d"中的a=和b=是普通字符,因此必須原樣輸入。17.為了使用輸入語句scanf("%4d%4d%10f",&i,&j,&x);,為i輸入-10,為j輸入12,為x輸入345.67,正確的輸入形式應(yīng)該是________。A)-1012345.67↙ B)-1012345.67↙C)-10001200345.67↙ D)-10,12,345.67↙答案:B分析:選項D是錯誤的,因為scanf輸入函數(shù)的格式字符串中沒有逗號。由于變量i的輸入格式為%4d,這表示寬度為4,因此系統(tǒng)在從選項A或C中讀取數(shù)據(jù)時,將獲得-101或-100,選項A和D都是錯的。選項B是對的,因為選項B中的3個數(shù)是用空格分開的,而題目中為3個變量指定的輸入格式的寬度都大于對應(yīng)的數(shù)據(jù),寬度將不起作用。18.已知字母A的ASCII碼值為65,以下語句的輸出結(jié)果是________。charcl='A',c2='Y';printf("%d,%d\n",c1,c2);A)輸出格式非法,因而輸出錯誤信息 B)65,90C)A,Y D)65,89答案:D分析:字符型數(shù)據(jù)實際上是整型數(shù)據(jù),也就是字符的ASCII碼值。比如,字符'A'的ASCII碼值是65,字符'B'的ASCII碼值是65+1,以此類推,字符'Y'的ASCII碼值是65+24=89。二、填空題1.在C語言程序中,用關(guān)鍵字________定義基本整型變量,用關(guān)鍵字________定義單精度實型變量,用關(guān)鍵字_________定義雙精度實型變量。答案:intfloatdouble2.把a1、a2定義成單精度實型變量并賦初值1的語句是________。答案:floata1=1.0,a2=1.0;分析:也可以將1.0改為1,因為在進(jìn)行賦值時,系統(tǒng)會自動進(jìn)行轉(zhuǎn)換。3.C程序中定義的變量代表內(nèi)存中的________。答案:存儲單元分析:在編譯C程序時,系統(tǒng)會根據(jù)變量的類型給變量分配存儲單元,給變量賦值就是將數(shù)據(jù)存放到變量所代表的存儲單元中。4.若有定義語句inti=123;floatx=-45.678;,則語句printf("i=%5dx=%7.4f\n",i,x);的輸出結(jié)果是_______。答案:i=123x=-45.6780分析:格式字符串中的普通字符原樣輸出;格式說明符%5d表示輸出項i的值(123)的寬度為5,左補兩個空格;%7.4表示輸出項x的值的寬度為7,其中小數(shù)部分有4位,整數(shù)部分以實際寬度輸出。5.若有定義語句floatalfa=60,pi=3.1415926535626;,那么語句printf("sin(%3.0f*%.4f/180)\n",alfa,pi);的輸出結(jié)果是________。答案:sin(60*3.1416/180)分析:格式字符串中的普通字符原樣輸出;格式說明符%3.0f表示輸出項alfa的值的小數(shù)部分不輸出;%.4f表示輸出項pi的值的小數(shù)部分保留4位,整數(shù)部分以實際寬度輸出。6.若有定義語句charch='$',floatx=153.4523;,那么語句printf("%c%-8.2f\\n",ch,x);的輸出結(jié)果是________。答案:$153.45\n分析:%c表示對應(yīng)的輸出項ch的值以字符形式輸出;%-8.2f表示對應(yīng)的輸出項x的值以小數(shù)形式輸出,寬度為8,小數(shù)點后取兩位,負(fù)號表示左對齊,右補空格;轉(zhuǎn)義字符\\表示輸出一個\,然后輸出n。7.假設(shè)整型變量a和b的值分別為7和9,要求按以下格式輸出a和b的值:a=7b=9請完成如下輸出語句:printf("_________",a,b);。答案:a=%d\nb=%d8.執(zhí)行以下程序時,若輸入1234567↙,則輸出結(jié)果是________。#include<stdio.h>main(){inta=1,b;scanf("%2d%2d",&a,&b);printf("%d%d\n",a,b);}答案:1234分析:由于在輸入語句中為a和b指定的輸入寬度都是2,因此系統(tǒng)從輸入的數(shù)字中依次各取兩位并分別賦給a和b。三、編程題1.輸入一個字符,然后輸出這個字符及其ASCII碼值。分析:字符型數(shù)據(jù)在內(nèi)存中以相應(yīng)的ASCII碼值存放,因而既可以字符的形式輸出,也可以ASCII碼值(整數(shù))的形式輸出。程序如下:#include<stdio.h>intmain(){charch; /*定義字符型變量ch*/scanf("%c",&ch); /*為變量ch輸入字符*/printf("%c%d\n",ch,ch);return0;}程序運行結(jié)果如下:B↙B662.求平面上兩點之間的距離。分析:求平面上兩點(x1,y1)和(x2,y2)之間距離的公式如下程序如下:#include<stdio.h>#include<math.h> /*sqrt函數(shù)所在的頭文件*/intmain(){floatx1,y1,x2,y2,d;printf("input(x1,y1),(x2,y2):\n"); /*輸出提示信息*/scanf("%f%f%f%f",&x1,&y1,&x2,&y2);d=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); /*使用sqrt函數(shù)求平方根*/printf("d=%0.2f\n",d);return0;}程序運行結(jié)果如下:input(x1,y1),(x2,y2):1122↙↙d=1.413.已知等差數(shù)列的第一項為a,公差為d,求前n項之和,a、d、n可由鍵盤輸入。分析:等差數(shù)列的前n項之和的計算公式為a*n+n*(n-1)*d/2。程序如下:#include<stdio.h>intmain(){inta,d,n,sum;/*定義4個整型變量*/printf("inputadn:\n");/*輸出提示信息inputadn:*/scanf("%d%d%d",&a,&d,&n);/*輸入3個整數(shù),分別賦給a、d、n*/sum=a*n+n*(n-1)*d/2;/*求等差數(shù)列的前n項之和*/printf("sum=%d\n",sum);/*輸出結(jié)果*/return0;}程序運行結(jié)果如下:inputadn:1350↙↙sum=3725第4章一、選擇題1.若變量已正確定義并賦值,則符合C語言語法的表達(dá)式是________。A)a=a+7; B)a=7+b+c,a++ C)int(12.3%4) D)a=a+7=c+b答案:B分析:在表達(dá)式后加分號可構(gòu)成語句,選項A是語句;選項C錯,應(yīng)為(int)12.3%4;選項D錯,賦值運算符的左邊只能是變量。2.假設(shè)已經(jīng)定義doublex=l,y;,那么表達(dá)式y(tǒng)=x+3/2的值是________。A)1 B)2 C)2.0 D)2.5答案:C分析:y=1.0+3/2,也就是y=1.0+1,因此y=2.0。3.假設(shè)已經(jīng)定義intx;floaty;,那么下列表達(dá)式中結(jié)果為整型的是()。A)(int)y+x B)(int)x+y C)int(y+x) D)(float)x+y答案:A分析:選項A中的表達(dá)式(int)y+x能將y的值轉(zhuǎn)換成整數(shù),然后和整數(shù)x相加,結(jié)果為整數(shù);選項B中的表達(dá)式(int)x+y則將整數(shù)和實數(shù)相加,結(jié)果為實數(shù);選項C中的表達(dá)式存在語法錯誤,在進(jìn)行類型轉(zhuǎn)換時,必須使用圓括號將類型說明符int括起來;選項D中的表達(dá)式則將兩個實數(shù)相加,結(jié)果為實數(shù)。4.假設(shè)已經(jīng)定義intx=3,y=4,z=5;,那么下列表達(dá)式中值為0的是________。A)'x'&&'y' B)x<=y C)x||y+z&&y-z D)!((x<y)&&!z||1)答案:D分析:在選項A中,邏輯運算符&&兩邊的值均為非零值,故結(jié)果為1;在選項B中,比較運算符<=兩邊的值分別為3和4,故結(jié)果為1;在選項C中,邏輯運算符||左邊的值為非零值,因此右邊的值就不必再計算了,結(jié)果為1;在選項D中,表達(dá)式的值為!((3<4)&&!5||1),即!(1&&0||1),即!(0||1),即!1,故結(jié)果為0。5.已知x=10、ch='A'、y=0,表達(dá)式x>=y&&ch<'B'&&!y的值是________。A)0 B)1 C)“假” D)“真”答案:B分析:題目中表達(dá)式的值為10>=0&&'A'<'B'&&!0,即1&&1&&1,即1&&1,故結(jié)果為1。6.若a、b、c、d都是int型變量且初值為0,則以下選項中不正確的賦值語句是________。A)a=b=c=100; B)d++; C)c+b; D)d=(c=22)-(b++);答案:C分析:選項A是正確的賦值語句;選項B中的d++;相當(dāng)于d=d+1;,這是正確的賦值語句;選項C中的語句沒有賦值運算符,不是賦值語句;選項D也是正確的賦值語句。7.判斷字符型變量c為數(shù)字字符的正確表達(dá)式為________。A)'0'<=c<='9' B)'0'<=c&&c<='9'C)c>='0'||c<='9' D)c>=0&&c<=9答案:B分析:在選項A中,'0'<=c的結(jié)果或是1,或是0,但肯定小于'9',所以不論c為何值,結(jié)果總是1,故選項A是錯誤的;選項B中的表達(dá)式表示c不小于字符'0',但同時也不大于字符'9',所以滿足該表達(dá)式要求的c必為數(shù)字字符。8.下列運算符中,優(yōu)先級最低的是________。A)?: B)&& C)== D)*=答案:D分析:本題中的運算符由高到低分別是==、&&、?:、*=。9.若有條件表達(dá)式x?a++:b--,則下列表達(dá)式中的________等價于表達(dá)式x。A)x==0 B)x!=0 C)x==l D)x!=1答案:B分析:在本題中,x在條件表達(dá)式中起條件判斷的作用,x為0表示“假”,x不等于0表示“真”。當(dāng)x為0時,表達(dá)式x!=0的值也為0;當(dāng)x不等于0時,表達(dá)式x!=0的值也不等于0。因此,當(dāng)作為邏輯值(用于條件判斷)時,x和x!=0是等價的。10.假設(shè)已經(jīng)定義intk=4,a=3,b=2,c=l;,那么表達(dá)式k<a?k:c<b?c:a的值是________。A)4 B)3 C)2 D)1答案:D分析:條件表達(dá)式的結(jié)合性是自右向左,所以表達(dá)式k<a?k:c<b?c:a可寫為k<a?k:(c<b?c:a)。由于k<a為0(“假”),因此表達(dá)式的值為c<b?c:a;又由于c<b的值為1(“真”),因此表達(dá)式的值為c,也就是1。11.假設(shè)已經(jīng)定義inta=9;,那么語句a+=a-=a+a;執(zhí)行后,變量a的值是________。A)18 B)9 C)-18 D)-9答案:C分析:賦值運算符的結(jié)合性是自右向左,所以語句a+=a-=a+a;先計算表達(dá)式a-=a+a的值,因此a=a(a+a),a=9;之后才計算表達(dá)式a+=9的值,因此a=a+(9),a=18。12.對于整型變量x,下列說法中錯誤的是________。A)5.0不是表達(dá)式 B)x是表達(dá)式C)!x是表達(dá)式 D)sqrt(x)是表達(dá)式答案:A分析:使用運算符將參與運算的對象連接起來的合法的式子,就是表達(dá)式。例如,!x是邏輯表達(dá)式。表達(dá)式一定有確定的值。常量、變量以及有返回值的函數(shù)都是表達(dá)式。______。A)100 B)160 C)120 D)64答案:D分析:表達(dá)式x<<1會將x值的二進(jìn)制形式左移1位,這相當(dāng)于乘以2,將040(八進(jìn)制)乘以2,得到0100(八進(jìn)制),等于十進(jìn)制數(shù)64。14.假設(shè)已經(jīng)定義chara=3,b=6,c;,那么表達(dá)式c=a^b<<2的二進(jìn)制值是________。A)00011011 B)00010100 C)00011100 D)00011000答案:A分析:在表達(dá)式c=a^b<<2中,左移運算符<<的優(yōu)先級最高,其次是按位異或運算符^(兩個二進(jìn)制整數(shù)的對應(yīng)位相同,結(jié)果為0;對應(yīng)位不同,結(jié)果為1),賦值運算符的優(yōu)先級最低。于是,系統(tǒng)先計算b<<2,也就是計算00000110<<2,結(jié)果為00011000;之后再計算a^00011000,也就是計算00000011^00011000,結(jié)果為00011011。二、填空題1.假設(shè)已經(jīng)定義intk=11;,請寫出進(jìn)行k++運算后表達(dá)式的值_____以及變量的值_____。答案:11、12分析:自增運算符++位于變量k的右邊,這表示先取k的值11作為表達(dá)式k++的值,然后k自增1,變?yōu)?2。2.C語言使用________表示邏輯值“真”,使用________表示邏輯值“假”。答案:非零值、0分析:C語言沒有邏輯型數(shù)據(jù),并且在進(jìn)行邏輯運算或判斷時,用0表示“假”,用非零值表示“真”;但C語言在給出關(guān)系運算或邏輯運算的結(jié)果時,用0表示“假”,用1表示“真”。3.將數(shù)學(xué)算式|x|>4寫成C語言中的邏輯表達(dá)式:________。答案:x<-4||x>4分析:當(dāng)x是負(fù)數(shù)時,關(guān)系表達(dá)式x<-4與數(shù)學(xué)算式|x|>4等價;當(dāng)x是非負(fù)數(shù)時,關(guān)系表達(dá)式x>4與數(shù)學(xué)算式|x|>4等價;一般情況下,邏輯表達(dá)式x<-4||x>4與數(shù)學(xué)算式|x|>4等價。4.假設(shè)已經(jīng)定義floatx=2.5,y=4.7;inta=7;,表達(dá)式a%3*(int)(x+y)%2/4的值為_____。答案:0分析:表達(dá)式a%3*(int)(x+y)%2/4的值為1*(int)(7.2)%2/4,即7%2/4,即1/4,結(jié)果為0。5.假設(shè)已經(jīng)定義intx=8;且y=8,執(zhí)行語句x+=x--+--y;后x的值為________。答案:22分析:x--表示先取x的值,之后再將x的值減1;--y表示先將y的值減1,之后再取y的值。因此,x--+--y的值是8+7(也就是15);而當(dāng)執(zhí)行x+=15(也就是x=x+15)時,x的值已經(jīng)是7,因此x=7+15,x=22。6.假設(shè)已經(jīng)定義inta=2,b=4,x,y;,表達(dá)式!(x=a)||(y=b)&&!(2-3.5)的值為________。答案:0分析:表達(dá)式x=a的值是2,所以!(x=a)的值是0;表達(dá)式(y=b)&&!(2-3.5)的值是4&&0,也就是0;邏輯運算符||兩邊的值都是0,因此最終結(jié)果是0。7.假設(shè)已經(jīng)定義intm=2,n=1,a=1,b=2,c=3;,執(zhí)行語句d=(m=a==b)&&(n=b>c);后,m和n的值分別為_________。答案:0和1分析:表達(dá)式(m=a==b)的值是m=1==2,即m=0。由于&&運算符左邊的值是0,因此右邊的表達(dá)式(n=b>c)沒有執(zhí)行,n的值仍是1。8.假設(shè)已經(jīng)定義inta=2;,執(zhí)行語句a=3*5,a*4;后,a的值為________。答案:15分析:在所有的運算符中,逗號表達(dá)式的優(yōu)先級最低,其功能是將兩個或兩個以上的表達(dá)式連接起來,從左到右依次計算各個表達(dá)式,最后一個表達(dá)式的值即為整個逗號表達(dá)式的值。因此,表達(dá)式a=3*5,a*4;的值為60,但a的值是15。三、編程題1.輸入華氏溫度,要求輸出對應(yīng)的攝氏溫度。計算公式如下:其中,t表示攝氏溫度,tF表示華氏溫度。計算結(jié)果取兩位小數(shù)。分析:C語言規(guī)定,兩個整數(shù)相除,結(jié)果取整數(shù)部分。在程序中,上述計算公式應(yīng)寫為t=(5.0/9.0)*(tF-32)或t=5.0/9.0*(tF-32)。程序如下:#include<stdio.h>intmain(){floatt,tF;scanf("%f",&tF); /*輸入華氏溫度并賦給變量tF*/t=(5.0/9.0)*(tF-32); /*按公式計算攝氏溫度t*/printf("t=%.2f\n",t); /*輸出攝氏溫度t*/return0;}程序運行結(jié)果如下:56↙t=13.332.編寫程序,輸入一個實數(shù),輸出這個實數(shù)的絕對值。程序如下:#include<stdio.h>intmain(){floata;printf("inputa:");scanf("%f",&a);a=a>0?a:-a; /*求a的絕對值*/printf("%f\n",a);return0;}程序運行結(jié)果如下:inputa:-5↙↙5.0000003.輸入3個字符后,參考它們的ASCII碼值,按從小到大的順序輸出這3個字符。分析:字符的比較與數(shù)值的比較類似。比較字符的大小,實際上就是比較它們的ASCII碼值的大小。例如,比較'a'>'b'相當(dāng)于比較97>98,因為字符a和b的ASCII碼值分別是97、98。程序如下:#include<stdio.h>intmain(){charc1,c2,c3,m1,m2,m3; /*定義字符型變量*/printf("inputc1,c2,c3:"); /*輸出提示信息*/scanf("%c%c%c",&c1,&c2,&c3); /*輸入3個字符,分別賦給c1、c2、c3*/m1=c1>c2?c1:c2; /*將c1和c2中的較大字符賦給m1*/m1=m1>c3?m1:c3; /*將這3個字符中最大的那個字符賦給m1*/m3=c1<c2?c1:c2;m3=m3<c3?m3:c3;m2=c1+c2+c3-m1-m3; /*注意,變量中存放的是ASCII碼值*/printf("%c%c%c\n",m3,m2,m1);return0;}程序運行結(jié)果如下:inputc1,c2,c3:bac↙abc4.輸入一個實數(shù),使這個實數(shù)保留兩位小數(shù),并對第三位小數(shù)進(jìn)行四舍五入。程序如下:#include<stdio.h>intmain(){floatx;printf("Enterx:");scanf("%f",&x);printf("x=%f\n",x);x=(int)(x*100+0.5)/100.0;printf("x=%f\n",x);return0;}程序運行結(jié)果如下:Enterx:12.3456↙x=12.345600x=12.350000第5章一、選擇題1.假設(shè)已經(jīng)定義inta=2,b=-1,c=2;,那么在執(zhí)行語句if(a<b)if(b<0)c=0;elsec+=1;后,變量c的值是_________。A)0 B)1 C)2 D)3答案:C分析:else與if的匹配規(guī)則是,else總是與它前面相距最近的尚未配對的if配對。本題中的if語句實際上是if(a<b){if(b<0)c=0;elsec+=1;},只有當(dāng)條件a<b滿足時,才執(zhí)行語句if(b<0)c=0;elsec+=1;。2.運行以下程序后,將輸出_________。intmain(){intk=-3;if(k<=0)printf("****\n")elseprintf("&&&&\n");return0;}A)**** B)&&&&C)####&&&& D)有語法錯誤,程序無法通過編譯答案:D分析:在上述if語句中,分支語句printf("****\n")后缺少分號。3.以下程序的輸出結(jié)果是_________。inti,sum;for(i=1;i<6;i++)sum+=sum;printf("%d\n",sum);A)15 B)14 C)不確定 D)0答案:C分析:變量sum沒有賦初值,其值不確定。4.下列語句中能夠?qū)⑿懽帜皋D(zhuǎn)換為大寫字母的是_________。A)if(ch>='a'&ch<='z')ch=ch-32; B)if(ch>='a'&&ch<='z')ch=ch-32;C)ch=(ch>='a'&&ch<='z')?ch-32; D)ch=(ch>'a'&&ch<'z')?ch-32:ch;答案:B分析:選項A是錯的,因為&是按位與運算符;選項B是對的,條件ch>='a'&&ch<='z'表示字符ch是小寫字母,小寫字母的ASCII碼值比對應(yīng)的大寫字母的ASCII碼值大32,所以使用ch=ch-32可將小寫字母轉(zhuǎn)換為大寫字母;選項C有語法錯誤,因為有?無:;選項D是錯誤的,如果ch是小寫字母'a',那么執(zhí)行后,ch仍為'a',并未轉(zhuǎn)換為大寫字母'A'。5.下列語句中能夠?qū)⒆兞縰和s中的最大值賦給變量t的是_________。A)if(u>s)t=u;t=s; B)t=s;if(u>s)t=u;C)if(u>s)t=s;elset=u; D)t=u;if(u>s)t=s;答案:B分析:選項A是錯的,因為當(dāng)u>s時,雖然執(zhí)行了t=u;,但仍需要執(zhí)行t=s;;選項C和D也是錯的,因為t中存放的是最小值。6.下列選項中與語句while(!s)中的條件等價的是_________。A)s==0 B)s!=0 C)s==1 D)s=0答案:A分析:當(dāng)s為0時,!s和s==0的值都為1,表示真;當(dāng)s為非零值時,!s和s==0的值都為0,表示假。所以,!s和s==0等價。7.下列語句中能夠輸出26個大寫英文字母的是_________。A)for(a='A';a<='Z';printf("%c",++a)); B)for(a='A';a<'Z';a++)printf("%c",a);C)for(a='A';a<='Z';printf("%c",a++)); D)for(a='A';a<'Z';printf("%c",++a));答案:C分析:選項A和D沒有輸出大寫字母'A',選項B則沒有輸出大寫字母'Z'。8.下面的循環(huán)體執(zhí)行的次數(shù)是_________。i=0;k=10;while(i=8)i=k--;A)8次 B)10次 C)2次 D)無數(shù)次答案:D分析:while循環(huán)中的條件i=8是賦值表達(dá)式,其值永遠(yuǎn)是8。循環(huán)體中就一條語句,不存在能夠使循環(huán)停止的語句,所以循環(huán)將執(zhí)行無數(shù)次。9.以下程序的輸出結(jié)果是_________。intk,j,s;for(k=2;k<6;k++,k++){s=1;for(j=k;j<6;j++)s+=j;}printf("%d\n",s);A)9 B)1 C)11 D)10答案:D分析:外循環(huán)將循環(huán)兩次,但s是在循環(huán)體中進(jìn)行初始化的,所以只需要分析最后一次循環(huán)體的執(zhí)行情況即可,也就是k的值為4的情況,此時s=1+4+5,因此輸出=10。10.以下程序的輸出結(jié)果是_________。inti,j,m=0;for(i=1;i<=15;i+=4)for(j=3;j<=19;j+=4)m++;printf("%d\n",m);A)12 B)15 C)20 D)25答案:C分析:外循環(huán)將循環(huán)4次(i=1、5、9、13),內(nèi)循環(huán)將循環(huán)5次(j=3、7、11、15、19),所以m++;共執(zhí)行4×5=20次,因此m的值是20。11.以下程序的輸出結(jié)果是_________。intx=3;do{printf("%3d",x-=2);}while(!(--x));A)1 B)30 C)1–2 D)死循環(huán)答案:C分析:do循環(huán)首先執(zhí)行循環(huán)體,輸出x-=2的值,即x=x-2,即x=1;然后計算循環(huán)條件!(--x),其值為1(因為x=0),循環(huán)條件為真,執(zhí)行循環(huán)體,輸出x-=2的值,即x=-2;然后再次計算循環(huán)條件!(--x),其值為0(因為x=-3),循環(huán)條件為假,循環(huán)結(jié)束。12.以下程序的輸出結(jié)果是_________。inty=10;for(;y>0;y--)if(y%3==0){printf("%d",--y);continue;}A)741 B)852 C)963 D)875421答案:B分析:當(dāng)y=10時,for循環(huán)的循環(huán)條件y>0為真,執(zhí)行循環(huán)體:if語句的執(zhí)行條件y%3==0的值是10%3==0,即1==0(為假),因而不執(zhí)行其后的分支語句(由大括號括起來的復(fù)合語句)。然后計算for循環(huán)中的y--,使得y=9,此時,循環(huán)條件y>0為真,再次執(zhí)行循環(huán)體:if語句的執(zhí)行條件y%3==0的值是9%3==0,即0==0(為真),因而執(zhí)行其后的分支語句:輸出--y的值,也就是輸出y=8,隨后執(zhí)行continue;語句,進(jìn)入下一次循環(huán),如表5-1所示。表5-1循環(huán)執(zhí)行情況循環(huán)次數(shù)y>0y%3==0--yy--第1次,y=10真假不輸出y=9第2次,y=9真真輸出y=8y=7第3次,y=7真假不輸出y=6第4次,y=6真真輸出y=5y=4第5次,y=4真假不輸出y=3第6次,y=3真真輸出y=2y=1第7次,y=1真假不輸出y=0(續(xù)表)循環(huán)次數(shù)y>0y%3==0--yy--第8次,y=0假,結(jié)束循環(huán)13.以下程序的輸出結(jié)果是_________。#include<stdio.h>intmain(){inti;for(i=1;i<=5;i++){if(i%2)printf("*");elsecontinue;printf("#");}printf("$\n");return0;}A)*#*#*#$ B)#*#*#*$ C)*#*#$ D)#*#*$答案:A分析:for循環(huán)將執(zhí)行5次循環(huán)體(i=1、2、3、4、5),循環(huán)體由兩條語句組成:雙分支if語句和輸出語句。當(dāng)i為奇數(shù)時,輸出字符*和字符#;當(dāng)i為偶數(shù)時,不輸出任何字符。因此,上述程序的輸出結(jié)果是選項A。二、填空題1.以下程序的輸出結(jié)果是____。inta=100;if(a>100)printf("%d\n",a>100);elseprintf("%d\n",a<=100);答案:1。2.當(dāng)a=1、b=2、c=3時,語句if(a>c)b=a;a=c;c=b;執(zhí)行后,a、b、c的值分別為____、____、____。答案:3、2、2分析:本題由3條語句組成,第一條語句是if(a>c)b=a;,由于條件a>c為假,因此b的值不變,系統(tǒng)執(zhí)行后兩條語句a=c;和c=b;,a和c的值分別為3和2。3.當(dāng)執(zhí)行以下程序后,i的值是____,j的值是____,k的值是____。inta,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++;dok++;while(a>d++);答案:5、4、6分析:for循環(huán)的循環(huán)體i++;共執(zhí)行5次,i的值是5;while循環(huán)的循環(huán)體j++;共執(zhí)行4次,j的值是4;do循環(huán)的循環(huán)體k++;共執(zhí)行6次,k的值是6。4.以下程序的輸出結(jié)果是____。intx=2;while(x--);printf("%d\n",x);答案:-1分析:當(dāng)x的值是0時,表達(dá)式x--的值是0,循環(huán)結(jié)束,然后將x的值減1,因此x的值是-1。5.以下程序的輸出結(jié)果是____。inti=0,sum=1;do{sum+=i++;}while(i<5);printf("%d\n",sum);答案:11分析:do循環(huán)的循環(huán)體sum+=i++;共執(zhí)行5次,因而sum的值是1+0+1+2+3+4=11。三、編程題1.輸入三角形的三條邊長,計算并輸出三角形的面積。分析:三個正數(shù)能夠構(gòu)成三角形的三條邊的條件是其中任意兩個數(shù)的和大于第三個數(shù)。假設(shè)這三個數(shù)分別為x、y、z,則它們能夠構(gòu)成三角形的三條邊的條件為x+y>z&&y+z>x&&z+x>y。利用如下數(shù)學(xué)公式可以求出三角形的面積。三角形的面積=,其中程序如下:#include<stdio.h>#include<math.h>intmain(){floatx,y,z,s,dime;scanf("%f%f%f",&x,&y,&z);if(x+y>z&&y+z>x&&z+x>y){s=(x+y+z)/2;dime=sqrt(s*(s-x)*(s-y)*(s-z));printf("dime=%f\n",dime);}elseprintf("error\n");return0;}2.使用if語句編寫程序,輸入x的值之后,按下式計算y的值并輸出。分析:可利用雙分支if語句計算y的值,條件0≤x≤8的表達(dá)式為0<=x&&x<=8。程序如下:#include<stdio.h>intmain(){floatx,y;scanf("%f",&x);if(0<=x&&x<=8)y=x+2*x*x+10;elsey=x-3*x*x*x-9;printf("y=%f\n",y);return0;}3.輸入10名學(xué)生的成績,輸出最低分?jǐn)?shù)。分析:可使用變量min存放最低分?jǐn)?shù),先給min賦初值100,再將每個成績都與min做比較,只要比min小,就存入min。程序如下:#defineN10#include<stdio.h>intmain(){inti;floatx,min=100;for(i=0;i<N;i++){scanf("%f",&x);if(x<min)min=x;}printf("min=%.1f\n",min);return0;}4.使用for循環(huán)語句輸出26個大寫字母,使用while循環(huán)語句輸出26個小寫字母。分析:對字符型變量ch,先賦初值'A',再利用字母連續(xù)的特點,循環(huán)輸出ch++,循環(huán)條件為ch<='Z'。最后,使用類似的方法處理小寫字母即可。程序如下:#include<stdio.h>intmain(){charch;for(ch='A';ch<='Z';ch++)printf("%c",ch);printf("\n");ch='a';while(ch<='z'){printf("%c",ch);ch++;}printf("\n");return0;}5.編寫程序,輸入一個三位的正整數(shù),找出能夠使用其各位數(shù)字組成的最大數(shù)和最小數(shù)。例如,輸入517,那么最大數(shù)為751,最小數(shù)為157。分析:假設(shè)x為一個三位的正整數(shù),先求出x的百位、十位、個位上的數(shù)字,并分別存放到a、b、c三個變量中,然后對它們進(jìn)行排序,使a中存放最小的數(shù)字、b中存放中間的數(shù)字、c中存放最大的數(shù)字,于是最大數(shù)為100×c+10×b+a,最小數(shù)為100×a+10×b+c。程序如下:#include<stdio.h>intmain(){intx,a,b,c,t,max,min;printf("inputanumber:");scanf("%d",&x);a=x/100;b=x/10%10;c=x%10;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;}max=c*100+b*10+a;min=a*100+b*10+c;printf("max=%d,min=%d\n",max,min);return0;}程序運行結(jié)果如下:inputanumber:517↙max=751,min=1576.輸入n和n個數(shù),輸出其中所有奇數(shù)的乘積。分析:定義整型變量n,用于存放數(shù)據(jù)的個數(shù)并控制循環(huán)的次數(shù);定義整型變量x,用于存放輸入的整數(shù),可利用表達(dá)式x%2或x%2!=0來判斷x是否是奇數(shù);由于乘積比較大,因此定義實型變量y(賦初值1),用于存放奇數(shù)的乘積。程序如下:#include<stdio.h>intmain(){intn,i,x;floaty=1; /*使用y存放所有奇數(shù)的乘積*/printf("inputn:");scanf("%d",&n);printf("input%dnumbers:",n);for(i=1;i<=n;i++){scanf("%d",&x);if(x%2!=0)y*=x;}printf("y=%.2f\n",y);return0;}程序運行結(jié)果如下:inputn:7↙↙input7numbers:1234567↙y=105.007.輸入n和n個數(shù),統(tǒng)計其中負(fù)數(shù)、零及正數(shù)的個數(shù)。分析:可使用變量pos、zero、neg分別存放n個數(shù)中正數(shù)、零及負(fù)數(shù)的個數(shù)。程序如下:#include<stdio.h>intmain(){intn,i,pos=0,zero=0,neg=0;floatx;scanf("%d",&n);for(i=0;i<n;i++){scanf("%f",&x);if(x>0)pos++;elseif(x<0)neg++;elsezero++;}printf("pos=%d,zero=%d,neg=%d\n",pos,zero,neg);return0;}程序運行結(jié)果如下:6↙102345↙pos=3,zero=1,neg=28.求數(shù)列的和。假設(shè)數(shù)列的首項為81,以后各項為前一項的平方根(如81、9、3、1.732、…),求前20項之和。分析:可使用庫函數(shù)sqrt求平方根,假設(shè)s=0、t=81,循環(huán)執(zhí)行20次循環(huán)體{s=s+t;t=sqrt(t)}即可。程序如下:#defineN20 /*定義符號常量N*/#include<stdio.h>#include<math.h> /*庫函數(shù)sqrt所在的頭文件*/intmain(){inti;doubles=0,t=81;for(i=1;i<=N;i++){s+=t;t=sqrt(t);}printf("s=%.3f\n",s);return0;}程序運行結(jié)果如下:s=111.3369.輸出3以上且1000以內(nèi)的水仙花數(shù)。水仙花數(shù)是指這樣的三位數(shù):其各位數(shù)字的立方和等于這個三位數(shù)本身(例如153=13+53+33)。分析:對于三位數(shù)n,用i、j、k分別表示其百位、十位、個位上的數(shù)字,如果n=i3+j3+k3,則n為水仙花數(shù)。程序如下:#include<stdio.h>intmain(){inti,j,k,n;for(n=100;n<1000;n++){i=n/100; /*i為百位上的數(shù)字*/j=n/10-i*10; /*j為十位上的數(shù)字*/k=n%10; /*k為個位上的數(shù)字*/if(n==i*i*i+j*j*j+k*k*k)printf("%6d",n);}printf("\n");return0;}程序運行結(jié)果如下:15337037140710.求算式1–1/2+1/3–1/4+1/5–1/6+…中的前40項之和。分析:在以上算式中,每一項的符號都和前一項的相反,分母則比前一項的大1。利用此規(guī)律,設(shè)s=1(表示和)、sign=1(表示各項的符號)、i=2(表示分母),循環(huán)執(zhí)行39次循環(huán)體{sign=-sign;s=s+sign/i++;}即可。注意:sign和i++中至少有一個需要是實數(shù),否則sign/i++為0。程序如下:#include<stdio.h>intmain(){inti,sign=1;floats=1;for(i=2;i<=40;i++){sign*=-1;s+=sign/(float)i;}printf("s=%f\n",s);return0;}程序運行結(jié)果如下:s=0.68080311.使用循環(huán)語句編寫程序,輸出如下圖形:分析:上述圖形可利用兩個二重循環(huán)來輸出。第一個二重循環(huán)輸出4行:其中,第1行先輸出3個空格,再輸出1個*;第2行先輸出2個空格,再輸出3個*;以此類推,第i行先輸出4i個空格,再輸出2il個*。第二個二重循環(huán)輸出3行:其中,第1行先輸出1個空格,再輸出5個*;第2行先輸出2個空格,再2輸出3個*;以此類推,第i行先輸出i個空格,再輸出72i個*。程序如下:#include<stdio.h>intmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=4-i;j++)printf("");for(j=1;j<=2*i-1;j++)printf("*");printf("\n");}for(i=1;i<=3;i++){for(j=1;j<=i;j++)printf("");for(j=1;j<=7-2*i;j++)printf("*");printf("\n");}return0;}第6章一、選擇題1.下列語句中能夠正確定義一維數(shù)組a的是________。A)inta(10); B)intn=10,a[n];C)intn;scanf("%d",&n); D)#definenl0inta[n]; inta[n];答案:D分析:選項A中的定義格式有錯誤,數(shù)組名的后面只能用方括號;C語言不允許對數(shù)組進(jìn)行動態(tài)定義,因此數(shù)組元素的個數(shù)必須是常量,選項B和C都是錯的。選項D是對的,因為n為符號常量。2.下列語句中能夠?qū)σ痪S數(shù)組a正確進(jìn)行初始化的是________。A)inta[6]={6*1} B)inta[6]={1…3}C)inta[6]={} D)inta[6]=(0,0,0)答案:A分析:初值可以是常量表達(dá)式,如6*1,選項A是對的;初值之間需要用逗號分開,選項B是錯的;選項C的大括號中無初值,也是錯的;選項D中的初值要用大括號括起來,而不是用圓括號。3.若有定義語句inta[10];,則下列選項中能夠?qū)?shù)組元素進(jìn)行正確引用的是________。A)a[10/25] B)a[10] C)a[4.5] D)a(1)答案:A 分析:選項A是對的,a[10/25]即a[0];選項B是錯的,因為下標(biāo)越界;選項C是錯的,下標(biāo)必須是整數(shù);選項D是錯的,下標(biāo)必須用方括號(即下標(biāo)運算符)括起來。4.若有定義語句chararray[]="China";,則數(shù)組array所占的存儲空間為________。A)4字節(jié) B)5字節(jié) C)6字節(jié) D)7字節(jié)答案:C分析:字符串結(jié)束標(biāo)志'\0'也要占1字節(jié),因而總共占6字節(jié)。5.下列語句中,合法的數(shù)組定義語句是________。A)chara[]="string"; B)inta[5]={0,1,2,3,4,5};C)chara="string"; D)chara[]=[0,1,2,3,4,5];答案:A分析:選項B中的初值個數(shù)大于數(shù)組元素的個數(shù);選項C中的數(shù)組名a的后面缺少方括號;選項D中的初值應(yīng)該用大括號而不是方括號括起來。6.若有定義語句inta[5],i;,則能夠輸入數(shù)組a的所有元素的語句是________。A)scanf("%d%d%d%d%d",a[5]);B)scanf("%d",a);C)for(i=0;i<5;i++)scanf("%d",&a[i]);D)for(i=0;i<5;i++)scanf("%d",a[i]);答案:C分析:選項A中輸入項的個數(shù)、格式都不對;選項B只能給a[0]賦值,數(shù)組名a表示第一個數(shù)組元素的地址,即&a[0];選項D中的輸入項應(yīng)為&a[i]。7.下列語句中能夠正確定義二維數(shù)組的是________。A)inta[][]; B)inta[][4]; C)inta[3][] D)inta[3][4];答案:D分析:在定義二維數(shù)組時,如果對全部元素賦初值,那么第一維的長度可不指定,但第二維的長度不能省略,所以選項A、B、C都是錯的。8.若有定義語句inta[3][4];,則下列選項中能夠?qū)?shù)組元素進(jìn)行正確引用的是________。A)a[3][1] B)a[2,1] C)a[3][4] D)a[31][44]答案:D分析:選項A中的第一維下標(biāo)越界;選項B中的兩個下標(biāo)應(yīng)該用兩對方括號括起來;選項C中的下標(biāo)也越界了。9.下列語句中能夠?qū)ΧS數(shù)組a進(jìn)行正確初始化的是________。A)inta[2][]={{1},{4,5}};B)inta[2][3]={1,2,3,4,5,6,7};C)inta[][]={1,2,3,4,5,6};D)inta[][3]={1,2,3,4,5};答案:D分析:定義二維數(shù)組時,第二維的長度不能省略,所以選項A和C是錯的;選項B中的初值個數(shù)大于數(shù)組元素的個數(shù)。10.下列用于對字符數(shù)組s進(jìn)行初始化的語句中,不正確的是________。A)chars[5]="abc"; B)chars[5]={'a','b','c','d','e'};C)chars[5]="abcde"; D)chars[]="abcde";答案:C分析:選項B是對的,但s中存放的是字符而不是字符串,因為字符串必須有結(jié)束標(biāo)志;選項C是錯的,因為所賦初值的字符個數(shù)加字符串結(jié)束標(biāo)志共6個字符,而數(shù)組元素只有5個。11.當(dāng)判斷字符串s1與s2是否相等時,應(yīng)當(dāng)使用的語句是________。A)if(s1==s2) B)if(s1=s2)C)if(s1[]=s2[]) D)if(strcmp(s1,s2)==0)答案:D分析:判斷兩個字符串是否相等時,不能使用比較運算符==進(jìn)行整體比較,更不能使用賦值運算符=進(jìn)行整體比較,而應(yīng)該使用strcmp函數(shù)進(jìn)行比較。12.下列語句的運行結(jié)果為________。chars[]="ab\0cd";printf("%s",s);A)ab0 B)ab C)abcd D)abcd答案:B分析:字符串的結(jié)束標(biāo)志是'\0',所以只有選項B是對的。13.下列語句的運行結(jié)果為________。chars[]="a\128b\\\tcd\n";printf("%d",strlen(s));A)8 B)9 C)10 D)14答案:B分析:轉(zhuǎn)義字符'\12'、'\\'、'\t'、'\n'各代表一個字符,strlen函數(shù)用于求字符串的長度,當(dāng)計算字符串的長度時,字符串結(jié)束標(biāo)志'\0'不包括在內(nèi)。14.以下程序的輸出結(jié)果是________。intmain(){intn[2]={0},i,j,k=2;for(i=0;i<k;i++)for(j=0;j<k;j++)n[j]=n[i]+1;printf("%d\n",n[k]);return0;}A)不確定的值 B)3 C)2 D)1答案:A分析:循環(huán)語句用于對數(shù)組的兩個元素n[0]和n[1]賦值;輸出語句中的n[k]為n[2],沒有賦值,其值不確定。15.以下程序的輸出結(jié)果是________。intmain(){inti,x[3][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)printf("%d,",x[i][2-i]);return0;}A)1,5,9 B)1,4,7 C)3,5,7 D)3,6,9答案:C分析:輸出的元素為“x[0][2],x[1][1],x[2][0]”,因而輸出結(jié)果是“3,5,7”。二、填空題1.在C語言中,一維數(shù)組的定義形式為:類型標(biāo)識符數(shù)組名________。答案:[常量表達(dá)式] 2.構(gòu)成數(shù)組的各個元素必須具有相同的_________。答案:類型3.在C語言中,數(shù)組名是________,因而不能對其執(zhí)行賦值操作。答案:地址常量4.若有定義語句inta[10]={1,2};,則數(shù)組元素a[2]的值為________。答案:0分析:題目中僅對部分?jǐn)?shù)組元素賦初值,其他數(shù)組元素為0。5.若有定義語句inta[3][4];,則數(shù)組a的行下標(biāo)的上限為________,列下標(biāo)的上限為_____。答案:236.C語言程序在執(zhí)行過程中,不檢查數(shù)組下標(biāo)是否____。答案:越界7.在C語言中,二維數(shù)組元素在內(nèi)存中的存放順序是_____。答案:按行存放8.若有定義語句inta[3][4];,則位于數(shù)組元素a[2][2]前的元素個數(shù)為____。答案:10分析:二維數(shù)組元素在內(nèi)存中的存放順序按行存放。9.若有定義語句chars1[10]="aaa",s2[]="bbb";,則表達(dá)式strcmp(strcat(s1,s2),s2)的值為____。答案:1分析:函數(shù)strcat(s1,s2)的返回值是字符串"aaabbb",函數(shù)strcmp("aaabbb","bbb")的返回值是兩個字符串實參中對應(yīng)位不同的第一對字符的差值,也就是'a''b'的值,即1。10.若有定義語句chars1[]="abc",s2[]={'a','b','c'};,則數(shù)組s1與數(shù)組s2的長度分別是_____。答案:4和3分析:數(shù)組s1所賦的初值是字符串,包括字符串結(jié)束標(biāo)志'\0';而數(shù)組s2所賦的初值是3個字符。三、編程題1.將5個數(shù)21、32、35、18、40存放到一個數(shù)組中,求這5個數(shù)的和以及平均值。程序如下:#include<stdio.h>intmain(){inta[5]={21,32,35,18,40};inti,sum=0;floataver;for(i=0;i<5;i++)sum+=a[i];aver=sum/5.0; /*注意:不能寫成sum/5*/printf(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 設(shè)備土建基礎(chǔ)施工合同
- 倉儲物流服務(wù)合同細(xì)則
- 徹體工程勞務(wù)分包合同
- 牛羊肉采購合同
- 三人合伙開店合同
- 教材購銷合同
- 文化創(chuàng)意產(chǎn)業(yè)扶持合同
- 新材料研發(fā)及生產(chǎn)許可合同
- 江西師范大學(xué)科學(xué)技術(shù)學(xué)院《系統(tǒng)分析與建?!?023-2024學(xué)年第二學(xué)期期末試卷
- 河南經(jīng)貿(mào)職業(yè)學(xué)院《近現(xiàn)代建筑遺產(chǎn)保護(hù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 一年級語文《端午粽》說課課件
- NB/T 11261-2023煤礦凍結(jié)孔施工及質(zhì)量驗收規(guī)范
- 《鑄造用增碳劑》
- 嬰幼兒傷害預(yù)防與處理配套教材電子課件(完整版)
- 線下庭審申請書
- 萃取技術(shù) 多級逆流萃取
- 部編版小學(xué)五年級語文教材培訓(xùn)課件【部編】
- 盆景造型經(jīng)驗
- 2023年廣東省佛山市順德區(qū)小升初數(shù)學(xué)試卷(含答案)
- 威風(fēng)堂堂進(jìn)行曲
- 銅及銅合金物理冶金基礎(chǔ)-黃銅
評論
0/150
提交評論