安徽財經大學2023年計算機C語言考試試卷(含六卷)含答案解析_第1頁
安徽財經大學2023年計算機C語言考試試卷(含六卷)含答案解析_第2頁
安徽財經大學2023年計算機C語言考試試卷(含六卷)含答案解析_第3頁
安徽財經大學2023年計算機C語言考試試卷(含六卷)含答案解析_第4頁
安徽財經大學2023年計算機C語言考試試卷(含六卷)含答案解析_第5頁
已閱讀5頁,還剩71頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

2023年計算機C語言考試試卷(-)

一、單項選擇題(每小題2分,共100分)

1、以下選項中,當X為大于1的奇數時,值為。的表達式是

A、x%2==l

B、x/2

C、x%2!=0

D、x%2==0

2、下面選擇中正確的賦值語句是(設chara[5],*p=a;)

A、p二〃abcd〃;

B、a=,,abcd,/;

C^*p二〃abcd〃;

D>峪二〃abed”;

3、mainO

{intx=l,a=0,b=0;

switch(x)

{case0:b++;

case1:a++;

case2:a++;b++;}

printf(〃a=%d,b=%d〃,a,b);)

該程序的輸出結果是()

A、2,1

B、1,1

C、1,0

D、2,2

4、下面的程序

main()

(

inta=2;

do

(

printf(,,%d\n,/,a-=2);

}

while(!(—a)):

}

A、輸出的是0

B、輸出的是0和-3

C、輸出的是3和0

D、是死循環

5、在下列語句中,其含義為〃q是一個函數指針,該指針指向整型數據〃的定義語

句是________0

A、int**q;

B、int(*q)();

C、int*q;

D^int*q();

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

A、a<<l

B、a>>l

C、a*2

D、a+10

7、數組名作為實參數專遞給函數時,,數組名被處理為o

A、該數組的長度

B、該數組的元素人數

C、該數組的首地址

D、該數組中各元素的值

8、以下關于運算符優先順序的描述中正確的是。

A、關系運算符〈算術運算符〈賦值運算符〈邏輯與運算符

B、邏輯與運算符〈關系運算符〈算術運算符〈賦值運算符

C、賦值運算符V邏輯與運算符V關系運算符〈算術運算符

D、算術運算符〈關系運算符〈賦值運算符〈邏輯與運算符

9、判斷字符串a和b是否相等,應當使用。

A、if(a==b)

B、if(a=b)

C、if(strcmp(a,b))

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

10、給一個short類型變量賦值的范圍是o

A、T28?+127

13、-2147483648?+2147483647

C、-32768?+32767

D、-1000—+1000

1K在下列原型所示的C++函數中,按〃傳值〃方式傳遞參數的是o

A、voidfl(intx);

B、voidf2(int*x);

C^voidf3(constint*x);

voidf4(int&x);

12、設有intx,y;

以下語句判斷x和y是否相等,正確的說法是該語句oif(x=y)

printf(,,,zxisequa'toy."〃);

A、語法錯

B、不能判斷x和y是否相等

C、編譯出錯

D、能判斷x和y是否相等

13>若有說明語句chara[]=〃itismine";

char*p二〃itisnine”;

則以下不正確的敘述是一。

A、a+1表示的是字符t的地址

B、P指向另外的字符串時,字符串的長度不受限制

C、p變量中存放的地址值可以改變

D、a中只能存放10個字符

14、卜.列不屬于3種基本控制結構是。

A、順序

B、選擇

C、循環

D、調用

15、下面程序的輸出結果是o

ml(intx)

{

inty;

y=x*x;

return(y);

)

m2(inta,intb)

(

int1;

l=ml(a-b);

return(1);

)

main()

(

intp=2,q=4,t;

t二m2(p,q);

printf(〃%d〃,t);

)

A、4

B、6

C、8

D、12

16、有以下程序:

main()

(

ints=0.n;

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

(

switch(s)

(

case0;

easel:s-=l;

case2:s+=2;

break;

case3:s+=3;

default:s+=4;

}

printf("%d,"s);

}

)

程序運行后的輸出結果是____O

A、1,2,4,

B,1,3,6,

C、3,10,14,

3,6,10,

17、下面程序的運行結果是

#include<stdio.h>

main()

(

inta=28,b;

chars[10],*p;

P=s;

do

(

b=a%16;

if(b<10)*p=b+48;

else*p=b+55;

p++;

a=a/5;

)

while(a>0);

*p='\0';

puts(s);

}

A、10

B、C2

C、C51

D、\0

18>寫出下列程序段運行結果ounsignedinta=3,b=10;

printf(""%d\n"",a<<2|b==l);

A、〃13〃

B、12

C、8

D、14

19、下列選項中合法的數組定義是o

A^inta□二〃string”;

B、inta[5]={

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

C、chara二〃sting”;

D、chara[]={

0,1,2,3,4)

20、有以下程序

^include<stdio.h>

structtt

(

intx;

structtt*y;

}

*P;

structtta[4]={20,a+1,15,a+2,30,a+3,17,a};

main()

(

inti;

P二a;

for(i=l;i<=2,i-+)

(

printf("%d,”,p->x);

p=p->y;

}

)

程序的運行結果是一_。

A、20,30,

B、30,17

C、15,30,

D、20,15

21、下列運算符中優先級最高的是.

A、||

B、&&

C、+

D、=

22、執行以下程序段后,輸出結果和a的值是inta=10;

printf(〃%d〃,a++);

A、10和10

B、10和11

C、11和10

D、11和11

23、。語言中函數能否嵌套調用和遞歸調用?()

A、二者均不可

B、前者可,后者人可

C、前者不可,后者可

D、二者均可

24、結構化程序所要求的基本結構不包括()。

A、順序結構

B、GOTO跳轉

C、選擇(分支)結構

D、重復(循環)結構

25、有如下定義語句::nta[]={1,2,3,4,5},則對語句int*p=a;正確的描

述是o

A、語句int*p=a;定義不正確

B、語句int*p=a;初始化變量p,使其指向數組對象a的第一個元素

C.語句int*p=a;是把a[0]的值賦給變量p

D、語句int*p-a;是把a[l]的值賦給變量p

26、下列關于實型變量書寫正確的是o

A、E3

B、2e0.3

C、1.2e3

D、1.2E0.3

27>請讀程序段:charstr□二〃abed",*p二str;printf(〃刎\n〃,*(p+4));

程序段的輸出結果是______o

A、68

B、0

C、字符D的地址

D、不確定的值

28、數據的存儲結構是指o

A、數據所占的存儲空間

B、數據的邏輯結構在計算機中的存放形式

C、數據在計算機中的順序存儲方式

D、存儲在計算機外存中的數據

29、設有定義:char*c;以下選項中能夠使字符型指針c正確指向一個字符

串的是________。

A、charstr[]=z,string,z;c=str;

B、scanf(,,%s,,,c);

C、c=getchar();

D、*c=string;

30>若一個外部變量的定義形式為staticintx;那么,其中static的作用應

該是O

A、將變量存儲在靜態存儲區

B、使變量x可以日系統自動初始化

C、使x只能在本又件內引用

D、使x的值可以永久保留

31、算法一般都可以用哪幾種控制結構組合而成;)

A、循環、分支、遞歸

B、順序、循環、嵌套

C、循環、遞歸、選擇

D、順序、選擇、循環

32、以下條件表達式中能完全等價于條件表達式x的是_________.

A、(x==0)

B、(x!=0)

C^(x==l)

D^(x!=l)

33、卜列關于數組初始化的說法,正確的是_______。

A、對于inta[5];它的數組元素初值另0

B、int@[5]={1,3,5,7,8,9};是可以的,這時數組長度自動變為6

C、staticinta[5];的數組元素初值為0

D,inta[5]={1.3,5};是不合法的,因為數組長度為5,而僅有3個數據,

不知賦給哪個元素

34、在說明一個結構體變量時系統分配給它的存儲空間是。

A、該結構體中第一個成員所需存儲空間

B、該結構體中最后一個成員所需存儲空間

C、該結構體中占月最大存儲空間的成員所需存儲空間

D、該結構體中所有成員所需存儲空間的總和

35、有以下程序:

main()

(

inta=l,b=0;

if(—a)b++;

elseif(a=0)b+=2;

elseb+=3:printf(〃%d\n〃,b);

)

程序運行后的輸出結果是O

A、0

B、1

C、2

D、3

36、有以下程序

main()

(

inti=0,s=0;

for(;;)

(

if(i==3IIi=5)continue;

if(i==6)break;

i++;

s+=i;

printf(〃%d\n”,s;;

)

程序運行后的輸出結果是一

A、10

B、13

C、24

D、程序進入死循環

37、若有定義:int(*p)[4];

則標識符po

A、是一個指向整型變量的指針

B、是一個指針數組名

C、是一個指針,它指向一個含有四個整型元素的一維數組

D、定義不合法

38、以下程序的輸出結果是o

ttinclude<stdio.h>

main()

intcount,i=0;

for(count=l;count<=4;count++)

(

i+=2;

printf(〃%d〃,i);

)

}

A、20

B、246

C、2468

D、2222

39、以下程序輸出的結果為o

main()

(

char*alpha[6]=]〃abcd〃,“efgh",〃ijkl〃,〃nnop〃,〃qrsl〃,〃uvwx"};

char**p;

inti;

p二alpha;

for(i=0;i<4;i+-)printf(〃%s〃,p[i]);

}

A、ABCDEFGH1JKL

B、ABCD

C、ABCDEFGH1JKL\1NOP

D、AETM

40、以下對枚舉類型名的定義中正確的是。

A、enuma={one,two,three};

B、enuma(one=9,two=~l,three};

C^enuma={〃one〃,"two","three”};

D、enuma{〃onc〃,〃two〃,“three”};

41、下列關于sizeof說法錯誤的是o

A、sizeof運算符可以獲取某個類型所占字節數

B、sizeof運算:符可以獲取某個變量所占的字節數

C、sizeof運算符獲取某個變量的字節數與該變量的類型有關

D、sizeof運算符獲取某個變量的字節數與該變量的類型無關

42、為了計算s=15!(15的階乘),則s變量應定義為o

A、char

B、short

C、int

D、long

43、執行下面語句后的愉出為____

inti=-1;

if(i<=O)printf(〃x***\n〃);

elseprintf(,/%%%%\nx);

A^****

B、%%%%

C、%%%%C

D、有語法錯,不能執行

44、語句for(k=0;kV5;++k)

(

if(k==3)continue;

printf("%d〃,k);

)

的輸出結果為

A、012

B、0124

C、01234

D、沒有輸出結果

45、有以下程序段若要給cl、c2、c3分別輸入字母a,b,c,則以下對輸入形式

的描述正確的是一

A、字母A,B,C2間可以用空格分隔

B、字母A,B,C之間不能有分隔符

C、字母A,B,C之間可以用回車符分隔

D、字母A,B,C之間可以用Tab鍵分隔

46、設intx=10,a=0,b=25;條件表達式xV14+10:b的值是。

A、0

B、1

C、10

D、25

47、下列一維數組定義正確的是o

A、x=5;intnum[x];

B、constihtx=5;floatnum[x];

C、constfloatx=5;intnum[x];

D、constintx;x=5;intnum[x];

48、軟件設計中模塊劃分應遵循的準則是o

A、低內聚低耦合

B、高內聚低耦合

C、低內聚高耦合

D、高內聚高耦合

49、若有定義:charstrl[10]="aaaaaaa”;

charstr2[10]二〃bbbbb〃;

將字符串str2連接到strl,則下列描述中正確的是。

A、strcat(strl,str2)可以將字符串str2連接到strl中

B、strncat(strl,str2,strlen(str2))可以將字符串str2連接到strl中

C,strncat(strl,str2,2)可以將字符串str2的前兩個字符連接到str'.中

D、strncat(strl,str2,4)可以將字符串str2的前四個字符連接到strl中

50、以下敘述中錯誤的是o

A、c語言中的每條可執行語句和非執行語句最終都將被轉換成二進制的機器

指令

B、c程序經過編譯、連接步驟之后才能形成一個真正可執行的二進制機器指

令文件

C、用c語言編寫的程序稱為源程序,它以ASCII代碼形式存放在一個文本

文件中

D、c語言源程序經編譯后生成后綴為.obj的目標程序

[2023年計算機C語言考試試卷(一)參考答案]

一、單項選擇題

1、D

【解析】因為x的值為大于1的奇數,所以x除以2的余數等于1,因此,選

項A)、C)中表達式的結果為真,不為0;對于選項B)來說,x除以2的商不會

等于0;選項D)中表達式的結果為假,即等于0。

2、A

3、A

4、A

5、B

6、B

7、C

8、c

9、D

10、C

【解析】short類型存儲時占16位bit,表示的數據范圍是-32768?32767。

11、A

【解析】函數參數傳遞分為兩類:一是“傳地址調用”,形參為指針或變量引

用兩類;二是“傳值調用”,形參為普通變量。

12、B

13、D

【解析】解析:本題考查字符串數組和指針的引用方式。在C語言中,系統在

每個字符串或數組的最后自動加入一個字符'\0',作為字符的結束標志,在本

題中,chara[]="tismine”;所表示的。字符串實際含有11個字符。

14、D

【解析】順序、選擇和循環是程序的三種基本控制結構。

15、A

16、C

17、C

【解析】考查用字符指針處理字符串的方法。[解題要點]語句“P=s;”是使

指針P指向字符數組s。*p則引用了p所指位置的數組元素。[考點鏈接]通

過指針來引用?維數組元素。

18、B

19、A

20、D

21、C

【解析】在選項中的幾個運算符中,+運算符的優先級最高。

22、B

23、D

【解析】兩者調用都可以

24、B

25、B

26、C

27、B

【解析】在對字符數組賦字符串值時,系統會自動在字符串的末尾加上一個字

符串結束標志故指向字符數組的指針p的*(p+4)的值為'\0'.由于''0'

的編碼值就是0,所以本題輸出為0。

28、B

29、A

30、C

【解析】事實上,無論有無static修飾,外部變量都具有A、B和C三種特

性。作為一種修飾,static僅是限制此類型外部變量韻引用范圍:只能在定義

它的文件范圍內使用。

31、D

【解析】算法一般由順序、選擇、循環控制結構組合而成。

32、B

33、C

【解析】數組一旦定義,其長度就不可變了;初始化數組的數據個數不要大于

數組長度,否則會出現邏輯錯;初始化數組的數據個數若小于數組長度,則先

賦給前邊的元素,后邊的元素值自動初始化為0:靜態數組如果沒有初始化自

動初始化為0。

34、D

35、D

36>D

【解析】程序中for循環中省略了判斷退出循環的表達式,for循環將由里面

的break語句控制是否結束循環,第一次循環,第一條if語句后面括號里的表

達式的值為假,所以該if語句不被執行,執行下面的第二條語句,此時該if

語句表達式的值為假,所以該if語句也不執行,執行下面的語句,i++、

s+二i,執行完畢后i的值為1,s的值為1,如此循環,直到第三次之后i,s

的值都為3,繼續第四次循環,顯然這時滿足第一條if語句的,執行后面的

continue該次循環結克從頭開始下次循環,而i的值為3一直沒有改變,所以

第一條語句始終要執行,因此for循環將一直循環下去。

37、C

38、C

39、C

【解析】alpha[0]指向“ABCD”的首地址;alpha[l]指向“EFGH”的首地址;

alpha[2]指向“IJKL”的首地址,依此類推。當執行p二指pha后,p指向指針

數組alpha的首地址。for循環中輸出了4個字符串。

40、B

41、D

42、D

【解析】計算結果為整型數據,char是字符型,不符合,而short與int類型

的取值不夠大,所以用long類型來存儲。

43、A

44、B

45、B

【解析】在使用scanf函數時要注意,在用%格式輸入字符時,分隔符(空格符、

制表符(Tab鍵)、回車符)和轉義字符都將作為有效字符進行輸入。題目中要求

以字符形式輸入三個數據,空格、回車符、Tab鍵均會被視為有效字符賦給對應

變量,所以字母A,B,C之間不能有分隔符,B選項正確。

46、D

47、B

【解析】數組的下標不能是變量,不能為非整數,定義為常量的標識符不能再

用來賦值,只能在定義時初始化。

48、B

49,C

【解析】連接字符串要考慮內存溢出問題

50、A

2023年計算機C語言考試試卷(二)

一、單項選擇題(每小題2分,共100分)

1、以下選項中合法的實型常數是________。

A、5E2.0

B、E-3

C、0.2

D,1.3E

2、在c語言系統中,假設int類型數據占2個字節,則double,long.unsigned

int、char類型數據所占字節數分別多少()。

A、8,2,4,1

B、2,8,4,1

C、4,2,8,1

D、8,4,2,1

3、設變量a、b、c、d和y都已正確定義并賦值。若有以下if語句:if(a<b)

if(c==d)y=0;elsey=l;該語句所表示的含義是。

A、y=0,a

y=La2b

y=0,a

y=Laeb且c#d

C>y=0,a

y=l,aVB且CND

D、y=0,a

y=l,cWd

4、有以下程序

^include<stdio.h>

main()

(

inti,j;

for(i=3;i>=-l;i-)

(

for(i=l;j<=2;j++)printf(飛d〃,i+j);

printf("\n〃);

}

)

程序的運行結果是。

A、234345

B、432543

C、233445

D、453423

5、若要用卜.面的程序片段使指針變量p指向一個存儲整型變量的動態存儲單元

int*pp=malloc(sizeof(int));則應填入。

A、int

B、int*

C、(*int)

D、(int*)

6、以下4個選項也不能看作一條語句的是。

A、{;}

B、a=0,b=0,c=0;

C、if(a>0);

D、if(b==0)m=l;n=2;

7,以下敘述中正確的是_______。

A、字符串數組,是指數組中的每個元素都是?個存放字符串的?維數組

B、charca[3][4]={〃A〃,〃BB〃,〃CCC〃};是不合語法的

C、charca[][5]={〃A〃,〃BB〃,〃CCC〃};是不合語法的

D、char*ca[3]={〃A〃,〃BB〃,〃CCC〃};是不合語法的

8、下列哪一項不是表達式

A、1

B、a+b

C^@a;

D、c=a+b

9、下列哪個是c語言的有效標識符

A、_Nol

B、No.1

C、12345

D、int

10、設有定義intx;floaty;則10+x+y值的數據類型是。

A、int

B、double

C^float

D、不確定

Ik有以下程序:

voidfun(int*a,inti,intj){

intt;

if(i<j)t=a[i];

a[i]=a[j];

fun(a,++i,—j);

)

main(){

inta[]=l,2,3,4,5,6,i;

fun(a,0,5);

for(i=0;i<6;i++)printf(〃%d〃,a[i]);

)

執行后的輸出結果是o

A.654321

B>432156

C、456123

D.123456

12、選出下列標識符中不是合法的標識符的是o

A、hotdo

B、catl

C、pri

D、2ab

13,有如下函數調用語句func(reel,rec2+rec3,rec4,rec5);該函數調用語

句中,含有的實參個數是.

A、3

B、4

C、5

D、有語法錯誤

14、設有定義:intnl=0,n2,*p=&n2,*q=&nl;,以下賦值語句中與n2=nl;語句

等價的是_______0

A^*p=*q;

B、p=q;

C、*p=&nl;

D、p=*q;

15、以下程序運行后的輸出結果是o

main()

(

inty=18,i=0,j,a[8];

do

(

a[i]=y%2;

i++;

y=y/2;

)

while(y>=l);

for(j=i-l;j>=0:j—)printfC%dz,,a[j]);

printf(〃\n〃);

)

A、1000

B、10010

C、00110

D、10100

16、以下敘述中正確的是。

A、do-while語句陶成的循環不能用其他語句構成的循環來代替

B、do-while語句閡成的循環只能用break語句退出

C、用do-while語句構成循環時,只有在while后的表達式為非零時結束循

D、用do-while語句構成循環時,只有在while后的表達式為零時結束循環

17、有函數charfun(char*p){returnp;}該函數的返回值是。

A、編譯出錯

B、形參p中存放的地址值

C、一個臨時存儲單元的地址

D、形參p自身的地址值

18、以下程序段的輸出結果是ointk,n,in;

n=10;

m=l;

k=l;

while(k<=n)

(

m*=2;

k+=4;

}

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

A、4

B、16

C、8

D、32

19、以下程序調用findmax函數求數組中值最大的元素在數組中的下標,請選擇

填空:

#include<stdio.h>findmax(int*s,intt,int*k)

(

intp;

for(p=0,*k=p;pVt;p++)if(s[p]>s[*k]);

)

main()

(

inta[10],i,k;

,,,,

for(i=0;i<10;i-+)scanf(%d,&a[i]);

findmax(a,10,&k);

printf(z,%d,%d\n”,k,a[k]);

)

A^k=p

*k=p-s

C、k=p-s

D、*k=p

20>有以下程序:

structstu

{

charnum[10];

floatscore[3];

};

main()

structstus[3]={{"20021〃,90,95,85},{“20022〃,95,80,75},

{〃20023〃,100,95,90}),*p=s;

inti;

floatsum=0;

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

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

}

printf(,z%6.2f\n”,sum);

)

程序運行后的輸出結果是。

A、260

B、270

C、280

D、285

21、下列運算符中,屬于關系運算符的是o

A、<<

B、>=

C、=

D、!

22、以下定義語句中,錯誤的是.

inta[]={l,2};

B、chara={"test"};

C、chars[10]={z,test/z};

D.inta□=

23、若有以下函數首部:intfun(doublex[10],int*n)則下面針對此函數的

函數聲明語句中正確的是_______O

A、intfun(doublex,int*n);

B、intfun(double,int);

C、intfun(double*x,intn);

D、intfun(double*,int*);

24、下列關于break語句的描述,不正確的是。

A、break語句可用在循環體內,它將使執行流程跳出本層循環體

B、break語句可用在switch語句中,它將使執行流程跳出當前switch語句

C、break詰句可用在訂語句中,它將使執行流程跳出當前if語句

D、break語句在一層循環體中可以出現多次

25、若有以下數組說明,則i=10;元素數值是。inta[12]=

{1,4,7,10,2,5,8,11,3,6,9,12);

A、10

B、9

C、6

D、5

26、根據c語言的語法規則,下列個是不合法標識符。

A、while

B、name

C、rern5

D^_exam

27、以下程序段給數組所有元素輸入數據:

main()

(

inta[10],i=0;

while(i,<10)scanf("%d",);

}

應在下劃線處填入的是。

A、a+(i++)

B、&a[i+l]

C、a+i

D、&a[++i]

28、下列運算符屬于關系運算符的是______o

A、==

B、=

C、+=

D、-=

29、在c語言中,不允許有常量的數據類型是_______o

A、整型

B、結構型

C、字符型

D、字符串

30、下列關于c語言文件的敘述中,正確的是o

A、文件由一系列數據依次排列組成,只能構成二進制文件

B、文件由結構序列組成,可以構成一進制文件或文本文件

C、文件由數據序列組成,可以構成二進制文件或文本文件

D、文件由字符序列組成,其類型只能是文本文件

31、在C語言程序中()。

A、函數的定義可以嵌套,但函數的調用不可以嵌套

B、函數的定義不可以嵌套,但函數的調用可以嵌套

C、函數的定義和函數調用均可以嵌套

D、函數的定義和函數調用不可以嵌套

32、以下運算符中,優先級最高的運算符是o

A、?:

B、++

C、&&

D、,

33、若有以下說明和定義

fun(int*c)

voidmain()

(

int(*a)()=fun,*b(),w[10],c;

???

)

在必要的賦值之后,對fun函數的正確調用語句是

A、a=a(w);

B、(*a)(&c);

C,b=*b(w);

D、fun(b);

34、有以下程序:

^include<stdio.h>

structs

(

inta,b;

)

data[2]=(10,100,20,200);

main()

(

structsp=data[l];

printf(z,%d\nz/,-+(p.a));

)

程序運行后的輸出結果是______。

A、10

B、11

C、20

D、21

35、以下程序的運行結果是________o

main(){

inta[5],k;

for(k=0;k<5;k++)

a[k]=10*k;

printfa[k-J);

)

A、40

B、35

C、50

D、45

36、下面程序的運行結果是。

main()

(

intm=7,n=5,i=l:

do

if(i%m==O):

if(i%n=O)

(

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

break;

)

i++;

}

while(i!=0);

}

A、7

B、6

C、5

D、4

37、若有以下定義和語句:"doubler=99,*p=&r:

*P=r;〃,則以下正確的敘述是________。

A、兩個*p含義相同,都說明給指針變量P賦值

B、在“doubler=99,*p=&r;”中,把r的地址賦值給了P所指的存儲單

C、語句“*pr;”把變量r的值賦給指針變量P

D、語句"*p=r;”取變量r的值放回r中

38、有以下程序:

^defineS(x)(x)*x*2

intmain()

(

intk=5,j=2;

printf("%d〃,S(k-j));

printf("%d\n〃,S[k-j));

}

程序運行后的輸出結果是。

A、98,18

B、39,11

C、39,18

D、98,11

39、以下一維數組a的正確定義是.

A、intn=10,a[n];

B、intn;

C、#defineSIZE10

scanf&n);inta[SIZE];

inta[n];

D、inta(10);

40、若有以下說明語句:

structdate

(

intyear;

intmonth;

intday;

}brithday;

則下面的敘述不正確的是__.

A、struct是聲明結構體類型時用的關鍵字

B,structdate是用戶定義的結構體類型名

C、brithday是用戶定義的結構體類型名

D、year,day都是結構體成員名

41、在下面關于指針的說法中,錯誤的一條是。

A、變量的指針就是變量的地址

B、可以將一個整型量或任何其他非地址類型的數據賦給一個指針變量

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

D、指針變量中只能存放地址(指針)

42、不能正確表示a*b/c*d的c語言表達式是。

A、a*b/c*d

B、a/(c*d)*b

C、a*b/c/d

D、a*b/(c*d)

43>有以下定義語句:doublea,b;intw;longc;若各變量已正確賦值,則

下列選項中正確的表達式是_______。

A、a=a+b=b++

B、w%((int)a+b)

C>(c+w)%(int)a

w=a==b

44、以下關于結構化程序的說法中,正確的是_

A、結構化程序由單入口、單出口和循環3種結構組成

B、結構化程序由順序、單入口和單出口3種結構組成

C、結構化程序由順序、循環和GOTO語句結構組成

D、結構化由順序、循環、循環和分支3種結構組成

45、在c語言程序中

A、函數的定義可以嵌套,但函數的調用不可以嵌套

B、函數的定義和調用均可以嵌套

C、函數的定義和調用均小可以嵌套

D、函數的定義不可以嵌套,但函數的調用可以嵌套

46、若有定義語句:inta=3,b=2,c=l;以下選項中錯誤的賦值表達式是。

A、a=(b=4)=3;

B、a=b=c+l;

C^a=(b=4)+c;

D、a=l+(b=c=4);

47、已知:inta[2][3];則對數組元素的非法引用是。

A、*(a[0]+2)

B、

C、a[l][O]

D、*(*(a+l)+2)

48、下列各項關于變量的描述中正確的是。

A、變量名不是標識符

B、變量名的字符是不區分大小寫的

C、變量名的定義必須符合標識符的定義規則

D、變量屬性分為基本類型和復合類型

49、對下述程序的判斷中,正確的是_______。

main()

(

char*p,s[256];

P=s;

while(strcmp(s,^theend"))

(

printf(,zinputthestring:");

gcts(s);

while(*p)putchar(*p?1);

)

}

A、此程序循環接收字符串并輸出,直到接收到字符串“theend”為止

B、此程序循環接收字符串,接收到字符串“theend”則輸出,否則程序終

C、此程序循環接收字符串并輸出,直到接收字符串“theend”為止,但因

為代碼有錯誤,程序不能正常工作

D、此程序循環接收字符串并將其連接在一起,直到接收字符串“theend”

為止,輸出連接在一起的字符串

50、計算機病毒通常是_o

A、一段程序代碼

B、一個命令

C、一個文件

D、一個標記

[2023年計算機C語言考試試卷(二)參考答案]

一、單項選擇題

1、C

【解析】本題主要考查指數形式的表示方法。C語言規定字母6(或E)之前,必

須要有數字,且其后的指數,也必須為整數。

2、D

3、C

4、D

【解析】本題考查的是for循環的嵌套。外層循環變量i從3遞減到1,內層

循環變量j從1遞增到2,具體運行過程如下:i-3:j=l,滿足條件j<=2,

輸出i+j=3+l=4;j=2,滿足條件jV=2,輸出i+j=3+2=5;j=3,不滿足條件j

<=2,退出內層循環,執行“print退出n〃);”語句,換行。執行i一,此時

i=2,滿足條件i>=l;i=2:j=l,滿足條件jV=2,輸出i+j-2+l=3:j=2,滿

足條件jV=2,輸出i-j=2+2=4;j=3,不滿足條件jV=2,退出內層循環,執

行“ptintf(〃\n〃);”語句,換行。執行i-,此則i=l,滿足條件i>=l;

i=l:j=b滿足條件jV=2,輸出i+j=l+l=2;j=2,滿足條件jV=2,輸出

i+j=l+2=3;j=3,不滿足條件jV=2,退出內層循環,執行“printf("\n");”

語句,換行。執行i~,此時i=0,不滿足條件i>=L結束外層循環。

5、D

【解析】不論P是指向什么類型的指針變量,都可以通過強制類型轉換的方法

使之類型一致,強制類型轉換的格式為(數據類型*)。

6、D

7、A

【解析】本題考查字符串數組的相關知識,選項BCD都是合語法的。

8、C

9、A

【解析】標識符是一個以字母或卜劃線開始的,由字母、下劃線和數字組成的

字符串,標識符不能與任意關鍵字同名。

10、C

【解析】由算術運算符組成的表達式中,若含有不同類型的操作數,則系統隱

含地將低類型轉化為高類型,由低至高的順序為int-float-double。

11、A

【解析】本題考查指針變量作函數形參的問題。指針變量作函數的形參,實現

的是地址傳遞,形參的改變可以影響實參。fun曰數的功能是將a所指數組中

的內容逆置在main函數中調用fun函數后,實參數組s中元素的值變為:

a[0]=6、a[l]=5>a[2]=4、a[3]=3、a[4]=2、a[5]=l<>

12、D

13、B

14、A

15、B

16、D

17、A

【解析】P的類型和函數返回值的類型不一致,函數返回類型是char,而p是

char*,編譯出錯。

18、C

19、D

【解析】k是一個指針,它的值是一個地址,要通過它為主函數的變量改變數

據,必須使用*p,邊樣就可以把一個卜標數賦給p指針指向的那個內存單元,

所以橫線處應填入*k=p。

20、B

【解析】給結構體數組賦韌值時,由于數組中的每個元素都是一個結構體,因

此要將其成員的值依次放在一對花括號中,以便區分各元素。

s[0]={"2002rz,90,95,85),s[l]={"20022',95,80,75},s[2]:

{“20023”,100,95,90}。

21、B

22、B

23、D

【解析】本題中的fun函數有兩個參數,一個類型是double型一維數組,另一

個是int型指針。而在C語言中,一維數組用作函數參數和該數組元素的指針

類型是等價的。所以本題的正確答案是選項D。

24、C

【解析】break語句只能用在switch語句和循環語句中。在switch語句中,

break用來使執行流程跳出switch語句,而繼續執行switch后面的語句。在

循環語句中,break用來使執行流程無條件地跳巴本層循環體。

25、B

26、A

27、A

28、A

【解析】關系運算符有:>、V、>=、<=>=、!=、=、十二、-二均屬于賦值運

算符,故B、C、D均不正確。

29、B

30、C

【解析】文件由數據序列組成,可以構成二進制文件或文本文件。

31、B

32、B

33、B

34、D

【解析】聲明data是結構S數組。初始化data[0].a=10;,

data[0].b=100;,data[l].a=20:,data[l].b=200o主函數中

p=data[l];,BPp.a=data[l].a;,p.b=data[l].b;。執行語句

printfC%d\n",++(p.a));打印輸出時p.a先增1再打印,即

p.a=data[l].a=20,先增1等于21。

35、A

36、C

37、B

38、B

39>C

40、C

41、B

42、C

43、C

【解析】選項A不是合法的賦值語句,將最右邊的第一個賦值表達式加括號即

為&=@+0)=b++)才正確,故選項A不正確。選項B中運算符%的對象必須是整

型,而在選項B中(ini)a+b為double型,故選項B不正確。a,b都為double

型,應當避免使用a==b這樣的關系表達式,因為通常存放在內存中的實型數據

是有誤差的,因此不兀能精確相等,這將導致關系表達式a=b總為0。所以,

4個選項中選項C符合題意。

44、C

【解析】結構化程序的基本要求是:所有的模塊只使用單入口、單出口及順

序、選擇和循環基本控制結構。結構化程序由順序、循環和GOTO語句結構組

成。

45>D

【解析】本題考查函數的定義,調用及其嵌套之間的關系。

46、A

【解析】此題考查C語言中賦值表達式的概念。用一個賦值運算符“=”將一個

變量和一個表達式連接起來的式子稱為賦值表達式。選項A中缺少表達式。

47、B

48、C

【解析】變量名必須是合法的標識符,否則程序在編譯過程中會出錯,故A選

項是錯誤的;C選項是正確的;選項D錯誤,變量類型可以分為基本類型和復

合類型,而變量屬性不能如此分類。

49、C

50、A

【解析】病毒是能夠通過修改其他程序而“感染”它們的一種程序,修改后的

程序里面包含了病毒程序的一個副本,這樣它們就能夠繼續感染其他程序。

2023年計算機C語言考試試卷(三)

一、單項選擇題(每小題2分,共100分)

1、以下是正確C語言標識符的是________O

A、_3

B、#3

C、&3

D,-3

2、下面四個選項中,均是不正確的八進制數或十六進制數的選項是o

A、0160x8f018

B、Oabc017Oxa

C、010-Oxll0x16

D、0al27ff-123

3、設變量x和y均已正確定義并賦值。以下if語句中,在編譯時將產生錯誤信

息的是________。

A^if(x++);

B、if(x>y&&.y!=0);

C、if(x>0)x-elsey++;

D、if(y<0){;}elsex++;

4、以下選項中與if(a-l)a=b;elsea++;語句功能不同的switch語句是

________o

A、switch(a)

case1:a=b;break:

default:a++;

B、switch(a==l)

case0:a=b;break:

case1:a++;

C、switch(a)

default:a++;break;

case1:a=b;

D、switch(a-l)

case1:a=b;break;

case0:a++:

5、有以下程序:

main()

(

chara[]={'a','b','c','d','e',呼','g','h',''0'};

inti,j;

i=sizcof(a);

j=strlen(a);

printf%d\n”,i,j);

)

程序運行后的輸出結果是O

A、9,9

B、8,9

C、1,8

D、9,8

6、設x=015,則x=x-0:7的值是o

A、00001111

B、11111101

C、00000010

D、11000000

7、有語句charstrl[10],str2[10]={,zchina,z);

則能將字符串china賦給數組strl的正確語句是。

A、strl={〃china〃};

strcpy(strl,str2);

C、strl=str2;

D、strcpy(str2,strl);

8、一條計算機指令中,通常應包含_____。

A、數據和字符

B、操作碼和操作數

C、運算符和數據

D、被運算數和結昊

9、下面不能正確進行字符串賦值操作的語句是o

A、chars[5]={〃ABCDE〃};

B、chars[5]={'A','B','C','D','E'};

C、char*s;s:“ABCDEF”;

D、char*s;scanf("/s〃,s);

10>已有定義:intx=3,y=4,z=5;

則表iA式!(x+y)+z-l&&y+z/2的值是。

A、0

B、1

C、2

D、-1

11>函數的值通過return語句返回,下面關于return語句的形式描述借誤1勺是

A、return表達式;

B、return(表達式);

C、一個return語句可以返回多個函數值

D、一個return語句只能返回一個函數值

12、若變量已正確定義表達式(j=3,j++)的值是

A、3

B、4

C、5

D、6

13、設有如下定義:intarr□二{6,7,8,9,10};

inl*plr;

ptr=art;

*(ptr2)=2;printfC%d,%a\n〃,*ptr,*(ptr2>);

則下列程序段的輸出結果為()o

A、8,10

B、6,8

C、7,9

D、6,2

14、有如下函數定義;

voidfunc(inta,int&b)

(

a++;

b++;

)

若執行代碼段:intx=0,y=l;

func(x,y);

則變量x和y的值分別是_______。

A、0和1

B、1和1

C、0和2

D、1和2

15、執行以下程序后的輸出結果是o

intw=3,z=7,x=10;

printf(,z%d,z,x>10?x-100:x-10);

printf(〃/d”,w++1z+-);

printf(〃%d〃,!w>z);

printf(〃%d",w&&z);

A、0111

B、mi

c、0101

D、0100

16、以下描述錯誤的是o

A、break語句可用于switch語句和循環語句

B、break語句和continue語句的作用是?樣的,都是提前結束整個循環

C、在循環語句中使用break語句是為了跳出循環,提前結束循環

D、在循環語句中使用continue語句是為了結束本次循環,而不終止整個循

17、下面說法正確的是_______。

A、char*x,y,**str同時定義了三個變量,符合語法規范

B、數組說明符的一對方括號中只能使用常量數值

C、單精度浮點值乜可以作為數組下標

D、若有定義floatarr[2]則printf(〃%2.lf〃,array[0.5])是合法的語句

18、有以下程序

#include<stdio.h>

main(){

shortc=124;

c=c________;

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

)

若要使程序的運行結果為248,應在卜.劃線處填入的是。

A、>>2

B、248

C、&0248

D、<<1

19、以下能正確定義數組并正確賦初值的語句是o

A、intn=5,b[n][n];

B、inta[l][2]={{l},{3});

C、intc⑵口={{1,2},{3,4}}

D、inta[3][2]={{l,2},{3,4})

20、以下對c語言中共用體類型數據的敘述正確的是o

A、可以對共用體變量名直接賦值

B、一個共用體變量中可以同時存放其所有成員

C、一個共用體變景中不可以同時存放其所有成員

D、共用體類型定義中不能出現結構體類型的成員

21、下列關于定點數與浮點數的敘述中錯誤的是。

A、在實數的浮點表示中,階碼是一個整數

B、整數是實數的特例,也可以用浮點數表示

C、實數的補碼是其對應的反碼在最后一位加1

D、相同長度的浮點數和定點數,前者可表示數的范圍要大于后者

22、c語言提供的預處理功能包括條件,其基本形式為:#XXX標識符程序段

1#else程序段2Sendif這里的XXX可以是。

A、defineinclude

B、ifdef或include

C、indef或ifndef或define

D、ifdef或ifndef或if

23、putchar()函數可以向終端輸出一個()。

A、整型變量表達式值

B、實型變量值

C、字符串

D、字符或字符型變量值

24、在循環結構中,可以使得同一組語句一次也不執行。

A、當型循環

B、直到型循環

C、都不能實現

D、doivhile語句

25、決定c語言中函數的返回值類型的是。

A、return語句中的表達式類型

B、調用該函數時系統隨機產生的類型

C、調用該函數時的主調用函數類型

D、在定義該函數時所指定的數據類型

26、以下選項中合法的用戶標識符是_____o

A^float

13、name1

C、3Dmax

D、B.dat

27、下面關于數組的初始化正確的是______0

A、charstr[]={'a','b','c'}

B,charstr[2]={'a','b','c'}

C、charstr[2][3]={Ca,*b*,},{'c','d'},{‘e','f'}}

D、charstr()={'a','b','c'}

28、對于存儲同樣一組數據元素而言,o

A、順序結構比鏈接結構多占存儲空間

B、順序結構與鏈接結構相比,更有利于對元素的插入、刪除運算

C、順序

溫馨提示

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

評論

0/150

提交評論