2022年內(nèi)蒙古自治區(qū)通遼市全國(guó)計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)_第1頁
2022年內(nèi)蒙古自治區(qū)通遼市全國(guó)計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)_第2頁
2022年內(nèi)蒙古自治區(qū)通遼市全國(guó)計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)_第3頁
2022年內(nèi)蒙古自治區(qū)通遼市全國(guó)計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)_第4頁
2022年內(nèi)蒙古自治區(qū)通遼市全國(guó)計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)_第5頁
已閱讀5頁,還剩73頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

2022年內(nèi)蒙古自治區(qū)通遼市全國(guó)計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(20題)1.

2.表達(dá)式18/4*sqrt(4.0)/8值的數(shù)據(jù)類型為()。A.intB.floatC.doubleD.不確定

3.下列關(guān)于線性鏈表的描述中正確的是()。

A.存儲(chǔ)空間不一定連續(xù),且各元素的存儲(chǔ)順序是任意的

B.存儲(chǔ)空間不一定連續(xù),且前件元素一定存儲(chǔ)在后件元素的前面

C.存儲(chǔ)空間必須連續(xù),且各前件元素一定存儲(chǔ)在后件元素的前面

D.存儲(chǔ)空間必須連續(xù),且各元素的存儲(chǔ)順序是任意的

4.

5.字符組a[20]和b[20],下面正確的輸出語句是()。A.put(a,b)

B.prinf(“%s,%s”,a[],b[])

C.putchar(a,b)

D.puts(a);puts(b)

6.以下正確的字符常量是()。A.'\089'B.'\012'C.'\0XAB'D.'\0xab'

7.以下選項(xiàng)中能表示合法常量的是()。

A.1,200B.1.5E2.0C.‘\’D.“\007”

8.

有如下程序:

main()

{intn[5]={0,0,0},i,k=2;

for(i=0;i&printf("%d\n",n[k]););

}

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

A.不確定的值B.2C.1D.0

9.以下針對(duì)相應(yīng)語句的注釋中,說法錯(cuò)誤的是()。

A.int*pt[2];/*pt是一個(gè)指針數(shù)組名*/

B.int(*pt)[2];/*pt是一維數(shù)組名*/

C.int(*pt)();/*pt是指向函數(shù)的指針*/

D.int*pt();/*pt是一個(gè)函數(shù)名*/

10.下列正確的實(shí)型常量是()。

A.E3.4B.-12345C.2.2eO.8D.4

11.在線索化樹中,每個(gè)結(jié)點(diǎn)必須設(shè)置一個(gè)標(biāo)志來說明它的左、右鏈指向的是樹結(jié)構(gòu)信息,還是線索化信息,若0標(biāo)識(shí)樹結(jié)構(gòu)信息,1標(biāo)識(shí)線索,對(duì)應(yīng)葉結(jié)點(diǎn)的左右鏈域,應(yīng)標(biāo)識(shí)為()。

A.00B.01C.10D.11

12.在長(zhǎng)度為n的有序線性表中進(jìn)行二分查找,最壞情況下需要比較的次數(shù)是A.O(n)

B.O(n2)

C.O(log2n)

D.O(nlog2n)

13.已知inta=2,b=3;則執(zhí)行表達(dá)式a=a<b后,變量a的值為()。

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

14.棧的特點(diǎn)是B,隊(duì)列的特點(diǎn)是()。

A.先進(jìn)先出B.先進(jìn)后出

15.下列各排序法中,最壞情況下的時(shí)間復(fù)雜度最低的是()

A.希爾排序B.快速排序C.堆排序D.冒泡排序

16.在C語言程序中,main函數(shù)的位置()

A.必須作為第一個(gè)函數(shù)B.必須作為最后一個(gè)函數(shù)C.可以任意D.必須放在它所調(diào)用的函數(shù)之后

17.

18.在具有n個(gè)結(jié)點(diǎn)的單鏈表中,實(shí)現(xiàn)()的操作,其算法的時(shí)間復(fù)雜度是O。

A.求鏈表的第i個(gè)結(jié)點(diǎn)B.在地址為P的結(jié)點(diǎn)之后插入一個(gè)結(jié)點(diǎn)C.刪除表頭結(jié)點(diǎn)D.刪除地址為P的結(jié)點(diǎn)的后繼結(jié)點(diǎn)

19.在執(zhí)行()操作時(shí),需要使用隊(duì)列做輔助存儲(chǔ)空間。

A.查找哈希(Hash)表B.深度優(yōu)先搜索網(wǎng)C.前序(根)遍歷二叉樹D.廣度優(yōu)先搜索網(wǎng)

20.若變量已正確定義,在“if(W)Printf(“%d\n”,k);”中,以下不可替代W的是()。

A.a<>b+cB.ch=getchar()C.a==b+cD.a++

二、2.填空題(20題)21.下列函數(shù)從字符數(shù)組s[]中刪除和c一樣的字符,請(qǐng)?jiān)谙旅鏅M線處填空。voiddelete(s,C)chars[],c;{inti,j;for(i=j=0;();i++)if(s[i]!='c')s[j++]=s[i];s[j]="\0";}

22.若按功能劃分,軟件測(cè)試的方法通常分為白盒測(cè)試方法和【】測(cè)試方法。

23.數(shù)據(jù)流圖的類型有【】和事務(wù)型。

24.以下程序的輸出結(jié)果是()。#include<stdio.h>intfun(intx){staticintt=0;return(t+=x);}main(){ints,i;for(i=1;i<=5;i++)s=fun(i);printf("%d\11",s);}

25.若定義#definePI3.14159,則執(zhí)行完下列程序后輸出結(jié)果是______。

#definePI3.14159;printf("PI=%f",PI);

26.若輸入5、9,以下程序的運(yùn)行結(jié)果為【】。

main()

{inta,b,*pt1,*pt2;

printf("inputa,b:");

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

pt1=&a;

pt2=&b;

if(a<b)swap(pt1,pt2);

printf("\n%d,%d\n",*pt1,*pt2);

}

swap(p1,p2)

int*p1,*p2;

{int*p;

p=p1;

p1=p2;

p2=p;

}

27.在面向?qū)ο蠓椒ㄖ?,信息隱蔽是通過對(duì)象的______性來實(shí)現(xiàn)的。

28.以下程序中,函數(shù)SumColumMin的功能是:求出M行N列二維數(shù)組每列元素中的最小值,并計(jì)算它們的和值,和值通過形參傳回主函數(shù)輸出。請(qǐng)?zhí)羁眨?/p>

#include<stdio.h>

#defineM2

#defineN4

voidSumColumMin(inta[M][N],int*sum)

{inti,j,k,s=0;

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

k=O;

for(j=1;j<M;j++)

if(a[k][i]>a[j][i])k=j;

s+:【】;

}

【】=s;

}

main()

{intx[M][N]={3,2,5,1,4,1,8,3},s;

SumColumMin(【】);

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

}

29.二分法查找僅限于這樣的表:表中的數(shù)據(jù)元素必須有序,其存儲(chǔ)結(jié)構(gòu)必須是______。

30.下述函數(shù)用于統(tǒng)計(jì)一行字符中的單詞個(gè)數(shù),單詞之問用空格分隔。

word_num(str)

charstr[];

{inti,num=0,word=0;

fot(i=0;str[i]!=【】;i++)

if【】=='')word=0;

elseif(word==0)

{

word=1;

【】;

}

return(num);

}

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

#include<stdio.h>

#defineSIZE12

main()

{chars[SIZE];inti;for(i=0;i<SIZE;i++)s[i]]='A'+i+321;

sub(s,7,SLZE-1);

for(i=0;i<SIZE;i++)printf("%c",s[i]);

printf("\n");}

sub(char*a,inttl,intt2)

{charCh;

while(t1<t2)

{ch=*(a+t

32.軟件定義時(shí)期主要包括______和需求分析兩個(gè)階段。

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

main()

{int=0;

while(n++<=1);

printf("%d,",n);

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

}

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

main()

{inta=3,b=4,c=5,t=99;

if(b<a&&a<c)t=a;a=C;c=t;

if(a<c&&b<c)t=b;b=a;a=t

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

}

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

main()

{

intx=0210;

printf("%X\n",x);

}

36.有以下定義和語句,則sizeof(a)的值是【】,而sizeof(a.share)的值是【】。

structdatc

{intday;

intmouth;

intyear:

union{intshare1;

floatshare2:

}share;

}a;

37.請(qǐng)?jiān)谝韵鲁绦虻谝恍械南聞澗€處填寫適當(dāng)內(nèi)容,使程序能正確運(yùn)行。

【】(double,double);

main()

{doublex,y;

seanf("%1f%1f",&x,&y);

pfintf("%1f\n",max(x,y));

}

doublemax(doublea,doubleb)

{return(a>b?a:b);}

38.下面的程序可對(duì)指定字符串進(jìn)行從大到小排序,請(qǐng)將程序填完整。(注:程序采用了冒泡排序算法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n->1)

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

if(str[i]<str[i+1])

{temp=【】;

str[i]=str[i+1];

【】=temp;

}

printf(【】);

}

39.以下程序中,函數(shù)SumColumMin的功能是:求出M行N列二維數(shù)組每列元素中的最小值,并計(jì)算它們的和值。和值通過形參傳回主函數(shù)輸出。請(qǐng)?zhí)羁铡?/p>

#defineM2

#defineN4

voidSumColumMin(inta[M][N],int*sum)

{inti,j,k,s=0;

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

{k=0:

for(j=1;j<M;j++)

if(a[k][i]>a[j][i]k=j;

s+=______;

}

______=s:

}

main()

{intx[M][N]={3,2,5,1,4,1,8.3},s;

sumColumMin(______)

printf("%d\n".s):

}

40.下面的程序可對(duì)指定字符串中的字符串進(jìn)行從大到小排序,請(qǐng)將程序填完整。(注:程序采用了冒泡排序算法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n->1)

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

if(str[i]<str[i+1])

{temp=【】;

str[i]=str[i+1];

【】=temp;

}

printf(【】);

}

三、1.選擇題(20題)41.在計(jì)算機(jī)中,算法是指()。

A.查詢方法B.加工方法C.解題方案的準(zhǔn)確而完整的描述D.排序方法

42.設(shè)有如下定義:intx=1,y=-1;則下列語句的輸出結(jié)果是______。printf("%d\n",(x--&++y));

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

43.閱讀以下函數(shù)fun(char*sl,char*s2){inti:0;while(sl[i]==s2[i]&&s2[i]!='\0')i++;return(sl[i]=='\0'&&s2[i]=='\0');}此函數(shù)的功能是

A.將s2所指字符申賦給s1

B.比較s1和s2所指字符串的大小,若s1比s2的大,函數(shù)值為1,否則函數(shù)值為0

C.比較s1和s2所指字符串是否相等,若相等,函數(shù)值為1,否則函數(shù)值為o

D.比較s1和s2所指字符串的長(zhǎng)度,若s1比s2的長(zhǎng),函數(shù)值為1,否則函數(shù)值為o

44.若程序中已包含頭文件stdio.h,以下選項(xiàng)中,正確運(yùn)用指針變量的程序段是()。

A.int*i=NULL;

B.float*f=NULL;

C.chart='m',*c=&t;

D.long*Lscanf("%d",i);*f=10.5;*c=&t;L='\0';

45.下面程序段的執(zhí)行結(jié)果為()。inti=3,j=0,k=0;for(;i>0;--i){++k;do{++j;if(i!=j)break;++k;}while(j<5);}printf("i=%dj=%dk=%d\n",i,j,k);

A.i=0j=4k=12B.i=0j=5k=5C.i=0j=4k=4D.i=0j=3k=3

46.以下說法不正確的是

A.C程序中必須有一個(gè)main()函數(shù),C程序是從main()函數(shù)的第1條語句開始執(zhí)行的。

B.非主函數(shù)都是在執(zhí)行主函數(shù)時(shí),通過函數(shù)調(diào)用或嵌套調(diào)用而得以執(zhí)行的。

C.C程序中的main()函數(shù)必須放在程序的開始位置。

D.C程序中的main()函數(shù)位置可以任意指定。

47.若有如下程序;main(){chara[][9]={"china","Japan","USA","France"};printf("\'%s\'\n",a[2]);}則程序運(yùn)行后的輸出結(jié)果是()

A.'Japan'B.'USA'C.USAD.'inaJapanUSAFrance'

48.以下程序運(yùn)行后的輸出結(jié)果是______。main(){inta=1,b=2,c=3;if(c=a)printf("%d\n",c);elseprintf("%d\n",b);}

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

49.若有以下定義:structfink{intdata;structlink*next;}a,b,c,*p,*q;且變量a和b之間已有如下圖所示的鏈表結(jié)構(gòu):

指針p指向變量a,q指向變量c。則能夠把c插入到a和b之間并形成新的鏈表的語句組是:

A.a.next;c;c.next=b;

B.p.next=q;q.next=p.next;

C.p->next=&c;q->next=p->next;

D.(*p).next=q;(*q).next=&b;

50.下述程序的輸出結(jié)果是()。#include<stdio.h>voidmain(){inta[5]={1,2,3,4,5};int*p=a,**q=&p;printf("%d",*(p++));printf("%d",**q);}

A.22B.11C.34D.12

51.下列程序是將一個(gè)十進(jìn)制正整數(shù)轉(zhuǎn)化為一個(gè)八進(jìn)制數(shù),在程序的空白處應(yīng)填入的語句是_______。#include<stdio.h>main(){inti=9,a,b[10]={0};scanf("%d",&A);sub(a,B);for(;i>=0;i--)printf("%d",b[i]);}sub(intc,intd[]){inte,i=0;while(c!=0){e=c%8;d[i]=e;________.i++;}return;}

A.c=e/8B.c=c%8C.c=c/8D.c=e%8

52.若有定義inta[2][3];,則對(duì)a數(shù)組的第i行第j列(假設(shè)i,j已正確說明并賦值.元素值的正確引用為()。

A.*(*(a+i.+j.B.(a+i.[j]C.*(a+i+j.D.*(a+i.+j

53.以下函數(shù)值的類型是_______。fun(floatx){floaty;y=3*x-4;returny;}

A.intB.不確定C.voidD.float

54.設(shè)有如下說明:typedefstruct{intn;charc;doublex;}STD;則以下選項(xiàng):能正確定義結(jié)構(gòu)體數(shù)組并賦初值的語句是()。

A.STDtt[2]={{1,'A',62},{2,'B',75}};

B.STDtt[2]={1,"A",62,2,"B",75};

C.struettt[2]={{1,'A'},{2,'B'}};

D.structtt[2]={{1,"A",62.5},{2,"B",75.0}};

55.若有運(yùn)算符:>、=、<<、%、sizeof,則它們按優(yōu)先級(jí)(由高至低)的正確排列順序?yàn)?)。

A.%、sizeof、>、<<、=

B.sizeof、%、>、=、<<

C.sizeof、<<、>、%、=

D.sizeof、%、<<、>、=

56.下面程序的輸出結(jié)果是()main(){intx=2,y=0,z;x+=3+2;printf("%d",x);x*=y(tǒng)=z=4;printf("%d",x);}

A.728B.無法計(jì)算C.7,4D.8,4

57.微型機(jī)系統(tǒng)中,對(duì)輸入設(shè)備趕進(jìn)行管理的基本程序模塊(BIOS)存放在()

A.RAM中B.ROM中C.硬盤中D.寄存器中

58.下列數(shù)據(jù)結(jié)構(gòu)中,不是線性結(jié)構(gòu)的是()。

A.線性鏈表B.帶鏈的隊(duì)列C.帶鏈的棧D.二叉鏈表

59.若指針p已正確定義,要使p指向兩個(gè)連續(xù)的整型動(dòng)態(tài)存儲(chǔ)單元,不正確的語句是______。

A.p=2*(int*)malloc(sizeof(int));

B.p=(int*)mallet(2*sizeof(int));

C.p=(int*)malloc(2*2);

D.p=(int*)calloc(2,sizeof(int));

60.以下程序的輸出結(jié)果是()#include<stdio.h>main(){inti=0,a=0;while(i<20){for(;;){if((i%10)==0)break;elsei--;}i+=11;a+=i;}printf("%d\n",A);}

A.21B.32C.33D.11

四、選擇題(20題)61.兩次運(yùn)行下面的程序,如果從鍵盤上分別輸入6和3,則輸出結(jié)果是()。

if(x++>5)printf("%d",x);

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

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

62.有以下程序:

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

A.0987654321

B.4321098765

C.5678901234

D.0987651234

63.

64.在“文件包含,預(yù)處理語句的使用形式中,當(dāng)#include后面的文件名用(雙引號(hào))括時(shí),尋找被包含文件的方式是()。

A.直接按系統(tǒng)設(shè)定的標(biāo)準(zhǔn)方式搜索目錄

B.先在源程序所在的目錄搜索,如沒找到,再按系統(tǒng)設(shè)定的標(biāo)準(zhǔn)方式搜索

C.僅僅搜索源程序所在目錄

D.僅僅搜索當(dāng)前目錄

65.以下關(guān)于宏的敘述中正確的是()。

A.宏替換沒有數(shù)據(jù)類型限制

B.宏定義必須位于源程序中所有語句之前

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

D.宏調(diào)用比函數(shù)調(diào)用耗費(fèi)時(shí)間

66.

67.設(shè)有以下說明語句:

則下面敘述中正確的是()。

A.PER是結(jié)構(gòu)體變量名

B.PER是結(jié)構(gòu)體類型名

C.typedefstruct是結(jié)構(gòu)體類型

D.struct是結(jié)構(gòu)體類型名

68.有以下程序執(zhí)行后的輸出結(jié)果是()。

A.5,11B.5,5C.11,11D.11,5

69.

70.

71.若有定義語句:

char}sl=‘’0K”,:Its2=”ok”;

以下選項(xiàng)中,能夠輸出“OK”的語句是()。

A.if(strcmp(sl,s2)!=0)puts(s2);

B.if(strcmp(sl,s2)!=0)puts(s1);

C.if(strcmp(sl,s2)==1)puts(s1);

D.if(strcmp(sl,s2)==0)puts(s1);

72.高有定義inta;floatb;執(zhí)行scanf("%2d%f",&a,&b);語句時(shí),若從鍵盤輸入876<空格>854.0<回車>,a和b的值分別是()。

A.876和543.000000

B.87和6.000000

C.87和543.000000

D.76和543.000000

73.有以下程序:

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

A.Qian,f,95,92

B.Qian,m,85,90

C.Zhao,f,95,92

D.Zhao,m,85,90

74.第

1

若有運(yùn)算符<<,sizeof,^,&=,則它們按優(yōu)先級(jí)由高至低的正確排列次序是

A.sizeof,&=,<<,^

B.sizeof,<<,^,&=

C.^,<<,sizeof,&=

D.<<,^,&=,sizeof

75.有以下程序:

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

A.7,4B.4,10C.8,8D.10,10

76.下面的函數(shù)調(diào)用語句中func函數(shù)的實(shí)參個(gè)數(shù)是()。func((f2v1,v2),(v3,v4,v5),(v6,max(v7,v8)))

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

77.

78.

79.數(shù)據(jù)庫設(shè)計(jì)包括兩個(gè)方面的設(shè)計(jì)內(nèi)容,它們是()

A.概念設(shè)計(jì)和邏輯設(shè)計(jì)B.模式設(shè)計(jì)和內(nèi)模式設(shè)計(jì)C.內(nèi)模式設(shè)計(jì)和物理設(shè)計(jì)D.結(jié)構(gòu)特性設(shè)計(jì)和行為特性設(shè)計(jì)

80.

五、程序改錯(cuò)題(1題)81.下列給定程序中,函數(shù)proc的功能是:讀入一個(gè)字符串(長(zhǎng)度<20),將該字符串中的所有字符按ASCII碼升序排序后輸出。例如,輸入opdye,則應(yīng)輸出deopy。請(qǐng)修改程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include<string.h>#include<stdlib.h>#include<conio.h>#include<stdio.h>//****found****intproc(charstr[]){charc;unsignedi,j;for(i=0;i<strlen(str)-1;i++)for(j=i+1;j<strlen(str);j++)if(str[i]>str[j]){c=str[j]://****found****str[j]=str[i++];str[i]=c;}}voidmain{charstr[81];system("CLS");printf("\nPleaseenteracharacterstring:");gets(str);printf("\n\nBeforesorting:\n%s",str);proc(str);printf("\nAftersortingdecendingly:\n%s",str);}

六、程序設(shè)計(jì)題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是將s所指字符串中ASCII值為偶數(shù)的字符刪除,字符串中剩余字符形成一個(gè)新字符串并將其存放在t所指的數(shù)組中。例如,若s所指字符串中的內(nèi)容為“ABCDEFG123456”,其中字符B的ASCII值為偶數(shù),字符2的ASCII值為偶數(shù),都應(yīng)當(dāng)刪除,其他依此類推。最后t所指的字符串中的內(nèi)容應(yīng)是“ACEG135”。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語句。試題程序:#include<stdlib.h>#include<stdio.h>#include<string.h>#include<conio.h>voidfun(char*s,chart[]){}voidmain(){ chars[100],t[100]; system(“CLS”); printf(“\nPleaseenterstrings:”); scanf(“%s”,s); fun(s,t); printf(“\nTheresultis:%s\n”,t);}

參考答案

1.C

2.C因?yàn)閏語言數(shù)據(jù)進(jìn)行計(jì)算時(shí)數(shù)據(jù)類型會(huì)由低級(jí)向高級(jí)進(jìn)行隱式轉(zhuǎn)化,sqrt函數(shù)得到的是double類型,比其他的int數(shù)據(jù)類型高,所以整個(gè)結(jié)果得到的是double類型。

3.A解析:線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)中的結(jié)點(diǎn)空間是動(dòng)態(tài)生成的,它們?cè)趦?nèi)存中的地址可能是連續(xù)的,也可能是不連續(xù)的。

4.C

5.D難易程度:中

6.B題目中的選項(xiàng)都以轉(zhuǎn)義字符“\\”開頭,“\\ddd”表示3位八進(jìn)制數(shù)代表的一個(gè)ASCII字符,“\\xhh”表示2位十六進(jìn)制數(shù)代表的一個(gè)ASCII字符。選項(xiàng)A中“089”是不合法的八進(jìn)制數(shù),錯(cuò)誤;選項(xiàng)C、D中“\\0X”或“\\0x”不合法,錯(cuò)誤;選項(xiàng)B表示八進(jìn)制數(shù)012代表的ASCII字符,正確。本題答案為B選項(xiàng)。

7.DA選項(xiàng)中整型常量應(yīng)表示為1200,數(shù)字中不能包含逗號(hào)。B選項(xiàng)中E后面的指數(shù)必須為整數(shù)。C選項(xiàng)中轉(zhuǎn)義字符以“\\”開始,若要表示字符“\\”,應(yīng)寫為“\\\\”。故本題答案為D選項(xiàng)。

8.D

\n本題for循環(huán)中,當(dāng)i=0時(shí),判斷條件i&printf('%d\n',n[k]),此時(shí)i的值是0,輸出n[k]的值也為0,0&0結(jié)果還是0,條件不成立,退出循環(huán)。所以最后輸出結(jié)果為0。

\n

9.B選項(xiàng)A定義了一個(gè)數(shù)組pt,它包含兩個(gè)整型指針元素,所以pt是一個(gè)指針數(shù)組名,正確;選項(xiàng)B定義了一個(gè)數(shù)組指針Pt,pt指向一個(gè)數(shù)組,該數(shù)組包含兩個(gè)整型元素,錯(cuò)誤;選項(xiàng)C定義了一個(gè)函數(shù),pt是函數(shù)指針,指向的函數(shù)沒有參數(shù),返回類型為整型,正確;選項(xiàng)D定義了一個(gè)函數(shù),函數(shù)名為pt,函數(shù)返回整型指針類型,正確。故本題答案為B選項(xiàng)。

10.B解析:實(shí)型常量有兩種書寫形式:①小數(shù)形式,它由符號(hào)、整數(shù)部分、小數(shù)點(diǎn)及小數(shù)部分組成;②指數(shù)形式,由十進(jìn)制小數(shù)形式加上指數(shù)部分組成,其形式為十進(jìn)制小數(shù)e指數(shù)或十進(jìn)制小數(shù)E指數(shù)。注:e或E后面的指數(shù)必須是整數(shù),并且在e或E的前面必須有數(shù)字。本題中,選項(xiàng)A)中E的前面沒有數(shù)字,因此錯(cuò)誤。選項(xiàng)C)中0.8不是整數(shù),因此錯(cuò)誤。選項(xiàng)D)中4是整型常量而不是實(shí)型常量。

11.D

12.C解析:二分查找法也稱為折半查找法。它的基本思想是:將n個(gè)元素分成個(gè)數(shù)大致相同的兩半,取a[n/2]與欲查找的x作比較,如果x=a[n/2],則找到x,算法終止;如果x<a[n/2],則只要在數(shù)組a的左半部繼續(xù)搜索x(這里假設(shè)數(shù)組元素呈升序排列);如果x>a[n/2],則只要在數(shù)組a的右半部繼續(xù)搜索x。每次余下n/(2i)個(gè)元素待比較,當(dāng)最后剩下一個(gè)時(shí),即n/(2i)=1。故n=2i;所以i=log2n。

13.B解析:先計(jì)算關(guān)系表達(dá)式a<b=2<3為真(表達(dá)式為真時(shí),如果變量為int型變量則真用1表示,假用0表示),即a=1。

14.A

15.C

16.C

17.D

18.A

19.D

20.A選項(xiàng)A是非法的表達(dá)式,C語言中沒有“<>”運(yùn)算符。故本題答案為A選項(xiàng)。

21.s[i]!='\0's[i]!='\\0'解析:本題是要?jiǎng)h除字符數(shù)組中和c一樣的字符,for循環(huán)實(shí)現(xiàn)的功能是逐個(gè)讀出字符數(shù)組s中的元素,并和字符c做比較,直到遇到字符串結(jié)束標(biāo)志'\\0',結(jié)束循環(huán),所以橫線上應(yīng)該填s[i]!='\\0'。

22.黑盒軟件測(cè)試的方法有三種:動(dòng)態(tài)測(cè)試、靜態(tài)測(cè)試和正確性證明。設(shè)計(jì)測(cè)試實(shí)例的方法一般有兩類:黑盒測(cè)試法和白盒測(cè)試法。在使用黑盒法設(shè)計(jì)測(cè)試實(shí)例時(shí),測(cè)試人員將程序看成一個(gè)“黑盒”,即不關(guān)心程序內(nèi)部是如何實(shí)現(xiàn)的,只是檢查程序是否符合它的“功能說明”,所以使用黑盒法設(shè)計(jì)的測(cè)試用例完全是根據(jù)程序的功能說明來設(shè)計(jì)的。

23.變換型典型的數(shù)據(jù)流類型有兩種:變換型和事務(wù)型。變換型是指信息沿輸入通路進(jìn)入系統(tǒng),同時(shí)由外部形式變換成內(nèi)部形式,進(jìn)入系統(tǒng)的信息通過變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng);在很多軟件應(yīng)用中,存在某種作業(yè)數(shù)據(jù)流,它可以引發(fā)一個(gè)或多個(gè)處理,這些處理能夠完成該作業(yè)要求的功能,這種數(shù)據(jù)流就叫做事務(wù)。

24.1515解析:在函數(shù)fun(intx)中定義了局部靜態(tài)整形變量t,并初始化為0。這個(gè)函數(shù)的返回值為t+x。所以在主函數(shù)的for循環(huán)中,5次連續(xù)調(diào)用fun(i),實(shí)現(xiàn)了從1到5連續(xù)數(shù)字的相加運(yùn)算。因而最后結(jié)果等于15。

25.PI=3.14159PI=3.14159解析:本題先定義了一個(gè)宏名PI,以后在程序中出現(xiàn)PI都用3.14159替代,但是C語言規(guī)定:雙引號(hào)中的宏名是不進(jìn)行替換的。

26.59

27.封裝封裝

28.a[k][i]*sumx&sa[k][i]\r\n*sum\r\nx,&s解析:程序段for(j=1;j<M;j++)if(a[k][i]>a[j][i]))k=j;是找出第i列的最小值,第一處應(yīng)該是每列最小值累加,所以填a[k][i];和值要通過形參傳回主函數(shù),第二處應(yīng)該填*sum;根據(jù)形參可以確定第三處應(yīng)該填x,&s。

29.順序存儲(chǔ)(順序方式存儲(chǔ))順序存儲(chǔ)(順序方式存儲(chǔ))解析:二分法查找對(duì)表的要求是有序的順序表,即第一要求是數(shù)據(jù)元素有序,第二要求是按順序方式存儲(chǔ)。

30.\0'或0或NULLstr[i]num++或num=num+1或num+=1\\0'或0或NULL\r\nstr[i]\r\nnum++或num=num+1或num+=1解析:觀察題目要求,可以知道以下幾點(diǎn):①for循環(huán)的結(jié)束條件應(yīng)當(dāng)是:str[i]已是字符串的最后一個(gè)字符;②str[i]代表字符串str中的第i+1個(gè)字符;③整型變量num的值是要記錄的單詞的個(gè)數(shù)。C語言中規(guī)定字符串的最后一個(gè)字符是一個(gè)隱含的字符串結(jié)束符“\\0”,所以在題中第一個(gè)空中應(yīng)填寫“\\0”;題中第二個(gè)空應(yīng)填寫“str[i]”,以判斷當(dāng)前位置的字符是否為空格;題中第三個(gè)空中應(yīng)當(dāng)填寫“num++”,通過變量num的加1累加得到字符串中的單詞個(gè)數(shù)。

31.本題主要考查了字符變量可參與的運(yùn)算。因?yàn)樽址谟?jì)算機(jī)中是以ASCII碼的形式存放的,所以字符變量可看作整型變量來處理,如參與算術(shù)運(yùn)算等,某字符的大寫字母的ASCII碼值比它對(duì)應(yīng)的小寫字母ASCII碼值小32。\r\n\r\n

32.可行性研究可行性研究解析:軟件生命周期一般包括可行性研究與需求分析、設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試、交付使用及維護(hù)等,還可以將軟件生命周期分為三個(gè)階段:①軟件定義階段:可行性研究和需求分析;②軟件開發(fā)階段:設(shè)計(jì)、實(shí)現(xiàn)和測(cè)試;③軟件運(yùn)行維護(hù)階段:交付使用和維護(hù)。

33.333,3解析:本題在while(n++<=1)語句后,直接加了分號(hào),說明如果while()的條件為真時(shí),該循環(huán)什么都不做;n++是先取n的當(dāng)前值和I做比較,然后再將n加1。第一次循環(huán),n=0時(shí),循環(huán)條件n++=0<=1成立,執(zhí)行循環(huán),然后得到n=1。第二次循環(huán),n=1時(shí),循環(huán)條件n++=1<=1成立,執(zhí)行循環(huán),然后得到n=2。第三次循環(huán),n=2時(shí),循環(huán)條件n++=2<=1不成立,不執(zhí)行循環(huán),但在判斷循環(huán)條件時(shí)仍將n加1,得到n=3。退出循環(huán)后執(zhí)行printf語句,第二個(gè)printf語句輸出n++,是先輸出n的當(dāng)前值3,然后再將n加1,即程序結(jié)束后得到n=4,但輸出的是3。

34.4599

35.8888解析:C語言規(guī)定,以0開頭的整型常量為八進(jìn)制。另外,在primf()函數(shù)中,%X表示以十六進(jìn)制無符號(hào)形式輸出一個(gè)整數(shù),且十六進(jìn)制中的ABCDEF為大寫字母。本題的輸出應(yīng)該是八進(jìn)制210的十六進(jìn)制形式。將八進(jìn)制轉(zhuǎn)換為十六進(jìn)制,可以先將其轉(zhuǎn)換為二進(jìn)制。因?yàn)?位八進(jìn)制表示3位二進(jìn)制,4位二進(jìn)制表示1位十六進(jìn)制。(210)8=(10001000)2=(88)16,故本題輸出為880

36.10410\r\n4解析:結(jié)構(gòu)體變量所占內(nèi)存長(zhǎng)度是各成員占的內(nèi)存長(zhǎng)度之和。每個(gè)成員分別占有其自己的內(nèi)存單元。int占2個(gè)字節(jié),float占4個(gè)字節(jié),共用體變量所占的內(nèi)存長(zhǎng)度等于最長(zhǎng)的成員的長(zhǎng)度。所以,sizeof(a.share)的值是4,sizeof(A)的值是2+2+2+4=10。

37.doublemax或externdoublemaxdoublemax或externdoublemax解析:函數(shù)聲明是對(duì)所用到的函數(shù)的特征進(jìn)行必要的聲明,編譯系統(tǒng)以函數(shù)聲明中給出的信息為依據(jù),對(duì)調(diào)用表達(dá)式進(jìn)行檢測(cè),以保證調(diào)用表達(dá)式與函數(shù)之間的參數(shù)正確傳遞。函數(shù)聲明的一般格式為:類型標(biāo)識(shí)符函數(shù)名(類型標(biāo)識(shí)符形參,…);這些信息就是函數(shù)定義中的第一行的內(nèi)容。本題中main()函數(shù)需要調(diào)用max()函數(shù),在main()之前就需要聲明函數(shù)max(),并且可以用extem說明符使變量的作用域擴(kuò)充到需要用到它的函數(shù),所以,填寫doublemax(或externdoublemax)。

38.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本題要求將字符串str中的字符用冒泡排序算法從大到小排列,其實(shí)現(xiàn)過程是將相鄰兩個(gè)字詞進(jìn)行比較,如果當(dāng)前字符小于下一個(gè)字符,則通過中間變量temp將字符兩兩交換,所以第一空應(yīng)填:str[i],第二空應(yīng)填:str[i+1]。最終打印輸出得到的字符串str,所以第三空應(yīng)填:'%s',str。

39.a[k][i]*sumx&s

40.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本題要求將字符串str中的字符用冒泡排序算法從大到小排列,其實(shí)現(xiàn)過程是將相鄰兩個(gè)字符進(jìn)行比較,如果當(dāng)前字符小于下—個(gè)字符,則通過中間變量temp將字符兩兩交換,所以第一空應(yīng)填:str[i],第二空應(yīng)填:str[i+1]。最終打印輸出得到的字符串str,所以第三空應(yīng)填:'%s',str。

41.CC?!窘馕觥坑?jì)算機(jī)算法是指解題方案的準(zhǔn)確而完整的描述,它的基本特征分別是:可行性、確定性、有窮性和擁有足夠的情報(bào)。

42.B

43.C解析:在函數(shù)fun()中有兩個(gè)字符型指針變量s1和s1,在函數(shù)中程序執(zhí)行while循環(huán),該循環(huán)退出條件有兩個(gè):一個(gè)是s1[i]!=s2[i](兩個(gè)字符串不相等);第二個(gè)是sl[i]和s2[i]相等均為“\\0”(兩個(gè)字符串相等)。循環(huán)退出后,執(zhí)行return語句,即兩個(gè)字符串相等則返回1,不相等則返回0。所以,C選項(xiàng)為所選。

44.D解析:選項(xiàng)A定義了一個(gè)整型變量i,并且初始化讓它指向NULL,接著通過scanf()函數(shù),改變i指向的存儲(chǔ)空間的值,選項(xiàng)A中首先定義了整型指針變量i并初始化為NULL,即表示指針i不指向任何內(nèi)存,即此時(shí)程序還沒有為i在內(nèi)存中開辟存儲(chǔ)單元,而在scanf0函數(shù)中第二個(gè)參數(shù)是地址參數(shù),顯然在這里i不在表示地址,所以下面的scanf('%d',i)語句足不正確的,故選項(xiàng)A不正確;選項(xiàng)B定義了一個(gè)浮點(diǎn)型變量f并初始化讓它指向NULL,而當(dāng)一個(gè)指針變量指向NULL以后不能在給它賦值,而接下來的程序中為其賦了一值;故選項(xiàng)B錯(cuò)誤;選項(xiàng)C中首先定義了一個(gè)字符變量t并給它賦初值\'m\',然后定義個(gè)字符型指針c并讓它指向了變量t,這一部分正確,然后接著用了—個(gè)語句“*c=&t;”應(yīng)該將該語句中c前的“,”去掉,故選項(xiàng)C運(yùn)用指針變量不正確。所以,4個(gè)選項(xiàng)中選項(xiàng)D符合題意。

45.C解析:程序開始時(shí)(i,j,k)三個(gè)值分別為(3,0,0),然后進(jìn)入for循環(huán),由于for的第一條語句空缺,所以不做初始化,此時(shí)i為3滿足循環(huán)條件,進(jìn)入循環(huán)體。然后執(zhí)行“++k;”使k變成1,再無條件進(jìn)入do-while循環(huán)體執(zhí)行“++j;”使j變成1,此時(shí)i和j不相等所以執(zhí)行break;語句跳出do-while循環(huán)。

準(zhǔn)備開始第二遍for循環(huán),i的值被減1,此時(shí)3個(gè)值分別為(2,1,1),i為2滿足循環(huán)條件,進(jìn)入循環(huán)體。然后依次執(zhí)行++k;和++j;使它們?cè)?,此時(shí)i和j同為2相等,所以跳過break;語句再執(zhí)行一次++k;使k為3,由于此時(shí)j滿足do-while的循環(huán)條件,所以下一步回到前面執(zhí)行do后面的++j;語句,使j為3,此時(shí)i和j不相等,所以執(zhí)行break;跳出do-while循環(huán)。

準(zhǔn)備開始第三遍for循環(huán),i的值被減1,此時(shí)3個(gè)值分別為(1,3,3),i為1滿足循環(huán)條件,進(jìn)入循環(huán)體。然后依次執(zhí)行++k;和++j;使它們?cè)?,此時(shí)i和j不相等,所以執(zhí)行break;跳出do-while循環(huán)。

準(zhǔn)備開始第四遍for循環(huán),i的值被減1,此時(shí)3個(gè)值分別為(0,4,4),i為0不滿足for語句的循環(huán)條件,所以執(zhí)行循環(huán)體后面的printf()函數(shù)輸出3個(gè)值,故正確答案為C。

46.C解析:本題考核的知識(shí)點(diǎn)是main()函數(shù)的作用,以及main()函數(shù)在程序中出現(xiàn)的位置。一個(gè)完整的C語言程序有且僅有一個(gè)主函數(shù)(main()函數(shù))。程序總從main()函數(shù)的第一條語句開始執(zhí)行,到main()函數(shù)的最后一條語句結(jié)束,其他函數(shù)都是在執(zhí)行main()函數(shù)時(shí),通過函數(shù)調(diào)用或嵌套調(diào)用而得以執(zhí)行的。C語言規(guī)定,main()函數(shù)在程序中的位置是任意的,故選項(xiàng)c不正確。所以,4個(gè)選項(xiàng)中C符合題意。

47.B

48.B解析:根據(jù)if條件,語句c=a的值為1,因此輸出c值為3。

49.D解析:本題考查鏈表的數(shù)據(jù)結(jié)構(gòu),必須利用指針變量才能實(shí)現(xiàn),即一個(gè)結(jié)點(diǎn)中應(yīng)包含一個(gè)指針變量,用它存放下一結(jié)點(diǎn)的地址。

50.D解析:程序首先定義了一個(gè)指向一維數(shù)組a的指針p,一個(gè)指向指針變量p的指針變量q,輸出*(p++)是先輸出*p即a[0]的值,再將指針p指向數(shù)組的下一個(gè)元素a[1],輸出**q是輸出指針p所指向單元的內(nèi)容,即a[1]的值。

51.C解析:本題主要考查了進(jìn)制轉(zhuǎn)換的除余取整法。本算法中,是先對(duì)數(shù)c除8取余作為轉(zhuǎn)換后的8進(jìn)制數(shù)的第1位,然后對(duì)c整除以8的商作同樣的操作,直到商為0為止,因此本題應(yīng)選C。

52.A解析:本題考查了二維數(shù)組元素的引用方法。選項(xiàng)A中a+i指向了數(shù)組a的第i+1行,*(a+i)則是第i+1行第0列的地址值,*(a+i)+j指向了數(shù)組a第i+1行,j+1列,*(*(a+i)+j)取到的是數(shù)組a的a[i][j]元素。

53.A解析:函數(shù)定義時(shí)如果數(shù)據(jù)類型默認(rèn),則默認(rèn)為int。函數(shù)中如果有“retum(表達(dá)式):”語句,表達(dá)式的類型可能與函數(shù)的類型不一致,但它并不能改變函數(shù)的類型,實(shí)際情況是把表達(dá)式轉(zhuǎn)換為函數(shù)值的類型作為返回值,因此本題的函數(shù)值類型是int。

54.A解析:本題定義了一個(gè)結(jié)構(gòu)體類型并白定義類型名為STD,用戶自定義類型后,就可以利用它進(jìn)行變量與數(shù)組的定義。定義的方法,與C語言中其它類型的定義完全一樣,定義結(jié)構(gòu)型數(shù)組并賦初值時(shí),每個(gè)元素用一對(duì)“{”和“廠括起來,字符型元素用…”括起來,選項(xiàng)A、B、C、D中只有選項(xiàng)A符合條件。所以,A選項(xiàng)為所選。

55.D解析:主要考查運(yùn)算符的優(yōu)先級(jí)。sizeof的優(yōu)先級(jí)最高,后面的順序是:%、<<、>,優(yōu)先級(jí)最低的是“=”。

56.A

57.B

58.D解析:線性鏈表是線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),帶鏈的棧與帶鏈的隊(duì)列分別是棧與隊(duì)列的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。線性表屬于線性結(jié)構(gòu),棧與隊(duì)列是特殊的線性表,因此也屬于線性結(jié)構(gòu)。二叉鏈表是二叉樹的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),二叉樹屬于非線性結(jié)構(gòu)。

59.A解析:本題考查malloc函數(shù)和calloc函數(shù)的應(yīng)用。C語言中庫函數(shù)malloc和calloc的功能都是向系統(tǒng)申請(qǐng)分配內(nèi)存空間。其中函數(shù)malloc的調(diào)用為:malloc(size),其中size是一個(gè)無符號(hào)整數(shù),表示向系統(tǒng)申請(qǐng)多大的存儲(chǔ)空間;calloc(n,size)表示向系統(tǒng)申請(qǐng)n個(gè)大小為size的存儲(chǔ)空間。新標(biāo)準(zhǔn)C提供的malloc和calloc函數(shù)的類型規(guī)定為void*類型,使用時(shí)根據(jù)需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換。選項(xiàng)B、C、D都能滿足p指向兩個(gè)連續(xù)的整型存儲(chǔ)單元的要求,其中(int*)表示強(qiáng)制類型轉(zhuǎn)換。

60.B

61.C

62.C函數(shù)fun(int*s,intn1,intn2)的功能是對(duì)數(shù)組s中的元素進(jìn)行首尾互相調(diào)換。所以在主函數(shù)中,當(dāng)fun(a,0,3)執(zhí)行完后,數(shù)組a[12]={4,3,2,1,5,6,7,8,9,0};再執(zhí)行fun(a,4,9),數(shù)組a[12]={4,3,2,1,0,9,8,7,6,5};再執(zhí)行fun(a,0,9)后,數(shù)組a[12]={5,6,7,8,9,0,1,2,3,4}。所以正確答案為c)。

63.D

64.B#include”文件名”,預(yù)處理程序首先在引用被包含文件的源文件所在的目錄下搜索指定的文件,如沒找到,再按系統(tǒng)指定的標(biāo)準(zhǔn)目錄搜索。

65.A宏定義寫在函數(shù)的花括號(hào)外邊,作用域?yàn)槠浜蟮某绦?,通常在文件的最開頭,因此B)選項(xiàng)中宏定義必須位于源程序中所有語句之前是錯(cuò)誤的。宏名一般用大寫,但不是必須用大寫,因此c)選項(xiàng)錯(cuò)誤。宏展開不占運(yùn)行時(shí)間,只占編譯時(shí)間,函數(shù)調(diào)用占運(yùn)行時(shí)間(分配內(nèi)存、保留現(xiàn)場(chǎng)、值傳遞、返回值),因此D)選項(xiàng)錯(cuò)誤。

66.A

67.B本題中,typedef聲明新的類型名PER來代替已有的類型名,PER代表上面指定的一個(gè)結(jié)構(gòu)體類型,此時(shí),也可以用PER來定義變量。

68.A聲明靜態(tài)局部變量:函數(shù)調(diào)用結(jié)束后,其占用的存儲(chǔ)單元不釋放:在下次該函數(shù)調(diào)用時(shí),該變量保留上一次函數(shù)調(diào)用結(jié)束時(shí)的值。本題子函數(shù)fun中的變量i和m均為靜態(tài)局部變量。因此第一次調(diào)用fun函數(shù),返回m的值為5,第二次再調(diào)用fun函數(shù)時(shí),i的值為3,m的值已經(jīng)是5了,所以執(zhí)行i+=m+1,i的值變?yōu)?,m=i+x+y=9+l+l=11。故本題答案為A)。

69.A

70.D

71.Bstrcmp(sl,s2)是字符串比較函數(shù),比較規(guī)則是兩個(gè)字符串自左向右逐個(gè)字符相比(按照ASCIl碼值大小),-以第一個(gè)不相同的字符的大小作為比較結(jié)果。因?yàn)?。O。<10.,所以strcmp(sl,s2)為負(fù)值,只有B選項(xiàng)正確。

72.Bseanf函數(shù)用空格區(qū)分不同字符串的輸入,因此876和543.0被看作兩段輸入。%2d只選取了第一個(gè)輸人中的前兩位,%f選取隨后的數(shù)字作為浮點(diǎn)數(shù),因此輸出結(jié)果為87和6.000000。

73.A本題考查的是函數(shù)調(diào)用時(shí)的參數(shù)傳遞以及結(jié)構(gòu)體變量的引用的問題。程序在調(diào)用函數(shù)f時(shí),傳給函數(shù)f的參數(shù)只是結(jié)構(gòu)變量c在棧中的一個(gè)拷貝,函數(shù)f的所有操作只是針對(duì)這個(gè)數(shù)據(jù)拷貝進(jìn)行的修改,這些都不會(huì)影響變量c的值。

74.B本題主要考查運(yùn)算符的優(yōu)先級(jí)。在C語言中包含算術(shù)運(yùn)算符、關(guān)系運(yùn)算符和邏輯運(yùn)算符等。這些運(yùn)算符的優(yōu)先級(jí)和結(jié)合方式在我們的教材《30天通過計(jì)算機(jī)等級(jí)考試:二級(jí)C語言》中可以查閱到。題目中給出運(yùn)算符優(yōu)先級(jí)從高到低依次為sizeof、<<、^、&=。因此本題的答案選B。

75.Bslrlen用來返回字符串的長(zhǎng)度,而sizeof返回的是一個(gè)對(duì)象或者類型所占的內(nèi)存字節(jié)數(shù),即數(shù)組所占的內(nèi)存。

76.A解析:本調(diào)用語句func中包含了3個(gè)實(shí)參,一個(gè)是對(duì)f2函數(shù)調(diào)用“f2(v1,v2)”的返回值;另一個(gè)是逗號(hào)表達(dá)式“(v3,v4,v5)”的值v5(逗號(hào)表達(dá)式的一般形式為:表達(dá)式1,表達(dá)式2,表達(dá)式3......表達(dá)式n,它的值為表達(dá)式n的值);還有—個(gè)實(shí)參也是逗號(hào)表達(dá)式“v6,max(v7,v8)”的值,即對(duì)max函數(shù)調(diào)用的返回值。

77.A

78.D

79.A解析:模式設(shè)計(jì)和內(nèi)模式設(shè)計(jì)是概念設(shè)計(jì)的兩種方法。物理設(shè)計(jì)是根據(jù)特定的計(jì)算機(jī)系統(tǒng),對(duì)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)和存取方法進(jìn)行設(shè)計(jì),從而實(shí)現(xiàn)從邏輯結(jié)構(gòu)到物理結(jié)構(gòu)的轉(zhuǎn)換。從系統(tǒng)開發(fā)的角度來看,結(jié)構(gòu)特性設(shè)計(jì)和行為特性-設(shè)計(jì)是數(shù)據(jù)庫應(yīng)用系統(tǒng)所具有的兩個(gè)特性。結(jié)構(gòu)特性的設(shè)計(jì),設(shè)計(jì)各級(jí)數(shù)據(jù)庫模式(靜態(tài)特性):行為特性的設(shè)計(jì),改變實(shí)體及其特性,決定數(shù)據(jù)庫系統(tǒng)的功能(動(dòng)態(tài)特性)。

80.A

81.(1)錯(cuò)誤:intproc(charstr[])正確:voidproc(char、tr[])(2)錯(cuò)誤:str[j]=str[++];正確:str[j]=str[i];【解析】由主函數(shù)中的函數(shù)調(diào)用可知,函數(shù)proc沒有返回值。因此,“intproccharstr[])”應(yīng)改為“voidproc(charstr[])”;由函數(shù)proc可知,if語句塊完成將字符串str中的第i個(gè)元素與第j個(gè)元素相交換。因此,“str[j]=str[i++];”應(yīng)改為“str[j]=str[i];”。

82.voidfun(char*s,chart[]){ inti=0; for(;*s!=‘\0’;s++) /*找出ASCII值為奇數(shù)的字符依次存入數(shù)組t中*/ if(*s%2==1) t[i++]=*s; t[i]=‘\0’; /*在字符串的末尾加上字符串結(jié)束標(biāo)志*/}本題要求將s所指字符串中ASCII值為偶數(shù)的字符刪除,因此本題要求采用一個(gè)for循環(huán)來找出ASCII值為奇數(shù)的字符,將其依次存入數(shù)組t中,并使用if條件語句來判斷s所指字符串中ASCII值是否為奇數(shù)。將‘\\0’加在字符串的末尾來表示字符串的結(jié)束。要?jiǎng)h除ASCII值為偶數(shù)的字符,也就是要留下ASCII值為奇數(shù)的字符。由于最終要求出剩余字符(即ASCII值為奇數(shù))形成的新字符串,因此本題程序的算法是對(duì)原字符串從頭到尾掃描,找出ASCII值為奇數(shù)的字符,并將其依次存入數(shù)組t中。此外,還要注意數(shù)組t的下標(biāo)變化和下標(biāo)的初值(初值必須為0,即i=0),t[i++]的作用是先使用t[i],然后再使i自增1。2022年內(nèi)蒙古自治區(qū)通遼市全國(guó)計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(20題)1.

2.表達(dá)式18/4*sqrt(4.0)/8值的數(shù)據(jù)類型為()。A.intB.floatC.doubleD.不確定

3.下列關(guān)于線性鏈表的描述中正確的是()。

A.存儲(chǔ)空間不一定連續(xù),且各元素的存儲(chǔ)順序是任意的

B.存儲(chǔ)空間不一定連續(xù),且前件元素一定存儲(chǔ)在后件元素的前面

C.存儲(chǔ)空間必須連續(xù),且各前件元素一定存儲(chǔ)在后件元素的前面

D.存儲(chǔ)空間必須連續(xù),且各元素的存儲(chǔ)順序是任意的

4.

5.字符組a[20]和b[20],下面正確的輸出語句是()。A.put(a,b)

B.prinf(“%s,%s”,a[],b[])

C.putchar(a,b)

D.puts(a);puts(b)

6.以下正確的字符常量是()。A.'\089'B.'\012'C.'\0XAB'D.'\0xab'

7.以下選項(xiàng)中能表示合法常量的是()。

A.1,200B.1.5E2.0C.‘\’D.“\007”

8.

有如下程序:

main()

{intn[5]={0,0,0},i,k=2;

for(i=0;i&printf("%d\n",n[k]););

}

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

A.不確定的值B.2C.1D.0

9.以下針對(duì)相應(yīng)語句的注釋中,說法錯(cuò)誤的是()。

A.int*pt[2];/*pt是一個(gè)指針數(shù)組名*/

B.int(*pt)[2];/*pt是一維數(shù)組名*/

C.int(*pt)();/*pt是指向函數(shù)的指針*/

D.int*pt();/*pt是一個(gè)函數(shù)名*/

10.下列正確的實(shí)型常量是()。

A.E3.4B.-12345C.2.2eO.8D.4

11.在線索化樹中,每個(gè)結(jié)點(diǎn)必須設(shè)置一個(gè)標(biāo)志來說明它的左、右鏈指向的是樹結(jié)構(gòu)信息,還是線索化信息,若0標(biāo)識(shí)樹結(jié)構(gòu)信息,1標(biāo)識(shí)線索,對(duì)應(yīng)葉結(jié)點(diǎn)的左右鏈域,應(yīng)標(biāo)識(shí)為()。

A.00B.01C.10D.11

12.在長(zhǎng)度為n的有序線性表中進(jìn)行二分查找,最壞情況下需要比較的次數(shù)是A.O(n)

B.O(n2)

C.O(log2n)

D.O(nlog2n)

13.已知inta=2,b=3;則執(zhí)行表達(dá)式a=a<b后,變量a的值為()。

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

14.棧的特點(diǎn)是B,隊(duì)列的特點(diǎn)是()。

A.先進(jìn)先出B.先進(jìn)后出

15.下列各排序法中,最壞情況下的時(shí)間復(fù)雜度最低的是()

A.希爾排序B.快速排序C.堆排序D.冒泡排序

16.在C語言程序中,main函數(shù)的位置()

A.必須作為第一個(gè)函數(shù)B.必須作為最后一個(gè)函數(shù)C.可以任意D.必須放在它所調(diào)用的函數(shù)之后

17.

18.在具有n個(gè)結(jié)點(diǎn)的單鏈表中,實(shí)現(xiàn)()的操作,其算法的時(shí)間復(fù)雜度是O。

A.求鏈表的第i個(gè)結(jié)點(diǎn)B.在地址為P的結(jié)點(diǎn)之后插入一個(gè)結(jié)點(diǎn)C.刪除表頭結(jié)點(diǎn)D.刪除地址為P的結(jié)點(diǎn)的后繼結(jié)點(diǎn)

19.在執(zhí)行()操作時(shí),需要使用隊(duì)列做輔助存儲(chǔ)空間。

A.查找哈希(Hash)表B.深度優(yōu)先搜索網(wǎng)C.前序(根)遍歷二叉樹D.廣度優(yōu)先搜索網(wǎng)

20.若變量已正確定義,在“if(W)Printf(“%d\n”,k);”中,以下不可替代W的是()。

A.a<>b+cB.ch=getchar()C.a==b+cD.a++

二、2.填空題(20題)21.下列函數(shù)從字符數(shù)組s[]中刪除和c一樣的字符,請(qǐng)?jiān)谙旅鏅M線處填空。voiddelete(s,C)chars[],c;{inti,j;for(i=j=0;();i++)if(s[i]!='c')s[j++]=s[i];s[j]="\0";}

22.若按功能劃分,軟件測(cè)試的方法通常分為白盒測(cè)試方法和【】測(cè)試方法。

23.數(shù)據(jù)流圖的類型有【】和事務(wù)型。

24.以下程序的輸出結(jié)果是()。#include<stdio.h>intfun(intx){staticintt=0;return(t+=x);}main(){ints,i;for(i=1;i<=5;i++)s=fun(i);printf("%d\11",s);}

25.若定義#definePI3.14159,則執(zhí)行完下列程序后輸出結(jié)果是______。

#definePI3.14159;printf("PI=%f",PI);

26.若輸入5、9,以下程序的運(yùn)行結(jié)果為【】。

main()

{inta,b,*pt1,*pt2;

printf("inputa,b:");

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

pt1=&a;

pt2=&b;

if(a<b)swap(pt1,pt2);

printf("\n%d,%d\n",*pt1,*pt2);

}

swap(p1,p2)

int*p1,*p2;

{int*p;

p=p1;

p1=p2;

p2=p;

}

27.在面向?qū)ο蠓椒ㄖ?,信息隱蔽是通過對(duì)象的______性來實(shí)現(xiàn)的。

28.以下程序中,函數(shù)SumColumMin的功能是:求出M行N列二維數(shù)組每列元素中的最小值,并計(jì)算它們的和值,和值通過形參傳回主函數(shù)輸出。請(qǐng)?zhí)羁眨?/p>

#include<stdio.h>

#defineM2

#defineN4

voidSumColumMin(inta[M][N],int*sum)

{inti,j,k,s=0;

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

k=O;

for(j=1;j<M;j++)

if(a[k][i]>a[j][i])k=j;

s+:【】;

}

【】=s;

}

main()

{intx[M][N]={3,2,5,1,4,1,8,3},s;

SumColumMin(【】);

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

}

29.二分法查找僅限于這樣的表:表中的數(shù)據(jù)元素必須有序,其存儲(chǔ)結(jié)構(gòu)必須是______。

30.下述函數(shù)用于統(tǒng)計(jì)一行字符中的單詞個(gè)數(shù),單詞之問用空格分隔。

word_num(str)

charstr[];

{inti,num=0,word=0;

fot(i=0;str[i]!=【】;i++)

if【】=='')word=0;

elseif(word==0)

{

word=1;

【】;

}

return(num);

}

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

#include<stdio.h>

#defineSIZE12

main()

{chars[SIZE];inti;for(i=0;i<SIZE;i++)s[i]]='A'+i+321;

sub(s,7,SLZE-1);

for(i=0;i<SIZE;i++)printf("%c",s[i]);

printf("\n");}

sub(char*a,inttl,intt2)

{charCh;

while(t1<t2)

{ch=*(a+t

32.軟件定義時(shí)期主要包括______和需求分析兩個(gè)階段。

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

main()

{int=0;

while(n++<=1);

printf("%d,",n);

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

}

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

main()

{inta=3,b=4,c=5,t=99;

if(b<a&&a<c)t=a;a=C;c=t;

if(a<c&&b<c)t=b;b=a;a=t

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

}

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

main()

{

intx=0210;

printf("%X\n",x);

}

36.有以下定義和語句,則sizeof(a)的值是【】,而sizeof(a.share)的值是【】。

structdatc

{intday;

intmouth;

intyear:

union{intshare1;

floatshare2:

}share;

}a;

37.請(qǐng)?jiān)谝韵鲁绦虻谝恍械南聞澗€處填寫適當(dāng)內(nèi)容,使程序能正確運(yùn)行。

【】(double,double);

main()

{doublex,y;

seanf("%1f%1f",&x,&y);

pfintf("%1f\n",max(x,y));

}

doublemax(doublea,doubleb)

{return(a>b?a:b);}

38.下面的程序可對(duì)指定字符串進(jìn)行從大到小排序,請(qǐng)將程序填完整。(注:程序采用了冒泡排序算法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n->1)

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

if(str[i]<str[i+1])

{temp=【】;

str[i]=str[i+1];

【】=temp;

}

printf(【】);

}

39.以下程序中,函數(shù)SumColumMin的功能是:求出M行N列二維數(shù)組每列元素中的最小值,并計(jì)算它們的和值。和值通過形參傳回主函數(shù)輸出。請(qǐng)?zhí)羁铡?/p>

#defineM2

#defineN4

voidSumColumMin(inta[M][N],int*sum)

{inti,j,k,s=0;

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

{k=0:

for(j=1;j<M;j++)

if(a[k][i]>a[j][i]k=j;

s+=______;

}

______=s:

}

main()

{intx[M][N]={3,2,5,1,4,1,8.3},s;

sumColumMin(______)

printf("%d\n".s):

}

40.下面的程序可對(duì)指定字符串中的字符串進(jìn)行從大到小排序,請(qǐng)將程序填完整。(注:程序采用了冒泡排序算法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n->1)

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

if(str[i]<str[i+1])

{temp=【】;

str[i]=str[i+1];

【】=temp;

}

printf(【】);

}

三、1.選擇題(20題)41.在計(jì)算機(jī)中,算法是指()。

A.查詢方法B.加工方法C.解題方案的準(zhǔn)確而完整的描述D.排序方法

42.設(shè)有如下定義:intx=1,y=-1;則下列語句的輸出結(jié)果是______。printf("%d\n",(x--&++y));

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

43.閱讀以下函數(shù)fun(char*sl,char*s2){inti:0;while(sl[i]==s2[i]&&s2[i]!='\0')i++;return(sl[i]=='\0'&&s2[i]=='\0');}此函數(shù)的功能是

A.將s2所指字符申賦給s1

B.比較s1和s2所指字符串的大小,若s1比s2的大,函數(shù)值為1,否則函數(shù)值為0

C.比較s1和s2所指字符串是否相等,若相等,函數(shù)值為1,否則函數(shù)值為o

D.比較s1和s2所指字符串的長(zhǎng)度,若s1比s2的長(zhǎng),函數(shù)值為1,否則函數(shù)值為o

44.若程序中已包含頭文件stdio.h,以下選項(xiàng)中,正確運(yùn)用指針變量的程序段是()。

A.int*i=NULL;

B.float*f=NULL;

C.chart='m',*c=&t;

D.long*Lscanf("%d",i);*f=10.5;*c=&t;L='\0';

45.下面程序段的執(zhí)行結(jié)果為()。inti=3,j=0,k=0;for(;i>0;--i){++k;do{++j;if(i!=j)break;++k;}while(j<5);}printf("i=%dj=%dk=%d\n",i,j,k);

A.i=0j=4k=12B.i=0j=5k=5C.i=0j=4k=4D.i=0j=3k=3

46.以下說法不正確的是

A.C程序中必須有一個(gè)main()函數(shù),C程序是從main()函數(shù)的第1條語句開始執(zhí)行的。

B.非主函數(shù)都是在執(zhí)行主函數(shù)時(shí),通過函數(shù)調(diào)用或嵌套調(diào)用而得以執(zhí)行的。

C.C程序中的main()函數(shù)必須放在程序的開始位置。

D.C程序中的main()函數(shù)位置可以任意指定。

47.若有如下程序;main(){chara[][9]={"china","Japan","USA","France"};printf("\'%s\'\n",a[2]);}則程序運(yùn)行后的輸出結(jié)果是()

A.'Japan'B.'USA'C.USAD.'inaJapanUSAFrance'

48.以下程序運(yùn)行后的輸出結(jié)果是______。main(){inta=1,b=2,c=3;if(c=a)printf("%d\n",c);elseprintf("%d\n",b);}

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

49.若有以下定義:structfink{intdata;structlink*next;}a,b,c,*p,*q;且變量a和b之間已有如下圖所示的鏈表結(jié)構(gòu):

指針p指向變量a,q指向變量c。則能夠把c插入到a和b之間并形成新的鏈表的語句組是:

A.a.next;c;c.next=b;

B.p.next=q;q.next=p.next;

C.p->next=&c;q->next=p->next;

D.(*p).next=q;(*q).next=&b;

50.下述程序的輸出結(jié)果是()。#include<stdio.h>voidmain(){inta[5]={1,2,3,4,5};int*p=a,**q=&p;printf("%d",*(p++));printf("%d",**q);}

A.22B.11C.34D.12

51.下列程序是將一個(gè)十進(jìn)制正整數(shù)轉(zhuǎn)化為一個(gè)八進(jìn)制數(shù),在程序的空白處應(yīng)填入的語句是_______。#include<stdio.h>main(){inti=9,a,b[10]={0};scanf("%d",&A);sub(a,B);for(;i>=0;i--)printf("%d",b[i]);}sub(intc,intd[]){inte,i=0;while(c!=0){e=c%8;d[i]=e;________.i++;}return;}

A.c=e/8B.c=c%8C.c=c/8D.c=e%8

52.若有定義inta[2][3];,則對(duì)a數(shù)組的第i行第j列(假設(shè)i,j已正確說明并賦值.元素值的正確引用為()。

A.*(*(a+i.+j.B.(a+i.[j]C.*(a+i+j.D.*(a+i.+j

53.以下函數(shù)值的類型是_______。fun(floatx){floaty;y=3*x-4;returny;}

A.intB.不確定C.voidD.float

54.設(shè)有如下說明:typedefstruct{intn;charc;doublex;}STD;則以下選項(xiàng):能正確定義結(jié)構(gòu)體數(shù)組并賦初值的語句是()。

A.STDtt[2]={{1,'A',62},{2,'B',75}};

B.STDtt[2]={1,"A",62,2,"B",75};

C.struettt[2]={{1,'A'},{2,'B'}};

D.structtt[2]={{1,"A",62.5},{2,"B",75.0}};

55.若有運(yùn)算符:>、=、<<、%、sizeof,則它們按優(yōu)先級(jí)(由高至低)的正確排列順序?yàn)?)。

A.%、sizeof、>、<<、=

B.sizeof、%、>、=、<<

C.sizeof、<<、>、%、=

D.sizeof、%、<<、>、=

56.下面程序的輸出結(jié)果是()main(){intx=2,y=0,z;x+=3+2;printf("%d",x);x*=y(tǒng)=z=4;printf("%d",x);}

A.728B.無法計(jì)算C.7,4D.8,4

57.微型機(jī)系統(tǒng)中,對(duì)輸入設(shè)備趕進(jìn)行管理的基本程序模塊(BIOS)存放在()

A.RAM中B.ROM中C.硬盤中D.寄存器中

58.下列數(shù)據(jù)結(jié)構(gòu)中,不是線性結(jié)構(gòu)的是()。

A.線性鏈表B.帶鏈的隊(duì)列C.帶鏈的棧D.二叉鏈表

59.若指針p已正確定義,要使p指向兩個(gè)連續(xù)的整型動(dòng)態(tài)存儲(chǔ)單元,不正確的語句是______。

A.p=2*(int*)malloc(sizeof(int));

B.p=(int*)mallet(2*sizeof(int));

C.p=(int*)malloc(2*2);

D.p=(int*)calloc(2,sizeof(int));

60.以下程序的輸出結(jié)果是()#include<stdio.h>main(){inti=0,a=0;while(i<20){for(;;){if((i%10)==0)break;elsei--;}i+=11;a+=i;}printf("%d\n",A);}

A.21B.32C.33D.11

四、選擇題(20題)61.兩次運(yùn)行下面的程序,如果從鍵盤上分別輸入6和3,則輸出結(jié)果是()。

if(x++>5)printf("%d",x);

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

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

62.有以下程序:

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

A.0987654321

溫馨提示

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

評(píng)論

0/150

提交評(píng)論