南昌航空大學(xué)C語言選擇題(共六卷)_第1頁
南昌航空大學(xué)C語言選擇題(共六卷)_第2頁
南昌航空大學(xué)C語言選擇題(共六卷)_第3頁
南昌航空大學(xué)C語言選擇題(共六卷)_第4頁
南昌航空大學(xué)C語言選擇題(共六卷)_第5頁
已閱讀5頁,還剩180頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C語言選擇題(一)

(總分100分,考試時長90分鐘)

一、理論基礎(chǔ)(每小題1分,共10分)

1、以下敘述中正確的是O

A、在程序的一行上可以出現(xiàn)多個有效的預(yù)處理命令行

B、使用帶參的宏時,參數(shù)的類型應(yīng)與宏定義時的一致

C、宏替換不占用運行時間,只占編譯時間

D、在以下定義中CR是稱為〃宏名〃的標識符#defineCR045

2、以下敘述中錯誤的是一

A、用戶所定義的標識符允許使用關(guān)鍵字

B、用戶所定義的標識符應(yīng)盡量做到〃見名識意〃

C、用戶所定義的標識符中,大、小寫字母代表不同標識

D、用戶所定義的標識符必須以字母或下劃線開頭

3、以下關(guān)于常量的敘述也不正確的是o

A、常量可以表示一個具體的、不變的值

B、常量是指固定大變的值

C、不同類型的常登書寫格式不同

D、不同類型的常量書寫格式相同

4、以下不正確的敘述是o

A、在C程序中所月的變量必須先定義后使用

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

C、若a和b類型相同,在執(zhí)行了賦值語句a=b;后b中的值將放入a中,b

中的值不變

D、當輸入數(shù)值數(shù)據(jù)時,對于整型變量只能輸入整型值;對于實型變量只能

輸入實型值

5、若采用雙符號位判斷溢出當結(jié)果的符號位為11時,表示(13)o

A、結(jié)果為正溢出

B、結(jié)果正,無溢

C、結(jié)果負溢出

D、結(jié)果為負,無溢出

6、流程圖里面的開始和結(jié)束用()表示。

A、矩形

B、圓

C、橢圓

D、菱形

7、已知各變量的類型說明如下,則以下不符合c語言語法的表達式是:。int

k,a,b;unsignedlongw=5;doublex=l.422;

A、x%(-3)

B、w+=-2

C、k=(a=2,b=3,a+b)

D、a+=a=+(b=4)*(a=3)

8、下列條件語句中輸出結(jié)果與其他語句不同的是o

A、if(a)prinL£(“%d\n”,x);

elseprintf(u%d\nw,y);

if(a==0)printf(w%d\nw,y);

elseprintf("%d\n”,x);

C、if(a!=0)printf("%d\n",x);

elseprintf("%d\n",y);

D、if(a=0)printf(<<%d\nw,x);

elseprintf("%d\n",y);

9、下列選項中,不合法的變量是o

intx=3;

charch='c';

C、floatf;

D、casec;

10、c語言提供的合法的數(shù)據(jù)類型關(guān)鍵字是.

A^Double

B、short

C、integer

DsChar

11>若有定義語句:inta=10;doubleb=3.14;,則表達式'a'+a+b值得類型

是o

A、char

B、int

C>double

D、float

12、與十六進制數(shù)200等值得十進制數(shù)為o

A、256

B、512

C、1024

D、2048

13、一個字長為8位的無符號二進制整數(shù)能表示的十進制數(shù)值范圍是

A、0-256

B、0-255

C、1-256

D、1-255

14、執(zhí)行下列語句后,a和b的值分別為o(注:a的accii碼值為:97,a

的accii碼值為:65)inta,b;a=l+fa;b=2+7%-4-,a*;

A、-63,-64

B、98,-60

C、1,-60

D、79,78

15、有如下說明inta[10]={1,2,3,4,5,6,7,8,9,10),

*p=a;則數(shù)值為9的表達式是o

A、*p+9

B、*(p+8)

C^*p+二9

D、p+8

16、設(shè)inta=0;錯誤的語句是________。

A、++a;

a++;

C、a二一a;

D、(-++a);

17、下列兩條語句〃

intcl=l,c2=2,c3;

c3=l.0/c2*cl;

〃執(zhí)行后變量c3的值是。

A、0

B、0.5

C、1

D、2

18、下列對變量的引用中,錯誤的是o

A、inia;inL&p-a;

chara;char&p=a;

C>inta;int&p;p=a;

D、floata;float&p=a;

19、若intx,*p;則正確的賦值表達式是—。

A、p=&x

p二x;

C、*p=&x;

D、*p=*x

20、若有以下定義,則正確的語句是

uniondata

(

inti;

charc;

floatf;

}a;

intn;

A、c=5;

B、a={

2/a,1.2);

C、printf(,z%d\n,z,a);

D、n二a;

二、控制結(jié)構(gòu)(每小題1分,共10分)

1、c語言中下面哪個天是條件語句?

A、if

ifelse

C、NSLog

D、switch

2、有以下程序

main()

(

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

if((j++IIk++)&&i++)

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

)

執(zhí)行后輸出結(jié)果是。

A、1,1,2

B、2,2,1

C、2,2,2

D、2,2,3

3、switch語句不能用于下列哪種數(shù)據(jù)類型()

A、double

B、byte

C、short

Dschar

4、若a的值為3時,下列程序段被執(zhí)行后,c的值是

intc=1;

if(a>0)if(a>3)c=2;

elsec=3;

elsec=4;

A、1

B、2

C、3

D、4

5、選擇出合法的if語句(設(shè)intx,a,b,c;)。

A、if(a=b)x++;

B、if(a=<b)x++;

C^if(a<>b)x++;

D、if(a=>b)x++;

6、執(zhí)行以下程序段后,w的值為________。

intw=,a",x=14,y=15:w=((x||y)&&(wV'a'));

A、-1

B、NULL

C、1

D、0

7、與y=(x>0?l:x<0?-l:0);的功能相同的if語句是

A、if(x>0)y=l;

elseif(x<0)y=-l;

elsey=0;

B、if(x)

if(x>0)y=l;

elseif(x<0)y=-l;

elsey=0;

C、y—1

if(x)

if(x>0)y=l;

elseif(x-0)y=0;

elsey=-l;

D、y=0;

if(x>=0)

if(x>O)y=l;

elsey=-l;

8、下列程序的輸出結(jié)果是o

main()

(

inta=0,i;

for(i=l;i<5;i+~)

(

switch(i)

(

case0:case3:a+=l;

case1;

case2:a+=2;

default:a+=3;

)

}

printf(〃%d〃,a):

)

A、19

B、1

C、6

D、8

9、有以下程序

#include<stdio.h>

main()

(

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

if(a>b>c)

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

elseif((c-1>=d)==1)

printf(〃%d\n〃,d+1);

else

printf(〃%d\n”,d+2);

)

執(zhí)行后輸出的結(jié)果是。

A、2

B、3

C、4

D、編譯時有錯,無結(jié)果

10、與〃y=(x>0?l:x<0?-l:0)〃;的功能相同的if語句是

A、if(x>0)y=l;

if(x)

elseif(x>0)y=l;

elsey=0;elseif(x%0)y=-l;

elsey=0;

C、y--l

D、y二0;

if(x)if(x>=0)

if(x>O)y=l;if(xi>=0)y=l;

elseif(x~0)y=0;elsey=-l;

elsey=-l;

三、循環(huán)結(jié)構(gòu)(每小題1分,共10分)

1、c語言的跳轉(zhuǎn)語句中,對于break和continue說法正確的是。

A、break語句只應(yīng)用于循環(huán)體中

B、continue語句只應(yīng)用于循環(huán)體中

C^break是無條件跳轉(zhuǎn)語句,continue不是。

D、break和continue的跳轉(zhuǎn)范圍不夠明確,容易產(chǎn)生問題

2、在循環(huán)結(jié)構(gòu)中,可以使得同一組語句一次也不執(zhí)行.

A、當型循環(huán)

B、直到型循環(huán)

C、都不能實現(xiàn)

D、do-while語句

3、下面描述中,符合結(jié)構(gòu)化程序設(shè)計風(fēng)格的是_______o

A、使用順序、選擇和重復(fù)(循環(huán))3種基本控制結(jié)構(gòu)表示程序的控制邏輯

B、模塊只有一個入口,可以有多個出口

C、注重提高程序的執(zhí)行效率

D、不使用GOTO語句

4、有以下程序:

main()

ints=0.n;

for(n=0;n<3;n~+)

switch(s)

case0;

easel:s-=l;

case2:s+=2;

break;

case3:s+=3;

defaulL:s+-4;

}

printf("%d,"s);

程序運行后的輸出結(jié)果是o

A、1,2,4,

B、1,3,6,

C、3,10,14,

D、3,6,10,

5、c語言中while和do-while循環(huán)的主要區(qū)別是。

A、do-while的循環(huán)體至少無條件執(zhí)行一次

B、while的循環(huán)控制條件比do-while的循環(huán)控制條件嚴格

C^do-while允許從外部轉(zhuǎn)到循環(huán)體內(nèi)

D、do-while的循環(huán)體不能是復(fù)合語句

6、以下for語句中不是死循環(huán)的是o

A、for(inti=0;i<l;i++);

B、for(inti=0;i++);

C、for(inti=l;i>0;++i);

D、for(;;);

7、for循環(huán)的循環(huán)次數(shù)o

A、通常是確定的,但也可以不確定

B、通常不確定,但也可以確定

C、是不確定的

D、是確定的

8、若變量已正確定義,以下while循環(huán)正常結(jié)束時,累加到pi的最后一項item

的值滿足0

A、item的絕對值小于0.0001

B、item的絕對值大于0.0001

C、item的絕對值大于等于0.0001

D^item的絕對值小于等于0.0001

9、有以下程序

#include<stdio.h>

main()

(

inti,n;

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

(

n-rand()%5;

switch(n)

(

case1:

case3:

printf(〃%d\n〃,n);

break;

case2:

case4:

printf(〃%d\n〃,n);

continue;

case0:

exit(0);

)

printfn);

}

}

以下關(guān)于程序執(zhí)行情況的敘述,正確的是O

A、for循環(huán)語句固定執(zhí)行8次

B、當產(chǎn)生的隨機數(shù)n為4時結(jié)束循環(huán)操作

C、當產(chǎn)生的隨機數(shù)n為1和2時不做任何操作

D、當產(chǎn)生的隨機數(shù)n為0時結(jié)束程序運行

10、以下描述中正確的是________O

A、由于d。-while循環(huán)中循環(huán)體語句只能是一條可執(zhí)行語句,所以循環(huán)體

內(nèi)不能使用復(fù)合語句

B、do-while循環(huán)由do開始,用while結(jié)束,在while(表達式)后面不能

寫分號

C、在dozhile循環(huán)體中,是先執(zhí)行一次循環(huán),再進行判斷

D、do-while循環(huán)中,根據(jù)情況可以省略while

四、數(shù)組/指針數(shù)組(每小題1分,共10分)

1、有以下程序:

main()

(

intnum[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}),ij;

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

(

for(>0;j<=i;j++)printf(飛4c〃,');

for(j=______;j<4;j++)printf(〃%4d”,num[i][j]);

printf(〃\n〃:;

}

)

若要按以下形式輸出數(shù)組右上半三角1234678111216則在程序下劃

線處應(yīng)填入的是。

A、i-1

B、i

C、i+1

D、4-i

2、以下函數(shù)func()的功能是:使具有n個元素的一維數(shù)組b的每個元素的

值都增加2,劃線處應(yīng)填入_____.

func(intb[],intnJ

int;

for(i=0;i<n;i+-)

}

A、b[i++]

B、b[i]++

C、b[i+=2]

D、b[i]+=2

3、以下關(guān)于數(shù)組的描述正確的是

A、數(shù)組的大小是同定的,但可以有不同的類型的數(shù)組元素c

B、數(shù)組的大小是可變的,但所有數(shù)組元素的類型必須相同。

C、數(shù)組的大小是同定的,但所有數(shù)組元素的類型必須相同。

D、數(shù)組的大小是可變的,但可以有不同的類型的數(shù)組元素。

4、若有定義語句:intm[]=(5,4,3,2,1},i=4;則下面對m數(shù)組元素的引用中

錯誤的是—

A、ni[-i]

m[2*2]

C、

D、

5、若有說明:inta[10];則對a數(shù)組元素的正確引用是()。

A、a[10]

B、a[3,5]

C、a(5)

D、a[10-10]

6、c語言中數(shù)組下標的下限是o

A、1

B、0

C、視具體情況而定

D、無固定下限

7、定義如下變量和數(shù)組:inti,x[3][3]={1,2,3,4,5,6,7,8,9

};則下面語句for(i=0;i<3;i++)printf(〃機1〃,乂[口[2-口);的輸出結(jié)果是

A、159

B、147

C、357

D、369

8、下列定義數(shù)組的語句中,正確的是o

A^intN=10;

B、#defineN10

intxFNl:intxFNl;

C、intx[0..10];

Dsintx口;

9、設(shè)有如下定義:char*aa設(shè)]={"abed","abed");則以下說法中正確的是

A、aa數(shù)組成元素的值分別是〃abed〃和ABCD〃

B、aa是指針變量,它指向含有兩個數(shù)組元素的字符型一維數(shù)組

C、aa數(shù)組的兩個元素分別存放的是含有4個字符的一維字符數(shù)組的首地址

D、a社數(shù)組的兩個元素中各自存放了字符‘I和'A'的地址

10、下列選項中合法的數(shù)組定義是O

A、inta□二〃string”;

B、inta[5]={

0,1,2,3,4,5);

C、chara=〃sting”;

D、chara口二{

0,1,2,3,4)

五、字符串/字符串指針(每小題1分,共10分)

1、以下選項中,合法的C語言常量是。

A、2XY

B、HELLO'

C、〃\0.\0

D、1.0

2、判斷字符串a(chǎn)和b是否相等,應(yīng)當使用。

A、if(a=b)

B、if(a=b)

C、if(strcmp(a,b))

D^if(strcmp(a,b)==0)

3、以下程序運行后的輸出結(jié)果是

main()

(

chars口:”ABCD〃,*p;

for(p=s+l;p<s+4;p++)printf(,,%s\n,,?p);

)

A、ABCD

BCD

CD

D

B、A

B

C

D

C、B

C

D

D、BCD

CD

D

4、下列字符串中,不可以用作c標識符的是

A、y_2006

B、_FEST_H

C、Return

D、switch

5、按照c語言規(guī)定的用戶標識符命名規(guī)則,不能出現(xiàn)在標識符中的是

________0

A、大寫字母

B、連接符

C、數(shù)字字符

D、下劃線

6、以下正確的字符串常量是_______。

A、〃\\\〃

B、'abc,

C、OlympicGames

D、〃〃

7、設(shè)有以下語句,若0。<4,下列選項中對字符串的非法引用是()。

charstr[4][2]={"aaa","bbb","ccc",〃ddd"},*strp[4];

intj;

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

strp[j]=str[j];

A^strp

B、str[k]

C、strp[k]

*strp

8、下面關(guān)于編譯預(yù)處理命令,正確的是。

A、^definecharCHAR

B、SDefineE0.0000034

C、##defineFALSE0

D、^defineDIM26

9、下列選項中,能夠滿足〃若字符串si等于字符串s2,則執(zhí)行st〃要求的是

A^if(strcmp(s2,si)==0)ST;

B、if(sl==s2)ST;

C、if(slrcpy(s1,s2)―1)ST;

D、if(sl-s2=0)ST;

10、下列數(shù)據(jù)中屬于〃字符串常量〃的是

A、ABC

B、〃ABC〃

C、'ABC'

D、'A'

六、函數(shù)/函數(shù)指針(每小題1分,共10分)

1、以下正確的說法是O

A、定義函數(shù)時,形參的類型說明可以放在函數(shù)體內(nèi)

B、return后邊的值不能為表達式

C、如果函數(shù)值的類型與返回值類型不一致,以函數(shù)值類型為準

D、如果形參與實參類型不一致,以實參類型為準

2、在c語言中,函數(shù)的數(shù)據(jù)類型是指()

A、函數(shù)返回值的數(shù)據(jù)類型

B、函數(shù)形參的數(shù)據(jù)類型

C、調(diào)用該函數(shù)時的實參的數(shù)據(jù)類型

D、任意指定的數(shù)據(jù)類型

3、結(jié)構(gòu)化程序設(shè)計所規(guī)定的三種基本控制結(jié)構(gòu)是o

A、輸入、輸出、處理

B、順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)

C、for、while、switch

D、主程序、子程序、函數(shù)

4、以下關(guān)于程序中函數(shù)的定義、調(diào)用和聲明的敘述中,正確的是_____o

A、函數(shù)的定義必須放在該函數(shù)的調(diào)用之前

B、函數(shù)的聲明必須放在該函數(shù)的調(diào)用之前

C、函數(shù)的定義必須放在該函數(shù)的聲明之前

D、函數(shù)的聲明必須放在該函數(shù)的定義之前

5、以下與庫函數(shù)slrcpy(chtti沐pl,chai*p2)功能不等的程序段是

A、strcpyl(char*pl,char*p2){

while((*pl++=*p2-+)!='\0');

)

B、strcpy2(char*pl,char*p2){

while((*pl=*p2)!='\0'){

pl++;p2++;

C^strcp)^3(char*pl,char*p2){

while(*pl++=*p2+-);

}

strcpy4(char*pl,char*p2){

while(*p2)*pl++=*p2++;

}

6、以下說法錯誤的是________o

A、由三種基本結(jié)構(gòu)組成的結(jié)構(gòu)化程序不能解決過于復(fù)雜的問題

B、由三種基本結(jié)構(gòu)組成的結(jié)構(gòu)化程序能解決些簡單的問題

C、由三種基本結(jié)構(gòu)組成的結(jié)構(gòu)化程序能解決遞歸問題

D、由三種基本結(jié)構(gòu)組成的結(jié)構(gòu)化程序能解決數(shù)學(xué)上有解析解的問題

7、有如下函數(shù)定義;

voidfunc(inta,int&b)

(

a++;

b++;

)

若執(zhí)行代碼段:intx=0,y=l;

func(x,y);

則變量x和y的值分別是o

A、0和1

B、1和1

C、0和2

D、1和2

8、以下說法中正確的是________o

A、C語言程序總是從第一個的函數(shù)開始執(zhí)行

B、在C語言程序中,要調(diào)用的函數(shù)必須在mam()函數(shù)中定義

C、C語言程序總是從main。函數(shù)開始執(zhí)行

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

9、請閱讀程序:

#include<math.h>

#include<stdio.h>

main()

(

floata,b,c;

scanf(/z%f%f,z,&a,&b);

c=a/b;

while(l){

if(fabs(c)>1.6){

a=b;

b=c;

c=a/b;

)

elsebreak;

)

printf("%f\n',b);

)

若運行時從鍵盤上輸入3.62.4〈回車,,則輸出結(jié)果是o

A、1.500000

B、1.600000

C、2.000000

D、2.400000

10、對函數(shù)inimax(inLa,inib-O,inLc-O,iriL(1-0,inLe-O);下列調(diào)月方

式正確的是。

A、intm=max(10,11,12,13,14);

B、intm=max(10,,12,13,14);

C^intm=max(10,IL,13,14);

D、intm=max(10,11,12,,14);

七、指針(每小題1分,共10分)

1、函數(shù)的值通過return語句返回,下面關(guān)于return語句的形式描述錯誤的是

A、return表達式;

B、return(表達式);

C、一個return語句可以返回多個函數(shù)值

D、一個return語句只能返回一個函數(shù)值

2^表達式sizeof(double)是。

A、函數(shù)調(diào)用

B、double型表達式

Csint型表達式

D、非法表達式

3、下列字符數(shù)組長度為5的是o

A、chara[10]={'h','a','b','c','d'};

B、charb[]={'h',‘a(chǎn)口'b','e','d',

C>charc[]={,h*,'a','b','c','d'};

D、chard[6]={'h','a','b','c',''0'};

4、x,y,z被定義為int型變量,若從鍵盤給x,y,z輸入數(shù)據(jù),正確的輸入語句是

A、INPUTx、v、z;

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

C^scanf(〃%d%d%d〃,x,y,z);

D、read(〃%d%d%d〃,&x,&y,&z);

5、當全局變量與局部變量重名時,那么在調(diào)用時;)

A、局部變量會被屏蔽

B、全局變量會被屏蔽

C、都不會調(diào)用,系統(tǒng)會報錯

D、會調(diào)用兩次,元調(diào)用局部變量,再調(diào)用全局變量

6、設(shè)有定義:chars[81];inti=0;以下不能將一行(不超過80個字符)帶有

空格的字符串正確讀入的語句或語句組是o

A、gets(s);

while((s[i++]=getchar())!='\n');s[i]=<\0,;

C、scanf(,s);

D、do{scanf(“%c",&s[i]);}while(s[i++]!=<\n,);s[i]='\0;

7、字符串指針變量中存入的是o

A、字符串

B、字符串的首地址

C、第一個字符

D、字符串變量

8、下列對字符數(shù)組進行初始化的語句正確的是o

A、chara口="Hello”;

B、chara□□=

C^chara[5]="Hello”;

D、chara[2]"World"};p

9、若有說明:int*p,n=5,n:以下正確的程序段是。

A、p=&n;scanf(〃機T,&p);

p=&n;scanf*p)

C、scanf(〃/d〃,&p;*p=6);

D、p;&n;*p=m;

10、下列說法中錯誤的是。

A、一個數(shù)組只允許存儲同種類型的變量

B、如果在對數(shù)組進行初始化時,給定的數(shù)據(jù)元素個數(shù)比數(shù)組元素個數(shù)少時,

多余的數(shù)組元素會被自動初始化為最后一個給定元素的值

C、數(shù)組的名稱其實是數(shù)組在內(nèi)存中的首地址

D、當數(shù)組名作為參數(shù)被傳遞給某個函數(shù)時,原數(shù)組中的元素的值可能被修

八、結(jié)構(gòu)體(每小題1分,共10分)

1、下面賦值表達式不正確的是.

structstudent

(

longnum;

charname[20];

}stl,*p=&stl,st2={101,"tom'}:

A、stl=st2

B、p->name=st2.name

C、p->num=st2.num

D、*p=st2

2、下列程序的輸出結(jié)果是o

structstu

(

charnum[10];

floatscore[3];

)

f

intmain()

(

structstus[3]=

{{"20021〃,90,95,85},「20022〃,95,80,75},{"20023",100,95,90}};

structstu*p=s;

inti;

floatsum=0;

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

(

sum=sum+p->score[i];

}

printf(〃%6.2f”,sum):

return0;

)

A、260.00

B、270.00

C、280.00

D、285.00

3、設(shè)有以下說明語句structstu

inta;

floatb;

}

stutype;

則下面的敘述不正確的是。

A、struct是結(jié)構(gòu)體類型的關(guān)鍵字

B、structstu是用戶定義的結(jié)構(gòu)體類型

C、stutype是用戶定義的結(jié)構(gòu)體類型名

D、a和b都是結(jié)構(gòu)體成員名

4、有以下定義和語句:

structstudents{

intnum;

charname[20];

charc;

struct(

intgrade1;

intgrade2;

}s;

};

structstudentsw,*pw;

*pw=w;

下列賦值語句不正確的是o

A、num=1002:

B、w.gradel=85;

C^pw->num=1002;

Dsw.s.grade2=85;

5、設(shè)有下面的定義:

structst

(

inta;

floatb;

}d;

int*p;

要使P指向結(jié)構(gòu)變量d中的a成員,正確的賦值語句是

A、*p=d.a;

B、p=&a;

C、p=d.a;

D、p—&d.a;

6、以下關(guān)于邏輯運算符兩側(cè)運算對象的敘述中正確的是o

A、可以是任意合法的表達式

B、只能是整數(shù)0或非0整數(shù)

C、可以是結(jié)構(gòu)體類型的數(shù)據(jù)

D、只能是整數(shù)0或1

7、有以下程序

ttinclude<stdio.h>

main()

(

structstu

(

charname[9];

charsex;

doublescore[2];

)

t

structstua={"zhao〃,'m',85.0,90.0},b={〃qian〃,'f',95.0,92.0};

b=a;

printf(〃%s,%c,%2.Of,%2.0f\nz,,b.name,b.sex,b.score[0],b.score[1]);

}

程序的運行結(jié)果是O

A、Qian,f,95,92

B、Qian,m,85,90

C、Zhao,f,95,92

D、Zhao,m,85,90

8、下列描述說明正確的是________o

A、定義結(jié)構(gòu)體時,它的每個成員的數(shù)據(jù)類型可以不同

B、不同結(jié)構(gòu)體的成員名不能相同

C、結(jié)構(gòu)體定義時,其成員的數(shù)據(jù)類型不能是結(jié)構(gòu)體本身

D、結(jié)構(gòu)體定義時各成員項之間可用分號也可用逗號隔開

9、設(shè)有以下說明語句:

typedefstructstu

(

inta;

floatb;

}stutype;

則下面敘述中錯誤的是________。

A、struct是結(jié)構(gòu)類型的關(guān)鍵字

B、structstu是用戶定義的結(jié)構(gòu)類型

C、a和b都是結(jié)構(gòu)成員名

D、stutype是用戶定義的結(jié)構(gòu)體變量名

10、以下程序的運行結(jié)果是

#include,,stdio.h〃

main()

(

sLrucLdale{

intyear,month,day;

}today;

printfsizeof(structdate));

)

A、6

B、8

C、10

D、12

九、程序題(每小題1分,共10分)

1、有以下程序

#include<stdio.h>

voidfun(char*c,intd)

(

*c二*c+1;

d=d+l;

printf("%c,%c,n,*c,d);

}

main()

(

charb='a',a=Ja';

fun(&b,a);

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

)

程序運行后的輸出結(jié)果是o

A^b,B,b,A

B、b,B,B,A

C^a,B,B,a

D、a,B,a,B

2、下列程序執(zhí)行后的輸出結(jié)果是o

main()

(

intx='f';printf'A'+(x-'a'+1);;

)

A、G

B、H

C、I

D、J

3、若有以下定義和語句,則輸出結(jié)果是。

int**pp,*p,a=10,b=20;pp=&p;p=&a;p;&b;printf(,,%d\n,/,*p,**pp);

A、10,20

B、10,10

C、20,10

D、20,20

4、若有定義:inta,b,c;以下程序段的輸出結(jié)果是a=l1;b=3;c=0;

printf(〃%d\n〃,c=(a/b,a%b));

A、2

B、0

C、3

D、1

5、下列程序的輸出結(jié)果是o

intaF51={2,4,6,8,10},*D,**k:

P=a;

k=&p;

printf*(p++));

printf(〃%d\n〃,**k);

A、44

B、22

C、24

D、46

6、以下程序輸出的結(jié)果是.

ttinclude<stdio.h>

voidmain()

(

inta[]={1,2,3,4,5),i,j,s=0;

for(i=0;i<5;i+-)s=s*10+a[i];

/,,,

printf(s=%d\n>s);

}

A、s=12345

s=l2345

C、s=54321

D、s=54321

7、下述程序的輸出結(jié)果是

#include<sLdio.h>

voidmain(){

chara=l,b=2;

charc=a"b<<2;

printf(〃\n%d〃,c);

)

A、9

B、10

C、12

D、2

8、以下程序的輸出結(jié)果為

#include<stdio.h>

intmain()

{

inti=l,j=l;

printf(,z%d%d\nz/,i,j++):

)

A、11

B、12

C、21

D、22

9、如下程序,輸出結(jié)果為

voidmain()

(

floata=l;

printfa;;

printf("%0.2f\n",a);

printf(,z%3.lf\n*,a);

)

A、l\nl.OO\nl.O

B、l.OOOOOO\nl.OO\nl.O

C、LOOOOOO\nLOO\n【空格】1.00

D、l\nl\nl

10、有如下程序

main()

(

inta=7,b=5,c=9:

if(a<b)if(b<0)c=0;

elsec++;

printf("%d\n”,c;;

)

該程序的輸出結(jié)果是o

A、0

B、10

C、9

D、7

參考答案

一、理論基礎(chǔ)

1、C

2、A

3、D

【解析】在VisualFoxPro中,常量用以表示一個具體的、不變的值。常量共

有6種類型,分別是:字符型、貨幣型、日期型、日期時間型、邏輯型、數(shù)值

型,不同類型的常量書寫格式是不同的。

4、D

5、D

【解析】本題考查定點數(shù)加、減法溢出問題。

定點數(shù)加、減時,若采用雙符號位法,即采用兩個符號位,如果兩個符號位

相同,則沒有溢出;若不同,則表示出現(xiàn)溢出,而第一符號位才是真正的符

號。即兩個符號位的高位為1表示負溢出,而高位為0、低位為1則表示正溢

出。

題目中給出的結(jié)果的符號位為11,根據(jù)上面的分析\第一個符號位才是真正

的符號,那么此數(shù)是負數(shù),但兩個符號位相同,表示沒有溢出。

6、C

7、A

8、D

9、D

10、B

11、C

12、B

13、B

【解析】無符號數(shù),即自然數(shù)。8位無符號的二進制數(shù)的范圍是00000000?

11111111,轉(zhuǎn)換成十進制就是0~255。

14、B

15、B

16、D

17、A

18、B

19、A

20、C

二、控制結(jié)構(gòu)

1、C

2、C

【解析】首先計算if語句后面的表達式值,先計算運算符&&前面括號里的

“II”運算。在“II”運算中先計算j++,值為:(j的值為2),為真,后面的

k++將不再計算,k的值依舊為2。計算&&后面的表達式i++,值為l(i的值變

為2)。整個表達式的值為真,所以執(zhí)行后面的輸出語句,最后輸出的i、j和k

的值為2、2和2。

3、A

【解析】swish語句中表達式expression只能返回這兒種類型的值:int>

byte、short和ch”。如果比較的數(shù)據(jù)類型是double型,則不能使用switch

結(jié)構(gòu)。

4、C

【解析】此題主要考查if-else的使用,當if語句中的條件為真時執(zhí)行后的

語句,并跳過else執(zhí)行下面的語句;當條件為假時執(zhí)行else后的語句。

5、A

【解析】A雖然是賦值語句,但是在邏輯運算中自動將賦值語句的結(jié)果當作邏

輯值,方法是,如果賦值語句的結(jié)果是非零值則當作邏輯真,否則當作邏輯

假。C語言中關(guān)系運算符有〈(小于)、》(大于)、>=(大于等于)、<二(小于等

于)、二二(等于)、!二(不等于)等六種,可見其他的條件表達式中的關(guān)系符寫錯

了。

6、C

【解析】字符變量w的初值為字符'A',其ASCII碼值為65,字符'a'的ASCII

碼值為97,所以關(guān)系表達式wV'a'的值為1;變量x=14,變量y=15,x||y為

或,x、y均為真,所以x||y的結(jié)果1。因而邏輯表達式(x||y)&&(wV'a')的值

為lo

7、A

8、A

9、B

【解析】第二個if語句中的表達式"cT>=d”的值為邏輯值1,所以該條件

成立。

10、B

三、循環(huán)結(jié)構(gòu)

1、B

【解析】break語句和continue語句都是C的跳轉(zhuǎn)語句。break語句又稱為跳

出語句,它可以用在循環(huán)語句和switch語句中。在switch語句中,break用

來使執(zhí)行流程跳出switch語句。在循環(huán)語句中,break語句用來使執(zhí)行流無條

件跳出本層循環(huán)體。continue語句又稱為繼續(xù)語句,它僅用在循環(huán)語句中。

它的功能是:結(jié)束本次循環(huán),接著進行下一次是否執(zhí)行循環(huán)的條件判定。

2、A

3、A

【解析】應(yīng)該選擇只有一個入口和一個出口的模夬,故B選項錯誤;首先要保

證程序正確,然后才要求提高效率,故C選項錯誤:嚴格控制使用got。語句,

必要時可以使用,故D選項錯誤。

4、C

5、A

6、A

【解析】考查循環(huán)語句for的使用。

[解題要點]循環(huán)的一般格式為(初始化部分;終止條件判斷部分;迭代

部分){循環(huán)體;}說明如下:for循環(huán)開始時,首先執(zhí)行初始化操作,然后判斷

終止條件是否滿足,如果滿足,則執(zhí)行循環(huán)體中的語句,最后執(zhí)行迭代部分。

完成一次循環(huán)后,重新判斷終止條件。

[錯解分析]在for語句中,如果省略了終止條件判斷部分,開且在語句中沒有

break,或者是終止條件判斷部分始終沒有終止,都將出現(xiàn)死循環(huán)。

[考點鏈接]for循環(huán)語句可由while循環(huán)語句來代替。

7、A

【解析】for循環(huán)通常用于循環(huán)次數(shù)確定的情況,但也可以根據(jù)循環(huán)結(jié)束條件

完成循環(huán)次數(shù)不確定的情況。

8、A

9、D

【解析】閱讀本程序匕知,當產(chǎn)生隨機數(shù)為4時,會繼續(xù)執(zhí)行循環(huán);當產(chǎn)生隨

機數(shù)為1和2時,會順勢執(zhí)行case1或case2下面的語句,進而輸出結(jié)果;

當產(chǎn)生隨機數(shù)為()時,正常結(jié)束程序的運行。for循環(huán)語句隨著產(chǎn)生的隨機數(shù)

的不同,執(zhí)行的次數(shù)也不相同。

10、C

【解析】dowhile語句的一般形式為:do循環(huán)體語句while(表達式);,其中

循環(huán)體語句可以是復(fù)合型語句,但必須用花括號括起來。while后必須要有分

號作為語句的結(jié)束,在do-while循環(huán)中,不可以省略while。

四、數(shù)組/指針數(shù)組

1、B

【解析】本題程序為二重循環(huán),外循環(huán)控制輸出數(shù)據(jù)的行數(shù),內(nèi)循環(huán)控制輸出

數(shù)據(jù)的列數(shù)。從本題輸出的形式來看,程序要求輸出的是4行4歹4。

2、D

3、C

4、C

5、D

6、B

7、C

8、B

9、D

10>A

五、字符串/字符串指針

1、D

【解析】C語言常量包含整型常量,實型常量,字符常量,字符串常量。其中字符

常量是用單引號括起來的單個字符,選項B只有半邊單引號;字符串常量使用雙

引號括起來的多個字符,選項只有雙引號的半邊。整型常量包含:十進制,八進制

和I六進制。選項A中X和Y不是有效字符。本題答案為D選項。

2、D

3、D

【解析】本題考查指向字符串指針的運算方法。執(zhí)行p=s+1后,指針變量p就

指向字符串中的第二個字符B,然后輸出字符串〃BCD〃并換行;繼續(xù)執(zhí)行循環(huán)語

句,指針變量P指向下一個字符c,輸出字符串〃CD〃,最后一次循環(huán),p指向字

符〃D〃,輸出字符串〃D"。

4、D

【解析】在C中,變量標識符必須是以大小寫字母、下畫線開始,由數(shù)字或者

字母下畫線等組成的一個字符串,其中C++關(guān)鍵字不能作為標識符,不能包含

-、+、*、/等運算符號。C++變量區(qū)分大小寫,所以Retrun不是關(guān)鍵字,而是

一個合法變量;swith為關(guān)鍵字,所以不能定義為標示符。

5、B

【解析】C語言的標識符要符合以下規(guī)定:

①標識符是個以字母或下劃線開頭的,由字母、數(shù)字、下劃線組成的字符

串:

②標識符不能與任意一個關(guān)鍵字同名:

③標識符中的字母區(qū)分大小寫。

故本題應(yīng)該選擇Bo

6、D

7、A

8、D

【解析】無參宏定義的一般格式用define標識符語言符號字符串,其

中:“define”為宏定義命令;”標識符為所定義的宏名,通常用大寫字母表示,

以便于與變量區(qū)別;“語言符號字符串”可以是常數(shù)、表達式、格式串(格式串

是用雙引號括起來的字符串)等,選項ABC錯誤,選項D正確;本題答案為

Do

9、A

10、B

六、函數(shù)/函數(shù)指針

1、C

【解析】選項A)中定義函數(shù)時,形參的類型說明應(yīng)該放在形參表列內(nèi)說明。老

版本C語言中,對形參類型的聲明是放在函數(shù)定義的第2行,也就是不在第1

行的括號內(nèi)指定形參的類型,而在括號外單獨指定。選項B)中return后面的

值可以是一個表達式。選項D)中實參與形參的類型應(yīng)相同或賦值兼容。如昊實

參為整型而形參為實型,或者相反,則按不同類型數(shù)值的賦值規(guī)則進行轉(zhuǎn)換,

以形參類型為準。

2、A

3、B

【解析】結(jié)構(gòu)化程序有三種基本結(jié)構(gòu)組成,分別是順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)

結(jié)構(gòu)。

4、B

【解析】在程序中,函數(shù)定義是指對函數(shù)的完整定義,包括函數(shù)首部和I函數(shù)

體,函數(shù)調(diào)用是指對所定義函數(shù)的使用,一個函數(shù)只有被調(diào)用才能得到執(zhí)行。

函數(shù)聲明是指函數(shù)的定義在后面I而前面需要對它進行調(diào)用,這樣就需要預(yù)先

進行聲明,以便編洋程序檢查調(diào)用的合法性。一般來說,函數(shù)的聲明只是函數(shù)

首部加上分號即可。函數(shù)聲明不是必需的,若函數(shù)調(diào)用在函數(shù)定義之后,則無

須聲明。

5、D

6、A

【解析】順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)是三種基本結(jié)構(gòu),由三種基本結(jié)構(gòu)所構(gòu)

成的程序稱為結(jié)構(gòu)化程序,由三種基本結(jié)構(gòu)組成的算法可以解決任何復(fù)雜的問

題,選項A錯誤,本題答案Ao

7、C

【解析】本題考查的知識點是:函數(shù)參數(shù)的傳遞方式。C的默認參數(shù)傳遞方式

是傳值,即將實參值的副本傳遞(拷貝)給被調(diào)用函數(shù)的形參。如果需要傳地

址,可通過傳遞指針、引用或數(shù)組類型的參數(shù)來實現(xiàn)。傳值時,對形參的改變

不會影響到實參;而傳地址,則會同時改變實參。本題中形參a是普通參數(shù),

即傳值調(diào)用,函數(shù)中走a增1不會影響到實參x的值;而形參b是引用,即傳

址調(diào)用,函數(shù)中對b增1同時也改變了實參y的值(y也增1了)。故最終結(jié)果

是0和2,應(yīng)該選擇C。

8、C

9、D

【解析】本題考查用break語句終止循環(huán)。程序中定義了兩個實型變量a、b,

并給scanf()函數(shù)賦值,鍵盤輸入3.62.4〈回車〉后,a=3.6,b=2.4,

c=a/b=3.6/2.4=1.5,因為c=1.5VL6,退出循環(huán),輸出b的原值。表面上

看,whiled)條件恒為真,將會產(chǎn)生死循環(huán),但利用break語句可以終止循

環(huán)。

10、A

七、指針

1、C

【解析】return語句口的表達式的值就是所求的函數(shù)值,此表達式值的類型必

須與函數(shù)首部所說明的類型一致。如果類型不一致,則以函數(shù)值的類型為準,

由系統(tǒng)自動進行轉(zhuǎn)換。一個return語句只能返回一個值。

2、C

3、C

【解析】注意是字符數(shù)組的長度,不是字符串的長度。

4、B

【解析】考查格式輸入函數(shù)scanf的使用。

[解題要點]scanf函數(shù)的一般格式是:

scanf(格式控制,地址表列)

該格式中,地址表列中應(yīng)是變量地址,而不是變量名。

[考點鏈接]調(diào)用putchar和getchar函輸出和輸入字符。

5、B

【解析】當局部變量與全局變量重名時,全局變量會被屏蔽。

6、C

7、B

8、A

【解析】本題考查對字符數(shù)組的初始化。A選項口,數(shù)組a在定義后緊跟初始

化的情況下可省略數(shù)組長度,其最終數(shù)組長度由所賦字符串常量的長度給定。A

選項正確。B選項中,a是一個二維數(shù)組,二維數(shù)組也能在定義時被初始

化.如果對全部元素都賦初值,則定義數(shù)組時第一維的大小可以忽略,但第二

維的大小不能省略。故B選項錯誤。C選項和D選項都忽略了字符串的大G要

比字符串中的字符數(shù)多1這一點,造成了數(shù)組的越界。

9、D

【解析】“&”是求址運算符,是指針變量說明符。選項A),B)應(yīng)改為

scanf(〃%d〃,p);選項C)中指針變量p未指向一確定的內(nèi)存單元,不能為其

賦值,這樣做很危險,建議不使用。

10、B

八、結(jié)構(gòu)體

1、B

2、B

3、C

4、B

【解析】本題主要考查的是結(jié)構(gòu)體變量的嵌套定義,也就是說一個結(jié)構(gòu)體變量

也可以是一個結(jié)構(gòu)體。在本題中student這個結(jié)陶體中包含了結(jié)構(gòu)體s。所以

對結(jié)構(gòu)體變量w中g(shù)rade1成員的引用是w.s.grade1或w->s->gradelo

5、D

【解析】本題主要考查按結(jié)構(gòu)數(shù)組元素方式引用結(jié)構(gòu)成員。結(jié)構(gòu)體變量的成員

引用方法有3種:①結(jié)構(gòu)體變量名,成員名;②韋針變量名成員名;③;*指

針變量名).成員名。因為p是指針變量,所以應(yīng)該將地址值賦給p。

6、A

【解析】C語言的邏輯運算符比較特別,它的操作數(shù)沒有明確的數(shù)據(jù)類型,可以

是任意合法的表達式,所以選擇A

7、D

8、A

9、C

10、A

【解析】在解答本題時應(yīng)該考慮兩個問題:結(jié)構(gòu)體變量的長度及sizcof。求字

節(jié)數(shù)的運算符。結(jié)構(gòu)體變量的長度是其內(nèi)部成員總長度之和,本題中,struct

date中包含year,month,day三個整型變量。一個整型變量所占的字節(jié)數(shù)為

2o

九、程序題

1、A

2、A

3、D

4、A

5、C

6、A

7、A

【解析】本題主要考查C語言最基本的算術(shù)運算“左移(VV)”和“異或

“左移”或“右移”運算表達式的一般形式為:xVVn或x>>n。"左移

?<)"運算的規(guī)則是將x的二進制位全部向左移動n位,將左邊移動的高位

舍棄,右邊空出的位補0:“右移(>>)”運算的規(guī)則是將x的二進制位全部

向右移動n位,將右邊移動的高位舍棄,左邊高位空出要根據(jù)原來符號位的情

況進行補充,對無符號數(shù)則補0,對有符號數(shù),若為正數(shù)則補0,若為負數(shù)則補

lo

“異或”運算是當兩個運算量的相應(yīng)位相同時結(jié)果為0,不相同時結(jié)果為1。

b=2的二進制為(00000010)bVV2后為00001000,a=l的二進制為00000001,

所以c=£bVV2為00001001,轉(zhuǎn)化為十進制后為9o

8、A

9、B

10、C

C語言選擇題(二)

(總分100分,考試時長90分鐘)

一、理論基礎(chǔ)(每小題1分,共10分)

1、c語言中,int型數(shù)據(jù)在內(nèi)存中的存儲形式是_______o

A、ASCH碼

B、補碼

C、反碼

D、原碼

2、以下表達式中,其值不等于數(shù)值3的是。

A、0+'3'

B、

C、

D、‘d'-a'

3、以下敘述中不正確的是o

A、一個好的程序應(yīng)該有詳盡的注釋

B、在C程序中,賦值運算符的優(yōu)先級最低

C、在C程序中,j++;是一條賦值語句

D、C程序中的#1萬111(16和#define均不是C語句

4、已知inta,b;用語句scanf(飛d%d",&a,&b);輸入a,b的值時,不能作

為輸入數(shù)據(jù)分隔符的是o

A、,

B、.空格

C、回車

D、Tab鍵

5、在計算機中,用()位二進制碼組成一個字節(jié)。

A、8

B、16

C、32

D、64.

6、若變量a是int類型,并執(zhí)行了語句:a='a'+:.6;,則正確的敘述是

A、a的值是字符C

B、a的值是浮點型

C、不允許字符型和浮點型相加

D、a的值是字符飛'的ASCH值加上1。

7、關(guān)于指針概念說法不正確的是o

A、一個指針變量只能指向同一類型變量

B、一個變量的地址稱為該變量的指針

C、只有同一類型變量的地址才能放到指向該類型變量的指針變量之中

D、指針變量可以曰整數(shù)賦,不能用浮點賦

8、下列關(guān)于實型變量書寫正確的是o

A、E3

B、2e0.3

C、1.2e3

D、1.2E0.3

9、59,73,83,94,()

A、107

B、101

C、105

D、113

10、執(zhí)行下列語句后,1和n的值為()inti=10;intn=i++%5;

A、10,0

B、10,1

C、11,0

D、11,1

11、若有以下數(shù)組說明,則i=10;a[a[i]]元素數(shù)值是。

inta[12]={l,4,7,10,2,5,8,11,3,6,9,12};

A、10

B、9

C、6

D、5

12、C語言中,邏輯〃真〃等價于

A、大于零的數(shù)

B、非零的數(shù)

C、大于零的整數(shù)

D、非零的整數(shù)

13、inta=10;下列哪個選項的值不是20?

A、a<<1

B、a>>l

C、a*2

D、a+10

14、若要對a進行++運算,則a應(yīng)具有下面說明

A、inta[3][2];

B、char*a[]“12〃,〃ab〃;

C^char(*a)[3];

D、intb[10],*a=b;

15、若有以下定義和語句uniondata

(

inti;

charc;

floatr;

}x;

inty;

則以下語句正確的是。

A^x=10.5;

B、x.C=101:

C、Y二x;

D、printf(〃%d\n",x);

16、若有代數(shù)式|x3+lgx|,則正確的c語言表達式是o

fabs(x*3+log10(x))

abs(pow(x,3)+loglO(x))

C^abs(pow(x,3)0)+logl0(x))

D

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論