雨課堂學(xué)堂在線學(xué)堂云《C語言程序設(shè)計(jì)精髓(哈工 )》單元測試考核答案_第1頁
雨課堂學(xué)堂在線學(xué)堂云《C語言程序設(shè)計(jì)精髓(哈工 )》單元測試考核答案_第2頁
雨課堂學(xué)堂在線學(xué)堂云《C語言程序設(shè)計(jì)精髓(哈工 )》單元測試考核答案_第3頁
雨課堂學(xué)堂在線學(xué)堂云《C語言程序設(shè)計(jì)精髓(哈工 )》單元測試考核答案_第4頁
雨課堂學(xué)堂在線學(xué)堂云《C語言程序設(shè)計(jì)精髓(哈工 )》單元測試考核答案_第5頁
已閱讀5頁,還剩76頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

注:不含主觀題第1題C語言用sizeof計(jì)算變量在內(nèi)存中的字節(jié)數(shù),其中sizeof是()A函數(shù)B標(biāo)識符C運(yùn)算符D語句第1題宏定義是()A一條語句B一種編譯預(yù)處理指令C一個標(biāo)識符D一個變量第2題const常量有數(shù)據(jù)類型。第一章測驗(yàn)第1題下列選項(xiàng)中,合法的C語言標(biāo)識符是()A_a1Bwidth.xC#abc123D123abcEo*k第2題以下不適合定義為用戶標(biāo)識符的是()AintBa2Cdef2D_3com_EPI第3題#include是()A編譯預(yù)處理指令B語句C函數(shù)D什么都不是E有語法錯誤第4題在windows下,程序編譯鏈接后形成的可執(zhí)行文件是()A.exe文件B.obj文件C.o文件D.c文件E.h文件第5題程序編譯鏈接后顯示"0error,0warning"代表()A程序中沒有語法錯誤B程序是正確的C程序是不正確的D程序中可能存在語法錯誤E程序中有語義錯誤第6題用8位無符號二進(jìn)制數(shù)能表示的最大十進(jìn)制數(shù)為()A255B127C128D256第7題關(guān)于可執(zhí)行文件說法正確的是()A可執(zhí)行文件是編譯鏈接后生成的文件B可執(zhí)行文件就是源代碼文件C可執(zhí)行文件后綴為.objD可執(zhí)行文件就是main.c文件第8題若變量a是int類型,并執(zhí)行了語句:a='A'+1.6;,則正確的敘述是()A'A'+1.6的結(jié)果是浮點(diǎn)型Ba的值是字符CCa的值是浮點(diǎn)型D不允許字符型和浮點(diǎn)型相加第9題C語言用sizeof計(jì)算變量在內(nèi)存中的字節(jié)數(shù),其中sizeof是()A運(yùn)算符B一元運(yùn)算符C只需要一個操作數(shù)的運(yùn)算符D函數(shù)E語句F標(biāo)識符G變量正確答案:ABC第10題以下不屬于Codeblocks中用于調(diào)試程序的工具是()ArunBbuildCruntocursorDnextlineEstopdebuggerFwatches正確答案:AB第11題程序的開發(fā)步驟中不包括()A撰寫文檔B運(yùn)行程序C編譯鏈接D程序測試E編輯(編寫代碼)第12題下列說法中錯誤的是()A尾數(shù)決定了實(shí)數(shù)的表數(shù)范圍,階碼決定了實(shí)數(shù)的表數(shù)精度。B內(nèi)存是按位編址的。C有符號和無符號整數(shù)的表數(shù)范圍是相同的。Dint型在所有的計(jì)算機(jī)上都占4個字節(jié)的存儲單元。E編譯器按變量定義的類型對不同類型的變量分配不同大小的內(nèi)存空間。F內(nèi)存是按字節(jié)編址的。G對于同樣的尾數(shù),階碼的值越大,則浮點(diǎn)數(shù)所表示的數(shù)值的絕對值就越大。Hsizeof是編譯時執(zhí)行的運(yùn)算符,不會導(dǎo)致額外的運(yùn)行時間開銷。正確答案:ABCD第13題若有定義:inta=8,b=5,c;,執(zhí)行語句c=a/b+0.4;后,c的值為()A1B1.4C2.0D2第14題在C語言中,字符型數(shù)據(jù)在內(nèi)存中以字符的什么形式存放()AASCII碼B國標(biāo)碼CBCD碼D反碼第15題以下符合C語言語法的實(shí)型常量是()A5e-3B3.14.159eC1.2e0.5De15第16題以下選項(xiàng)中可作為C語言合法整數(shù)的是()A0xffaB10110BC038xDx2a2第17題下列說法正確的是()A在C語言中,變量必須先定義后使用。B一條變量定義語句可定義多個同類型的變量。CC89規(guī)定所有變量必須在第一條可執(zhí)行語句前定義。Dconst常量只能在定義時賦值。E實(shí)型常量的默認(rèn)類型是double類型。F一條變量定義語句不可以同時定義多個變量。G不同類型的變量分配的存儲空間大小都是相同的。H在C語言中,所有變量都必須在定義時進(jìn)行初始化。I變量在沒有初始化的時候,其值都是0J宏常量有數(shù)據(jù)類型,編譯器在宏替換時可以進(jìn)行類型檢查。正確答案:ABCDE第18題下列變量定義中合法的是()Alongao=0xfdaL;Bshort_a=1-.1e-1;Cdoubleb=1+5e2.5;Dfloat2_and=1-e-3;運(yùn)算符的優(yōu)先級和結(jié)合性第1題二元的算術(shù)運(yùn)算符的結(jié)合性都是左結(jié)合。在定義變量的時候?qū)ψ兞窟M(jìn)行初始化第1題下列語句中錯誤的是()。Ainta,b,c;a=b=c=0;Binta,b,c;a=0;b=0;c=0;Cinta=0;intb=0;intc=0;Dinta=b=c=0;不同類型數(shù)據(jù)的運(yùn)算第1題通常情況下,不同類型數(shù)據(jù)的運(yùn)算結(jié)果的類型是取值范圍較大的那種類型。強(qiáng)制類型轉(zhuǎn)換第1題強(qiáng)制類型轉(zhuǎn)換運(yùn)算符就是強(qiáng)制改變一個變量原有的數(shù)據(jù)類型。第二章測試第1題下列關(guān)于單目運(yùn)算符++、--的敘述中正確的是()Aa++的運(yùn)算過程是:先使用變量a的值,然后再執(zhí)行a=a+1。B++a的運(yùn)算過程是:先使用變量a的值,然后再執(zhí)行a=a+1。Ca++的運(yùn)算過程是:先執(zhí)行a=a+1,然后再使用變量a的值。Da++和++a都是最終使變量a執(zhí)行a=a+1,因此對于包含a++或++a的表達(dá)式而言(如j=a++;或者j=++a;),兩種情況下表達(dá)式的最終運(yùn)算結(jié)果一定是相同的。第2題設(shè)a和b均為double型變量,且a=5.5、b=2.5,則表達(dá)式(Int)a+b/b的值是()A6.000000B6.500000C6D5.500000第3題設(shè)有語句“inta=3;”,執(zhí)行語句“a+=a-=a*a;”后,變量a的值是()A-12B3C0D9第4題在C語言中,要求操作數(shù)必須是整型的運(yùn)算符是()A%B/C*D+E-第5題下面哪條語句可以生成0-9之間的隨機(jī)數(shù)()Amagic=rand()%10;Bmagic=rand()%10+1;Cmagic=rand()/10;Dmagic=rand()/10+1;第6題在下面的C語言語句中,存在錯誤的是()Ainta=b=10;Binta=10,b=10;Cinta,b;a=b=10;Dinta,b;a=10;b=10;第7題若以下選項(xiàng)中的變量已正確定義,則正確的賦值語句是()Ax3=x2=x1=0;Bx1=26.8%3;C1+2=x2;Dx4=1+2=3;第8題在C程序中如果要使用數(shù)學(xué)函數(shù),如sin(),log()等,需要在程序中加入的語句是()A#include<math,h>B#include<stdio,h>C#define<math,h>D#define<stdio,h>第9題十進(jìn)制3位數(shù)整數(shù)x,下面哪條語句能正確分離出它的十位上的數(shù)字d?()Ad=(x-(x/100)*100)/10;Bd=(x%100)/10;Cd=(x/10)%10;Dd=x%10;Ed=(x-x%10)/10;Fd=x%100;第10題已知inta,b;并且有a=5%3;以及b=5/3;,則a和b的值分別是()。A2和1B0和1.67C3和1D5和1E0和1F3和1.67G5和1.67第11題以下非法的賦值語句是A++(i+1)Bx=(j--)Cn=++iDj++第12題AABBCCDD第13題AABBCCDD第14題AABBCCDD第15題AABBCCDD第16題AABBCCDD第17題AABBCCDD第18題AABBCCDD格式字符第1題在調(diào)用printf函數(shù)輸出數(shù)據(jù)時,當(dāng)數(shù)據(jù)的實(shí)際位寬大于printf函數(shù)中的指定位寬時,將按照數(shù)據(jù)的實(shí)際位寬輸出數(shù)據(jù)。單個字符的輸入輸出第1題單個字符既可以以c格式符也可以以d格式符輸出,前者是輸出這個字符,后者是輸出這個字符的ASCII碼值。%c格式轉(zhuǎn)換說明第1題用c格式符輸入字符型數(shù)據(jù)的時候,為了避免將輸入緩沖區(qū)中的空白字符(空格、回車換行符、Tab鍵)作為有效字符讀入,可以在%c前面加一個空格。第三章測驗(yàn)第1題分析下列程序,寫出程序運(yùn)行結(jié)果#include

<stdio.h>int

main(){

char

c1

=

'a',

c2

=

'b',

c3

=

'c';

printf("a%cb%cc%cabc\n",

c1,

c2,

c3);

return

0;}AaabbccabcBacbcabcCaabcabcDacbbcabc第2題有如下語句,為使變量a的值為1,b的值為2,從鍵盤輸入數(shù)據(jù)的正確形式是scanf("a=%d,b=%d",&a,&b);Aa=1,b=2B12C1,2Da=1b=2第3題#include

<stdio.h>int

main(){

int

a,b,c,d;

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

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

return

0;}若運(yùn)行以上程序時從鍵盤上輸入:6565,66<回車>。則輸出結(jié)果是A6,5,A,BB6,5,65,66C6,5,6,5D6,5,6,6第4題給出程序的運(yùn)行結(jié)果,程序運(yùn)行時從鍵盤輸入:54321<回車>#include

<stdio.h>int

main(){int

a,b,s;

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

s=a/b;

printf("s=%d",s);

return

0;}A1B1.6875C2D0第5題以下程序的輸出結(jié)果為#include

<stdio.h>

int

main()

{

float

a

=

1234.567,b

=

55.32;

printf("a

=

%4.2f,

b

=

%5.1f\n",

a,b);

return

0;

}Aa=1234.57,b=55.3Ba=1234,b=55Ca=1234.6,b=5.32Da=1234.567,b=55.32第6題以下程序的輸出結(jié)果為#include

<stdio.h>int

main(){int

a=2,

c=5;printf("a

=

%%d,

b

=

%%d\n",

a,

c);return

0;}Aa=%d,b=%dBa=%2,b=%5Ca=2,b=5Da=%%d,b=%%d第7題有以下程序,運(yùn)行時若輸入為B,則輸出是#include

<stdio.h>int

main()

{char

ch;

ch=getchar();

ch=ch+32;

printf("%c",ch);

return

0;}AbB98C32D66第8題在調(diào)用printf函數(shù)輸出數(shù)據(jù)時,當(dāng)數(shù)據(jù)的實(shí)際位寬小于printf函數(shù)中的指定位寬時,下面敘述正確的是A如果格式字符前面沒有負(fù)號,那么輸出的數(shù)據(jù)將會右對齊、左補(bǔ)空格;如果格式字符前面有負(fù)號,那么輸出的數(shù)據(jù)將會左對齊、右補(bǔ)空格。B如果格式字符前面沒有負(fù)號,那么輸出的數(shù)據(jù)將會左對齊、右補(bǔ)空格;如果格式字符前面有負(fù)號,那么輸出的數(shù)據(jù)將會右對齊、左補(bǔ)空格。C如果格式字符前面沒有負(fù)號,那么輸出的數(shù)據(jù)將會右對齊、左補(bǔ)0;如果格式字符前面有負(fù)號,那么輸出的數(shù)據(jù)將會左對齊、右補(bǔ)0。D如果格式字符前面沒有負(fù)號,那么輸出的數(shù)據(jù)將會左對齊、右補(bǔ)0;如果格式字符前面有負(fù)號,那么輸出的數(shù)據(jù)將會右對齊、左補(bǔ)0第9題設(shè)有語句“charc='\72';”,則變量cA包含1個字符B包含2個字符C包含3個字符D不合法第10題程序運(yùn)行后的輸出結(jié)果是#include

<stdio.h>int

main(){

int

a=666,b=888;

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

return

0;}A666B888C錯誤信息D666,888第11題有以下語句段#include

<stdio.h>int

main(){

int

n1=10,n2=20;

printf("_________",n1,n2);

return

0;}要求按以下格式輸出n1和n2的值,每個輸出行都是從第一列開始,則空白處代碼填寫正確的是運(yùn)行結(jié)果示例如下:n1=10n2=20An1=%d\nn2=%dBn1=%dn2=%d\nCn1=%d,n2=%dDn1=%dn2=%d\n第12題以下選項(xiàng)中合法的字符常量是A

'\010'B"B"C66DD第13題寫出下面程序的輸出結(jié)果#include<stdio.h>int

main()

{

int

x=6,y,z;

x*=18+1;

printf("%d,",x--);

x+=y=z=11;

printf("%d",x);

return

0;}A114,124B113,124C123,213D110,116第14題給出程序的運(yùn)行結(jié)果,程序運(yùn)行時從鍵盤輸入:45-12<回車>#include

<stdio.h>int

main(){int

a,b,sum;

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

sum=a+b;

printf("sum=%d",sum);

return

0;}A57B33C輸出報錯D輸出一個隨機(jī)數(shù)第15題給出程序的運(yùn)行結(jié)果#include

<stdio.h>int

main(){int

a,b,s;

char

op;

scanf("%d

%c%d",&a,&op,&b);

s=a%b;

printf("s=%d",s);

return

0;}程序運(yùn)行時從鍵盤輸入:15<回車>%5<回車>A0B輸出一個隨機(jī)數(shù)C3D程序報錯第16題給出程序的運(yùn)行結(jié)果#include

<stdio.h>int

main(){

int

a,b,c,d;

char

op1,op2,op3;

int

sum;

printf("please

input:a+b+c+d\n");

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

sum=a+b+c+d;

printf("sum=%d",sum);

return

0;}程序運(yùn)行時從鍵盤輸入:1<回車>2+3+1<回車>A7B2C32D414第17題在C語言中,字符型數(shù)據(jù)在內(nèi)存中以(

)形式存放AASCII碼B國際碼CBCD碼D反碼第18題以下程序的執(zhí)行結(jié)果是#include

<stdio.h>

int

main()

{

int

a

=

5,

b

=

4,

x,

y;

x

=

2

*

a++;y

=

--b

*

2;

printf("a=%d,

x=%d\n",

a,

x);

printf("b=%d,

y=%d\n",

b,

y);

return

0;}Aa=6,

x=10b=3,

y=6Ba=6,

x=10b=3,

y=8Ca=6,

x=12b=3,

y=6D以上均不對第19題以下程序運(yùn)行后的輸出結(jié)果是#include

<stdio.h>int

main(){

int

a;

int

c=10;

float

f=100.0;

double

x;

a=f/=c*=(x=6.5);

printf("%d,%d,%3.1f,%3.1f\n",a,c,f,x);

return

0;}A1,65,1.5,6.5B1,65,1,6.5C1,65,1.0,6.5

D2,65,1.5,6.5第20題給出程序的運(yùn)行結(jié)果#include

<stdio.h>int

main(){

char

a,b;

int

s;

printf("please

input

a

and

b:\n");

a=getchar();

b=getchar();

s=a+b;

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

return

0;}程序運(yùn)行時從鍵盤輸入:1<空格>2<回車>Aa=1,b=Ba=1,b=2Ca=,b=2D亂碼第21題以下程序的輸出結(jié)果是#include

<stdio.h>int

main(){

int

a=1234;

printf("%2d\n",a);

return

0;}A1234B12C34D23判斷ch是英文字母(大寫或者小寫)第1題下面判斷ch是大寫或者小寫英文字母的表達(dá)式是否正確?ch>='A'&&

ch<='Z'||ch>='a'

&&

ch<='z'條件運(yùn)算符第1題下列關(guān)于if-else語句的說法中哪個是正確的。Aelse總是和離它最近的if配對Belse總是和前面離它最近的且還未和其他else匹配的在同一語句塊內(nèi)同一層次的if配對Celse總是和前面離它最近的且位于花括號內(nèi)的if配對Delse可以和它前面的尚未與其他else匹配的任何一個if配對第2題條件運(yùn)算符是C語言中唯一的一個三元運(yùn)算符.賦值中的自動類型轉(zhuǎn)換第1題在賦值操作中,當(dāng)賦值表達(dá)式左側(cè)的變量的類型與右側(cè)的表達(dá)式的類型不一致的時候,下面說法正確的是()。A在賦值操作中,當(dāng)賦值運(yùn)算符左側(cè)的變量的類型與右側(cè)的表達(dá)式的類型不一致的時候,會發(fā)生自動類型轉(zhuǎn)換,賦值表達(dá)式的結(jié)果類型是賦值運(yùn)算符左側(cè)變量的類型。B在賦值操作中,當(dāng)賦值運(yùn)算符左側(cè)的變量的類型與右側(cè)的表達(dá)式的類型不一致的時候,賦值表達(dá)式的結(jié)果類型是賦值運(yùn)算符右側(cè)表達(dá)式的類型。C在賦值操作中,只要賦值運(yùn)算符左側(cè)的變量的類型與右側(cè)的表達(dá)式的類型不一致,就會發(fā)生數(shù)值溢出。D在賦值操作中,當(dāng)賦值運(yùn)算符左側(cè)的變量的類型與右側(cè)的表達(dá)式的類型不一致的時候,要么發(fā)生數(shù)值溢出,要么發(fā)生數(shù)值精度的損失。浮點(diǎn)數(shù)的表數(shù)精度第1題下列說法錯誤的是()。A浮點(diǎn)數(shù)并非真正意義上的實(shí)數(shù),只是其在某種范圍內(nèi)的近似。B浮點(diǎn)數(shù)能精確表示的數(shù)字位數(shù)取決于這種類型的浮點(diǎn)數(shù)的有效數(shù)字位數(shù)。C使用更多的位來存儲階碼,將會擴(kuò)大浮點(diǎn)數(shù)的表數(shù)精度。D受浮點(diǎn)數(shù)表數(shù)精度的限制,因此對于浮點(diǎn)數(shù)不能直接比較其是否相等,應(yīng)該比較其是否近似相等。程序測試第1題下列說法錯誤的是()。A軟件測試的目的就是證明程序的正確性,即給定特定的輸入,通過運(yùn)行被測程序,檢查程序的輸出是否與預(yù)期結(jié)果一致,進(jìn)而驗(yàn)證程序的正確性。B白盒測試就是在完全了解程序的結(jié)構(gòu)和處理過程的情況下,按照程序內(nèi)部的邏輯測試程序,檢驗(yàn)程序中的每條邏輯路徑是否都能按預(yù)定要求正確工作。黑盒測試就是把系統(tǒng)看成一個黑盒子,不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和處理過程,只根據(jù)需求規(guī)格說明書的要求,設(shè)計(jì)測試用例,檢查程序的功能是否符合它的功能說明。C在選擇測試用例時,不僅要選取合理的輸入數(shù)據(jù),還要選取一些不合理的輸入數(shù)據(jù),以及某些極端的邊界點(diǎn)或臨界點(diǎn)等,對程序進(jìn)行測試D由于修復(fù)了舊的bug的同時,往往又會產(chǎn)生新的bug,因此往往還需要對所有出現(xiàn)過的bug重新測試一遍,看其是否會重新出現(xiàn),并給確認(rèn)代碼修改后沒有引入新的bug,即修改代碼后需要進(jìn)行回歸測試。第四章測驗(yàn)第1題程序代碼如下:#include

<stdio.h>int

main(){

int

a,b;

printf("please

input

a

and

b:\n");

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

printf("the

output

data

is

%d\n",a<b?b:a);

return

0;}從鍵盤輸入以下數(shù)據(jù):2<回車>7<回車>則程序輸出為Atheoutputdatais7Btheoutputdatais2Ctheoutputdatais1Dtheoutputdatais0第2題以下程序運(yùn)行后的輸出結(jié)果是#include

<stdio.h>int

main(){

int

a,b,c;

a=10;

b=20;

c=(a%b<1)||(a/b>1);

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

return

0;}A10,0,0B10,1,1C10,1,0D10,0,1第3題從鍵盤輸入三角形的三邊長為a,b,c,按下面公式計(jì)算并輸出三角形的面積。程序代碼如下,但程序運(yùn)行后輸出結(jié)果不正確,請找出有問題的語句。#include

<stdio.h>#include

<math.h>int

main(){

float

a,

b,

c;

float

s,

area;

printf("Input

a,b,c:");

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

if

(a+b>c

&&

b+c>a

&&

a+c>b){

s

=

1/2

*

(a

+

b

+

c);

area

=

sqrt(s

*

(s

-

a)

*

(s

-

b)

*

(s

-

c));

printf("area=%.2f\n",

area);

}

else

{

printf("It

is

not

a

triangle\n");

}

return

0;

}A第11行:s=1/2*(a+b+c);B第9行:if(a+b>c&&b+c>a&&a+c>b)C第12行:area=sqrt(s*(s-a)*(s-b)*(s-c));D第8行:

scanf("%f,%f,%f",&a,&b,&c);第4題編程設(shè)計(jì)一個簡單的計(jì)算器程序,要求用戶從鍵盤輸入如下形式的表達(dá)式:

操作數(shù)1

運(yùn)算符op

操作數(shù)2然后,計(jì)算并輸出表達(dá)式的值指定的運(yùn)算符為:加(+)減(-)乘(*)除(/)代碼如下,所給程序是否存在錯誤,若有,找出錯誤所在并改正。#include

<stdio.h>int

main(){float

data1,

data2;charop;printf("Please

enter

the

expression:");scanf("%f

%c%f",

&data1,

&op,

&data2);

/*

%c前有一個空格

*/

switch

(op)

{

case

'+':

printf("%f

+

%f

=

%f\n",

data1,

data2,

data1

+

data2);

break;

case

'-':

printf("%f

-

%f

=

%f\n",

data1,

data2,

data1

-

data2);

break;

case

'*':

printf("%f

*

%f

=

%f\n",

data1,

data2,

data1

*

data2);

break;

case

'/':

printf("%f/%f

=

%f\n",

data1,

data2,data1/data2);

break;

default:

printf("Invalid

operator!\n");}

return

0;}A第20行語句有錯誤,改成:if(fabs(data2)<=EPS)printf("Divisionbyzero!\n");else

printf("%f/%f=%f\n",data1,data2,data1/data2);同時,第1行語句下方應(yīng)加入#include

<math.h>#defineEPS1e-6Bdefault分支缺少break語句C沒有錯誤D第20行語句有錯誤,改成:if(data2=0)printf("Divisionbyzero!\n");else

printf("%f/%f=%f\n",data1,data2,data1/data2);第5題若x和y代表整型數(shù),以下表達(dá)式中不能正確表示數(shù)學(xué)關(guān)系|x-y|<10的是A(x-y)<-10||!(y-x)>10Bfabs(x-y)<10Cx-y>-10&&x-y<10D(x-y)*(x-y)<100第6題下列復(fù)合語句中,不能實(shí)現(xiàn)兩數(shù)交換的是A{

a=b;

b=a;}B{

b

=

a

*

b;

a

=

b

/

a;

b

=

b

/

a;

}C{t=a;a=b;b=t;}D{

a

=

a

+

b;

b

=

a

b;

a

=

a

b;

}第7題寫出下面程序的輸出結(jié)果#include

<stdio.h>int

main(){

int

x=1,

y=0,

a=0,

b=0;switch(x){case

1:

switch(y)

{

case

0:

a++;

case

1:

b++;

}case

2:

a++;b++;}printf("a=%d,

b=%d\n",

a,

b)

;return

0;}Aa=2,b=2Ba=1,b=2Ca=2,b=1Da=2,b=0第8題以下程序運(yùn)行后的輸出結(jié)果是#include

<stdio.h>int

main(){

int

a=5,b=4,c=3,d;d=(a>b>c);printf("%d\n",d);return

0;}A0B1C3D5第9題執(zhí)行以下程序后的輸出結(jié)果為#include

<stdio.h>int

main(){int

a=1,b=0;switch

(a){

case

1:switch

(b){case

0:

printf("**0**");break;case

1:

printf("**1**");break;}

case

2:

printf("**2**");break;}

return

0;}A**0****2**B**0**C**0****1****2**D有語法錯誤第10題下面程序運(yùn)行后的輸出結(jié)果是#include

<stdio.h>

int

main(){

int

a=3,b=4,c=5,d=2;

if(a>b)

{

if(b>c){

printf("%d",d++

+1);}else{

printf("%d",++d

+1);}}printf("%d\n",d);return

0;}A2B3C43D42第11題下面程序代碼的功能是判斷輸入整數(shù)的正負(fù)性和奇偶性,請將第19行和22行標(biāo)號處缺少的代碼填寫完整。#include

<stdio.h>int

main(){

int

m;

printf("Input

m:

");

scanf("%d",

&m);

//輸入一個整數(shù)

if

(m

>

0)

//是否為正數(shù)

{

if

(m

%

2

==

0)

//是正數(shù),且能被2整除,則是正偶數(shù)

{printf("%d

is

a

positive

even\n",

m);

}

else

//不能被2整除,則是正奇數(shù)

{printf("%d

is

a

positive

odd\n",

m);

}

}_______________

//判斷是否為負(fù)數(shù){

_______________

{

printf("%d

is

a

negative

even\n",

m);//是負(fù)偶數(shù)

}

else

{

printf("%d

is

a

negative

odd\n",

m);

//是負(fù)奇數(shù)

}

}

else

{

printf("%d

is

zero.It

is

an

even\n",

m);

}return

0;}A第19行代碼:elseif(m<0)第22行代碼:if(m%2==0)B第19行代碼:if(m<0)第22行代碼:if(m%2==0)C第19行代碼:elseif(m<0)第22行代碼:if(m%2!=0)D第19行代碼:if(m<0)第22行代碼:if(m%2!=0)第12題程序功能:從鍵盤輸入一個字符,判別它是否為大寫字母。如果是,將它轉(zhuǎn)換成小寫字母,如果不是,不轉(zhuǎn)換。在屏幕上輸出最后得到的字符。程序代碼如下,為實(shí)現(xiàn)上述功能,請將第8行標(biāo)號處缺少的語句填寫完整。#include<stdio.h>

int

main()

{

char

c;

printf("Please

input

a

character:");

scanf("%c",&c);if(c

>='A'&&c

<=

'Z')

c

=_______________;

printf("%c\n",c);return

0;

}Ac+32

Bc+48CC+65DC+97第13題執(zhí)行下列程序,k輸入為1時的輸出結(jié)果是#include

<stdio.h>int

main(){int

k;

scanf("%d",&k);

switch(k)

{case

1:printf("%d",k++);

case

2:printf("%d",k++);

case

3:printf("%d",k++);break;

default:

printf("Full!");

}return

0;}A123B1C2D3第14題編程計(jì)算下面的分段函數(shù),根據(jù)從鍵盤輸入的x值,在屏幕上輸出y值。

程序代碼如下,為完成以上功能,請將第13行標(biāo)號處缺少的代碼填寫完整。

#include

<stdio.h>#include

<math.h>int

main(){

int

x;

double

y;

printf("Input

x:

");

scanf("%d",

&x);

//

輸入一個整數(shù)

if

(x

>

0)

{

y

=

exp(-x);

//如果大于0,計(jì)算y=exp(-x)的值

}

_____________

{

y

=

1;

//x=0,則y=1

}

else

{

y

=

-exp(x);

//x<0,則y=-exp(x)

}

printf("y=%f\n",

y);

return

0;}Aelseif(x==0)Belseif(x=0)Cif(x==0)Dif(x=0)第15題以下程序運(yùn)行后的輸出結(jié)果是#include

<stdio.h>int

main(){

int

a=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=a<b);printf("%d,%d\n",k,m);return

0;}A1,0B1,1C0,0D0,1第16題以下程序的功能是計(jì)算一元二次方程的根。代碼如下,請將第10行標(biāo)號處缺少的語句填寫完整。

#include

<stdio.h>#include

<stdlib.h>#include

<math.h>#defineEPS

1e-6int

main(){

float

a,

b,

c,

disc,

p,

q;printf("Please

enter

the

coefficients

a,b,c:");

scanf("%f,%f,%f",

&a,

&b,

&c);

_________________________________/*

a=0時,輸出"不是二次方程"

*/{printf("It

is

not

a

quadratic

equation!\n");exit(0);

/*

C標(biāo)準(zhǔn)庫函數(shù),用于終止整個程序的執(zhí)行,強(qiáng)制返回操作系統(tǒng)

*/

}disc

=

b

*

b

-

4

*

a

*

c;

/*

計(jì)算判別式

*/p

=

-

b

/

(2

*

a);q

=

sqrt(fabs(disc))

/

(2

*

a);if

(fabs(disc)

<=

EPS)

/*

判別式等于0時,輸出兩相等實(shí)根

*/{

printf("x1

=

x2

=

%.2f\n",

p);}

else{if

(disc

>

EPS)

/*

判別式大于0時,輸出兩不等實(shí)根

*/

{

printf("x1

=

%.2f,

x2

=

%.2f\n",

p+q,

p-q);

}

else/*

判別式小于0時,輸出兩共軛復(fù)根

*/

{

printf("x1

=

%.2f+%.2fi,

",

p,

q);

printf("x2

=

%.2f-%.2fi\n",

p,

q);

}}

return

0;}Aif(fabs(a)<=EPS)Bif(a<=EPS)

Cif(a=0)Dif(a<=EPS||a>=-EPS)第17題下列說法錯誤的是Aswitch語句中的break和default可有可無。B程序執(zhí)行到switch語句時,先計(jì)算表達(dá)式的值,然后自上而下尋找與該值匹配的case常量,找到后則按順序執(zhí)行此case后的所有語句,而不再進(jìn)行判斷,直到遇break語句或右花括號}為止。C每個case后的常量只起語句標(biāo)號的作用,所以case常量的值必須互不相同,而且在每個case的語句序列后都有break的情況下,改變case常量出現(xiàn)的次序,不影響程序的運(yùn)行結(jié)果。D若所有的case常量都不能與表達(dá)式的值相匹配,那么就執(zhí)行default后面的語句。通常用于處理不在合理區(qū)間內(nèi)的非法數(shù)據(jù)。逗號運(yùn)算符第1題下列說法錯誤的是()。A逗號運(yùn)算符也稱為順序求值運(yùn)算符,由逗號運(yùn)算符構(gòu)成的表達(dá)式稱為逗號表達(dá)式。B多數(shù)情況下,我們并不使用整個逗號表達(dá)式的值,主要用它來順序求得到各個子表達(dá)式的值。C逗號表達(dá)式主要用在循環(huán)語句中同時對多個變量賦初值等。D在逗號表達(dá)式中,其第一個表達(dá)式的值就是整個逗號表達(dá)式的值。隨機(jī)數(shù)的生成第1題下列說法錯誤的是()。A函數(shù)rand()用于生成一個[0,RAND_MAX]間的隨機(jī)數(shù),RAND_MAX是不大于雙字節(jié)整數(shù)的最大值32767的宏常量。使用函數(shù)rand()必須在程序開頭加上這樣一條編譯預(yù)處理指令:#include<stdio.h>magic=rand()%100+1用于生成[1,100]之間的隨機(jī)數(shù)。Bmagic=rand()%100+1用于生成[1,100]之間的隨機(jī)數(shù)。C事實(shí)上,函數(shù)rand()產(chǎn)生的都是偽隨機(jī)數(shù)。D函數(shù)srand()用于為rand()設(shè)置隨機(jī)數(shù)種子,使rand()產(chǎn)生的隨機(jī)數(shù)“隨機(jī)化”。嵌套循環(huán)第1題下列說法錯誤的是()。A執(zhí)行嵌套循環(huán)時是先執(zhí)行內(nèi)層循環(huán),后執(zhí)行外層循環(huán)。B嵌套循環(huán)的內(nèi)層和外層循環(huán)的循環(huán)控制變量不能同名。

C嵌套循環(huán)的循環(huán)次數(shù)等于外層循環(huán)的循環(huán)次數(shù)與內(nèi)層循環(huán)的循環(huán)次數(shù)之積。D如果一個循環(huán)的循環(huán)體中又完整地包含了另一個循環(huán),則稱為嵌套循環(huán)。流程的轉(zhuǎn)移控制第1題下面程序段中的break語句是轉(zhuǎn)移到哪里去執(zhí)行()。for(...){for(...){switch(...){case

1:

...

break;case

2:......}A:

//code}B:

//code}C:

//codeA轉(zhuǎn)到標(biāo)號A所在的語句行與執(zhí)行B轉(zhuǎn)到標(biāo)號B所在的語句行與執(zhí)行C轉(zhuǎn)到標(biāo)號C所在的語句行與執(zhí)行D不進(jìn)行流程轉(zhuǎn)移,而是繼續(xù)執(zhí)行break后面的語句程序調(diào)試第1題下列說法錯誤的是()。A程序測試的目的就是驗(yàn)證程序的正確性。B程序中常見的錯誤有三種:編譯錯誤,鏈接錯誤,以及運(yùn)行時錯誤。C編譯錯誤通常是由語法錯誤造成的。D運(yùn)行時錯誤是指在程序運(yùn)行時發(fā)生的錯誤,運(yùn)行時錯誤有兩種:一種是導(dǎo)致程序的運(yùn)行結(jié)果與預(yù)期的不一致,另一種是導(dǎo)致程序無法正常運(yùn)行。第五章測驗(yàn)第1題程序運(yùn)行后的輸出結(jié)果是#include

<stdio.h>int

main(){int

i;

for(i=0;i<3;i++)switch(i)

{case

0:

printf("%d",i);case

2:

printf("%d",i);default:

printf("%d",i);

}

return

0;}A000122B022111C021021D012第2題若變量已正確定義,要求程序段完成求5!的計(jì)算,不能完成此操作的程序段是Afor(

i=1;

i<=5;

i++

){

p=1;

p*=i;}Bfor(i=1,p=1;i<=5;i++)

p*=i;Ci=1;p=1;while

(

i<=5

){

p*=i;

i++;}Di=1;p=1;do

{

p*=i;

i++;}

while

(

i<=5

);第3題以下程序執(zhí)行后的輸出結(jié)果是#include

<stdio.h>int

main(

){

int

x=0,y=5,z=3;

while(z-->0

&&

++x<5)

{

y=y-1;

}

printf("%d,%d,%d\n",x,y,z);

return

0;}A3,2,-1B3,2,0C4,3,-1D4,3,0第4題下面程序的輸出是#include

<stdio.h>int

main(){

int

y=9;

for(

;

y>0;

y--)

{if(y%3==0)

{printf("%d",

--y);

continue;

}

}

return

0;}A852B741C963D875421第5題愛因斯坦數(shù)學(xué)題。愛因斯坦曾出過這樣一道數(shù)學(xué)題:有一條長階梯,若每步跨2階,最后剩下1階;若每步跨3階,最后剩下2階;若每步跨5階,最后剩下4階;若每步跨6階,最后剩下5階;只有每步跨7階,最后才正好1階不剩。請問,這條階梯共有多少階?代碼如下,按要求在空白處填寫適當(dāng)?shù)谋磉_(dá)式或語句,使程序完整并符合題目要求。#include

<stdio.h>int

main(){

int

x

=

1,

find

=

0;

while

(__________)

{

if

(______________________)

{

printf("x

=

%d\n",

x);

find

=

1;

}

x++;

}return

0;}A第5行:

!find第7行:

x%2==1&&x%3==2&&x%5==4&&x%6==5&&x%7==0B第5行:find==1第7行:x%2==1&&x%3==2&&x%5==4&&x%6==5&&x%7==0C第5行:find!=1第7行:x/2==1&&x/3==2&&x/5==4&&x/6==5&&x/7==0D第5行:find!=0第7行:x%2==1&&x%3==2&&x%5==4&&x%6==5&&x%7==0第6題雞兔同籠,共有98個頭,386只腳,編程求雞、兔各多少只。代碼如下,按要求在空白處填寫適當(dāng)?shù)谋磉_(dá)式或語句,使程序完整并符合題目要求。

#include

<stdio.h>int

main(){

int

x,

y;

for

(x=1;

_______;

x++)

{

____________;

if

(____________)

{

printf("x

=

%d,

y

=

%d",

x,

y);

}

}return

0;}A第5行:

x<=97第7行:

y=98-x第8行:

2*x+4*y==386B第5行:

x<97第7行:

x

=98-y第8行:

2*x+4*y==386C第5行:

x<97第7行:

y=98-x第8行:

2x+4y==386D第5行:

x<=97第7行:

x

=98-y第8行:

2*x+4*y<=386第7題以下能正確計(jì)算1×2×3×4...×10的程序段是Ai=1;s=1;do

{

s=s*i;

i++;

}

while(i<=10);Bdo{

i=1;

s=1;

s=s*i;

i++;}

while(i<=10);Cdo{

i=1;

s=0;

s=s*i;

i++;}

while(i<=10);Di=1;s=0;do

{

s=s*i;

i++;

}

while(i<=10);第8題以下程序執(zhí)行后的輸出結(jié)果是#include

<stdio.h>int

main(

){

int

i,n=0;

for(i=2;i<5;i++){do{if(i%3)

continue;

n++;

}while(!i);

n++;

}printf("n=%d\n",n);return

0;}An=4Bn=1Cn=2Dn=3第9題以下正確的描述是A只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句Bcontinue語句的作用是結(jié)束整個循環(huán)的執(zhí)行C在循環(huán)體內(nèi)使用break語句或continue語句的作用相同Dcontinue語句可以寫在循環(huán)體之外第10題計(jì)算直到最后一項(xiàng)的絕對值小于為止。代碼如下,按要求在空白處填寫適當(dāng)?shù)谋磉_(dá)式或語句,使程序完整并符合題目要求。#include

<stdio.h>#include

<math.h>int

main(){

int

n

=

1;

float

term

=

1,

sum

=

0;

______________;while

(fabs(term)

>=

1e-4)//判末項(xiàng)大小

{

term

=

sign

/

n;//求出累加項(xiàng)

sum

=

sum

+

term;

//累加

________________;//改變項(xiàng)的符號

n++;

//分母加1

}

printf("sum

=

%f\n",

sum);

return

0;}A第7行代碼:floatsign=1第13行代碼:sign=-signB第7行代碼:floatsign=-1第13行代碼:sign=-signC第7行代碼:floatsign=1第13行代碼:term=

-termD第7行代碼:floatsign=-1第13行代碼:term=

-term第11題設(shè)已定義i和k為int類型變量,則以下for循環(huán)語句for(i=0,k=-1;k=1;

i++,k++)printf(

"*

*

*

*\n");A是無限循環(huán)B判斷循環(huán)結(jié)束的條件不合法C循環(huán)一次也不執(zhí)行D循環(huán)只執(zhí)行一次第12題有以下程序,若從鍵盤給n輸入的值是-3,則程序的輸出結(jié)果是#include

<stdio.h>int

main(){

int

s=0,a=1,n;

scanf("%d",&n);

do

{s+=1;a=a-2;

}

while(a!=n);

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

return

0;}A2B1C-2D0第13題以下程序運(yùn)行后的輸出結(jié)果是#include

<stdio.h>int

main()

{int

i=0,s=0;

for

(;;)

{if(i==3||i==5)

continue;

if

(i==6)

break;

i++;

s+=i;

}

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

return

0;

}A程序進(jìn)入死循環(huán)B12C13D14第14題下面程序的功能是輸出以下形式的圖案,則在下劃線處應(yīng)填入的是

*

***

*****

*******#include

<stdio.h>int

main(

){int

i,j;

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

{

for(j=1;j<=__________;j++){printf("*");

}

printf("\n");

}

return

0;}A2*i-1B2*i+1Ci+2Di第15題程序執(zhí)行后的輸出結(jié)果是#include

<stdio.h>int

main(

){

int

i,s=0;

for(i=1;i<10;i+=2)

{

s+=i+1;

}

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

return

0;}A自然數(shù)1~10中的偶數(shù)之和B自然數(shù)1~9的累加和C自然數(shù)1~10的累加和D自然數(shù)1~9中的奇數(shù)之和第16題以下程序的輸出結(jié)果是#include

<stdio.h>int

main(){

int

a,

b;

for(a=1,

b=1;

a<=100;

a++){if(b>=10)

break;if

(b%3==1){

b+=3;

continue;

}}

printf("%d\n",a);

return

0;}A4B5C6D123第17題三色球問題。若一個口袋中放有12個球,其中有3個紅色的,3個白色的,6個黑色的,從中任取8個球,問共有多少種不同的顏色搭配?代碼如下,按要求在空白處填寫適當(dāng)?shù)谋磉_(dá)式或語句,使程序完整并符合題目要求。

#include

<stdio.h>int

main(){

int

i,

j,

k;

for

(i=0;

i<=3;

i++)

{

for

(j=0;

j<=3;

j++)

{

for

(________________)

{

if

(__________________)

{printf("i=%d,

j=%d,

k=%d\n",

i,

j,

k);

}

}

}

}return

0;}A第9行:k=0;k<=6;k++第11行:

i+j+k==8B第9行:k=0;k<=6;k++第11行:

i+j+k=8

C第9行:k=0;k<=6;k++第11行:

i+j+k<=8D第9行:k=0;k<6;k++第11行:

i+j+k==8第18題我國古代的《張丘建算經(jīng)》中有這樣一道著名的百雞問題:“雞翁一,值錢五;雞母一,值錢三;雞雛三,值錢一。百錢買百雞,問雞翁、母、雛各幾何?”其意為:公雞每只5元,母雞每只3元,小雞3只1元。用100元買100只雞,問公雞、母雞和小雞各能買多少只?代碼如下,按要求在空白處填寫適當(dāng)?shù)谋磉_(dá)式或語句,使程序完整并符合題目要求。

#include

<stdio.h>int

main(){

int

x,

y,

z;

for

(x=0;

x<=20;

x++)

{

for

(y=0;

_________;

y++)

{

_______________;

if

(_______________)

{

printf("x=%d,

y=%d,

z=%d\n",

x,

y,

z);

}

}

}return

0;}A第7行:

y<=33第9行:

z=100–x-y第10行:

5*x+3*y+z/3.0==100B第7行:

y<=33第9行:

z+y+x=100第10行:

5*x+3*y+z/3.0=100C第7行:

y<=33第9行:

z=100–x-y第10行:

5x+3y+z/3.0==100D第7行:

y<33第9行:

z=100–x-y第10行:

5*x+3*y+z/3.0<=100第19題以下不是死循環(huán)的程序段是Aint

s=36;while

(s)

{--s;}Bint

i=100;while(1){

i=i%100+1;

if

(i>100)

break;}Cfor(;;);Dunsigned

int

k=0;do{

++k;}

while

(k>=0);第20題以下程序的功能是計(jì)算:s=1+1/2+1/3+……+1/10,程序運(yùn)行后輸出結(jié)果錯誤,導(dǎo)致錯誤結(jié)果的程序行是#include

<stdio.h>int

main(){

int

n;

float

s;

s=1.0;

for(n=10;n>1;n--)

{

s=s+1/n;

}

printf("%6.4f\n",s);

return

0;}As=s+1/n;Bprintf("%6.4f\n",s);Cfor(n=10;n>1;n--)Ds=1.0;第21題以下程序運(yùn)行時,從鍵盤輸入:01<回車>,程序執(zhí)行后的輸出結(jié)果是#include

<stdio.h>int

main(

){

char

k;

int

i;

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

{scanf("%c",&k);

switch(k)

{

case

'0':

printf("another\n");case

'1':

printf("number\n");

}}return

0;}AanothernumbernumberBnumbernumberCanothernumberDanothernumberanother第22題華氏和攝氏溫度的轉(zhuǎn)換公式為C=5/9×(F-32)。式中,C表示攝氏溫度,F(xiàn)表示華氏溫度。要求:華氏0℉~300℉,每隔20℉輸出一個華氏溫度對應(yīng)的攝氏溫度值。代碼如下,按要求在空白處填寫適當(dāng)?shù)谋磉_(dá)式或語句,使程序完整并符合題目要求。#include

<stdio.h>int

main(){

int

upper

=

300,

step

=

20;

float

fahr

=

0,

celsius;

while

(fahr

<

upper)

{

_________________;

printf("%4.0f\t%6.1f\n",

fahr,

celsius);________________

;

}

return

0;}A第8行代碼:celsius=5.0/9*(fahr-32)第10行代碼:fahr=fahr+stepB第8行代碼:

celsius=5/9*(fahr-32)第10行代碼:

fahr=fahr+stepC第8行代碼:

celsius=5.0/(9*(fahr-32))第10行代碼:fahr=fahr+stepD第8行代碼:

celsius=5.0/9*(fahr-32)第10行代碼:fahr=fahr

-step第23題利用泰勒級數(shù):計(jì)算e的近似值,當(dāng)最后一項(xiàng)的絕對值小于時認(rèn)為達(dá)到了精度要求,要求統(tǒng)計(jì)總共累加了多少項(xiàng)。代碼如下,按要求在空白處填寫適當(dāng)?shù)谋磉_(dá)式或語句,使程序完整并符合題目要求。#include

<math.h>#include

<stdio.h>int

main(){

int

n

=

1,

count

=

1;

________________;

double

term

=

1.0;

while

(fabs(term)

>=

1e-5)

//判末項(xiàng)大小

{______________;//求出累加項(xiàng)e

=

e

+

term;

//累加n++;//

計(jì)算下一項(xiàng)_______________;//統(tǒng)計(jì)累加項(xiàng)數(shù)

}

printf("e

=

%f,

count

=

%d\n",

e,

count);

return

0;}A第6行代碼:doublee=1.0第10行代碼:

term=term/n第13行代碼:

count++B第6行代碼:doublee=0第10行代碼:

term=term/n第13行代碼:

count++C第6行代碼:

doublee=1.0第10行代碼:term=term*n第13行代碼:count++D第6行代碼:

doublee=0第10行代碼:term=term*n第13行代碼:count++第24題打印所有的“水仙花數(shù)”。所謂“水仙花數(shù)”,是指一個三位數(shù),其各位數(shù)字的立方和等于該數(shù)本身。例如,153是“水仙花數(shù)”,因?yàn)?/p>

代碼如下,按要求在空白處填寫適當(dāng)?shù)谋磉_(dá)式或語句,使程序完整并符合題目要求。

#include

<stdio.h>int

main(){

int

i,

j,

k,

n;

printf("result

is:");

for

(n=100;

________;

n++)

{

i

=

n

/

100;//分離出百位

j

=

____________;

//分離出十位

k

=

____________;

//分離出個位

if

(_________________________)

{

printf("%d\t

",n);

//輸出結(jié)果

}

}

printf("\n");

return

0;}A第6行:n<1000第9行:(n-i*100)/10第10行:n%10第11行:i*100+j*10+k==i*i*i+j*j*j+k*k*kB第6行:n<1000第9行:(n-i*100)/10第10行:n%10第11行:i*100+j*10+k=i*i*i+j*j*j+k*k*kC第6行:n<=1000第9行:n

%100第10行:n%10第11行:i*100+j*10+k==i*i*i+j*j*j+k*k*kD第6行:n<1000第9行:(n-i*100)/10第10行:n/10第11行:i*100+j*10+k==i*i*i+j*j*j+k*k*k函數(shù)的參數(shù)和返回值第1題下列說法中錯誤的是()。A函數(shù)中的return語句可以有多個,但是多個return語句并不表示函數(shù)可以用return返回多個值,用return返回的函數(shù)值只能有一個。B在C語言中,只有當(dāng)實(shí)參與其對應(yīng)的形參同名時,才共占同一個存儲單元,此時形參值的變化會影響到實(shí)參的值。C形參也是局部變量,只能在函數(shù)體內(nèi)訪問。D在C語言中,實(shí)參與其對應(yīng)的形參各占獨(dú)立的存儲單元,函數(shù)調(diào)用時的參數(shù)傳遞就是把實(shí)參的值復(fù)制一份給形參,即由實(shí)參向形參進(jìn)行單向傳值,因此形參值的變化不影響實(shí)參的值。函數(shù)原型第1題下列說法錯誤的是()。A當(dāng)函數(shù)原型與函數(shù)定義中的形參類型不一致時,編譯器一般都會指出參數(shù)類型不匹配的編譯錯誤。因此,寫上函數(shù)原型有助于編譯器對函數(shù)參數(shù)進(jìn)行類型匹配檢查。B函數(shù)聲明是一條語句,不包括函數(shù)體。C無論何種情況,只要把用戶自定義的所有函數(shù)都放在main函數(shù)的前面,就可以不用寫函數(shù)原型了。D函數(shù)調(diào)用時,要求實(shí)參與形參的數(shù)量相等,它們的類型也要匹配,匹配的原則與變量賦值的原則一致。當(dāng)函數(shù)調(diào)用時的實(shí)參與函數(shù)定義中的形參的類型不匹配時,有的編譯器會發(fā)出警告,提示有可能出現(xiàn)數(shù)據(jù)信息丟失,而有的編譯器則不會發(fā)出警告。函數(shù)封裝與程序的健壯性第1題下列說法錯誤的是()。A我們常將程序具有遇到不正確使用或非法數(shù)據(jù)輸入時仍能保護(hù)自己避免出錯的能力稱為程序的健壯性。B在函數(shù)的入口處增加對函數(shù)參數(shù)合法性的檢查以及對函數(shù)調(diào)用是否成功的檢查,是一種常用的增強(qiáng)程序健壯性的方法。C對于一個封裝好的函數(shù),外界對函數(shù)的影響僅限于入口參數(shù),函數(shù)對外界的影響僅限于函數(shù)的返回值和數(shù)組、指針形參

。D編譯器給出的警告信息無關(guān)緊要,因此可以忽略。斷言第1題下列說發(fā)錯誤的是()。Aassert()其實(shí)是一個在<assert.h>中定義的宏,用來驗(yàn)證“不應(yīng)該”發(fā)生的情況是否的確不會發(fā)生。Bassert()的功能就是驗(yàn)證assert后括號內(nèi)表達(dá)式值的真假,當(dāng)該表達(dá)式的值為真時,它什么也不做。反之,則立即終止程序的執(zhí)行,并報告錯誤,但是不會對錯誤采取其他處理措施。C在使用assert()時,必須在源文件中用編譯預(yù)處理指令包含頭文件<assert.h>。D斷言不僅可以用于調(diào)試程序,還可以作為程序的功能,檢查有可能發(fā)生的程序錯誤。斷言的使用場合第1題在下列哪些情況下適合使用斷言?A檢查程序中的各種假設(shè)的正確性。B證實(shí)或測試某種不可能發(fā)生的狀況確實(shí)不會發(fā)生。C捕捉不應(yīng)該或者不可能發(fā)生的非法情況。D捕捉程序中有可能出現(xiàn)的錯誤。正確答案:ABC函數(shù)名的命名第1題下面所列舉的函數(shù)名正確且具有良好風(fēng)格的是()

A2_abcd()BGetNumber()Cchange_directory()Dchushihua@()正確答案:BC第六章測驗(yàn)第1題下列說法中正確的是A函數(shù)原型是一條語句,不包括函數(shù)體。B無論何種情況,只要把用戶自定義的所有函數(shù)都放在main函數(shù)的前面,就可以不用寫函數(shù)原型了。C在C語言中,只有當(dāng)實(shí)參與其對應(yīng)的形參同名時,才共占同一個存儲單元,此時形參值的變化會影響到實(shí)參的值。D函數(shù)只有一個返回值,所以不能有多個return語句。第2題以下程序有語法錯誤,有關(guān)錯誤原因的正確說法是#include

<stdio.h>void

prt_char(float

x);int

main(){

int

G=5,k;

......

k=prt_char(G);

......

return

0;}

int

prt_char(int

x){

......}A函數(shù)原型和函數(shù)定義不匹配B變量名不能使用大寫字母C函數(shù)名不能使用下劃線D函數(shù)prt_char(intx)定義的位置不對,不能放在主函數(shù)main()的后面。第3題以下程序的功能是選出能被3整除且至少有一位是5的兩位數(shù)的整數(shù),輸出所有滿足條件的數(shù)及其個數(shù)。代碼如下,按要求在空白處填寫適當(dāng)?shù)谋磉_(dá)式或語句,使程序完整并符合題目要求。#include

<stdio.h>int

Sub(int

k,int

n){

int

a1,a2;

a2=k/10;

a1=k-a2*10;

if(________________)

{

printf("%4d",k);

n++;

return

n;

}

elsereturn

-1;}

int

main(){

int

n=0,k,m;

for(k=10;k<100;k++)

{

m=__________;

if(________)

n=m;

}

printf("\nn=%d\n",n);

return

0;}A第7行:

(k%3==0&&a2==5)||(k%3==0&&a1==5)第22行:Sub(k,n)第24行:m!=-1B第7行:(k%3==0&&a2==5)&&(k%3==0&&a1==5)第22行:Sub(n,k)第24行:m==-1C第7行:(k%3=0&&a2=5)||(k%3=0&&a1=5)第22行:Sub(k,n)第24行:m=-1D第7行:(k%3=0&&a2=5)&&(k%3=0&&a1=5)第22行:Sub(n,k)第24行:m!=-1第4題設(shè)計(jì)一個函數(shù),用來判斷一個整數(shù)是否為素?cái)?shù)。代碼如下,按要求在空白處填寫適當(dāng)?shù)谋磉_(dá)式或語句,使程序完整并符合題目要求。

#include

<math.h>#include

<stdio.h>int

IsPrimeNumber(int

number);int

main(){

int

n,

ret;

printf("Input

n:");

scanf("%d",

&n);

ret

=

IsPrimeNumber(n);if

(___________)

{

printf("%d

is

a

prime

number\n",

n);

}

else

{

printf("%d

is

not

a

prime

number\n",

n);

}return

0;}

//函數(shù)功能:判斷number是否是素?cái)?shù),函數(shù)返回非0值,表示是素?cái)?shù),否則不是素?cái)?shù)int

IsPrimeNumber(int

number){

int

i;

if

(number

<=

1)

return

0;

//

負(fù)數(shù)、0和1都不是素?cái)?shù)for

(i=2;

________________;

i++){

if

(_______________)

//

被整除,不是素?cái)?shù)

return

0;

}return

1;}A第11行:ret!=0第29行:i<=sqrt(number)第31行:number%i==0B第11行:ret==0第29行:i<=number第31行:number%i==0C第11行:ret==0第29行:i<=sqrt(number)第31行:number

/i==0D第11行:ret!=0第29行:i<=number第31行:number

/i==0第5題以下程序執(zhí)行后的輸出結(jié)果是void

Fun(int

v

,

int

w){

int

t;

t=v;

v=w;

w=t;}

int

main(

){

int

x=1,y=3,z=2;if(x>y)

Fun(x,y);

else

if(y>z)

Fun(y,z);

else

Fun(x,z);printf("%d,%d,%d\n",x,y,z);

return

0;}A1,3,2B1,3,3C3,1,2D2,3,1第6題若已定義的函數(shù)有返回值,則以下關(guān)于該函數(shù)調(diào)用的敘述中錯誤的是A函數(shù)調(diào)用可以作為一個函數(shù)的形參B函數(shù)調(diào)用可以作為獨(dú)立的語句存在C函數(shù)調(diào)用可以作為一個函數(shù)的實(shí)參D函數(shù)調(diào)用可以出現(xiàn)在表達(dá)式中第7題有以下函數(shù)定義:voidFun(intn,doublex)

{……}若以下選項(xiàng)中的變量都已正確定義并賦值如下:inta,k;doubleb;a=12;b=0.45;則對函數(shù)Fun的正確調(diào)用語句是AFun(a,b);BFun(inty,doublem);

Ck=Fun(10,12.5);

Dk=voidFun(a,b);

第8題設(shè)計(jì)一個函數(shù)MinCommonMultiple(),計(jì)算兩個正整數(shù)的最小公倍數(shù)。代碼如下,按要求在空白處填寫適當(dāng)?shù)谋磉_(dá)式或語句,使程序完整并符合題目要求。

#include

<stdio.h>int

MinCommonMultiple(int

a,

int

b);int

main(){

int

a,

b,

x;

printf("Input

a,b:");

scanf("%d,%d",

&a,

&b);

x

=

_________________;if

(__________)printf("MinCommonMultiple

=

%d\n",

x);

else

printf("Input

error!\n");return

0;}//函數(shù)功能:計(jì)算兩個正整數(shù)的最小公倍數(shù),-1表示沒有最小公倍數(shù)int

MinCommonMultiple(int

a,

int

b){

int

i;if

(_________________)

return

-1;

//

保證輸入的參數(shù)為正整數(shù)for

(i=1;

i<b;

i++)

{

if

(________________)return

i

*

a;

}return

b

*

a;}A第8行:

MinCommonMultiple(a,b)第10行:x!=-1第22行:a<=0||b<=0第26行:(i*a)%b==0B第8行:

MinCommonMultiple第10行:x==-1第22行:a<=0

&&b<=0第26行:(i*a)%b==0C第8行:

MinCommonMultiple(b,a)第10行:

x!=-1第22行:a<=0||b<=0第26行:(i*a)/b==0D第8行:

MinCommonMultiple(inta,intb)第10行:

x=-1第22行:a<=0||b<=0第26行:(i*a)%b==0第9題設(shè)計(jì)一個函數(shù)MaxCommonFactor(),利用歐幾里德算法(也稱輾轉(zhuǎn)相除法)計(jì)算兩個正整數(shù)的最大公約數(shù)。代碼如下,按要求在空白處填寫適當(dāng)?shù)谋磉_(dá)式或語句,使程序完整并符合題目要求。

#include

<stdio.h>int

MaxCommonFactor(int

a,

int

b);int

main(){

int

a,

b,

x;

printf("Input

a,b:");

scanf("%d,%d",

&a,

&b);

x

=_______________

;

if

(x

!=

-1)

{

printf("MaxCommonFactor

=

%d\n",

x);

}

else

{

printf("Input

error!\n");

}

return

0;}

//函數(shù)功能:

計(jì)算兩個正整數(shù)的最大公約數(shù),-1表示沒有最大公約數(shù)int

MaxCommonFactor(int

a,

int

b){

int

r;

if

(a<=0

||

b<=0)

return

-1;

//

保證輸入的參數(shù)為正整數(shù)do{

____________;

a

=

b;

_____________;

}while

(__________);

return

a;}A第8行:

MaxCommonFactor(a,b)第29行:r=a%b第31行:b=r第32行:r!=0B第8行:

MaxCommonFactor(a,b,x)第29行:r=a%b第31行:a

=r第32行:r==0C第8行:

MaxCommonFactor(a,x)第29行:r=b%a第31行:b

=r第32行:r=0D第8行:

MaxCommonFactor(x,b)第29行:r=

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論