C語言程序設計章節練習題帶答案_第1頁
C語言程序設計章節練習題帶答案_第2頁
C語言程序設計章節練習題帶答案_第3頁
C語言程序設計章節練習題帶答案_第4頁
C語言程序設計章節練習題帶答案_第5頁
已閱讀5頁,還剩101頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

C語言程序設計章節練習題帶答案(1)

第2章程序的靈魂一--算法

一、選擇題(在下列各題的A)、B)、C)、D)四個選項中,只有一個選項是正確的,請

將正確選項填涂在答題卡相應位置上。)

2.1以下敘述中正確的是

A)C語言比其他語言高級

B)C語言可以不用編譯就能被計算機識別執行

C)C語言以接近英語國家的自然語言和數學語言作為語言的表達形式

D)C語言出現的最晚,具有其他語言的一切優點

正確答案:C

2.2以下敘述中正確的是

A)構成C程序的基本單位是函數

B)可以在一個函數中定義另一個函數

C)main()函數必須放在其他函數之前

D)所有被調用的函數一定要在調用之前進行定義

正確答案:A

2.3以下說法正確的是

A)C語言程序總是從第一個的函數開始執行

B)在C語言程序中,要調用函數必須在main()函數中定義

C)C語言程序總是從main()函數開始執行

D)C語言程序中的main()函數必須放在程序的開始部分

正確答案:C

2.4C語言規定,在一個源程序中,main函數的位置

A)必須在最開始

B)必須在系統調用的庫函數的后面

C)可以任意

D)必須在最后

正確答案:C

2.5以下敘述不正確的是

A)一個C源程序可由一個或多個函數組成

B)一個C源程序必須包含一個main函數

C)C程序的基本組成單位是函數

D)在C程序中,注釋說明只能位于一條語句的后面

正確答案:I)

2.6下列敘述中正確的是

A)C語言編譯時不檢查語法

B)C語言的子程序有過程和函數兩種

C)C語言的函數可以嵌套定義

D)C語言的函數可以嵌套調用

正確答案:D

2.7以下敘述正確的是

A)在C程序中,每行中只能寫一條語句

B)若a是實型變量,C程序中允許賦值a=10,因此實型變量中允許存放整型數

C)在C程序中,無論是整數還是實數,都能被準確無誤地表示

D)在C程序中,%是只能用于整數運算的運算符

正確答案:D

2.8以下說法錯誤的是

A)一個算法應包含有限個步驟

B)在計算機上實現的算法是用來處理數據對象的

C)算法中指定的操作,不能通過已經實現的基本運算執行有限次后實現

D)算法的目的是為了求解

正確答案:C

2.9算法是指為解決某個特定問題而采取的確定且有限的步驟,下面不屬于算法的五個特性

的是

A)有零個輸入或多個輸入

B)高效性

C)有窮性

D)確定性

正確答案:B

2.10下列關于C語言的說法不正確的是

A)C語言既具有高級語言的一切功能,也具有低級語言的一些功能

B)C語言中的每一條執行語句都必須用分號結束,分號不是C語言的一部分,是語句之間

的分隔符號

C)注釋可以出現在程序中任意合適的地方

D)命令行后面不能加分號,命令行不是C語言的語句

正確答案:B

2.11以下說法錯誤的是

A)高級語言都是用接近人們習慣的自然語言和數學語言作為語言的表達形式

B)計算機只能處理由0和1的代碼構成的二進制指令或數據

C)C語言源程序經過C語言編譯程序編譯之后生成一個后綴為.EXE的二進制文件

D)每一種高級語言都有它對應的編譯程序

正確答案:C

2.12C語言中用于結構化程序設計的3種基本結構是

A)順序結構、選擇結構、循環結構

B)if,switch,break

C)for,while,do-while

D)if,for,continue

正確答案:A

二、填空題(請將每一個空的正確答案寫在答題卡相應序號后。)

2.13用高級語言編寫的程序稱為【1】程序,它可以通過解釋程序翻譯一句執行一句的方式

執行,也可以通過編譯程序一次翻譯產生目標程序,然后執行。

正確答案:源程序

2.14C語言程序的注釋可以出現在程序中的任何地方,一個注釋以【2】作為開始和結束。

正確答案:/**/

(2)

一、選擇題(在下列各題的A)、B)、C)、D)四個選項中,只有一個選項是正確的,請

將正確選項填涂在答題卡相應位置上。)

3.1C語言中最簡單的數據類型包括

A)整型、實型、邏輯型

B)整型、實型、字符型

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

D)字符型、實型、邏輯型

正確答案:B

3.2C語言中的標識符只能由字母,數字和下劃線三種字符組成,且第一個字符

A)必須為字母

B)必須為下劃線

C)必須為字母或下劃線

D)可以是字母,數字和下劃線中任一字符

正確答案:C

3.3下列可用于C語言用戶標識符的一組是

A)void,define,WORD

B)a3b3,123,Car

C)For,-abc,IFCase

D)2a,DO,sizeof

正確答案:B

3.4下面四個選項中,均是不正確的8進制數或16進制數的選項是

A)0160x8f018

B)Oabc017Oxa

C)010-0x110x16

D)0al27ff-123

正確答案:D

3.5下列數據中,不合法的C語言實型數據的是

A)0.123

B)123e3

C)2.Ie3.5

D)789.0

正確答案:C

3.6在16位C編譯系統上,若定義longa;,則能給a賦40000的正確語句是

A)a=20000+20000;

B)a=4000*10;

C)a=30000+10000;

D)a=4000L*10L;

正確答案:D

3.7若有說明語句:charc八72';則變量c

A)包含1個字符

B)包含2個字符

C)包含3個字符

D)說明不合法,c的值不確定

正確答案:A

3.8有字符串如下,"\n\\\4D7asl\"\xabc",則字符串的長度為

A)6

B)7

C)8

D)9

正確答案:D

3.9C語言中運算對象必須是整型的運算符是

A)%=

B)/

C)=

D)<=

正確答案:A

3.10若變量已正確定義并賦值,以下符合C語言語法的表達式是

A)a:=b+l

B)a=b=c+2

C)int18.5%3

D)a=a+7=c+b

正確答案:B

3.11若變量a,i已正確定義,且i已正確賦值,合法的語句是

A)a==1

B)++i;

C)a=a++=5;

D)a=int(i);

正確答案:B

3.12若有定義:inta=7;floatx=2.5,y=4.7;則表達式x+a%3*(int)(x+y)%2/4的值是

A)2.500000

B)2.750000

C)3.500000

D)0.000000

正確答案:A

3.13若有運算符《,sizeof/,&=則它們按優先級由高至低的正確排列次序是

A)sizeof,&=,?,"

B)sizeof,?,,&=

C)?,sizeof,&=

D)<</,&=,sizeof

正確答案:B

3.14以下不正確的敘述是

A)在C程序中,逗號運算符的優先級最低

B)在C程序中,APH和aph是兩個不同的變量

C)若a和b類型相同,在計算了賦值表達式a=b后b中的值將放入a中,而b中的值不變

D)當從鍵盤輸入數據時,對于整型變量只能輸入整型數值,對于實型變量只能輸入實型數

正確答案:D

3.15已知inti,a;執行語句i=(a=3,a++,—a,a+4,a+5,++a);后,變量i的值為

A)2

B)3

C)4

D)5

正確答案:C

3.16設變量a是int型,f是float型,i是double型,則表達式10+'a'+i*f值的數據

類型為

A)int

B)float

C)double

D)不確定

正確答案:C

3.17在C語言中,char型數據在內存中的存儲形式是

A)補碼

B)反碼

C)原碼

D)ASCII碼

正確答案:D

3.18字符型數據在機器中是用ASCII碼表示的,字符'5'和'7,在機器中表示為

A)10100011和01110111

B)01000101和01100011

C)00110101w00110111

D)01100101w01100111

正確答案:c

3.19不能進行++和--運算的數據類型為

A)指針

B)整型

C)長整型

D)常量

正確答案:D

3.20設有intx=ll;則表達式(x++*l/3)的值是

A)3

B)4

C)11

D)12

正確答案:A

3.21以下程序的輸出結果是

main()

{inta=21,b=ll;

printf(飛d\n”,--a+b,---b+a);

}

A)30

B)31

C)32

D)33

正確答案:A

3.22假設,整型變量a,b,c的值均為5,則表達式a十十十b十十十c十十的值為

A)17

B)16

C)15

D)14

正確答案:C

3.23已知inta=6;則執行a+=a-=a*a;語句后,a的值為

A)36

B)0

C)-24

D)-60

正確答案:D

3.24設變量n為float類型,1n為int類型,則以下能實現將n中的數值保留小數點后兩

位,第三位進行四舍五入運算的表達式是

A)n=(n*100+0.5)/100.0

B)m=n*100+0.5,n=m/100.0

C)n=n*100+0.5/100.0

D)n=(n/100+0.5)*100.0

正確答案:B

3.25sizeof(float)是

A)一個雙精度型表達式

B)一個整型表達式

C)一種函數調用

D)一個不合法的表達式

正確答案:B

3.26在C語言中,int,char和short三種類型數據在內存中所占用的字節數

A)由用戶自己定義

B)均為2個字節

C)是任意的

D)由所用機器的機器字長決定

正確答案:D

3.27以下變量x,y,z均為double類型且已正確賦值,不能正確表示數學式子x+y+z

的C語言表達式是

A)x/y*z

B)x*(1/(y*z))

C)x/y*l/z

D)x/y/z

正確答案:A

3.28下列關于復合語句和空語句的說法錯誤的是

A)復合語句是由“{”開頭,由“}”結尾的

B)復合語句在語法上視為一條語句

C)復合語句內,可以有執行語句,不可以有定義語句部分

D)C程序中的所有語句都必須由一個分號作為結束

正確答案:C

3.29下列關于字符串的說法中錯誤的是

A)在C語言中,字符串是借助于字符型一維數組來存放的,并規定以字符'\0'作為字符

串結束標志

B)''0'作為標志占用存儲空間,計入串的實際長度

C)在表示字符串常量的時候不需要人為在其末尾加入''0'

D)在C語言中,字符串常量隱含處理成以''0'結尾

正確答案:B

二、填空題(請將每一個空的正確答案寫在答題卡相應序號后。)

3.30以下程序的輸出結果是【1】。

inta=1234;

printfa);

正確答案:1234

3.31在計算機中,字符的比較是對它們的[2]進行比較。

正確答案:ASCII碼

3.32在內存中,存儲字符'X,要占用1個字節,存儲字符串"X"要占用【3】個字節。

正確答案:2

3.33在C語言中(以16位PC機為例),一個float型數據在內存中所占的字節數為4;

一個double型數據在內存中所占的字節數為【4】。

正確答案:8

3.34以下程序段的輸出結果是[5】。

main()

{inta.—2,b=3,c=4j

a*=16+(b++)-(++c);

printfa);

}

正確答案:28

3.35以下程序段的輸出結果是[5】。

intx=17,y=26;

printfy/=(x%=6)):

正確答案:5

3.36下列y的值是17】。

inty;y=sizeof(2.25*4);

正確答案:8

3.37以下程序的輸出結果是[8】。

main()

{inti=010,j=10;

pirntf("%d,%d\n”,i,j);

}

正確答案:8,10

3.38已知字母a的ASCII碼為十進制數97,且設ch為字符型變量,則表達式ch=,a'+'

8'3'的值為【9】o

正確答案:f

3.39如下語句printf("枇\n",'B'+40);在執行后的輸出結果是[10]。

正確答案:j

3.40定義inta=5,b=20;若執行語句printf("%d\n",++a*—b/5);后,輸出的結果為

[11]。

正確答案:9

(3)

第4章順序程序設計

一、選擇題(在下列各題的A)、B)、C)、D)四個選項中,只有一個選項是正確的,請

將正確選項填涂在答題卡相應位置上。)

4.1若變量已正確說明為float型,要通過語句scanf(;給@賦

予10.0,b賦予22.0,c賦予33.0,下列不正確的輸入形式是

A)10〈回車>22〈回車>33〈回車)

B)10.0,22.0,33.0<回車)

C)10.0〈回車>22.033.0<回車)

D)1022<回車>33〈回車》

正確答案:B

4.2現有以下程序段

#include

main()

{inta,b,c;

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

printf(*a=%d,b=%d,c=%d\n*,a,b,c);}

若輸出的結果為a=20,b=30,c=40,則以下能夠正確輸入數據的是

A)a=10]20,b=20]30,c=40

B)20,30,40

C)a=20,b=30,c=40

D)a=10]20,b=30]20,c=40

[注]:”表示空格,表示回車

正確答案:D

4.3x,y,z被定義為int型變量,若從鍵盤給x,y,z輸入數據,正確的輸入語句是

A)INPUTx、y、z;

B)scanf(*%d%d%d*,&x,&y,&z);

C)scanf(z,%d%d%dz,,x,y,z);

D)read("%d%d%d”,&x,&y,&z);

正確答案:B

4.4已有定義inta=-2;和輸出語句printf("%81x”,a);以下正確的敘述是

A)整型變量的輸出形式只有%d一種

B)%x是格式符的一種,它可以適用于任何一種類型的數據

C)%x是格式符的一種,其變量的值按十六進制輸出,但%81x是錯誤的

D)%81x不是錯誤的格式符,其中數字8規定了輸出字段的寬度

正確答案:D

4.5下列程序段的輸出結果是:

inta=1234;

floatb=123.456;

doublec=12345.54321;

printfC-%2.lf,%2.ir,a,b,c);

A)無輸出

B)12,123.5,12345.5

C)1234,123.5,12345.5

D)1234,123.4,1234.5

正確答案:C

4.6執行下列程序時輸入:123<空格>456〈空格〉789〈回車>輸出結果是

main()

{chars[100];intc,i;

scanf(緝c”,&c);scanf(線d”,&i);scanf("%s”,s);

printf(*%c,%d,%s\n*,c,i,s);}

A)123,456,789

B)1,456,789

C)1,23,456,789

D)1,23,456

正確答案:D

4.7若己定義:inta=25,b=14,c=19;以下三目運算符(?:)所構成語句的執行后

a<=25&&b一<=2&&c?printf(****a=%d,b=%d,c=%d\n”,a,b,c):printf(b=%d,c=%d

\n\a,b,c);程序輸出的結果是

A)***a=25>b=13,c=19

B)***a=26,b=14,c=19

C)###a=25,b=13,c=19

D)###a=26,b=14,c=19

正確答案:C

4.8請選出以下語句的輸出結果

printf(線d\n”,strlen("\t\"\065\xff'n"));

A)5

B)14

C)8

D)輸出項不合法,無正常輸出

正確答案:A

4.9下列程序的輸出結果是

main()

{doubled=3.2;intx,y;

x=l.2;y=(x+3.8)/5.0;

printf(*%d\n*,d*y);

)

A)3

B)3.2

C)0

D)3.07

正確答案:C

4.10調用gets和puts函數時,必須包含的頭文件是

A)stdio.h

B)stdlib.h

C)define

D)以上都不對

正確答案:A

4.11閱讀下面程序段

#include"stdio.h"

main()

{charc;

c=('z'a')/2+'A';

putchar(c);)

輸出結果為

A)M

B)N

C)0

D)Q

正確答案:A

二、填空題(請將每一個空的正確答案寫在答題卡相應序號后。)

4.12下列程序的輸出結果是16.00,請填空。

main()

{inta=9,b=2;

floatx=[1],y=l.1,z;

z=a/2+b*x/y+l/2;

printf("%5.2f\n",z);

}

正確答案:6.6

4.13在使用putchar和getchar函數處理字符時,必須在程序的開頭出現包含頭文件的命

令行是[2]o

正確答案:^include

4.14下列程序的輸出結果是[3],[4].

ttinclude

main()

{floata=~l.3;b=l.3;

printf("%f,%f”,fabs(a),fabs(b);}

正確答案:1.300000

正確答案:L300000

4.15執行程序時的輸入為123456789,則程序的運行結果為【5】

^include"stdio.h"

main()

{inta,b;

scanf(&a,&b);

printf(線d\n”,a-b);}

正確答案:7

(4)

第5章選擇結構程序設計

一、選擇題(在下列各題的A)、B)、C)、D)四個選項中,只有一個選項是正確的,請

將正確選項填涂在答題卡相應位置上。)

5.1在C程序中,判邏輯值時,用“非0”表示邏輯值“真”,又用“0”表示邏輯值“假

在求邏輯值時,用()表示邏輯表達式值為“真”,乂用()表示邏輯表達式值為“假”.

A)10

B)01

C)非0非0

D)11

正確答案:A

5.2已知intx=6,y=2,z;則執行表達式z=x=x>y后,變量z的值為

A)0

B)1

C)4

D)5

正確答案:B

5.3能正確表示邏輯關系:“a210或aWO”的C語言表達式是

A)a>=10ora<=0

B)a>=0|a<=10

C)a>=10&&a<=0

D)a>=10IIa<=0

正確答案:D

5.4若變量c為char類型,能正確判斷出c為小寫字母的表達式是

A)'a7<=c<=zz'

B)(c>=za')||(c<=zz')

C)('a'<=c)and('z'>=c)

D)(c>=xa')&&z')

正確答案:D

5.5設intx=l,y=l;表達式(!x||y—)的值是

A)0

B)1

C)2

D)-1

正確答案:B

5.6有如下程序段

inta=14,b=15,x;

charc='A';

x=(a&&b)&&Cc<'Bz);

執行該程序段后,x的值為

A)ture

B)false

C)0

D)1

正確答案:D

5.7以下程序的輸出結果是

main()

{inta=4,b=5,c=0,d;

d=!a&&!b||!c;

printfd);}

A)1

B)0

O非0的數

D)-1

正確答案:A

5.8設有:

inta=l,b=2,c=3,d=4,m=2,n=2;

執行(m=a>b)&&(n=c>d)后n的值是

A)1

B)2

C)3

D)4

正確答案:B

5.9已知x,y,z均為整型變量,且值均為1,則執行語句++x||++y&&++z;后,表達式x+y的值

A)1

B)2

C)3

D)4

正確答案:C

5.10表達式a<b||(c&d)中運算符優先級最高的是

A)||

B)&

C)<

D)()

正確答案:D</b||(c&d)中運算符優先級最高的是

5.11若運行時給變量x輸入12,則以下程序的運行結果是

main()

{intx,y;

scanf;

y=x>12?x+10:x-12;

printf("%d\n*,y);

}

A)0

B)22

C)12

D)10

正確答案:A

5.12已知charch='C':則以下表達式的值是

ch=(ch>='A'&&ch<='Z')?(ch+32):ch;

A)A

B)a

C)Z

D)c

正確答案:D

5.13若有條件表達式(exp)?a-+:b",則以下表達式中能完全等價于表達式(exp)的是

A)(exp—0)

B)(exp!=0)

C)(exp==l)

D)(exp!=l)

正確答案:B

5.14有以下程序

main()

{inti=l,j=l,k=2;

if((j++||k++)&&i++)

printf("%d,%d,%d\n”,i,j,k);

}

執行后輸出結果是

A)1,1,2

B)2,2,1

C)2,2,2

D)2,2,3

正確答案:C

5.15請閱讀以下程序:

main()

{inta=5,b=0,c=0;

if(a=b+c)printf;

elseprintf("$$$\n”);

)

以上程序

A)有語法錯不能通過編譯

B)可以通過編譯但不能通過連接

C)輸出***

D)輸出$$$

正確答案:D

5.16若執行下述程序時,若從鍵盤輸入6和8時,結果為

main()

{inta,b,s;

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

s=a;

if(a<b)

s=b;

s*=s;

printfs);

}

A)36

B)64

C)48

D)以上都不對

正確答案:B〈/b)

5.17有如下程序

main()

{floatx=2.0,y;

if(x<0.0)y=0.0;

elseif(x<10.0)y=l.0/x;

elsey=l.0;

printf(線f\n〃,y);)

該程序的輸出結果是

A)0.000000

B)0.250000

C)0.500000

D)1.000000

正確答案:C

5.18以下4個選項中,不能看做一條語句的是

A);

B)a=5,b=2.5,c=3.6;

C)if(a<5);

D)if(b!=5)x=2;y=6;

正確答案:D

5.19若intk=8;則執行下列程序后,變量k的正確結果是

main()

{intk=8;

switch(k)

{case9:k+=l;

case10:k+=l;

case11:k+=l;break;

default:k+=l;)

printf("/d'n",k);}

A)12

B)11

C)10

D)9

正確答案:D

5.20閱讀如下程序段

ttinclude“stdio.h"

main()

{inta=45,b=40,c=50,d;

d=a>30?b:c;

switch(d)

{case30:printf("%d,”,a);

case40:printf("%d,”,b);

case50:printf("%d,”,c);

default:printf('#");}}

則輸出的結果是

A)40,50,

B)50,#

C)40,#

D)40,50,n

正確答案:D

5.21現有如下程序段,此程序段編譯有錯誤,則程序段的錯誤出在

#include

main()

{inta=30,b=40,c=50,d;

d=a>30?b:c;

switch(d)

{casea:printf(“為d,",a);

caseb:printf("%d,”,b);

casec:printf("%d,”,c);

default:printf('#");}}

A)default:printf("#〃);這個語句

B)d=a>30?b:c;這個語句

C)casea:printf(〃%d,〃,a);caseb:printf;casec:printf;

這三個語句

D)switch(d)這個語句

正確答案:C

二、填空題(請將每一個空的正確答案寫在答題卡相應序號后。)

5.22設y是int型,請寫出y為奇數的關系表達式【I】。

正確答案:(y%2)==l或(y%2)!=0

5.23設inta=5,b=6,表達式(++a==b--)?++a:一b的值是【2】.

正確答案:7

5.24將以下程序寫成三目運算表達式是[3】o

if(a>b)max=a;

elsemax=b;

正確答案:max=(a>b)?a:b;

5.25以下程序輸出的結果是[4].

main()

{inta=5,b=4,c=3,d;

d=(a>b>c);

printfd);

)

正確答案:0

5.26若從鍵盤輸入58,則以下程序輸出的結果是[5】。

main()

{inta;

scanf;

if(a>50)printfa);

if(a>40)printfa);

if(a>30)printfa);

}

正確答案:585858

5.27閱讀下面語句,則程序的執行結果是【6】。

^include"stdio.h"

main()

{inta=-l,b=l,k;

if((++a<0)&&!(b--<=0))

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

elseprintf(*%d,%d\n*?b,a);}

正確答案:1,0

5.28閱讀下面程序,則在執行時候的輸出為【7】。

^include"stdio.h"

main()

{intx=l,y=2,z=0;

if(x=2)z=x,x=y,y=z;

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

正確答案:2,2

5.29以下程序的輸出結果是[8】。

main()

{intx=100,a=10,b=20,okl=5,ok2=0;

if(a

elseif(ok2)x=10;

elsex=-l;

printf(*%d\n*,x);}

正確答案:T

5.30閱讀下面的程序,當程序在執行時,如果輸入的是'A',則輸出結果為【9】。

ttinclude“stdio.h"

main()

{chara;

a=getchar();

switch(a)

{case65:printf'A');

case66:printf'B');

default:printf("為s\n","other");}}

正確答案:ABother

(5)

第6章循環控制

一、選擇題(在下列各題的A)、B)、C)、D)四個選項中,只有一個選項是正確的,請

將正確選項填涂在答題卡相應位置上。)

6.1對表達式for(表達式1;;表達式3)可理解為

A)for(表達式1;0;表達式3)

B)for(表達式1;1;表達式3)

C)for(表達式1;表達式1;表達式3)

D)for(表達式1;表達式3;表達式3)

正確答案:B

6.2在下列選項中,沒有構成死循環的是

A)inti=100;

while(l)

{i=iO+l;

if(i>100)break;

)

B)for(;;);

C)intk=10000;

do{k++;}while(k>10000);

D)ints=36;

while(s)-s:

正確答案:D

6.3下面有關for循環的正確描述是

A)for循環只能用于循環次數已經確定的情況

B)for循環是先執行循環體語句,后判斷表達式

C)在for循環中,不能用break語句跳出循環體

D)for循環的循環體語句中,可以包含多條語句,但必須用花括號挺起來

正確答案:D

6.4若inti,j;,則for(i=j=0;i<10&&j<8;i++,j+=3)控制的循環體執行的次數是

A)9

B)8

C)3

D)2

正確答案:C

6.5閱讀下列程序段,則程序的輸出結果是

^include"stdio.h"

main()

{inta=10,b=10,k;

for(k=0;a>8;b=++k)

printf("%d,%d,”,a---b);

printf("\n");}

A)10,10,10,0,

B)10,9,9,0,

C)10,10,9,1,

D)9,9,9,1,

考生答案:正確答案:B

6.6有一堆零件(100到200之間),如果分成4個零件一組的若干組,則多2個零件;

若分成7個零件一組,則多3個零件;若分成9個零件一組,則多5個零件。下面程序是求

這堆零件總數,請選擇填空。

Sinclude

main()

{inti;

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

if((i-2)%4==0)

if(!((i-3)%7))

if()

printfi);

}

A)i%9=5

B)i%9!=5

C)(i-5)%9!=0

D)(i-5)%9==0

正確答案:D

6.7下列程序的輸出結果是

^include"stdio.h"

main()

{inti,a=0,b=0;

for(i=l;i<10;i++)

{if(i%2==0)

{a++;

continue;}

b++;)

printf(*a=%d,b=%d*?a,b);}

A)a=4,b=4

B)a=4,b=5

C)a=5,b=4

D)a=5,b=5

正確答案:B

6.8閱讀下列程序,則執行結果是

^include"stdio.h"

main()

{inta=0,b=0,c=0,i;

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

switch(i)

{case0:a=i++;

case1:b=i++;

case2:c=i++;

case3:i++;}

printf(*%<1,%d,%d,%d\n*,a,b,o,i);}

A)0,1,3,4

B)1,2,3,4

C)0,1,2,5

D)0,2,3,4

正確答案:C

6.9閱讀下列程序,程序的輸出結果是

#include"stdio.h"

main()

(

intm,n;

floatk;

for(m=6;m>2;m--)

{k=0;

for(n=m;n>l;n--)

k=k+m*n;

}

printfk);

}

A)5.000000

B)15.000000

C)25.000000

D)35.000000

正確答案:B

6.10下面程序的運行結果是

#include"stdio.h"

main()

{intj,i,k=0;

for(j=50;j<=60;j++)

{if(!(k))printf;

for(i=2;i<j;i++)

if(!(j%i))break;

if(i>=j-l)

{printfj);

k++;}

}

}

A)5359

B)5953

C)3595

D)9535

正確答案:A</j;i++)>

6.11已知

intt=0;

while(t=l)

{...)

則以下敘述正確的是

A)循環控制表達式的值為0

B)循環控制表達式的值為1

C)循環控制表達式不合法

D)以上說法都不對

正確答案:B

6.12設有以下程序段

intx=0,s=0;

while(!x!=0)s+=++x;

printfs);

A)運行程序段后輸出0

B)運行程序段后輸出1

C)程序段中的控制表達式是非法的

D)程序段執行無限次

正確答案:B

6.13下列程序的輸出結果是

^include"stdio.h"

main()

{inti=6;

while(i--)

printf--i);

printf("\n");}

A)531

B)420

C)654321

D)死循環

正確答案:B

6.14對下I,II兩個語句描述正確的是

I.while(1)II.for(;;)

A)都是無限循環

B)I是無限循環,II錯誤

oi循環一次,n錯誤

D)以上答案都錯

正確答案:A

6.15以下程序段的描述,正確的是

x=-l;

do

{x=x*x;}

while(!x);

A)是死循環

B)循環執行兩次

C)循環執行一次

D)有語法錯誤

正確答案:C

6.16若有如下語句

intx=3;

do{printf("%d\n”,x-=2);}while(!(--x));

則上面程序段

A)輸出的是1

B)輸出的是1和-2

C)輸出的是3和0

D)是死循環

正確答案:B

6.17下面程序的運行結果是

ttinclude

main()

{inta=l,b=10;

do

{b-=a;a++;1while(b--(0);

printf(*a=%d,b=%d\n*,a,b);

)

A)a=3,b=llB)a=2,b=8C)a=l,b=-lD)a=4,b=9

正確答案:B

6.18若運行以下程序時,從鍵盤輸入ADescriptor(表示回車),則下面程序的運行結

果是#include

main()

{charc;

intvO=l,vl=0,v2=0;

do{switch(c=getchar())

{case,a,:case'A,:

case'e':case'Ez:

case,J:case,r:

case'o':case’oz:

case'u':case'U':vl+=l

default:vO+=l;v2+=l;}

(while(c!=z\n');

printf("vO=%d,vl=%d,v2=%d\n",vO,vl,v2);}

A)v0=7,vl=4,v2=7

B)v0=8,vl=4,v2=8

C)vO=ll,vl=4,v2=ll

D)v0=13,vl=4,v2=12

正確答案:D

6.19下面程序的功能是把316表示為兩個加數的和,使兩個加數分別能被13和11整除,

請選擇填空。

Sinclude

main()

{inti=0,j,k;

do{i++;k=316-13*i;}whil3(______);

j=k/ll;

printf("316=13*%d+ll*%d”,i,j);

)

A)k/11

B)k

C)k/ll==0

D)k==0

正確答案:B

6.20C語言中while和do-whilc循環的主要區別是

A)do-while的循環體至少無條件執行一次

B)while的循環控制條件比do-while的循環控制條件更嚴格

C)do-while允許從外部轉到循環體內

D)do-while的循環體不能是復合語句

正確答案:A

6.21下列說法中錯誤的是

A)只能在循環體內使用break語句

B)在循環體內使用break語句可以使流程跳出本層循環體,從而提前結束本層循環

C)在while和do…while循環中,continue語句并沒有使整個循環終止

D)continue的作用是結束本次循環,即跳過本次循環體中余下尚未執行的語句,接著再一

次進行循環判斷

正確答案:A

二、填空題(請將每一個空的正確答案寫在答題卡相應序號后。)

6.22設i,j,k均為int型變量,則執行完下面的for語句后,k的值為【1】。

for(i=0,j=10;i<=j;i++,j--)k=i+j;

正確答案:10

6.23下列程序的功能是輸入一個整數,判斷是否是素數,若為素數輸出1,否則輸出0,

請填空。

main()

{inti,x,y=l;

scanf&x);

for(i=2;i<=x/2;i++)

if[2]{y=0;break;)

printfy);

)

止確答案:(x%i==0)

6.24以下程序的輸出結果是[3】。

main()

{inty=9;

for(;y>0;y--)

if(y%3==0)

{printf(飛d”,--y);continue;}

)

正確答案:852

6.25閱讀下面程序段,則執行后的輸出結果為o

#include"stdio.h"

main()

{inta=l;

for(;a<=15;)

if(++a%5!=2)continue;

elseprintf(“/d”,a);

printf("\n");}

正確答案:2712

6.26閱讀下面語句,則執行后的輸出結果為【5】

ttinclude"stdio.h"

main()

{chara,b;

for(a=,O',b='9';a

printf(飛c%c”,a,b);

printf("\n");}

正確答案:0918273645

6.27閱讀下面程序,則執行后程序的結果為【6】

#include"stdio.h"

main()

{inta=0,b=0;

while(a<15)a++;

while(b++<15);

printf(*%d,%d\n*,a,b);}

正確答案:15,16

(6)

第7章數組

一、選擇題(在下列各題的A)、B)、C)、D)四個選項中,只有一個選項是正確的,請

將正確選項填涂在答題卡相應位置上。)

7.1若有說明inta[3][4];則a數組元素的非法引用是

A)a[0][2*1]

B)a[1][3]

C)a[4-2][0]

D)a[0][4]

正確答案:D

7.2在C語言中,引用數組元素時,其數組下標的數據類型允許是

A)整型常量

B)整型表達式

C)整型常量或整型表達式

D)任何類型的表達式

正確答案:C

7.3執行下面的程序段后,變量k中的值為

intk=3,s[2];

s[0]=k;k=s[1]*10;

A)不定值

B)33

C)30

D)10

正確答案:A

7.4定義如下變量和數組:

intk;

inta[3][3]={9,8,7,6,5,4,3,2,1};

則下面語句的輸出結果是

for(k=0;k<3;k++)printf(飛d",a[k][k]);

A)753

B)951

0963

D)741

正確答案:B

7.5下列程序執行后的輸出結果是

main()

{chararr[2][4];

strcpy(arr,"you");

strcpy(arr[1];

arr[0][3]=';

printf(*%s\n*,arr);

)

A)you&me

B)you

C)me

D)err

正確答案:A

7.6設有數組定義:chararray口:"China”;則數組array所占的空間為

A)4個字節

B)5個字節

C)6個字節

D)7個字節

正確答案:C

7.7以下不正確的定義語句是

A)doublex[5]={2.0,4.0,6.0,8.0,10.0);

B)inty[5]={0,1,3,5,7,9);

C)charcl[]={'1','2','3','4','5');

D)charc2[]={'\xlOf,'\xa','\x8'};

正確答案:B

7.8若有說明:inta[][3]={1,2,3,4,5,6,7};則a數組第一維的大小是

A)2

B)3

C)4

D)無確定值

正確答案:B

7.9對以下說明語句的正確理解是

inta[10]:{6,7,8,9,10};

A)將5個初值依次賦給a[1]至a[5]

B)將5個初值依次賦給a[0]至a[4]

C)將5個初值依次賦給a[6]至a[10]

D)因為數組長度與初值的個數不相同,所以此語句不正確

正確答案:B

7.10若有說明:inta口[4]:{0,0};則下面不正確的敘述是

A)數組a的每個元素都可得到初值0

B)二維數組a的第一維大小為1

C)當初值的個數能被第二維的常量表達式的值除盡時,所得商數就是第一維的大小

D)只有元素a[0][0]和a[0][1]可得到初值,其余元素均得不到確定的初值

正確答案:D

7.11有以下程序

main()

{chara口={'a','b','c','d','e','f','g','h,,''0'};

inti,j;

i=sizeof(a);

j=strlen(a);

printf(*%d,%d\b*,i,j);

}

程序運行后的輸出結果是

A)9,9

B)8,9

C)1,8

D)9,8

正確答案:D

7.12假定int類型變量占用兩個字節,其有定義:intx[10]=[0,2,4}則數組x在內

存中所占字節數是

A)3

B)6

C)10

D)20

正確答案:D

7.13以下能對二維數組c進行正確的初始化的語句是

A)intc[3]口={{3},⑶,⑷};

B)intc[][3]={⑶,⑶,{4}};

C)intc[3][2]={{3},{3},{4},{5}):

D)intc[][3]={{3},{},{3}|;

正確答案:B

7.14在C語言中,一維數組的定義方法為

類型說明符數組名

A)[常量表達式]

B)[整型常量]

C)[整型變量]

D)[整型常量]或[整型表達式]

正確答案:A

7.15若二維數組a有m列,則計算任一元素a[i][j]在數組中相對位置的公式為(假

設a[0][0]位于數組的第一個位置上)

A)i*m+j

B)j*m+I

C)

D)i*m+j+l

正確答案:A

7.16下面程序輸出的結果是

main()

{inti;

inta[3][3]={1,2,3,4,5,6,7,8,9};

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

printf(*%<1”,a[2-i][i]);

)

A)159

B)753

C)357

D)591

正確答案:B

7.17以下不能對二維數組a進行正確初始化的語句是

A)inta[2][3]={0};

B)inta[][3]={{1,2},{0});

C)inta[2][3]={{1,2},{3,4},{5,6}};

D)inta[][3]=<1,2,3,4,5,6):

正確答案:C

7.18閱讀下面程序,則程序段的功能是

#include"stdio.h"

main()

{intc[]={23,1,56,234,7,0,34},i,j,t;

for(i=l;i<7;i++)

{t=c[i];j=i-l;

while(j>=0&&t>c[j])

{c[j+1]=c[j];j—;)

c[j+1]=t;

}

for(i=0;i<7;i++)

printf("%d*,c[i]);

putchar('\n');

}

A)對數組元素的升序排列

B)對數組元素的降序排列

C)對數組元素的倒序排列

D)對數組元素的隨機排列

正確答案:B

7.19下列選項中錯誤的說明語句是

A)chara[]={/t*,zo'y'o'u''0'};

B)chara[]={"toyou'0"};

C)chara[]="toyou\0”;

D)chara[]='toyou\0';

正確答案:D

7.20下述對C語言字符數組的描述中錯誤的是

A)字符數組的下標從0開始

B)字符數組中的字符串可以進行整體輸入/輸出

C)可以在賦值語句中通過賦值運算符“二”對字符數組整體賦值

D)字符數組可以存放字符串

正確答案:C

7.21閱讀下列程序,則在執行后,程序的運行結果為

#include“stdio.h"

ttinclude“string,h”

main()

{chara[30]二"nicetomeetyou!”;

strcpy(a+strlen(a)/2,"you");

printf("%s\n',a);

}

A)nicetomeetyouyou

B)niceto

C)meetyouyou

D)nicetoyou

正確答案:D

7.22現有如下程序段

#include"stdio.h"

main()

{intk[30]=(12,324,45,6,768,98,21,34,453,456);

intcount=0,i=0;

while(k[i])

{if(k[i]%2==0IIk[i]%5==0)

count++;

i++;

)

printf(*%d,%d\n*,count,i);

)

則程序段的輸出結果為

A)7,8

B)8,8

C)7,10

D)8,10

正確答案:D

7.23有如下定義語句:intaa口[3]={12,23,34,4,5,6,78,89,45}則45在數組aa

中的行列坐標各為

A)3,2

B)3,1

C)2,2

D)2,1

正確答案:C

7.24現在有如下程序

^include"stdio.h"

main()

{chars[80];

inti,j;

gets(s);

for(i=j=O;s[i]!='\0';i++)

if(s[i]!=zH,)

s[j]='\0';

puts(s);

}

這個程序段的功能是刪除輸入的字符串中字符',則空線上應當添入的是

A)s[j++]=s[i];j++;

B)s[j]=s[i++];j++;

C)s[j++]=s[i];

D)s[j]=s[i];

正確答案:C

7.25以下二維數組c的定義形式是

A)intc[3][]

B)floatc[3,4]

C)doublec[3][4]

D)floatc(3)(4)

正確答案:C

7.26已知:intc[3][4];則對數組元素引用正確的是

A)c[1][4]

B)c[1.5][0]

C)c[1+0][0]

D)以上表達都錯誤

正確答案:C

7.27若有以下語句,則正確的描述是

chara[]="toyou”;

charb口={'t','o','y','o','u'};

A)a數組和b數組的長度相同

B)a數組長度小于b數組長度

C)a數組長度大于b數組長度

D)a數組等價于b數組

正確答案:C

7.28已知:chara[15],b[15]={Tlovechina”};則在程序中能將字符串Ilovechina

賦給數組a的正確語句是

A)a="Ilovechina";

B)strcpy(b,a);

C)a=b;

D)strcpy(a,b);

正確答案:I)

7.29已知:chara[20]=〃abc",b[20]="defghi”;則執行下列語句后的輸出結果為

printf('%d”,strlen(strcpy(a,b)));

A)11

B)6

C)5

D)以上答案都不正確

正確答案:B

7.30閱讀如下程序段,則程序在先后輸入love和china后,輸出結果是

^include

ttinclude

main()

{chara[30],b[30];

intk;

gets(a);

gets(b);

k=strcmp(a,b);

if(k>0)puts(a);

elseif(k<0)puts(b);

)

A)love

B)china

C)lovechina

D)沒有輸出結果

正確答案:A

二、填空題(請將每一個空的正確答案寫在答題卡相應序號后。)

7.31下面程序的功能是輸出數組s中最大元素的下標,請填空。

main()

{intk,p,s[]={1,-9,7,2,-10,3):

for(p=0,k=p;p<6;p++)

if(s[p]>s[k])[1]

printfk);

}

正確答案:k=p;

7.32以下程序可把輸入的十進制數以十六進制數的形式輸出,請填空。

main()

{charb[17]={"0123456789ABCDEF"};

intc[64],d,i=0,base=16;

longn;

printf("Enteranumber:\n^);scanf(〃%ld”,&n);

do

{c[i]=[2];

i++;

n=n/base;

[while(n!=0);

printf("Transmi

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論