2022-2023年寧夏回族自治區(qū)固原市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)_第1頁
2022-2023年寧夏回族自治區(qū)固原市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)_第2頁
2022-2023年寧夏回族自治區(qū)固原市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)_第3頁
2022-2023年寧夏回族自治區(qū)固原市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)_第4頁
2022-2023年寧夏回族自治區(qū)固原市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩100頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2022-2023年寧夏回族自治區(qū)固原市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.是哈希查找的沖突處理方法()。

A.求余法B.平均取中法C.二分法D.開放地址法

2.有以下程序:

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

A.357B.753C.369D.751

3.設(shè)有定義“Charp[]={‘1’,‘2’,‘3’},*q=p;”,以下不能計(jì)算出一個(gè)char型數(shù)據(jù)所占字節(jié)數(shù)的表達(dá)式是()。A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[0])

4.若d為double型變量,則表達(dá)式d=1,d+5,d++的值是()。

A.1B.6.0C.2.0D.1.0

5.有以下程序:#include<stdio.h>main(){charch=‘1’;while(ch<‘9’){printf(“%d”,ch-‘0’);ch++;}}程序運(yùn)行后的輸出結(jié)果是()。

A.12345678B.01234567C.0D.1

6.有以下程序

main()

{inti,s=0,t[]={l,2,3,4,5,6,7,8,9};

for(i=0;i<9;i+=2)s+=*(t+i);

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

}

程序執(zhí)行后的輸出結(jié)果是A.A.45B.20C.25D.36

7.若有定義“a[]={1,2,3,4,5,6,7,8,9,10};”,則“a[a[5]-a[7]/a[1]]”的值是()。

A.2B.4C.3D.10

8.若有定義“inta;longb;doublex,y;”,則以下選項(xiàng)中正確的表達(dá)式是()。

A.a=x<>yB.a%(int)(x-y)C.(a*y)%bD.y=x+y=x

9.設(shè)有程序段:intk=12:while(k=1)k=k-1:則下列描述中正確的是()。

A.while循環(huán)執(zhí)行10次B.循環(huán)是無限循環(huán)C.循環(huán)體語句一次也不執(zhí)行D.循環(huán)體語句執(zhí)行一次

10.二叉樹的第三層最少有________個(gè)結(jié)點(diǎn)。

A.0B.1C.2D.3

11.若變量已經(jīng)定義且正確賦值,則針對程序段“temp=a;a=b;b=temp;”,以下敘述中正確的是()。

A.C語言的順序結(jié)構(gòu)不允許將多條語句寫在一行里

B.程序順序結(jié)構(gòu)對于此段程序是從左至右依次執(zhí)行的

C.此程序段的執(zhí)行順序是,先執(zhí)行“b=temp;”,再執(zhí)行“a=b;”,最后執(zhí)行“temp=a;”

D.將此段程序的前兩個(gè)分號改成逗號,后面一個(gè)不變,則不能實(shí)現(xiàn)a和b值的交換

12.以下關(guān)于結(jié)構(gòu)化程序設(shè)計(jì)的敘述中正確的是()。

A.一個(gè)結(jié)構(gòu)化程序必須同時(shí)由順序、分支、循環(huán)三種結(jié)構(gòu)組成

B.結(jié)構(gòu)化程序使用goto語句會很便捷

C.在C語言中,程序的模塊化是利用函數(shù)實(shí)現(xiàn)的

D.由三種基本結(jié)構(gòu)構(gòu)成的程序只能解決小規(guī)模的問題

13.

14.有下列程序:main{inti,j,x=0;for(i=0,i<2;i++){x++;for(j=0;j<=3;j++){if(j%2)continue;x++:}x++:}printf("x=%d\n",x);}程序執(zhí)行后的輸出結(jié)果是()。A.x=4B.x=8C.x=6D.x=12

15.

16.

17.設(shè)a、b和、c都是int型變量,且a=3、b=4、c=5,則下面的表達(dá)式中,值為0的表達(dá)式為()

A.'a'&&'b'

B.a<=b

C.a‖b+c&&b-c

D.!(a-b)&&(!c‖1)

18.以下敘述中錯(cuò)誤的是()。

A.形參可以是常量、變量或表達(dá)式

B.實(shí)參可以是常量、變量或表達(dá)式

C.實(shí)參的類型應(yīng)與形參的類型賦值兼容

D.實(shí)參的個(gè)數(shù)應(yīng)與形參的個(gè)數(shù)一致

19.有以下程序段:#include<stdio.h>intj;floaty;charname[50];scanf(“%2d%f%s”,&j,&y,name);當(dāng)執(zhí)行上述程序段時(shí),從鍵盤上輸入555667777abc后,y的值為()。

A.566.0B.55566.0C.7777.0D.566777.0

20.下列程序是用來判斷數(shù)組中特定元素的位置所在的。#include<conio.h>#include<stdio.h>intfun(int*s,intt,int*k){inti;*k=0;for(i=0;i<t;i++)if(s[*k]<s[i])*k=i;returns[*k];}main(){inta[10]={876,675,896,101,301,401,980,431,451,777},k;fun

A.7,431B.6C.980D.6,980

二、2.填空題(20題)21.以下程序中給指針p分配3個(gè)double型動態(tài)內(nèi)存單元,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{double*p;

p=(double*)malloc((【】);

p[0]=1.5;p[1]=2.5;p[2]=3.5;

printf("%f%f%f\n",p[0],p[1],p[2]);

}

22.數(shù)據(jù)結(jié)構(gòu)分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),帶鏈的隊(duì)列屬于[]。

23.下列程序的輸出結(jié)果是______。

#include<stdio.h>

main()

{inta=2,b=-1,c=2;

if(a<b)

if(b<0)c=0;

elsec++;

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

}

24.設(shè)x、y、z均為int型變量,請寫出描述“x或y中至少有一個(gè)小于z”的表達(dá)式______。

25.以下程序運(yùn)行后的輸出結(jié)果是【】。

#include<stdio.h>

#defineS(x)4*x*x+1

main()

{inti=6,j=8;

prinff("%d\n",S(i+j));

}

26.為建立如下圖所示的存儲結(jié)構(gòu)(即每個(gè)結(jié)點(diǎn)兩個(gè)域,p是指向結(jié)點(diǎn)的指針域,data用以存放整型數(shù)),請將定義補(bǔ)充完整。

pdata

a

structlist

{【】;intdata;}a;

27.算法執(zhí)行過程中所需要的基本運(yùn)算次數(shù)稱為算法的______。

28.數(shù)據(jù)的邏輯結(jié)構(gòu)有線性結(jié)構(gòu)和______兩大類。

29.以下程序運(yùn)行后的輸出結(jié)果是______。

#include<string.h>

main()

{charch[]="abc",x[3][4];inti;

for(i=0;i<3;i++)strcpy(x[i],ch);

for(i=0;i<3;i++)printf("%s",&x[i][i]);

printf("\n");

}

30.數(shù)據(jù)模型按不同的應(yīng)用層次分為三種類型,它們是______數(shù)據(jù)模型、邏輯數(shù)據(jù)模型和物理數(shù)據(jù)模型。

31.數(shù)據(jù)庫是指按照一定的規(guī)則存儲在計(jì)算機(jī)中的【】的集合,它能被各種用戶共享。

32.軟件開發(fā)過程中所使用的資源一般包括:【】、軟件資源和硬件資源。

33.有如下程序段:

main(intargc,char*argv[])

{intn,i=0;

while(argv[1][i]!='\0')

{n=fun();i++;}

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

}

intfun()

{staticints=0;

s+=1;

returns;

}

假設(shè)程序經(jīng)編譯、連接后生成可執(zhí)行文件exam,exe,若鍵入如下命令行:

examl23<回車>

則運(yùn)行結(jié)果為【】。

34.數(shù)據(jù)模型按不同應(yīng)用層次分成3種類型,它們是概念數(shù)據(jù)模型、【】和物理數(shù)據(jù)模型。

35.設(shè)變量已正確定義為整型,則表達(dá)式n=i=2,++i,i++的值為【】。

36.下列程序?qū)⒍S數(shù)組a的行和列元素互換后存放到另一個(gè)二維數(shù)組b中。請?zhí)羁铡?/p>

main()

{inta[2][3]={{1,2,3),{4,5}},b[3][2],i,j;

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

{for(j=0;j<30++)

______;

}

}

37.下面程序的運(yùn)行結(jié)果是______。

main()

{inti=0,j=10,k=2,s=0;

{i+=k;

if(i>j)

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

break;}

s+=i;}}

38.有以下程序:

#include<stdio.h>

main()

{

charc;

while((c=getchar())!='?')putchar(--c);

}

程序運(yùn)行時(shí),如查從鍵盤輸入:Y?N?<回車>,則輸出的結(jié)果為______。

39.下面程序是把從終端讀入的20個(gè)字符作為字符串放在字符數(shù)組中,然后利用指針變量輸出上述字符串,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inti;chars[21],*p;

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

s[i]=getchar();

s[i]=【】;

p=【】;

while(*p)putchar(【】);

}

40.函數(shù)de1ete(s,i,n)的作用是從字符串s中刪除從笫i個(gè)字符開始的n個(gè)字符,請?zhí)羁铡?/p>

voidde1ete(chars[],inti,intn)

{intj,k,length=O;

whi1e(s[length])

【】

-i;

j=i;

}

if(【】)

{k=i+n;

if(i+n<=length)

whi1e(k<length)

s[j++]=s[k++];

s[j]='\0;}

三、1.選擇題(20題)41.C語言可執(zhí)行程序的開始執(zhí)行點(diǎn)是()。

A.包含文件中的第一個(gè)函數(shù)B.程序中第一個(gè)函數(shù)C.程序中的main()函數(shù)D.程序中第一條語句

42.若有以下結(jié)構(gòu)體,則正確的定義或引用是()。structTest{intx;inty;}v1;

A.Test.x=10;

B.Testv2;v2.x=10;

C.structTestv2;v2.x=10;

D.structTest.v2=10;

43.以下不屬于對象的基本特點(diǎn)的是()

A.分類性B.多態(tài)性C.繼承性D.封裝性

44.下列程序的輸出結(jié)果是______。#defineA100main(){inti=0,sum=0;do{if(i==(i/2)*2)continue;sum+=i;}while(++i<A);printf("%d\n",sum);}

A.2500B.2050C.4D.0

45.若有說明語句:charc=′\72′;則變量c

A.包含1個(gè)字符B.包含2個(gè)字符C.包含3個(gè)字符D.說明不合法,c的值不確定

46.在下列語句中,其含義為“q為一個(gè)指針的函數(shù),該指針指向整型數(shù)據(jù)”的定義語句是()。

A.int**q;B.int(*q)0;C.int*q;D.int*q();

47.對于長度為n的線性表,在最壞情況下,下列各種排序法所對應(yīng)的比較次數(shù)中正確的是()。

A.冒泡排序?yàn)閚/2B.冒泡排序?yàn)閚C.快速排序?yàn)閚D.快速排序?yàn)閚(n-1)/2

48.有以下程序main(){chara1='M',a2='m';printf("%c\n",(a1,a2));}以下敘述中正確的是()。

A.程序輸出大寫字母MB.程序輸出小寫字母mC.格式說明符不足,程序出錯(cuò)D.程序運(yùn)行時(shí)產(chǎn)生出錯(cuò)信息

49.以下敘述中正確的是______。A.預(yù)處理命令行必須位于源文件的開頭

B.在源文件的一行上可以有多條預(yù)處理命令

C.宏名必須用大寫字母表示

D.宏替換不占用程序的運(yùn)行時(shí)間

50.下列字符數(shù)組初始化語句中,不正確的是()。

A.charc[]='goodmorning';

B.char,c[20]="goodmoming";

C.charc[]={'a','b','c','d'};

D.charc[]={"goodmoming"};

51.下列選項(xiàng)中錯(cuò)誤的說明語句是

A.chara[]={′t′,′o′,′y′,′o′,′u′,′\0′};

B.chara[]={"toyou\0"};

C.chara[]="toyou\0";

D.chara[]=′toyou\0′;

52.有如下程序inta[10]={1,2,3,4,5,6,7,8,9,10};int*p=&a[3],b;b=p[5];則b的值是

A.5B.6C.9D.8

53.以下程序的輸出結(jié)果是______。main(){inti,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=i;for(i=0;i<3;i++)p[i]=a[i*(1+1)];for(i=0;i<3;i++)k+=p[i]*2;printf("%d\n",k);}

A.20B.21C.22D.23

54.以下程序的輸出結(jié)果是______。main(){intm=5;if(m++>5)printf("%d\n",m);elseprintf("%d\n",m--);}

A.7B.6C.5D.4

55.下列程序段的輸出結(jié)果為()。#include<stdio.h>main(){staticchara[]="language";char*p;p=a;for(p=a;p<a+8;p+=2)putchar(*p);}

A.languageB.lnugC.有語法錯(cuò)誤D.lang

56.以下選項(xiàng)中可以作為C語言合法常旱的是

A.-80B.-80C.-8e1.0D.-80.0e

57.若變量已正確定義,要求程序段完成5!的計(jì)算,不能完成此操作的程序段是______。

A.for(i=1,p=1;i<=5;i++)p*=i;

B.for(i=1;i<=5;i++){p=1;p*=i;}

C.i=1;p=1;while(i<=5){p*=i;i++;}

D.i=1;p=1;do{p*=i;i++;}while(i<=5);

58.設(shè)有關(guān)鍵碼序列(66,13,51,76,81,26,57,69,23),要按關(guān)鍵碼值遞增的次序排序,若采用快速排序法,并以第一個(gè)元素為劃分的基準(zhǔn),那么第一趟劃分后的結(jié)果為()。

A.23,13,51,57,66,26,81,69,76

B.13,23,26,51,57,66,81,76,69

C.23,13,51,57,26,66,81,69,76

D.23,13,51,57,81,26,66,69,76

59.下列敘述中正確的是()。

A.顯示器和打印機(jī)都是輸出設(shè)備B.顯示器只能顯示字符C.通常的彩色顯示器都有7種顏色D.打印機(jī)只能打印字符和表格

60.假定w、x、y、m均為int型變量,則執(zhí)行下列的語句后,m的值是()。w=6,x=4,y=3;m=(w<x)?w:x;m=(m<y)?m:y;

A.3B.4C.5D.6

四、選擇題(20題)61.設(shè)有條件表達(dá)式:(EXP)?i++;j--,則以下表達(dá)式中(EXP)完全等價(jià)的是()。

A.(EXP==0)B.(EXP!=0)C.(EXP==1)D.(EXP!=1)

62.數(shù)據(jù)庫設(shè)計(jì)中反映用戶對數(shù)據(jù)要求的模式是()。

A.內(nèi)模式B.概念模式C.外模式D.設(shè)計(jì)模式

63.若有定義floatX=1.5;inta=1,b=3,C=2;,則正確的switch語句是()。

A.

B.

C.

D.

64.以下敘述中正確的是

A.用C程序?qū)崿F(xiàn)的算法必須要有輸入和輸出操作

B.用C程序?qū)崿F(xiàn)的算法可以沒有輸出但必須要有輸入

C.用C程序?qū)崿F(xiàn)的算法可以沒有輸入但必須要有輸出

D.用C程序?qū)崿F(xiàn)的算法可以既沒有輸入也沒有輸出

65.最常用的一種基本數(shù)據(jù)模型是關(guān)系數(shù)據(jù)模型,對于它的表示應(yīng)采用

A.樹B.網(wǎng)絡(luò)C.圖D.二維表

66.

67.

68.有如下程序段

voidfunc(int*a,intb[])

{b[0]=*a+6;}

main()

{inta,b[5]={0};

a=0;b[0]=3;

func(&a,b);

printf("%d\n",b[0]);

}

程序運(yùn)行后輸出的結(jié)果是

A.6B.7

C.8D.9

69.程序調(diào)試的任務(wù)是()。

A.設(shè)計(jì)測試用例B.驗(yàn)證程序的正確性C.發(fā)現(xiàn)程序中的錯(cuò)誤D.診斷和改正程序中的錯(cuò)誤

70.

71.有以下程序:

#include<stdio.h>

main()

{char*s="[2]34";intk=0,a=0;

whil(s[k+1]!=\0)

{k++;

if(k%2=o){a=a+(s[k]-0+1);continue;}

a=a+(s[k]-0);

printf("k=%da=%d\n",k,a);

}

程序運(yùn)行后的輸出結(jié)果是()。

A.k=6a=11B.k=3a=14C.k=4a=12D.k=5a=15

72.

73.有以下程序:

則以下函數(shù)調(diào)用語句錯(cuò)誤的是()。

A.

B.

C.

D.

74.

75.有以下程序:

程序運(yùn)行后的輸出結(jié)果是()。

A.33B.197C.143D.28

76.執(zhí)行下列程序后,變量a,b,C的值分別是()。intx=5,y=4;inta,b,c;a=(--x==y++)?X:++y;b=++x:c=y:A.a=5,b=5,c=5B.a=4,b=5,c=5C.a=5,b=6,c=5D.a=1,b=5,c=6

77.下列程序的運(yùn)行結(jié)果為()。#include<stdio.h>main{structdate{intyear,month,day;}today;printf("%d\n",sizeof(structdate));}A.8B.6C.10D.12

78.語句“printf(”a\bhow\’are\’y\\\bou\n”);”的輸出結(jié)果是()。A.A.a\bhow\'are\'y\\bou

B.a\bhow\’are\’y\bou

C.how'are'you

D.ahow'are'y\bou

79.“商品”與“顧客”兩個(gè)實(shí)體集之間的聯(lián)系一般是()。

A.一對一B.多對一C.一對多D.多對多

80.有以下程序

五、程序改錯(cuò)題(1題)81.下列給定的程序中,函數(shù)proc()的功能是:用選擇法對數(shù)組中的m個(gè)元素按從小到大的順序進(jìn)行排序。

例如,排序前的數(shù)據(jù)為:1132-5214

則排序后的數(shù)據(jù)為:-52111432

請修改程序中的錯(cuò)誤,使它能得到正確結(jié)果。

注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

六、程序設(shè)計(jì)題(1題)82.n個(gè)人的成績存放在score數(shù)組中,請編寫函數(shù)proc(),它的功能是將低于平均分的人數(shù)作為函數(shù)值返回,將低于平均分的分?jǐn)?shù)放在down所指的數(shù)組中。例如,當(dāng)score數(shù)組中的數(shù)據(jù)為{99,80,40,56,59,84,60,76,100}時(shí),函數(shù)返回的人數(shù)應(yīng)該是4,down中的數(shù)據(jù)應(yīng)為40565960。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.D

2.A本題考查的是for循環(huán)與二維數(shù)組的定義和引用。當(dāng)定義二維數(shù)組的初始化列表只使用一重花括號時(shí),其中的每個(gè)值依次代表從第l行的第1個(gè)元素起,直到第l行滿,接著代表第2行、第3行……的每一個(gè)元素。程序中的循環(huán)將循環(huán)3次,循環(huán)變量i的值分別是0、1、2,所以3次循環(huán)中輸出的數(shù)分別是:t[2一O][D]、t[2-1][1]、t[2~2]121,即t[2][0]、t[1][l]、t[0][2],所以最后輸出的結(jié)果為357。故應(yīng)該選擇A)。

3.A根據(jù)題目中的定義可知,“sizeof(p)”計(jì)算的是數(shù)組p中所有元素所占用的字節(jié)數(shù),而不是char型數(shù)據(jù)所占的字節(jié)數(shù)。故本題答案為A選項(xiàng)。

4.D

5.A表達(dá)式“ch-‘0’’將數(shù)字字符轉(zhuǎn)為數(shù)字。輸出的格式為%d。while循環(huán)從‘1’~‘8’,因此輸出的結(jié)果是12345678。故本題答案為A選項(xiàng)。

6.C解析:統(tǒng)計(jì)1~9九個(gè)數(shù)中的奇數(shù)和,此題考察指向數(shù)組的指針,C語言規(guī)定數(shù)組名代表數(shù)組的首地址,也就是第一個(gè)元素的地址。因此*(t+i)代表數(shù)組的第i+1個(gè)元素。程序運(yùn)行的結(jié)果是1+2+3+4+5+6+7+8+9=25。

7.C題干中,數(shù)組a包含10個(gè)元素。其中a[5]為6,a[7]為8,a[1]為2,所以表達(dá)式“a[a[5]-a[7]/a[1]]”等價(jià)于“a[6-8/2]”,等價(jià)于a[2],即3。故本題答案為C選項(xiàng)。

8.BC語言中沒有“<>”運(yùn)算符,所以A選項(xiàng)錯(cuò)誤。運(yùn)算符“%”的左右兩個(gè)操作數(shù)必須為整型數(shù)據(jù),所以B選項(xiàng)正確。表達(dá)式“a*y”的結(jié)果為double型,所以C選項(xiàng)錯(cuò)誤。不能將值賦給像“x+y”這樣的表達(dá)式,所以D選項(xiàng)錯(cuò)誤。故本題答案為B選項(xiàng)。

9.C本題考查while,while循環(huán)表達(dá)式k-1是個(gè)賦值表達(dá)式而不是邏輯表達(dá)式,k的初值為l2不符合循環(huán)條件,所以循環(huán)體語句一次也不執(zhí)行。

10.B

11.BC語言允許將多條語句寫在一行,選項(xiàng)A錯(cuò)誤;題干中的語句是從左至右依次執(zhí)行的,選項(xiàng)B正確,選項(xiàng)C錯(cuò)誤。題干中的程序前兩個(gè)分號改成逗號,就構(gòu)成了逗號表達(dá)式。逗號表達(dá)式會依次從左到右計(jì)算各個(gè)表達(dá)式,整個(gè)表達(dá)式的值是最后一個(gè)表達(dá)式的值,所以此例也可以實(shí)現(xiàn)a和b值的交換,選項(xiàng)D錯(cuò)誤。故本題答案為B選項(xiàng)。

12.C解析:結(jié)構(gòu)化程序設(shè)計(jì)是指將待開發(fā)的軟件系統(tǒng)劃分為若干個(gè)相互獨(dú)立的模塊,與具體的語句結(jié)構(gòu)無關(guān)。Goto語句的濫用會導(dǎo)致程序的可讀性降低。三種基本結(jié)構(gòu)構(gòu)成的程序依然可以解決大規(guī)模的問題,只是不利于復(fù)用。

13.B

14.B在第1次外層for循環(huán)中,首先x++得到x=1。進(jìn)入到內(nèi)層for循環(huán),只有循環(huán)j的值為奇數(shù)時(shí),變量x的值才自加1,所以在內(nèi)層for循環(huán)執(zhí)行過程中,變量x的值自加兩次,當(dāng)退出內(nèi)層for循環(huán)時(shí),x=3,然后執(zhí)行x++,得到x=4。在進(jìn)入執(zhí)行第2次外層for循環(huán)中,首先x++得到x=5。進(jìn)入到內(nèi)層for循環(huán),只有循環(huán)變量j的值為奇數(shù)時(shí),變量x的值才自加1,所以在內(nèi)層for循環(huán)執(zhí)行過程中,變量X的值自加1兩次,當(dāng)退出內(nèi)層for循環(huán)時(shí),x=7,然后執(zhí)行x++,得到x=8,所以打印輸出變量x的值為8。

15.D

16.C

17.D

18.A函數(shù)中,形參必須是變量,實(shí)參可以是常量、變量或表達(dá)式,選項(xiàng)A錯(cuò)誤,選項(xiàng)B正確;實(shí)參的個(gè)數(shù)和類型要與形參一致,選項(xiàng)C、D正確。本題答案為A選項(xiàng)。

19.Ascanf是格式輸入函數(shù),即按用戶指定的格式從鍵盤上把數(shù)據(jù)輸入指定的變量中。其中,在百分號(%)與格式碼之間的整數(shù)用于限制從對應(yīng)域讀入的最大字符數(shù)。所以j的值為55,y的值為566.0,字符數(shù)組name的值為7777abc。故本題答案為A選項(xiàng)。

20.D解析:本題中直接使用指針變量k,但在使用時(shí)要注意對k的指針運(yùn)算。此外,一開始應(yīng)知道*k的值為數(shù)組中的某一下標(biāo)值,即*k=0,本函數(shù)的功能是找出數(shù)組中的最大元素的位置及最大元素的值。

21.3*sizeof(double)或size(double)*3或24或3*8或8*33*sizeof(double)或size(double)*3或24或3*8或8*3解析:該函數(shù)的調(diào)用格式是malloc(n),作用是申請n個(gè)字符的存儲單元,并返回該存儲區(qū)的首地址,實(shí)際調(diào)用的時(shí)候可在前面加上“(類型說明符*)”,以轉(zhuǎn)換成需要的類型的地址。所以在此空白處應(yīng)該填寫3*sizeof(double)或size(double)*3或其他等價(jià)的表達(dá)式。

22.線性結(jié)構(gòu)線性結(jié)構(gòu)解析:與棧類似,隊(duì)列也是線性表,也町以采用鏈?zhǔn)酱鎯Y(jié)構(gòu)。

23.22解析:分析程序,a=2,b=-1,c=2時(shí),if語句的表達(dá)式a<b不成立,不再往下判斷,直接退出if語句,執(zhí)行后面的輸出語句,程序結(jié)束。在這個(gè)程序中a、b、c的值沒做任何改變。

24.x<z‖y<zx<z‖y<z解析:本題考查邏輯運(yùn)算符和邏輯表達(dá)式。x或y中至少有一個(gè)小于z,即x<z或y<z,是“或”的關(guān)系。

25.8181解析:帶參數(shù)的宏定義是按#define命令行中指定的字符串從左到右進(jìn)行替換。本題替換后得到:4*i+j*i+j+1,代入i,j的值得81。

26.structlist*nextstructlist*next解析:定義的指針類型變量next也應(yīng)該是結(jié)構(gòu)體類型的。

27.時(shí)間復(fù)雜度時(shí)間復(fù)雜度解析:算法在執(zhí)行過程中所執(zhí)行的基本運(yùn)算的次數(shù),也就是執(zhí)行算法所需要的計(jì)算工作量,稱為算法的時(shí)間復(fù)雜度。

28.非線性結(jié)構(gòu)非線性結(jié)構(gòu)

29.abcbcc

30.概念概念

31.數(shù)據(jù)數(shù)據(jù)解析:數(shù)據(jù)庫是由一個(gè)互相關(guān)聯(lián)的數(shù)據(jù)的集合和一組用以訪問這些數(shù)據(jù)的程序組成,這些數(shù)據(jù)按一定的數(shù)據(jù)模型組織、描述和存儲。

32.人員資源人員資源

33.66解析:本題中命令行輸入2個(gè)符號串,所以argc=2,argv[0]指向符號串'exam',argv[1]指向符號串'123',while循環(huán)的作用是計(jì)算argv[1]所指向的字符串的長度,執(zhí)行完while循環(huán)后n=3,所以n*argc=3×2=6。

34.邏輯數(shù)據(jù)模型邏輯數(shù)據(jù)模型解析:數(shù)據(jù)是現(xiàn)實(shí)世界符號的抽象,而數(shù)據(jù)模型(datamodel)則是數(shù)據(jù)特征的抽象,它從抽象層次上描述了系統(tǒng)的靜態(tài)特征、動態(tài)行為和約束行為,為數(shù)據(jù)庫系統(tǒng)的信息表示與操作提供一個(gè)抽象的框架。數(shù)據(jù)模型按不同的應(yīng)用層次分成3種類型,它們是概念數(shù)據(jù)模型(conceptualdatamodel)、邏輯數(shù)據(jù)模型(logicdatamodel)、物理數(shù)據(jù)模型(physicaldatamodel)。

35.33解析:本題考查的是C語言逗號表達(dá)式的相關(guān)知識。程序在計(jì)算逗號表達(dá)式時(shí),從左到右計(jì)算由逗號分隔各表達(dá)式的值,整個(gè)逗號表達(dá)式的值等于其中最后一個(gè)表達(dá)式的值。本題中,首先i被賦值為2,再自加1,最后i++的值計(jì)算為3。

36.b[j][i]=a[i][j]b[j][i]=a[i][j]解析:本題考查二維數(shù)組的基本知識。它是要將一個(gè)二維數(shù)組,的行和列元素互換后存放到另一個(gè)二維數(shù)組b中,只要將數(shù)組a的行標(biāo)和列標(biāo)互換,然后賦給數(shù)組b即可。

37.

38.xx解析:本題考查的知識點(diǎn)是while循環(huán)的程序分析;主函數(shù)中首先定義了一個(gè)字符型變量C,接著執(zhí)行下面while語句,在while循環(huán)中,首先從鍵盤上讀入一個(gè)字符Y并給賦給字符變量C,賦值表達(dá)式的值不為'?',執(zhí)行輸出語句,輸出字符x。接著判斷while中的循環(huán)條件,讀入一個(gè)字符'?',并賦值給c,賦值表達(dá)式的值為'?',循環(huán)條件不再滿足,退出循環(huán)。

39.\0's*p++\\0'\r\ns\r\n*p++解析:本題先通過for循環(huán)從鍵盤接收20個(gè)字符,然后在串尾賦一空值'\\0'作為串結(jié)束標(biāo)志。再使指針p指向串的首地址。最后通過while循環(huán)對字符串進(jìn)行掃描并輸出。

40.length++i<lengthlength++\r\ni<length解析:第—個(gè)循環(huán)極有可能是計(jì)算串的長度,在i<=length時(shí)字符才被刪除,被刪除的是從第i個(gè)到第i+n或最后—個(gè)間的所有字符。刪除前,應(yīng)判斷i<=length。由于已經(jīng)進(jìn)行了-i運(yùn)算,故實(shí)際應(yīng)填入i<length。

41.C解析:每個(gè)C程序有且只有一個(gè)主函數(shù)main(),且程序必須從main函數(shù)開始執(zhí)行,并在main()函數(shù)中結(jié)束。

42.C解析:定義結(jié)構(gòu)體類型的變量的方式有:①緊跟在結(jié)構(gòu)體類型說明之后進(jìn)行定義,如題目中給出的;②在說明對結(jié)構(gòu)成員的引用形式為

結(jié)構(gòu)體變量名.成員名

選項(xiàng)A對結(jié)構(gòu)成員的引用的形式是錯(cuò)誤的,Test是結(jié)構(gòu)體名,不能用來引用結(jié)構(gòu)成員。選項(xiàng)B中定義結(jié)構(gòu)體類型的變量的形式是錯(cuò)誤的,Test是結(jié)構(gòu)體名,不能用宋定義結(jié)構(gòu)體類型的變量。選項(xiàng)D中對結(jié)構(gòu)成員的引用的形式是錯(cuò)誤的,對結(jié)構(gòu)成員的引用的形式為:結(jié)構(gòu)體變量名.成員名。4個(gè)選項(xiàng)中只有選項(xiàng)C是正確的定義或引用。

43.C解析:對象的基本特點(diǎn)包括;標(biāo)識惟一性、分類性、多態(tài)性、封裝性和獨(dú)立性等。繼承性不屬于對象的基本特點(diǎn)。

44.A解析:本題程序的功能是求1到99之間(包括1和99)所有奇數(shù)之和。程序中的while循環(huán)的終止條件為++i=100,在while循環(huán)體內(nèi),如果i是偶數(shù),則執(zhí)行continue,跳過這一次循環(huán),執(zhí)行下—次循環(huán),否則求和和。最后輸出的值是1到99之間(包括1和99)所有奇數(shù)之和(1+99)*50/2=2500。

45.A解析:C語言的字符型常量中,允許用一種特殊形式的字符常量,就是以一個(gè)'\\'開頭的字符。其中,'\\ddd'表示用ASCII碼(八進(jìn)制數(shù))表示一個(gè)字符,本題中的charc=\'\\72\'即表示占一個(gè)字符的變量c的ASCII碼值。

46.B解析:本題考查的是指針函數(shù)。指針函數(shù)定義的基本格式:類型說明符(*函數(shù)名)()。其中,類型說明符表示返回的指針值指向的數(shù)據(jù)類型。

47.D在最壞情況下,冒泡排序和快速排序的比較次數(shù)都是n(n一1)/2?!局R拓展】所謂冒泡排序,就是將相鄰的兩個(gè)數(shù)據(jù)比較,如前面的數(shù)據(jù)大于后面的,則位置互換。這樣不停地比較、互換,其實(shí)就是把大的數(shù)往后排,小的數(shù)往前排(就像冒泡一樣冒出來了)。

48.B解析:(a1,a2)是一個(gè)逗號表達(dá)式,它的值為a2的值即m,以字符格式輸出表達(dá)式的值即輸出小寫字母m。

49.D本題主要考查宏的一些基本概念。通常,預(yù)處理命令位于源文件的開頭,但不一定必須位于開頭,也可以寫在函數(shù)與函數(shù)之間;由于預(yù)處理命令的末尾不加分號,不以分號來區(qū)分一條宏命令,所以,不能在一行上寫多條預(yù)處理命令,只能寫一條,否則,系統(tǒng)處理時(shí)就會把它當(dāng)做一條命令處理;宏名一般習(xí)慣用大寫字母表示,以便與變量名相區(qū)別,這只是習(xí)慣用法,并不是C語言中有這樣的規(guī)定,宏的定義可用小寫字母;C語言中,宏的替換是在程序編譯時(shí)進(jìn)行,不占用程序運(yùn)行的時(shí)間,故本題答案為D。

50.A解析:本題考查兩個(gè)概念:①用單引號括起來的一個(gè)字符常量只能存放一個(gè)字符;②C語言中沒有字符串變量,只能用字符數(shù)組來存儲字符串。

選項(xiàng)A)中一個(gè)單引號內(nèi)放了若干個(gè)字符是錯(cuò)誤的;選項(xiàng)B)和選項(xiàng)D)中將一個(gè)字符串賦值給一個(gè)字符數(shù)組是允許的。

51.D解析:通過賦初值的方式給一維數(shù)組賦字符串,可以用給一般數(shù)組賦初值的相同方式給一維字符數(shù)組賦字符串,也可以在賦值時(shí)直接賦字符串常量。選項(xiàng)B)和C)后面的'\\0'是多余的,在C語言中,系統(tǒng)會自動在字符串的結(jié)尾處加上一個(gè)字符'\\0'作為串的結(jié)束標(biāo)記。

52.C解析:p=&a[3]將指針指向數(shù)組a的第4個(gè)元素,p[5]指向數(shù)組a的第9個(gè)元素,而a[8]=9,所以b=9。

53.B解析:按程序的流程走一遍,可以得到p[0]=0,p[1]=2,p[3]=6;執(zhí)行三次k+=p[i]*2,相當(dāng)于k=5+0*2+2*2+6*2=21。

54.B解析:注意自增和自減運(yùn)算符在變量的左右側(cè)的不同用法。本題條件表達(dá)式m++>5,即5>5不成立,此時(shí)m=6,執(zhí)行else后面的語句,輸出6后再m--使得m又等于5了。

55.B解析:本程序首先定義了靜態(tài)字符數(shù)組a,然后將指針p指向數(shù)組a的首地址。

第1次for循環(huán),p=a,p指向數(shù)組的第1個(gè)元素,*p是取指針p所指地址的內(nèi)容,輸出1;第2次for循環(huán),p=p+2,則p指向數(shù)組的第3個(gè)元素,*p是取指針p所指地址的內(nèi)容,輸出n;第3次for循環(huán),p=p+2,則p指向數(shù)組的第5個(gè)元素,*p是取指針p所指地址的內(nèi)容,輸出u;第4次for循環(huán),p=p+2,則p指向數(shù)組的第7個(gè)元素,*p是取指針p所指地址的內(nèi)容,輸出g,結(jié)束循環(huán)。

56.A解析:本題考查的是C語言中整型常量與實(shí)型常量的部分表示方法。選項(xiàng)A用的是整型常量的十進(jìn)制表示法,是正確的。以0或-0開頭的整數(shù)是八進(jìn)制數(shù)表示法,八進(jìn)制數(shù)的原則是“逢八進(jìn)一”它只可能包含0~7這8個(gè)符號,故選項(xiàng)B是錯(cuò)誤的。選項(xiàng)C和D椰是實(shí)型常量的指數(shù)表示法,其規(guī)則是用字母。(或E)將一個(gè)實(shí)數(shù)的小數(shù)部分和指數(shù)部分分隔開。字母e(或E)之前是小數(shù)部分,之后是指數(shù)部分,這兩部分都不能省略,且指數(shù)部分必須為整數(shù)。故選項(xiàng)C和D都不正確。所以,4個(gè)選項(xiàng)中選項(xiàng)A符合題意。

57.B解析:選項(xiàng)B中每次執(zhí)行循環(huán)體都要執(zhí)行p=1,無法保存上次的運(yùn)算結(jié)果,執(zhí)行完while循環(huán)后p=5。

58.AA)【解析】快速排序是起泡排序的改進(jìn)。在快速排

序中,任取一個(gè)記錄,以它為基準(zhǔn)用交換的方法將所有的記錄分成兩部分,關(guān)鍵碼值比它小的在一部分,關(guān)鍵碼值比它火的在另一部分,再分別對兩個(gè)部分實(shí)施上述過程,一直重復(fù)到排序完成。

59.A

60.A解析:條件表達(dá)式“a?b:c”的含義是:當(dāng)a為真時(shí),其值等于表達(dá)式b的值,當(dāng)a為假時(shí),其值等于表達(dá)式c的值。第一個(gè)表達(dá)式:w=6<x=4為假,所以返回x的值,即m=x=4;第二個(gè)表達(dá)式:m=4<y=3為假,所以返回y的值,即m=y=3。

61.B解析:條件表達(dá)式的形式為:“表達(dá)式1?表達(dá)式2:表達(dá)式3”。其含義為:當(dāng)“表達(dá)式1”的值為非零時(shí),求出“表達(dá)式2”的值,此時(shí)“表達(dá)式2”的值就是整個(gè)條件表達(dá)式的值;當(dāng)“表達(dá)式1”的值為零時(shí),求出“表達(dá)式3”的值,此時(shí)“表達(dá)式3”的值就是整個(gè)條件表達(dá)式的值。對于本題來說,當(dāng)表達(dá)式EXP為非0值時(shí)條件成立,即執(zhí)行語句i++;當(dāng)EXP等于0時(shí),執(zhí)行語句j--;這等同于條件表達(dá)式“(EXP!=0)?i++:i++;”。

62.C數(shù)據(jù)庫系統(tǒng)的三級模式是概念模式、外模式和內(nèi)模式。概念模式是數(shù)據(jù)庫系統(tǒng)中全局?jǐn)?shù)據(jù)邏輯結(jié)構(gòu)的描述,是全體用戶公共數(shù)據(jù)視圖。外模式也稱子模式或用戶模式,它是用戶的數(shù)據(jù)視圖,給出了每個(gè)用戶的局部數(shù)據(jù)描述,所以選擇C。內(nèi)模式又稱物理模式,它給出了數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法。

63.Bc語言中,switch語句專用于實(shí)現(xiàn)多分支結(jié)構(gòu)程序,其特點(diǎn)是各分支清晰且直觀。switch后面括號中可以是任何表達(dá)式,取其整數(shù)部分與各常量表達(dá)式進(jìn)行比較。常量表達(dá)式中不能出現(xiàn)變量,且類型必須是整型、字符型或枚舉型,各常量表達(dá)式各不相同。

64.C算法具有的5個(gè)特性是:有窮性、確定性、可行性、有0個(gè)或多個(gè)輸入、有一個(gè)或多個(gè)輸出。所以說,用C程序?qū)崿F(xiàn)的算法可以沒有輸入,但必須要有輸出。因此本題答案選C。

65.D關(guān)系數(shù)據(jù)模型是以關(guān)系數(shù)學(xué)理論為基礎(chǔ)的,用二維表結(jié)構(gòu)來表示實(shí)體以及實(shí)體之間聯(lián)系的模型稱為關(guān)系模型。在關(guān)系模型中把數(shù)據(jù)看成是二維表中的元素,操作的對象和結(jié)果都是二維表,一張二維表就是一個(gè)關(guān)系。表的每一行代表一個(gè)元組,每一列稱為一個(gè)屬性。

66.C

67.C

68.A在本題中,程序首定義了一個(gè)無返回值的函數(shù)func,該函數(shù)帶有兩個(gè)形參,第一個(gè)形參是一個(gè)指針變量,第二個(gè)形參是一個(gè)數(shù)組。

在主函數(shù)中,定義一個(gè)整型變量a和一個(gè)整型數(shù)值b,并將b初始化為0,然后通過賦值操作改變變量a的值為0,b[0]的值為3。接著調(diào)用函數(shù)func,傳遞的實(shí)參分別為變量a的地址和數(shù)組b,這時(shí)執(zhí)行func函數(shù)的函數(shù)體b[0]=*a+6;語句將數(shù)組b的第一個(gè)元素值變?yōu)?+6=6,由于采用的傳值方式是傳址傳值,可以實(shí)現(xiàn)數(shù)據(jù)的雙向傳遞,因此,實(shí)參數(shù)組b的第一個(gè)元素值被改為6。然后程序用輸出語句輸出數(shù)組b的第一個(gè)元素值,輸出的結(jié)果應(yīng)該是6,本題正確答案選A。

69.D程序調(diào)試的任務(wù)是診斷和改正程序中的錯(cuò)誤。

70.D

71.C\n輸出結(jié)果:k=1a=2

\nk=2a=4

\nk=3a=7

\nk=4a=12

\n

72.B

73.C在語句”k=*f(a,b)”中,由于””的優(yōu)先級高于”*”,所以”*f(a,b);”表示其返回類型為指針的帶有兩個(gè)整型參數(shù)的函數(shù)。

74.B

75.C本題考查帶參數(shù)的宏定義,s為帶參數(shù)的宏定義,運(yùn)行S(k+j)為4*(k+j)*k+j+1=143,選項(xiàng)C正確。

76.B本題考查自加(++)、自減(--)運(yùn)算符的使用。“++x,--x”,在變量x前使用,先使X的值加1或者減1,再使用此時(shí)的表達(dá)式的值參與運(yùn)算;“x++,x--”,先把使用X的值參與運(yùn)算,在使用X之后,再使x的值加1或者減1。對于表達(dá)式--x=4,y++=4,兩者相等,--x=y++為真,所以a=x=4,執(zhí)行完此語句后y的值是5。第2個(gè)表達(dá)式b=++x,x的值先加1,然后賦給b,即b=x+1=5;第一個(gè)表達(dá)式c=y=5。故B正確。

77.Bstructdate中包含year、month、day這3個(gè)整型變量,一個(gè)整型變量占2個(gè)字節(jié);sizeof是求所占字節(jié)數(shù)的運(yùn)算符。

78.C“\\b”格式符表示退格,功能是將它后面的字母把它前面的字母覆蓋,導(dǎo)致“\\b”格式符前面的字母不能輸出;“\\'”格式符表示輸出單引號字符;“\\\\”格式符表示輸出反斜線字符。

79.D商品與顧客兩個(gè)實(shí)體集之間的買與被買聯(lián)系是多對多的,因?yàn)橐环N商品可以被多個(gè)顧客購買,而一個(gè)顧客也可以買多個(gè)商品。

80.A外層循環(huán)i,值分別為l23,內(nèi)層循環(huán)j分別為l23、23和3,所以答案為A)。

81.

【解析】for循環(huán)結(jié)束的標(biāo)志是for后的一個(gè)語句,如果for后面直接跟一個(gè)分號,說明是一個(gè)空循環(huán)不執(zhí)行任何功

82.

【解析】要找到所有學(xué)生中成績低于平均分?jǐn)?shù)的人數(shù),首先需要算出所有學(xué)生的平均成績。然后將所有學(xué)生的成績與平均成績相比較。將低于平均分?jǐn)?shù)學(xué)生的記錄存放在新的數(shù)組中,并將低于平均分?jǐn)?shù)的學(xué)生數(shù)返回給主函數(shù)。

2022-2023年寧夏回族自治區(qū)固原市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.是哈希查找的沖突處理方法()。

A.求余法B.平均取中法C.二分法D.開放地址法

2.有以下程序:

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

A.357B.753C.369D.751

3.設(shè)有定義“Charp[]={‘1’,‘2’,‘3’},*q=p;”,以下不能計(jì)算出一個(gè)char型數(shù)據(jù)所占字節(jié)數(shù)的表達(dá)式是()。A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[0])

4.若d為double型變量,則表達(dá)式d=1,d+5,d++的值是()。

A.1B.6.0C.2.0D.1.0

5.有以下程序:#include<stdio.h>main(){charch=‘1’;while(ch<‘9’){printf(“%d”,ch-‘0’);ch++;}}程序運(yùn)行后的輸出結(jié)果是()。

A.12345678B.01234567C.0D.1

6.有以下程序

main()

{inti,s=0,t[]={l,2,3,4,5,6,7,8,9};

for(i=0;i<9;i+=2)s+=*(t+i);

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

}

程序執(zhí)行后的輸出結(jié)果是A.A.45B.20C.25D.36

7.若有定義“a[]={1,2,3,4,5,6,7,8,9,10};”,則“a[a[5]-a[7]/a[1]]”的值是()。

A.2B.4C.3D.10

8.若有定義“inta;longb;doublex,y;”,則以下選項(xiàng)中正確的表達(dá)式是()。

A.a=x<>yB.a%(int)(x-y)C.(a*y)%bD.y=x+y=x

9.設(shè)有程序段:intk=12:while(k=1)k=k-1:則下列描述中正確的是()。

A.while循環(huán)執(zhí)行10次B.循環(huán)是無限循環(huán)C.循環(huán)體語句一次也不執(zhí)行D.循環(huán)體語句執(zhí)行一次

10.二叉樹的第三層最少有________個(gè)結(jié)點(diǎn)。

A.0B.1C.2D.3

11.若變量已經(jīng)定義且正確賦值,則針對程序段“temp=a;a=b;b=temp;”,以下敘述中正確的是()。

A.C語言的順序結(jié)構(gòu)不允許將多條語句寫在一行里

B.程序順序結(jié)構(gòu)對于此段程序是從左至右依次執(zhí)行的

C.此程序段的執(zhí)行順序是,先執(zhí)行“b=temp;”,再執(zhí)行“a=b;”,最后執(zhí)行“temp=a;”

D.將此段程序的前兩個(gè)分號改成逗號,后面一個(gè)不變,則不能實(shí)現(xiàn)a和b值的交換

12.以下關(guān)于結(jié)構(gòu)化程序設(shè)計(jì)的敘述中正確的是()。

A.一個(gè)結(jié)構(gòu)化程序必須同時(shí)由順序、分支、循環(huán)三種結(jié)構(gòu)組成

B.結(jié)構(gòu)化程序使用goto語句會很便捷

C.在C語言中,程序的模塊化是利用函數(shù)實(shí)現(xiàn)的

D.由三種基本結(jié)構(gòu)構(gòu)成的程序只能解決小規(guī)模的問題

13.

14.有下列程序:main{inti,j,x=0;for(i=0,i<2;i++){x++;for(j=0;j<=3;j++){if(j%2)continue;x++:}x++:}printf("x=%d\n",x);}程序執(zhí)行后的輸出結(jié)果是()。A.x=4B.x=8C.x=6D.x=12

15.

16.

17.設(shè)a、b和、c都是int型變量,且a=3、b=4、c=5,則下面的表達(dá)式中,值為0的表達(dá)式為()

A.'a'&&'b'

B.a<=b

C.a‖b+c&&b-c

D.!(a-b)&&(!c‖1)

18.以下敘述中錯(cuò)誤的是()。

A.形參可以是常量、變量或表達(dá)式

B.實(shí)參可以是常量、變量或表達(dá)式

C.實(shí)參的類型應(yīng)與形參的類型賦值兼容

D.實(shí)參的個(gè)數(shù)應(yīng)與形參的個(gè)數(shù)一致

19.有以下程序段:#include<stdio.h>intj;floaty;charname[50];scanf(“%2d%f%s”,&j,&y,name);當(dāng)執(zhí)行上述程序段時(shí),從鍵盤上輸入555667777abc后,y的值為()。

A.566.0B.55566.0C.7777.0D.566777.0

20.下列程序是用來判斷數(shù)組中特定元素的位置所在的。#include<conio.h>#include<stdio.h>intfun(int*s,intt,int*k){inti;*k=0;for(i=0;i<t;i++)if(s[*k]<s[i])*k=i;returns[*k];}main(){inta[10]={876,675,896,101,301,401,980,431,451,777},k;fun

A.7,431B.6C.980D.6,980

二、2.填空題(20題)21.以下程序中給指針p分配3個(gè)double型動態(tài)內(nèi)存單元,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{double*p;

p=(double*)malloc((【】);

p[0]=1.5;p[1]=2.5;p[2]=3.5;

printf("%f%f%f\n",p[0],p[1],p[2]);

}

22.數(shù)據(jù)結(jié)構(gòu)分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),帶鏈的隊(duì)列屬于[]。

23.下列程序的輸出結(jié)果是______。

#include<stdio.h>

main()

{inta=2,b=-1,c=2;

if(a<b)

if(b<0)c=0;

elsec++;

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

}

24.設(shè)x、y、z均為int型變量,請寫出描述“x或y中至少有一個(gè)小于z”的表達(dá)式______。

25.以下程序運(yùn)行后的輸出結(jié)果是【】。

#include<stdio.h>

#defineS(x)4*x*x+1

main()

{inti=6,j=8;

prinff("%d\n",S(i+j));

}

26.為建立如下圖所示的存儲結(jié)構(gòu)(即每個(gè)結(jié)點(diǎn)兩個(gè)域,p是指向結(jié)點(diǎn)的指針域,data用以存放整型數(shù)),請將定義補(bǔ)充完整。

pdata

a

structlist

{【】;intdata;}a;

27.算法執(zhí)行過程中所需要的基本運(yùn)算次數(shù)稱為算法的______。

28.數(shù)據(jù)的邏輯結(jié)構(gòu)有線性結(jié)構(gòu)和______兩大類。

29.以下程序運(yùn)行后的輸出結(jié)果是______。

#include<string.h>

main()

{charch[]="abc",x[3][4];inti;

for(i=0;i<3;i++)strcpy(x[i],ch);

for(i=0;i<3;i++)printf("%s",&x[i][i]);

printf("\n");

}

30.數(shù)據(jù)模型按不同的應(yīng)用層次分為三種類型,它們是______數(shù)據(jù)模型、邏輯數(shù)據(jù)模型和物理數(shù)據(jù)模型。

31.數(shù)據(jù)庫是指按照一定的規(guī)則存儲在計(jì)算機(jī)中的【】的集合,它能被各種用戶共享。

32.軟件開發(fā)過程中所使用的資源一般包括:【】、軟件資源和硬件資源。

33.有如下程序段:

main(intargc,char*argv[])

{intn,i=0;

while(argv[1][i]!='\0')

{n=fun();i++;}

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

}

intfun()

{staticints=0;

s+=1;

returns;

}

假設(shè)程序經(jīng)編譯、連接后生成可執(zhí)行文件exam,exe,若鍵入如下命令行:

examl23<回車>

則運(yùn)行結(jié)果為【】。

34.數(shù)據(jù)模型按不同應(yīng)用層次分成3種類型,它們是概念數(shù)據(jù)模型、【】和物理數(shù)據(jù)模型。

35.設(shè)變量已正確定義為整型,則表達(dá)式n=i=2,++i,i++的值為【】。

36.下列程序?qū)⒍S數(shù)組a的行和列元素互換后存放到另一個(gè)二維數(shù)組b中。請?zhí)羁铡?/p>

main()

{inta[2][3]={{1,2,3),{4,5}},b[3][2],i,j;

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

{for(j=0;j<30++)

______;

}

}

37.下面程序的運(yùn)行結(jié)果是______。

main()

{inti=0,j=10,k=2,s=0;

{i+=k;

if(i>j)

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

break;}

s+=i;}}

38.有以下程序:

#include<stdio.h>

main()

{

charc;

while((c=getchar())!='?')putchar(--c);

}

程序運(yùn)行時(shí),如查從鍵盤輸入:Y?N?<回車>,則輸出的結(jié)果為______。

39.下面程序是把從終端讀入的20個(gè)字符作為字符串放在字符數(shù)組中,然后利用指針變量輸出上述字符串,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inti;chars[21],*p;

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

s[i]=getchar();

s[i]=【】;

p=【】;

while(*p)putchar(【】);

}

40.函數(shù)de1ete(s,i,n)的作用是從字符串s中刪除從笫i個(gè)字符開始的n個(gè)字符,請?zhí)羁铡?/p>

voidde1ete(chars[],inti,intn)

{intj,k,length=O;

whi1e(s[length])

【】

-i;

j=i;

}

if(【】)

{k=i+n;

if(i+n<=length)

whi1e(k<length)

s[j++]=s[k++];

s[j]='\0;}

三、1.選擇題(20題)41.C語言可執(zhí)行程序的開始執(zhí)行點(diǎn)是()。

A.包含文件中的第一個(gè)函數(shù)B.程序中第一個(gè)函數(shù)C.程序中的main()函數(shù)D.程序中第一條語句

42.若有以下結(jié)構(gòu)體,則正確的定義或引用是()。structTest{intx;inty;}v1;

A.Test.x=10;

B.Testv2;v2.x=10;

C.structTestv2;v2.x=10;

D.structTest.v2=10;

43.以下不屬于對象的基本特點(diǎn)的是()

A.分類性B.多態(tài)性C.繼承性D.封裝性

44.下列程序的輸出結(jié)果是______。#defineA100main(){inti=0,sum=0;do{if(i==(i/2)*2)continue;sum+=i;}while(++i<A);printf("%d\n",sum);}

A.2500B.2050C.4D.0

45.若有說明語句:charc=′\72′;則變量c

A.包含1個(gè)字符B.包含2個(gè)字符C.包含3個(gè)字符D.說明不合法,c的值不確定

46.在下列語句中,其含義為“q為一個(gè)指針的函數(shù),該指針指向整型數(shù)據(jù)”的定義語句是()。

A.int**q;B.int(*q)0;C.int*q;D.int*q();

47.對于長度為n的線性表,在最壞情況下,下列各種排序法所對應(yīng)的比較次數(shù)中正確的是()。

A.冒泡排序?yàn)閚/2B.冒泡排序?yàn)閚C.快速排序?yàn)閚D.快速排序?yàn)閚(n-1)/2

48.有以下程序main(){chara1='M',a2='m';printf("%c\n",(a1,a2));}以下敘述中正確的是()。

A.程序輸出大寫字母MB.程序輸出小寫字母mC.格式說明符不足,程序出錯(cuò)D.程序運(yùn)行時(shí)產(chǎn)生出錯(cuò)信息

49.以下敘述中正確的是______。A.預(yù)處理命令行必須位于源文件的開頭

B.在源文件的一行上可以有多條預(yù)處理命令

C.宏名必須用大寫字母表示

D.宏替換不占用程序的運(yùn)行時(shí)間

50.下列字符數(shù)組初始化語句中,不正確的是()。

A.charc[]='goodmorning';

B.char,c[20]="goodmoming";

C.charc[]={'a','b','c','d'};

D.charc[]={"goodmoming"};

51.下列選項(xiàng)中錯(cuò)誤的說明語句是

A.chara[]={′t′,′o′,′y′,′o′,′u′,′\0′};

B.chara[]={"toyou\0"};

C.chara[]="toyou\0";

D.chara[]=′toyou\0′;

52.有如下程序inta[10]={1,2,3,4,5,6,7,8,9,10};int*p=&a[3],b;b=p[5];則b的值是

A.5B.6C.9D.8

53.以下程序的輸出結(jié)果是______。main(){inti,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=i;for(i=0;i<3;i++)p[i]=a[i*(1+1)];for(i=0;i<3;i++)k+=p[i]*2;printf("%d\n",k);}

A.20B.21C.22D.23

54.以下程序的輸出結(jié)果是______。main(){intm=5;if(m++>5)printf("%d\n",m);elseprintf("%d\n",m--);}

A.7B.6C.5D.4

55.下列程序段的輸出結(jié)果為()。#include<stdio.h>main(){staticchara[]="language";char*p;p=a;for(p=a;p<a+8;p+=2)putchar(*p);}

A.languageB.lnugC.有語法錯(cuò)誤D.lang

56.以下選項(xiàng)中可以作為C語言合法常旱的是

A.-80B.-80C.-8e1.0D.-80.0e

57.若變量已正確定義,要求程序段完成5!的計(jì)算,不能完成此操作的程序段是______。

A.for(i=1,p=1;i<=5;i++)p*=i;

B.for(i=1;i<=5;i++){p=1;p*=i;}

C.i=1;p=1;while(i<=5){p*=i;i++;}

D.i=1;p=1;do{p*=i;i++;}while(i<=5);

58.設(shè)有關(guān)鍵碼序列(66,13,51,76,81,26,57,69,23),要按關(guān)鍵碼值遞增的次序排序,若采用快速排序法,并以第一個(gè)元素為劃分的基準(zhǔn),那么第一趟劃分后的結(jié)果為()。

A.23,13,51,57,66,26,81,69,76

B.13,23,26,51,57,66,81,76,69

C.23,13,51,57,26,66,81,69,76

D.23,13,51,57,81,26,66,69,76

59.下列敘述中正確的是()。

A.顯示器和打印機(jī)都是輸出設(shè)備B.顯示器只能顯示字符C.通常的彩色顯示器都有7種顏色D.打印機(jī)只能打印字符和表格

60.假定w、x、y、m均為int型變量,則執(zhí)行下列的語句后,m的值是()。w=6,x=4,y=3;m=(w<x)?w:x;m=(m<y)?m:y;

A.3B.4C.5D.6

四、選擇題(20題)61.設(shè)有條件表達(dá)式:(EXP)?i++;j--,則以下表達(dá)式中(EXP)完全等價(jià)的是()。

A.(EXP==0)B.(EXP!=0)C.(EXP==1)D.(EXP!=1)

62.數(shù)據(jù)庫設(shè)計(jì)中反映用戶對數(shù)據(jù)要求的模式是()。

A.內(nèi)模式B.概念模式C.外模式D.設(shè)計(jì)模式

63.若有定義floatX=1.5;inta=1,b=3,C=2;,則正確的switch語句是()。

A.

B.

C.

D.

64.以下敘述中正確的是

A.用C程序?qū)崿F(xiàn)的算法必須要有輸入和輸出操作

B.用C程序?qū)崿F(xiàn)的算法可以沒有輸出但必須要有輸入

C.用C程序?qū)崿F(xiàn)的算法可以沒有輸入但必須要有輸出

D.用C程序?qū)崿F(xiàn)的算法可以既沒有輸入也沒有輸出

65.最常用的一種基本數(shù)據(jù)模型是關(guān)系數(shù)據(jù)模型,對于它的表示應(yīng)采用

A.樹B.網(wǎng)絡(luò)C.圖D.二維表

66.

67.

68.有如下程序段

voidfunc(int*a,intb[])

{b[0]=*a+6;}

main()

{inta,b[5]={0};

a=0;b[0]=3;

func(&a,b);

printf("%d\n",b[0]);

}

程序運(yùn)行后輸出的結(jié)果是

A.6B.7

C.8D.9

69.程序調(diào)試的任務(wù)是()。

A.設(shè)計(jì)測試用例B.驗(yàn)證程序的正確性C.發(fā)現(xiàn)程序中的錯(cuò)誤D.診斷和改正程序中的錯(cuò)誤

70.

71.有以下程序:

#include<stdio.h>

main()

{char*s="[2]34";intk=0,a=0;

whil(s[k+1]!=\0)

{k++;

if(k%2=o){a=a+(s[k]-0+1);continue;}

a=a+(s[k]-0);

printf("k=%da=%d\n",k,a);

}

程序運(yùn)行后的輸出結(jié)果是()。

A.k=6a=11B.k=3a=14C.k=4a=12D.k=5a=15

72.

73.有以下程序:

則以下函數(shù)調(diào)用語句錯(cuò)誤的是()。

A.

B.

C.

D.

74.

75.有以下程序:

程序運(yùn)行后的輸出結(jié)果是()。

A.33B.197C.143D.28

76.執(zhí)行下列程序后,變量a,b,C的值分別是()。intx=5,y=4;inta,b,c;a=(--x==y++)?X:++y;b=++x:c=y:A.a=5,b=5,c=5B.a=4,b=5,c=5C.a=5,b=6,c=5D.a=1,b=5,c=6

77.下列程序的運(yùn)行結(jié)果為()。#include<stdio.h>main{structdate{intyear,month,day;}today;printf("%d\n",sizeof(structdate));}A.8B.6C.10D.12

78.語句“printf(”a\bhow\’are\’y\\\bou\n”);”的輸出結(jié)果是()。A.A.a\bhow\'are\'y\\bou

B.a\bhow\’are\’y\bou

C.how'are'you

D.ahow'are'y\bou

79.“商品”與“顧客”兩個(gè)實(shí)體集之間的聯(lián)系一般是()。

A.一對一B.多對一C.一對多D.多對多

80.有以下程序

五、程序改錯(cuò)題(1題)81.下列給定的程序中,函數(shù)proc()的功能是:用選擇法對數(shù)組中的m個(gè)元素按從小到大的順序進(jìn)行排序。

例如,排序前的數(shù)據(jù)為:1132-5214

則排序后的數(shù)據(jù)為:-52111432

請修改程序中的錯(cuò)誤,使它能得到正確結(jié)果。

注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

六、程序設(shè)計(jì)題(1題)82.n個(gè)人的成績存放在score數(shù)組中,請編寫函數(shù)proc(),它的功能是將低于平均分的人數(shù)作為函數(shù)值返回,將低于平均分的分?jǐn)?shù)放在down所指的數(shù)組中。例如,當(dāng)score數(shù)組中的數(shù)據(jù)為{99,80,40,56,59,84,60,76,100}時(shí),函數(shù)返回的人數(shù)應(yīng)該是4,down中的數(shù)據(jù)應(yīng)為40565960。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.D

2.A本題考查的是for循環(huán)與二維數(shù)組的定義和引用。當(dāng)定義二維數(shù)組的初始化列表只使用一重花括號時(shí),其中的每個(gè)值依次代表從第l行的第1個(gè)元素起,直到第l行滿,接著代表第2行、第3行……的每一個(gè)元素。程序中的循環(huán)將循環(huán)3次,循環(huán)變量i的值分別是0、1、2,所以3次循環(huán)中輸出的數(shù)分別是:t[2一O][D]、t[2-1][1]、t[2~2]121,即t[2][0]、t[1][l]、t[0][2],所以最后輸出的結(jié)果為357。故應(yīng)該選擇A)。

3.A根據(jù)題目中的定義可知,“sizeof(p)”計(jì)算的是數(shù)組p中所有元素所占用的字節(jié)數(shù),而不是char型數(shù)據(jù)所占的字節(jié)數(shù)。故本題答案為A選項(xiàng)。

4.D

5.A表達(dá)式“ch-‘0’’將數(shù)字字符轉(zhuǎn)為數(shù)字。輸出的格式為%d。while循環(huán)從‘1’~‘8’,因此輸出的結(jié)果是12345678。故本題答案為A選項(xiàng)。

6.C解析:統(tǒng)計(jì)1~9九個(gè)數(shù)中的奇數(shù)和,此題考察指向數(shù)組的指針,C語言規(guī)定數(shù)組名代表數(shù)組的首地址,也就是第一個(gè)元素的地址。因此*(t+i)代表數(shù)組的第i+1個(gè)元素。程序運(yùn)行的結(jié)果是1+2+3+4+5+6+7+8+9=25。

7.C題干中,數(shù)組a包含10個(gè)元素。其中a[5]為6,a[7]為8,a[1]為2,所以表達(dá)式“a[a[5]-a[7]/a[1]]”等價(jià)于“a[6-8/2]”,等價(jià)于a[2],即3。故本題答案為C選項(xiàng)。

8.BC語言中沒有“<>”運(yùn)算符,所以A選項(xiàng)錯(cuò)誤。運(yùn)算符“%”的左右兩個(gè)操作數(shù)必須為整型數(shù)據(jù),所以B選項(xiàng)正確。表達(dá)式“a*y”的結(jié)果為double型,所以C選項(xiàng)錯(cuò)誤。不能將值賦給像“x+y”這樣的表達(dá)式,所以D選項(xiàng)錯(cuò)誤。故本題答案為B選項(xiàng)。

9.C本題考查while,while循環(huán)表達(dá)式k-1是個(gè)賦值表達(dá)式而不是邏輯表達(dá)式,k的初值為l2不符合循環(huán)條件,所以循環(huán)體語句一次也不執(zhí)行。

10.B

11.BC語言允許將多條語句寫在一行,選項(xiàng)A錯(cuò)誤;題干中的語句是從左至右依次執(zhí)行的,選項(xiàng)B正確,選項(xiàng)C錯(cuò)誤。題干中的程序前兩個(gè)分號改成逗號,就構(gòu)成了逗號表達(dá)式。逗號表達(dá)式會依次從左到右計(jì)算各個(gè)表達(dá)式,整個(gè)表達(dá)式的值是最后一個(gè)表達(dá)式的值,所以此例也可以實(shí)現(xiàn)a和b值的交換,選項(xiàng)D錯(cuò)誤。故本題答案為B選項(xiàng)。

12.C解析:結(jié)構(gòu)化程序設(shè)計(jì)是指將待開發(fā)的軟件系統(tǒng)劃分為若干個(gè)相互獨(dú)立的模塊,與具體的語句結(jié)構(gòu)無關(guān)。Goto語句的濫用會導(dǎo)致程序的可讀性降低。三種基本結(jié)構(gòu)構(gòu)成的程序依然可以解決大規(guī)模的問題,只是不利于復(fù)用。

13.B

14.B在第1次外層for循環(huán)中,首先x++得到x=1。進(jìn)入到內(nèi)層for循環(huán),只有循環(huán)j的值為奇數(shù)時(shí),變量x的值才自加1,所以在內(nèi)層for循環(huán)執(zhí)行過程中,變量x的值自加兩次,當(dāng)退出內(nèi)層for循環(huán)時(shí),x=3,然后執(zhí)行x++,得到x=4。在進(jìn)入執(zhí)行第2次外層for循環(huán)中,首先x++得到x=5。進(jìn)入到內(nèi)層for循環(huán),只有循環(huán)變量j的值為奇數(shù)時(shí),變量x的值才自加1,所以在內(nèi)層for循環(huán)執(zhí)行過程中,變量X的值自加1兩次,當(dāng)退出內(nèi)層for循環(huán)時(shí),x=7,然后執(zhí)行x++,得到x=8,所以打印輸出變量x的值為8。

15.D

16.C

17.D

18.A函數(shù)中,形參必須是變量,實(shí)參可以是常量、變量或表達(dá)式,選項(xiàng)A錯(cuò)誤,選項(xiàng)B正確;實(shí)參的個(gè)數(shù)和類型要與形參一致,選項(xiàng)C、D正確。本題答案為A選項(xiàng)。

19.Ascanf是格式輸入函數(shù),即按用戶指定的格式從鍵盤上把數(shù)據(jù)輸入指定的變量中。其中,在百分號(%)與格式碼之間的整數(shù)用于限制從對應(yīng)域讀入的最大字符數(shù)。所以j的值為55,y的值為566.0,字符數(shù)組name的值為7777abc。故本題答案為A選項(xiàng)。

20.D解析:本題中直接使用指針變量k,但在使用時(shí)要注意對k的指針運(yùn)算。此外,一開始應(yīng)知道*k的值為數(shù)組中的某一下標(biāo)值,即*k=0,本函數(shù)的功能是找出數(shù)組中的最大元素的位置及最大元素的值。

21.3*sizeof(double)或size(double)*3或24或3*8或8*33*sizeof(double)或size(double)*3或24或3*8或8*3解析:該函數(shù)的調(diào)用格式是malloc(n),作用是申請n個(gè)字符的存儲單元,并返回該存儲區(qū)的首地址,實(shí)際調(diào)用的時(shí)候可在前面加上“(類型說明符*)”,以轉(zhuǎn)換成需要的類型的地址。所以在此空白處應(yīng)該填寫3*sizeof(double)或size(double)*3或其他等價(jià)的表達(dá)式。

22.線性結(jié)構(gòu)線性結(jié)構(gòu)解析:與棧類似,隊(duì)列也是線性表,也町以采用鏈?zhǔn)酱鎯Y(jié)構(gòu)。

23.22解析:分析程序,a=2,b=-1,c=2時(shí),if語句的表達(dá)式a<b不成立,不再往下判斷,直接退出if語句,執(zhí)行后面的輸出語句,程序結(jié)束。在這個(gè)程序中a、b、c的值沒做任何改變。

24.x<z‖y<zx<z‖y<z解析:本題考查邏輯運(yùn)算符和邏輯表達(dá)式。x或y中至少有一個(gè)小于z,即x<z或y<z,是“或”的關(guān)系。

25.8181解析:帶參數(shù)的宏定義是按#define命令行中指定的字符串從左到右進(jìn)行替換。本題替換后得到:4*i+j*i+j+1,代入i,j的值得81。

26.structlist*nextstructlist*next解析:定義的指針類型變量next也應(yīng)該是結(jié)構(gòu)體類型的。

27.時(shí)間復(fù)雜度時(shí)間復(fù)雜度解析:算法在執(zhí)行過程中所執(zhí)行的基本運(yùn)算的次數(shù),也就是執(zhí)行算法所需要的計(jì)算工作量,稱為算法的時(shí)間復(fù)雜度。

28.非線性結(jié)構(gòu)非線性結(jié)構(gòu)

29.abcbcc

30.概念概念

31.數(shù)據(jù)數(shù)據(jù)解析:數(shù)據(jù)庫是由一個(gè)互相關(guān)聯(lián)的數(shù)據(jù)的集合和一

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論