2022-2023年江西省贛州市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)_第1頁
2022-2023年江西省贛州市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)_第2頁
2022-2023年江西省贛州市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)_第3頁
2022-2023年江西省贛州市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)_第4頁
2022-2023年江西省贛州市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩109頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

2022-2023年江西省贛州市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(20題)1.有以下程序:intfun(intn){if(n==l)returnl;elsereturn(n+fun(n一1)):}main{intx;scanf("%d",&x);x=fun(x);printf("%d\n",x):}執(zhí)行程序時(shí),給變量X輸入10,程序的輸出結(jié)果是()。A.55B.54C.65D.45

2.現(xiàn)有如下程序段#include"stdio.h"main(){inta[5][6]={23,3,65,21,6,78,28;5,67,25,435,76,8,22,45,7,8,34,6,78,32,4,5,67,4,21,1};inti=0,j=5;printf("%d\n",*(&a[0][0]+2*i+j-2));}則程序的輸出結(jié)果為

A.21B.78C.23D.28

3.已知一個(gè)無向圖(邊為正數(shù))中頂點(diǎn)A,B的一條最短路P,如果把各個(gè)邊的權(quán)重(即相鄰兩個(gè)頂點(diǎn)的距離)變?yōu)樵瓉淼?倍,那么在新圖中,P仍然是A,B之間的最短路,以上說法是()A.錯(cuò)誤B.正確

4.隊(duì)列的“先進(jìn)先出”特性是指()。

A.最早插入隊(duì)列中的元素總是最后被刪除

B.當(dāng)同時(shí)進(jìn)行插入、刪除操作時(shí),總是插入操作優(yōu)先

C.每當(dāng)有刪除操作時(shí),總是要先做一次插入操作

D.每次從隊(duì)列中刪除的總是最早插入的元素

5.

6.鏈表不具有的特點(diǎn)是A.A.不必事先估計(jì)存儲(chǔ)空間

B.可隨機(jī)訪問任一元素

C.插入和刪除不需要移動(dòng)元素

D.所需空間與線性表長(zhǎng)度成正比

7.若fp是指向某文件的指針,且尚未讀到文件末尾,則函數(shù)feof(fp)的返回值是()。

A.EOFB.-1C.非零值D.0

8.

9.有以下程序:main(){intx,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d,%d\n",x,y,z);程序運(yùn)行后的輸出結(jié)果是()。

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

10.有以下程序:

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

A.4321098765B.5678901234C.0987654321D.0987651234

11.

12.有以下程序段intj;floaty;charname[50]:scanf("%2d%f%s",&i,&.y,name):當(dāng)執(zhí)行上述程序段,從鍵盤上輸入555667777abc后,y的值為()。A.55566.0B.566.0C.7777.0D.566777.0

13.已知char**s,下面正確的語句是()。A.A.s="ABCDEF";

B.*s="ABCDEF";

C.**s="ABCDEF";

D.*s='A';

14.有以下程序

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

15.以下敘述中正確的是()。

A.局部變量說明為static存儲(chǔ)類,其生存期將得到延長(zhǎng)

B.全局變量說明為static存儲(chǔ)類,其作用域?qū)⒈粩U(kuò)大

C.任何存儲(chǔ)類的變量在未賦初值時(shí),其值都是不確定的

D.形參可以使用的存儲(chǔ)類說明符與局部變量完全相同

16.已知函數(shù)的調(diào)用形式:fread(buffer,size,count,fp);其中buffer代表的是()。

A.一個(gè)整型變量,代表要讀入的數(shù)據(jù)項(xiàng)總數(shù)

B.一個(gè)文件指針,指向要讀的文件

C.一個(gè)指針,是指向的輸入數(shù)據(jù)放在內(nèi)存中的起始位置

D.一個(gè)存儲(chǔ)區(qū),存放要讀的數(shù)據(jù)項(xiàng)

17.有以下程序

#include<stdio.h>

voidfun(int*a,intn)/*fun函數(shù)的功能是將a所指數(shù)組元素從大到小排序*/

{intt,i,j;

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

for(j=i+1;j<n;j++)

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

}

main()

{intc[10]={1,2,3,4,5,6,7,8,9,0},i;

fun(c+4,6);

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

printf("\n");

}

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

A.1,2,3,4,5,6,7,8,9,0,

B.0,9,8,7,6,5,1,2,3,4,

C.0,9,8,7,6,5,4,3,2,1,

D.1,2,3,4,9,8,7,6,5,0,

18.數(shù)據(jù)庫DB、數(shù)據(jù)庫系統(tǒng)DBS、數(shù)據(jù)庫管理系統(tǒng)DBMS之間的關(guān)系是()。

A.DB包括DBS和DBMSB.DBMS包括DB和DBSC.DBS包括DB和DBMSD.沒有任何關(guān)系

19.以下程序的輸出結(jié)果是()。main{charch[3][4]={"123","456","78"),*p[3];inti;for(i=0;i<3;i++)p[i]=ch[i];for(i=0;i<3;i++)printf("%s",p[i]);}A.123456780B.123456780C.12345678D.147

20.一個(gè)隊(duì)列的入隊(duì)序列是a,b,c,d,則出隊(duì)序列是()。

A.a,b,c,dB.a,c,b,dC.d,c,b,aD.a,c,b,d

二、2.填空題(20題)21.下列程序的功能是對(duì)輸入的一行字符中的數(shù)字字符的字面值累加,輸出此累加和,請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

#include<ctype.h>

main()

{charc;

inta,s=0;

while(______)

if(isdigit(C))

{a=c-'0';s+=a;}

printf("s=%d",s);

}

22.若a是血型變量,且a的初值為4,則計(jì)算a+=a-=a*a表達(dá)式后a的值為______。

23.以下程序是求矩陣a、b的和,結(jié)果存入矩陣c中,請(qǐng)?zhí)羁铡?include<stdio.h>main(){inta[4][4]={1,2,6,7},{0,4,2,-8},{1,4,5,2},{2,4,6,8}};intb[4][4]={{-4,0,7,9},{2,-7,7,4),{6,9,0,1),{8,8,6,5)};inti,j,c[4][4];for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=();for(i=0;i<4;i++)for(j=0;j<4;j++)printf("%d",c[i][j]);}

24.函數(shù)mycmp(char*s,char*t)的功能是比較字符串s和t的大小,當(dāng)s等于t時(shí)返回0,當(dāng)s>t時(shí)返回正值,當(dāng)s<t時(shí)返回負(fù)值。請(qǐng)?zhí)羁铡?/p>

mycmp(char*s,char*t)

{while(*s==*t)

{if(*s=='\0')return0;

++s;++t;

}

return(【】);

}

25.與結(jié)構(gòu)化需求分析方法相對(duì)應(yīng)的是【】方法。

26.若a是int型變量,則下列表達(dá)式的值為______。

(a=2*3,a*2),a+4

27.設(shè)有以下程序,為使之正確運(yùn)行,請(qǐng)?jiān)跈M線中填入應(yīng)包含的命令行。(注:try_me()函數(shù)在a:\myfile.txt中有定義。)

______

main()

{printf("\n");

try_me();

printf("\n");}

28.在結(jié)構(gòu)化分析方法中,用于描述系統(tǒng)中所用到的全部數(shù)據(jù)和文件的文檔稱為【】。

29.設(shè)inta=5,b=6,表達(dá)式(++a==b--)?++a:--b的值是【】。

30.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu),線性鏈表屬于【】。

31.表示""整數(shù)x的絕對(duì)值大于5""時(shí)值為""真""的C語言表達(dá)式是【】。

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

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

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

wordnum(str)

charstr[];

{inti,num=0,word=0;

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

if(【】==)word=0;

elseif(word==0)

{

word=1;

【】;

}

return(num);

}

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

#include<stdio.h>

sb(ints[],intb)

{staticintn=3;

b=s[n];

n--;

return(b);

}

main()

{ints[]={1,5,6,8};

inti,x=0;

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

{x=sb(s,x);

printf("%d",x);

}

printf("\n");

}

36.數(shù)據(jù)獨(dú)立性分為邏輯獨(dú)立性與物理獨(dú)立性。當(dāng)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)改變時(shí),其邏輯結(jié)構(gòu)可以不變,因此,基于邏輯結(jié)構(gòu)的應(yīng)用程序不必修改,稱為【】。

37.函數(shù)my_cmp()的功能是比較字符串s和t的大小,當(dāng)s等于t時(shí)返回0,否則返回s和t的第一個(gè)不同字符的ASCII碼差值,即s>t時(shí)返回正值,s<t時(shí)返回負(fù)值。請(qǐng)?zhí)羁铡?/p>

My_cmp(char*s,char*t)

{while(*s==*t)

{if(*s==′\0)return0;

++s;++t;

}return【】;

}

38.在鏈表的運(yùn)算過程中,能夠使空表與非空表的運(yùn)算統(tǒng)一的結(jié)構(gòu)是______。

39.下列程序執(zhí)行后輸出的結(jié)果是【】。

f(intA)

{staticc=0;

c=a+c++;

return(c);

}

main()

{inta=2,i,k;

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

k=f(a++);

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

}

40.下面程序的輸出結(jié)果是【】。

main()

{intarr[10],i,k=0;

for(i=0;i<10;i++)arr[i]=i;

for(i=0;i<4;i++)k+=arr[i]=i;

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

}

三、1.選擇題(20題)41.請(qǐng)讀程序段:charstr[]="ABCD",*p=strprint("%d\n",*(p+4));程序段的輸出結(jié)果是______。

A.68B.OC.字符'D'的地址D.不確定的值

42.下面程序的輸出結(jié)果是()#definePI3.1415#defineARE(x)PI*x*xmain(){intr=2;printf("%f",ARE(r+1));}

A.28.26B.28.26C.9.28D.9.28

43.有以下程序:#include<stdio.h>#include<string.h>main(){chara[]={'a','b','c','d','e','f','g','h','\0'};inti,j;i=sizeof(a);j=strlen(a);printf("%d,%d\b",i,j);}程序運(yùn)行后的輸出結(jié)果是

A.9,9B.8,9C.1,8D.9,8

44.設(shè)p1和p2是指向一個(gè)int型一維數(shù)組的指針變量,k為int型變量,則不能正確執(zhí)行的語句是

A.k=*p1+*p2B.p2=k;C.p1=p2;D.k=*p1*(*p2);

45.有以下程序main(){inta=3,b=4,c=5,d=2;if(a>B)if(b>C)printf("%d",d+++1);elseprintf("%d",++d+1);printf("%d\n",D);}程序運(yùn)行后的輸出結(jié)果是

A.2B.3C.43D.44

46.設(shè)變量x為float型且已經(jīng)賦值,則以下語句中能夠?qū)中的數(shù)值保留到小數(shù)點(diǎn)后面兩位,并將第三位四舍五入的是______。

A.x=x*100+0.5/100.0

B.x=(x*100+0.5)/100.0

C.x=(int)(x*100+0.5)/100.0

D.x=(x/100+0.5)*100.0

47.一個(gè)良好的算法由下面的基本結(jié)構(gòu)組成,但不包括______。

A.順序結(jié)構(gòu)B.選擇結(jié)構(gòu)C.循環(huán)結(jié)構(gòu)D.跳轉(zhuǎn)結(jié)構(gòu)

48.C語言可執(zhí)行程序的開始執(zhí)行點(diǎn)是()。

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

49.函數(shù)調(diào)用strcat(strcpy(str1,str2),str3)的功能是()。

A.將字符串str1復(fù)制到字符串str2中后再連接到字符串str3之后

B.將字符串str1連接到字符串str2之后再復(fù)制到字符串str3之后

C.將字符串str2復(fù)制到字符串str1中后再將字符串str3連接到字符串str1之后

D.將字符串str2連接到字符串str1之后再將字符串str1復(fù)制到字符串str3中

50.若有定義inta[9],*p=a;則p+5表示

A.數(shù)組元素a[5]的值B.數(shù)組元素a[5]的地址C.數(shù)組元素a[6]的地址D.數(shù)組元素a[0]的值加上5

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

A.C語言中對(duì)二進(jìn)制文件的防問速度比文本文件快

B.C語言中,隨機(jī)文件以二進(jìn)制代碼形式存儲(chǔ)數(shù)據(jù)

C.語句FILEfp;定義了一個(gè)名為fp的文件指針

D.C語言中的文本文件以ASCII碼形式存儲(chǔ)數(shù)據(jù)

52.以下程序的輸出結(jié)果是______。main(){charstr[12]={'s','t','r','i','n','g'};printf("%d/n",strlen(str));}

A.6B.7C.11D.12

53.若有如下程序:main(){inta=0,t=0;while(!a!=0)t+=a++;printf("%d,%d\n",t,A);}則程序運(yùn)行后的輸出結(jié)果是()

A.0,1B.1,0C.0,0D.1,1

54.下面描述中,符合結(jié)構(gòu)化程序設(shè)計(jì)風(fēng)格的是()。

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

B.模塊只有一個(gè)入口,可以有多個(gè)出口

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

D.不使用goto語句

55.當(dāng)調(diào)用函數(shù)時(shí),實(shí)參是一個(gè)數(shù)組名,則向函數(shù)傳送的是______。

A.數(shù)組的長(zhǎng)度B.數(shù)組的首地址C.數(shù)組每一個(gè)元素的地址D.數(shù)組每個(gè)元素中的值

56.下列程序的輸出結(jié)果是()。main(){inta,b,d=25;a=d/10%9;b=a&&(-1);printf("%d,%d\n",a,b);}

A.6,1B.2,1C.6,0D.2,0

57.下列程序的運(yùn)行結(jié)果是()。#include<stdio.h>voidfun(int*s,int*p){staticintt=3;*p=s[t];t--;}voidmain(){inta[]={2,3,4,5),k;intx;for(k=0;k<4;k++){fun(a,&x);printf("%d,",x);}}

A.5,4,3,2B.2,3,4,5,C.2,2,2,2,D.5,5,5,5,

58.請(qǐng)讀程序段:charstr[]="ABCD",*p=str;printf("%d\n",*(p+4));程序段的輸出結(jié)果是______。

A.68B.0C.字符'D'的地址D.不確定的值

59.若有如下程序:voidsub(){inta,b;a=lO;b=20;printf("%d,%d\n",b,a);}main(){inta=1O,b=20;sub();printf("%d,%d\n"'a'b);}則程序運(yùn)行后的輸出結(jié)果是()。

A.10,20B.20,1020,10C.20,10D.10,2010,2020,10

60.軟件需求分析一般應(yīng)確定的是用戶對(duì)軟件的______。

A.功能需求B.非功能需求C.性能需求D.功能需求和非功能需求

四、選擇題(20題)61.

62.

63.執(zhí)行下列程序中的輸出語句后,a的值是()。main{inta;printf(“%d\n”,(a=2*3,a*5,a+7));}A.17B.37C.6D.13

64.下列能正確進(jìn)行字符串賦值的是()。A.A.chars[5]={”ABCI)E”);

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

C.char*s;s="ABCDE";

D.char*s;printf("%S",s);

65.有以下程序:

#include<stdio.h>

#include<string.h>

main()

{charstr[][20][{"One*World","One*Dream!"},*p=str[1];

prinft("%d,",strlen(p));printf("%s\n",p);

}

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

A.9,0ne*World

B.9,0ne*Dream!

C.10,One*Dream!

D.10,Ome*World

66.以下關(guān)于結(jié)構(gòu)化程序設(shè)計(jì)的敘述中正確的是()。A.在C語言中,程序的模塊化是利用函數(shù)實(shí)現(xiàn)的

B.結(jié)構(gòu)化程序使用sotoi吾句會(huì)很便捷

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

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

67.如果inta=1,b=2,c=3,d=4;則條件表達(dá)式“a<b?a:c<d?c:d”的值是()。

A)1B)2

C)3D)4

68.

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

intfl(intx,inty){returnx>y?x:y;)

intf2(intx,inty){returnx>y?y:x;}

main

{inta=4,b=3,c=5,d=2,e,f,g;

e=f2(f1(a,b),f1(c,d));

f=f1(f2(a,b),f2(c,d));

g=a+b+c+d-e-f;

printf("%d,%d,%d\n",e,f,g);}

A.4,3,7B.3,4,7C.5,2,7D.2,5,7

69.

以下敘述中正確的是()。

A.預(yù)處理命令行必須位于C源程序的起始位置

B.在C語言中,預(yù)處理命令行都以“#”開頭

C.每個(gè)C程序必須在開頭包含預(yù)處理命令行:#include<stdio.h>

D.C語言的預(yù)處理不能實(shí)現(xiàn)宏定義和條件編譯的功能

70.函數(shù)調(diào)用strcat(strcpy(str1,str2),str3)的功能是()。

A.將字符串str1復(fù)制到字符串str2中后再連接到字符串str3之后

B.將字符串str1連接到字符串str2之后再復(fù)制到字符串str3之后

C.將字符串str2復(fù)制到字符串str1之后再將字符串str3連接到字符串str1之后

D.將字符串str2連接到字符串str1之后再將字符串strl復(fù)制到字符串str3中

71.設(shè)有定義

72.

有下列程序:

intfun(intn)

{if(n==1)}return1;

else

return(n+fun(n-1));

}

main

{intx;

scanf("%d",&x);x=fun(x);printf("%d\n",x);

)

執(zhí)行程序時(shí),給變量x輸入10,程序的輸出結(jié)果是()。

A.55B.54C.65D.45

73.

74.

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

#include<stdio.h>

#defineS(X)X*X

voidmain

{inta=9,k=3,m=2;

a/=S(k+m)/s(k+m);

printf("%d",a);

}

A.1B.4C.9D.0

75.

76.

77.

78.有以下程序

#include<stdio.h>

structst

{intx,y,z;}data[2]={3,10,2,20,15,7};

main()

{structst*p=data;

printf("%d,",p->y);

printf("%d\n",(++p)->x);

}

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

A.10,3B.20,3

C.10,20D.20,2

79.下面結(jié)構(gòu)體的定義語句中,錯(cuò)誤的是()。

A.structord{intx;intY;intZ;};struetorda;

B.structord{intx;inty;intZ;}structorda;

C.structord{intX;intY;intZ;}a;

D.struct{intX;inty;intZ;}a;

80.

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

#include<stdio.h>

main

{structst

{inty,x,z;

};

union

{longi;

intj;

chark;

}un;

printf("%d,%d\n",sizeof(structst),sizeof(un))

}

A.6,2B.6,4C.8,4D.8,6

五、程序改錯(cuò)題(1題)81.假如整數(shù)數(shù)列中的數(shù)不重復(fù),并存放在數(shù)組中。下列給定的程序中,函數(shù)proc()的功能是:刪除數(shù)列中值為x的元素。n中存放的是數(shù)列中元素的個(gè)數(shù)。請(qǐng)修改程序中的錯(cuò)誤,使它能夠得出正確的結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計(jì)題(1題)82.規(guī)定輸入的字符串中只包含字母和+號(hào)。編寫函數(shù)fun,其功能是:除了字符串前導(dǎo)和尾部的母號(hào)外,將其他的*號(hào)全部刪除。形參h已指向字符串中第一個(gè)字母,形參P指向字符串中最后一個(gè)字母。在編寫函數(shù)時(shí),不得使用c語言提供的字符串函數(shù)。

參考答案

1.A函數(shù)intfun(intn)的功能是求1+2+…+n的值并返回。所以執(zhí)行程序時(shí),給變量x輸入10后,執(zhí)行語句“x=fun(x);”,X的值將變?yōu)?到10中10個(gè)整數(shù)的累加和,即55。

2.A解析:通過地址來引用二維數(shù)組,若有以下定義:inta[3][4],i,j;且當(dāng)0≤i≤3,0≤j<4則可以有以下幾種方式來引用數(shù)組中的第i行,第j列的元素:\ue008a[i][j]\ue009,\ue008*(a[i]+j),\ue009*(*(a+i)+j),(*(a+i))[j],*(&a[0][0]+4*i+j)。表達(dá)式&a[0][0]+2*i+j-2相當(dāng)于是地址&a[0][0]加上多少偏移量。

3.B

4.D

5.B

6.B鏈表是一種特殊的線性表,鏈表的存儲(chǔ)結(jié)構(gòu)與順序存儲(chǔ)結(jié)構(gòu)不同,它的存儲(chǔ)區(qū)域可以是任意的存儲(chǔ)單元,對(duì)存儲(chǔ)系統(tǒng)中零碎的存儲(chǔ)部分具有更好的應(yīng)用,在給其分配存儲(chǔ)單元時(shí),不必事先估計(jì)整個(gè)存儲(chǔ)單元的空間大小;由于鏈表的元素是通過指針域的指針相連的,用鏈表存儲(chǔ)數(shù)據(jù)時(shí),對(duì)其進(jìn)行插入和刪除操作時(shí),不需要移動(dòng)其他元素,只需改變其直接前驅(qū)指針域,使其指向該結(jié)點(diǎn),并將該結(jié)點(diǎn)的指針域修改為指向其直接后繼結(jié)點(diǎn)即可。當(dāng)然,不管是鏈表還是順序存儲(chǔ),所需空間與線性表長(zhǎng)度都成正比。在鏈?zhǔn)酱鎯?chǔ)的鏈表結(jié)構(gòu)中,由于后一結(jié)點(diǎn)數(shù)據(jù)被存儲(chǔ)在哪里,只有通過前一結(jié)點(diǎn)的指針域才知道,因此,訪問時(shí)只能是逐個(gè)訪問,而不能實(shí)現(xiàn)隨機(jī)訪問。

7.D解析:文件狀態(tài)檢測(cè)函數(shù)feof(fp)的功能是:測(cè)試所指的文件的位置指針是否已達(dá)到文件尾,如果已到達(dá)文件尾,則函數(shù)返回非。值;否則返回0,表示文件尚未結(jié)束。

8.B

9.C解析:z=x++是先把x的值1賦給z,所以z=1,然后再把x加1賦給x,x=2,++y后y又加1,所以y=3。

10.B該程序首先給一維數(shù)組賦值,然后三次調(diào)用fun函數(shù),其中fun(a,0,3);功能是將一維數(shù)組中第1個(gè)元素和第4個(gè)元素互換,第2個(gè)元素和第3個(gè)元素互換;其中fun(a,4,9);功能是將一維數(shù)組中第5個(gè)元素和第10個(gè)元素互換,第6個(gè)和第9個(gè)元素互換,第7個(gè)元素和第8個(gè)元素互換;其中fun(a.O,9);功能是將將一維數(shù)組中第l個(gè)元素和第10個(gè)元素互換,第2個(gè)元素和第9個(gè)元素互換……依此類推。因此B選項(xiàng)正確。

11.B

12.B變量J只接收輸入數(shù)據(jù)的前兩位,從第三位開始直到空格之間的輸入整數(shù)都會(huì)被保存到浮點(diǎn)型變量Y中。

13.C

14.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。

15.A解析:局部變量在執(zhí)行到它所在的程序塊時(shí)產(chǎn)生,執(zhí)行完時(shí)被摧毀,而靜態(tài)局部變量的生存期將一直延長(zhǎng)到程序運(yùn)行結(jié)束,故選項(xiàng)A正確;全局變量的只有一種靜態(tài)存儲(chǔ)類別,故全局變量說明為static存儲(chǔ)類,和沒有說明為static存儲(chǔ)類其生存期都是一直延長(zhǎng)到程序運(yùn)行結(jié)束,故選項(xiàng)B不正確:未賦初值的局部變量的初值是隨機(jī)的,故選項(xiàng)C不正確;形參只能是一般局部變量,不能使用任何存儲(chǔ)類說明符,故選項(xiàng)D不正確。所以,4個(gè)選項(xiàng)中選項(xiàng)A符合題意。

16.C解析:數(shù)據(jù)塊輸入/輸出函數(shù)的調(diào)用形式為:fread(buffer,size,count,fp)。fread函數(shù)參數(shù)說明:“buffer”是一個(gè)指引,對(duì)fread來說,它是讀入數(shù)據(jù)的存放地址;“size”是要讀寫的字節(jié)數(shù);“count”是要進(jìn)行讀寫多少個(gè)size字節(jié)的數(shù)據(jù)項(xiàng);“fp”是指文件型指針。

17.D解析:在本題中,主函數(shù)在調(diào)用fun()函數(shù)進(jìn)行排序時(shí),傳遞的參數(shù)是c+4和6,fun()函數(shù)實(shí)現(xiàn)的功能是將數(shù)組c的第5個(gè)元素開始的6個(gè)元素依次進(jìn)行從大到小的順序排列。排序之后,數(shù)組c的內(nèi)容變?yōu)閧1,2,3,4,9,8,7,6,5,0}。

18.CC?!窘馕觥繑?shù)據(jù)庫系統(tǒng)(DBS)由數(shù)據(jù)庫(DBS)、數(shù)據(jù)庫管理系統(tǒng)(DBMS)、數(shù)據(jù)庫管理員、硬件平臺(tái)和軟件平臺(tái)五個(gè)部分組成,可見DB和DBMS都是DBS的組成部分。

19.B第一個(gè)for循環(huán)的作用是讓p指向每行的首地址,第二個(gè)for循環(huán)的作用是把它指向的字符串輸出,故選擇B選項(xiàng)。

20.A

21.(c=getchar())!='\n'(c=getchar())!='\\n'解析:分析題目可知,程序中運(yùn)用函數(shù)c=getchar()從標(biāo)準(zhǔn)輸入設(shè)備讀取下一個(gè)字符,而且是一行的字符(即沒有換行),所以條件為(c=getchar())!='\\n'。

22.-24-24解析:本題考查賦值運(yùn)算符a+=b等價(jià)于a=a+b;a-=a*a等價(jià)于a-a-a*a=4-4*4=-12:a+=a,即a=a+a=-24。

23.a[i][j]+b[i][j]a[i][j]+b[i][j]解析:求兩個(gè)矩陣的和只要將對(duì)應(yīng)元素相加即可。

24.*s-*t*s-*t解析:本題考查比較字符串的大小。函數(shù)的兩個(gè)形參是兩個(gè)字符指針變量,指針變量的值是字符串的首地址,*s和*t表示s和t指向的第一個(gè)字符,在while循環(huán)中,通過s和t指針的移動(dòng),不斷改變所指字符,通過返回s和t的第一個(gè)不同字符的ASCII碼的差值*s-*t得到結(jié)果。

25.結(jié)構(gòu)化設(shè)計(jì)結(jié)構(gòu)化設(shè)計(jì)解析:與結(jié)構(gòu)化需求分析方法相對(duì)應(yīng)的是結(jié)構(gòu)化設(shè)計(jì)方法。結(jié)構(gòu)化設(shè)計(jì)就是采用最佳的可能方法設(shè)計(jì)系統(tǒng)的各個(gè)組成部分以及各個(gè)成分之間的內(nèi)部聯(lián)系的技術(shù)。

26.1010解析:此題考查逗號(hào)表達(dá)式。逗號(hào)表達(dá)式的值是最后一個(gè)表達(dá)式的值,所以本題的返回值是a+4。前面已經(jīng)給a賦值6,所以追回值a+4=6+4=10。

27.#include<a:\myfile.txt>#include<a:\\myfile.txt>解析:本題考查了函數(shù)的存儲(chǔ)分類的概念。如果沒有特別說明,函數(shù)的存儲(chǔ)范圍是從定義函數(shù)的位置到文件的結(jié)尾,如果其他文件想使用這個(gè)函數(shù),需要用ginclude文件包含命令將定義函數(shù)的文件包含進(jìn)來。

28.數(shù)據(jù)字典數(shù)據(jù)字典解析:在結(jié)構(gòu)化分析方法中,用于描述系統(tǒng)中所用到的全部數(shù)據(jù)和文件的文檔稱為數(shù)據(jù)字典。

29.77解析:此表達(dá)式為三目運(yùn)算符,++a的值為6,b--的值為6,則整個(gè)表達(dá)式的值為++a的值,++a的值為7。請(qǐng)注意前綴++,--和后綴++,--的區(qū)別。

30.存儲(chǔ)結(jié)構(gòu)

31.x>5||x<-5x<-5或x<-5||x>5x>5||x<-5,x<-5或x<-5||x>5解析:要使整數(shù)x的絕對(duì)值大于5,則x大于5或x小于5,用C語言表示即為:x>5||x<-5或者x<-5||x>5。故本題答案為;x>5||x<-5或者x<-5||x>5。

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

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

34.\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]代表字符串sb中的第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ù)。

35.86518651解析:主程序中,第一次循環(huán)時(shí),i=0,調(diào)用sb(s,x)子函數(shù),此時(shí)n=3,x=s[n]=s[3]=8,然后將n減1變?yōu)?;第二次循環(huán)時(shí),i=1,調(diào)用sb(s,x)子函數(shù),因?yàn)閷定義為了靜態(tài)變量,所以此時(shí)n=2,返回x=s[n]=s[2]=6;第三次循環(huán)時(shí),i=2,調(diào)用sb(s,x)子函數(shù),此時(shí)n=1,返回x=s[n]=s[1]=5;第四次循環(huán)時(shí),i=3,調(diào)用sb(s,x)子函數(shù),此時(shí)n=0,返回x=s[n]=s[0]=1。此程序?qū)嶋H上是將數(shù)組s逆序輸出。

36.物理獨(dú)立性物理獨(dú)立性解析:數(shù)據(jù)獨(dú)立性分為邏輯獨(dú)立性與物理獨(dú)立性。當(dāng)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)改變時(shí),其邏輯結(jié)構(gòu)可以不變,因此,基于邏輯結(jié)構(gòu)的應(yīng)用程序不必修改,稱為物理獨(dú)立性。

37.*s-*t*s-*t解析:兩字符串大小比較必須從它們的首字符開始,在對(duì)應(yīng)字符相等情況下循環(huán),直至不相等結(jié)束。相等時(shí),若字符串已到了字符串的結(jié)束標(biāo)記符,則兩字符串相同,函數(shù)返回0值;如還有后繼字符,則準(zhǔn)備比較下一對(duì)字符。對(duì)應(yīng)字符不相同,循環(huán)結(jié)束。循環(huán)結(jié)束時(shí),就以兩個(gè)當(dāng)前字符的差返回,所以在空框處應(yīng)填入*s-*t,保證在s>t時(shí),返回正值,當(dāng)s<t時(shí),返回負(fù)值。

38.循環(huán)鏈表循環(huán)鏈表解析:在循環(huán)鏈表中,由于設(shè)置了一個(gè)頭結(jié)點(diǎn),因此在任何情況下,循環(huán)鏈表中至少有一個(gè)結(jié)點(diǎn)存在,從而使空表與非空表的運(yùn)算統(tǒng)一。

39.77解析:在程序執(zhí)行時(shí),static變量?jī)H初始化一次,下次使用時(shí)將使用上次保存的值。

40.66解析:本題第1個(gè)for循環(huán)是為數(shù)組arr元素賦初值。第2個(gè)for循環(huán)是分別用i=0,1,2,3給數(shù)組元素arr[0]、arr[1]、arr[2]、arr[3]賦值,再累加到變量k中,k=0+1+2+3=6。

41.B解析:在對(duì)字符數(shù)組賦字符串值時(shí),系統(tǒng)會(huì)自動(dòng)在字符串的末尾加上—個(gè)字符串結(jié)束標(biāo)志'\\0',故指向字符數(shù)組的指針p的*(p+4)的值為'\\0'。由于'\\0'的編碼值就是0,所以本題輸出為0。

42.D

43.D解析:本題考查了求數(shù)據(jù)類型長(zhǎng)度的運(yùn)算符sizeof和求字符串長(zhǎng)度的函數(shù)strlen的區(qū)別。strlen計(jì)算的是一個(gè)字符串的實(shí)際字符個(gè)數(shù),如果字符串放在字符數(shù)組中,則函數(shù)strlen的值為'\\0'之前的全部字符個(gè)數(shù)。而sizeof求出的是數(shù)據(jù)占據(jù)存儲(chǔ)空間的字節(jié)數(shù),當(dāng)然也要包括字符串的結(jié)束標(biāo)志符'\\0'。

44.B解析:本題主要考查了一維數(shù)組指針的賦值和用指針引用數(shù)組元素進(jìn)行運(yùn)算。選項(xiàng)B)中p2為指向int型變量的指針。而k為int型變量,不能將int型變量直接賦值給指向int型變量的指針,所以選項(xiàng)B)錯(cuò)誤。

45.A解析:本題考核的知識(shí)點(diǎn)是if-else語句的程序分析。我們首先看程序中if-else的匹配,由于C語言中規(guī)定else總是與最近的if搭配,因此程序中else與第二個(gè)訂搭配,即該if-else語句為第一個(gè)if語句的執(zhí)行部分,接著判斷第一個(gè)if后面括號(hào)里的表達(dá)式的值“a>b”為假('3>4'為假),因此不執(zhí)行后面if-else語句,程序?qū)?zhí)行下面的輸出語句輸出d,而d一直未被改變故為原來的值2,所以,4個(gè)選項(xiàng)中選項(xiàng)A符合題意。

46.B解析:選項(xiàng)A的功能是將x的值放大100倍,然后與0.0005相加;選項(xiàng)C的功能是將x中的數(shù)值保留到小數(shù)點(diǎn)后面兩位后強(qiáng)制轉(zhuǎn)換為整型;選項(xiàng)D的功能是將x與50相加;正確答案為選項(xiàng)B。

47.D解析:1966年,Bohra和Jacopini提出了以下三種結(jié)構(gòu),用這三咱基本結(jié)構(gòu)作為表示一個(gè)良好算法的基本單元:1、順序結(jié)構(gòu);2、選擇結(jié)構(gòu);3、循環(huán)結(jié)構(gòu)。

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

49.C解析:strcat(s1,s2)是把s2字符串連接到s1字符串末尾,strcpy(s1,s2)是把s2字符串復(fù)制給s1字符串,要保證s1能容納下連接或復(fù)制后的字符串。

50.B解析:本題考查了通過指針來引用一維數(shù)組元素的方法。題中*p=a;這一賦值語句是指針p指向了數(shù)組a的首地址,p+5是指針p向后移動(dòng)了5個(gè)int類型的存儲(chǔ)單元,所以p+5指向了數(shù)組元素a[5]。

51.C解析:本題考查了C語言中文件的一些基本概念。定義文件類型指針變量的一般形式為:

FILE*指針變量名;

因此選項(xiàng)C是錯(cuò)誤的,應(yīng)該選擇C。

52.A解析:在C語言中,字符串的長(zhǎng)度是其首字符到NULL(不含)字符的總字符個(gè)數(shù)。本題定義字符數(shù)組str的同時(shí),對(duì)第7個(gè)元素,由系統(tǒng)自動(dòng)添加上“\\0”,故字符串的長(zhǎng)度為6。

53.A

54.A解析:符合結(jié)構(gòu)化程序設(shè)計(jì)風(fēng)格中,應(yīng)該選擇只有一個(gè)入口和一個(gè)出口的模塊,故選項(xiàng)B錯(cuò)誤;首先要保證程序正確,然后才要求提高效率,故選項(xiàng)C錯(cuò)誤;嚴(yán)格控制使用goto語句,必要時(shí)可以使用,故選項(xiàng)D錯(cuò)誤。

55.B解析:當(dāng)調(diào)用函數(shù)時(shí),實(shí)參是一個(gè)數(shù)組名,則向函數(shù)傳送的是數(shù)組的首地址,函數(shù)中的形參可定義成以下三種形式:

①形參定義成數(shù)組;

②形參定義成可變長(zhǎng)數(shù)組:

③形參定義為指針變量。

56.B解析:算術(shù)運(yùn)行符“/”、“%”的優(yōu)先級(jí)處于同一級(jí),并且兩者的結(jié)合性都是從左到右。所以算術(shù)表達(dá)式運(yùn)算過程為:a=25/10%9=2%9=2:當(dāng)邏輯運(yùn)算符“&&”兩邊的值都是非零時(shí),邏輯表達(dá)式的值才為真(即為1)。所以b=2&&(-1)=1。

57.A解析:分析fun函數(shù)程序段,可知fun函數(shù)要實(shí)現(xiàn)的功能是將s中第(t+1)個(gè)元素以前的元素逆置賦給數(shù)組p。由于fun中函數(shù)定義了靜態(tài)變量t=3,因此,在主函數(shù)中調(diào)用函數(shù)fun(a,&x)時(shí),就是要將數(shù)組a中前4個(gè)元素逆置賦給數(shù)組x,最后輸出x數(shù)組。

58.B解析:在對(duì)字符數(shù)組賦字符串值時(shí),系統(tǒng)會(huì)自動(dòng)在字符串的末尾加上一個(gè)字符串結(jié)束標(biāo)志“\\0”,故指向字符數(shù)組的指針p的*(p+4)的值為“\\0”。由于“\\0”的編碼值就是0,所以本題輸出為0。

59.C解析:程序首先調(diào)用sub()子函數(shù),在子函數(shù)中輸出子函數(shù)自己的變量b和a(20,10),然后主函數(shù)再輸出主函數(shù)中的變量a和b(10,20)。故應(yīng)該選擇C。

60.DD?!窘馕觥寇浖枨蠓治鲋行枰獦?gòu)造一個(gè)完全的系統(tǒng)邏輯模型,理解用戶提出的每一功能與性能要求,使用戶明確自己的任務(wù)。因此,需求分析應(yīng)確定用戶對(duì)軟件的功能需求和非功能需求。

61.A

62.B

63.C本題考查逗號(hào)表達(dá)式。程序輸出時(shí)輸出一個(gè)%d,所以輸出第一個(gè)a的值與后續(xù)無關(guān)。本題考查逗號(hào)表達(dá)式。本題的返回值是a+7,a=2*3=6,a+7=13(注意:本題問的是a的值,而不是程序的輸出值)。

64.C選項(xiàng)A、B的空間不夠;字符串存儲(chǔ)要有結(jié)束符'\0',且要占用一個(gè)空間,printf用來輸出字符,不能輸入字符串。

65.C\n本題輸出兩個(gè)結(jié)果,第一個(gè)是求字符串的長(zhǎng)度。第二個(gè)是輸出的字符串,數(shù)組的下標(biāo)是從0開始的,所以當(dāng)str取1的時(shí)候,應(yīng)為“One*Dream!”。

\n

66.A使用900t0語句會(huì)使程序混亂,所以B)錯(cuò)誤;一個(gè)結(jié)構(gòu)化程序沒有必要同時(shí)由順序、分支、循環(huán)三種結(jié)構(gòu)組成,所以c)錯(cuò)誤;使用三種基本結(jié)構(gòu)構(gòu)成的程序可以解決任何復(fù)雜的問題。所以D)錯(cuò)誤。

67.A先進(jìn)行a<b的判斷,因?yàn)閍=1,b=2,所以條件成立取a的值為表達(dá)式的值,即1.

68.A

\n根據(jù)函數(shù)的定義可知,如果x>Y成立,則函數(shù)f1返回x的值,函數(shù)f2返回y的值。所以fl(a,b)=4,n(c,d)=5,f2(a,b)=3;,f2(c,d)=2,故e=f2(4,5)=4,f=f1(3,2)=3,g=4+3斗5+2-4-3=7。

\n

69.B

\n本題是對(duì)基本知識(shí)點(diǎn)的理解,預(yù)處理命令行的位置沒有規(guī)定,只是習(xí)慣寫在起始位置而已,當(dāng)需要時(shí)才用#include<stdio.h>頭文件,預(yù)處理的作用就是實(shí)現(xiàn)宏定義和條件編譯。

\n

70.Cstrcat(s1,s2)函數(shù)的功能是把s2字符串連接到s1字符串末尾,strcpy(s1,s2)是把s2字符串復(fù)制到s1字符串,要保證sl的容量。

71.A選項(xiàng)A)定義字符數(shù)組str,然后將str賦值給C,c便指向字符串str,符合題意。所以選擇A)。

72.A

\n本題在函數(shù)intfun(intn)的定義中又出現(xiàn)了對(duì)函數(shù)fun的調(diào)用,所以函數(shù)fun是遞歸函數(shù)。因而在主函數(shù)中調(diào)用x=fun(x)時(shí),當(dāng)輸入10賦給變量x時(shí),遞歸調(diào)用的過程為

\nfun(10)=10…fun(9)=104-94-fun(8)=104-9+84-fun(7)

\n=10+9++8++7++fun(6)=10+9++8+7+6+fun(6)

\n=10+9++8+7+6+5+fun(4)

\n=10+9++8+7+6+5+4+fun(3)

\n=10+9++8+7+6+5+4+3+fun(2)

\n=10+9++8+7+6+5+4+3+2+fun(1)

\n=10+9++8+7+6+5+4+3+2=55

\n

73.C\r\n

74.D

\n本題j=要是考查帶參數(shù)的宏的定義,過程如下:inta=a/S(k+m)/S(k+m)=a/(k+m*k+m/k+m)=9/(3十2*3十2/3十2*3十2)=0。

\n

75.D

76.C

77.A

78.C本題考查結(jié)構(gòu)體數(shù)組的相關(guān)操作。結(jié)構(gòu)體數(shù)組的定義方法與結(jié)構(gòu)體變量的定義方法一樣,只不過將變量變?yōu)閿?shù)組。數(shù)組內(nèi)的各元素在內(nèi)存中是連續(xù)存放的。題目中給出了一個(gè)結(jié)構(gòu)體st,該結(jié)構(gòu)體有三個(gè)整型成員x,y,z。結(jié)構(gòu)體數(shù)組data元素的個(gè)數(shù)為2,并對(duì)數(shù)組進(jìn)行初始化,data[0]={3,10,2},data[1]={20,15,7}。主函數(shù)main中定義了一個(gè)指針p指向數(shù)組data,第一個(gè)printf函數(shù)是輸出p->y,即data[0].y,該值等于10。第二個(gè)printf函數(shù)是輸出(++p)->x,++p使得指針p指向data[1],輸出的目標(biāo)為data[1].x,該值等于20。故輸出結(jié)果為10,20。

79.B結(jié)構(gòu)體定義的類型說明的一般形式為:struct結(jié)構(gòu)體標(biāo)識(shí)名{類型名1結(jié)構(gòu)成員名表l;類型名2結(jié)構(gòu)成員名表2;···};。注意:①結(jié)構(gòu)體說明同樣要以分號(hào)結(jié)尾;②緊跟在結(jié)構(gòu)體類型說明之后進(jìn)行定義;③在說明一個(gè)無名結(jié)構(gòu)體類型的同時(shí),直接進(jìn)行定義;④先說明結(jié)構(gòu)體類型,再單獨(dú)進(jìn)行變量定義等。所以B選項(xiàng)錯(cuò)誤。

80.B

\n本題主要考查結(jié)構(gòu)和聯(lián)合內(nèi)存使用的一些區(qū)別:結(jié)構(gòu)中每個(gè)成員相互獨(dú)立,一個(gè)結(jié)構(gòu)所占內(nèi)存空間的大小是結(jié)構(gòu)中每個(gè)成員所占內(nèi)存空間大小的總和;聯(lián)合所占用內(nèi)存空間是指最長(zhǎng)的成員占用的空間。

\n

81.錯(cuò)誤:arr[i+1]=arr[i];

正確:arr[i]=arr[i+1];

【解析】題目中要求刪除數(shù)列中值為x的元素,需要將數(shù)列中的每一個(gè)元素與指定數(shù)值x相比較。如果比較結(jié)果為第i個(gè)元素與x相等,則把第i個(gè)位置以后的元素前移一個(gè)位置,因此,“arr[i+1]=arr[i];”應(yīng)改為“arr[i]=arr[i+1]”。

82.2022-2023年江西省贛州市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(20題)1.有以下程序:intfun(intn){if(n==l)returnl;elsereturn(n+fun(n一1)):}main{intx;scanf("%d",&x);x=fun(x);printf("%d\n",x):}執(zhí)行程序時(shí),給變量X輸入10,程序的輸出結(jié)果是()。A.55B.54C.65D.45

2.現(xiàn)有如下程序段#include"stdio.h"main(){inta[5][6]={23,3,65,21,6,78,28;5,67,25,435,76,8,22,45,7,8,34,6,78,32,4,5,67,4,21,1};inti=0,j=5;printf("%d\n",*(&a[0][0]+2*i+j-2));}則程序的輸出結(jié)果為

A.21B.78C.23D.28

3.已知一個(gè)無向圖(邊為正數(shù))中頂點(diǎn)A,B的一條最短路P,如果把各個(gè)邊的權(quán)重(即相鄰兩個(gè)頂點(diǎn)的距離)變?yōu)樵瓉淼?倍,那么在新圖中,P仍然是A,B之間的最短路,以上說法是()A.錯(cuò)誤B.正確

4.隊(duì)列的“先進(jìn)先出”特性是指()。

A.最早插入隊(duì)列中的元素總是最后被刪除

B.當(dāng)同時(shí)進(jìn)行插入、刪除操作時(shí),總是插入操作優(yōu)先

C.每當(dāng)有刪除操作時(shí),總是要先做一次插入操作

D.每次從隊(duì)列中刪除的總是最早插入的元素

5.

6.鏈表不具有的特點(diǎn)是A.A.不必事先估計(jì)存儲(chǔ)空間

B.可隨機(jī)訪問任一元素

C.插入和刪除不需要移動(dòng)元素

D.所需空間與線性表長(zhǎng)度成正比

7.若fp是指向某文件的指針,且尚未讀到文件末尾,則函數(shù)feof(fp)的返回值是()。

A.EOFB.-1C.非零值D.0

8.

9.有以下程序:main(){intx,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d,%d\n",x,y,z);程序運(yùn)行后的輸出結(jié)果是()。

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

10.有以下程序:

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

A.4321098765B.5678901234C.0987654321D.0987651234

11.

12.有以下程序段intj;floaty;charname[50]:scanf("%2d%f%s",&i,&.y,name):當(dāng)執(zhí)行上述程序段,從鍵盤上輸入555667777abc后,y的值為()。A.55566.0B.566.0C.7777.0D.566777.0

13.已知char**s,下面正確的語句是()。A.A.s="ABCDEF";

B.*s="ABCDEF";

C.**s="ABCDEF";

D.*s='A';

14.有以下程序

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

15.以下敘述中正確的是()。

A.局部變量說明為static存儲(chǔ)類,其生存期將得到延長(zhǎng)

B.全局變量說明為static存儲(chǔ)類,其作用域?qū)⒈粩U(kuò)大

C.任何存儲(chǔ)類的變量在未賦初值時(shí),其值都是不確定的

D.形參可以使用的存儲(chǔ)類說明符與局部變量完全相同

16.已知函數(shù)的調(diào)用形式:fread(buffer,size,count,fp);其中buffer代表的是()。

A.一個(gè)整型變量,代表要讀入的數(shù)據(jù)項(xiàng)總數(shù)

B.一個(gè)文件指針,指向要讀的文件

C.一個(gè)指針,是指向的輸入數(shù)據(jù)放在內(nèi)存中的起始位置

D.一個(gè)存儲(chǔ)區(qū),存放要讀的數(shù)據(jù)項(xiàng)

17.有以下程序

#include<stdio.h>

voidfun(int*a,intn)/*fun函數(shù)的功能是將a所指數(shù)組元素從大到小排序*/

{intt,i,j;

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

for(j=i+1;j<n;j++)

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

}

main()

{intc[10]={1,2,3,4,5,6,7,8,9,0},i;

fun(c+4,6);

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

printf("\n");

}

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

A.1,2,3,4,5,6,7,8,9,0,

B.0,9,8,7,6,5,1,2,3,4,

C.0,9,8,7,6,5,4,3,2,1,

D.1,2,3,4,9,8,7,6,5,0,

18.數(shù)據(jù)庫DB、數(shù)據(jù)庫系統(tǒng)DBS、數(shù)據(jù)庫管理系統(tǒng)DBMS之間的關(guān)系是()。

A.DB包括DBS和DBMSB.DBMS包括DB和DBSC.DBS包括DB和DBMSD.沒有任何關(guān)系

19.以下程序的輸出結(jié)果是()。main{charch[3][4]={"123","456","78"),*p[3];inti;for(i=0;i<3;i++)p[i]=ch[i];for(i=0;i<3;i++)printf("%s",p[i]);}A.123456780B.123456780C.12345678D.147

20.一個(gè)隊(duì)列的入隊(duì)序列是a,b,c,d,則出隊(duì)序列是()。

A.a,b,c,dB.a,c,b,dC.d,c,b,aD.a,c,b,d

二、2.填空題(20題)21.下列程序的功能是對(duì)輸入的一行字符中的數(shù)字字符的字面值累加,輸出此累加和,請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

#include<ctype.h>

main()

{charc;

inta,s=0;

while(______)

if(isdigit(C))

{a=c-'0';s+=a;}

printf("s=%d",s);

}

22.若a是血型變量,且a的初值為4,則計(jì)算a+=a-=a*a表達(dá)式后a的值為______。

23.以下程序是求矩陣a、b的和,結(jié)果存入矩陣c中,請(qǐng)?zhí)羁铡?include<stdio.h>main(){inta[4][4]={1,2,6,7},{0,4,2,-8},{1,4,5,2},{2,4,6,8}};intb[4][4]={{-4,0,7,9},{2,-7,7,4),{6,9,0,1),{8,8,6,5)};inti,j,c[4][4];for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=();for(i=0;i<4;i++)for(j=0;j<4;j++)printf("%d",c[i][j]);}

24.函數(shù)mycmp(char*s,char*t)的功能是比較字符串s和t的大小,當(dāng)s等于t時(shí)返回0,當(dāng)s>t時(shí)返回正值,當(dāng)s<t時(shí)返回負(fù)值。請(qǐng)?zhí)羁铡?/p>

mycmp(char*s,char*t)

{while(*s==*t)

{if(*s=='\0')return0;

++s;++t;

}

return(【】);

}

25.與結(jié)構(gòu)化需求分析方法相對(duì)應(yīng)的是【】方法。

26.若a是int型變量,則下列表達(dá)式的值為______。

(a=2*3,a*2),a+4

27.設(shè)有以下程序,為使之正確運(yùn)行,請(qǐng)?jiān)跈M線中填入應(yīng)包含的命令行。(注:try_me()函數(shù)在a:\myfile.txt中有定義。)

______

main()

{printf("\n");

try_me();

printf("\n");}

28.在結(jié)構(gòu)化分析方法中,用于描述系統(tǒng)中所用到的全部數(shù)據(jù)和文件的文檔稱為【】。

29.設(shè)inta=5,b=6,表達(dá)式(++a==b--)?++a:--b的值是【】。

30.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu),線性鏈表屬于【】。

31.表示""整數(shù)x的絕對(duì)值大于5""時(shí)值為""真""的C語言表達(dá)式是【】。

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

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

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

wordnum(str)

charstr[];

{inti,num=0,word=0;

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

if(【】==)word=0;

elseif(word==0)

{

word=1;

【】;

}

return(num);

}

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

#include<stdio.h>

sb(ints[],intb)

{staticintn=3;

b=s[n];

n--;

return(b);

}

main()

{ints[]={1,5,6,8};

inti,x=0;

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

{x=sb(s,x);

printf("%d",x);

}

printf("\n");

}

36.數(shù)據(jù)獨(dú)立性分為邏輯獨(dú)立性與物理獨(dú)立性。當(dāng)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)改變時(shí),其邏輯結(jié)構(gòu)可以不變,因此,基于邏輯結(jié)構(gòu)的應(yīng)用程序不必修改,稱為【】。

37.函數(shù)my_cmp()的功能是比較字符串s和t的大小,當(dāng)s等于t時(shí)返回0,否則返回s和t的第一個(gè)不同字符的ASCII碼差值,即s>t時(shí)返回正值,s<t時(shí)返回負(fù)值。請(qǐng)?zhí)羁铡?/p>

My_cmp(char*s,char*t)

{while(*s==*t)

{if(*s==′\0)return0;

++s;++t;

}return【】;

}

38.在鏈表的運(yùn)算過程中,能夠使空表與非空表的運(yùn)算統(tǒng)一的結(jié)構(gòu)是______。

39.下列程序執(zhí)行后輸出的結(jié)果是【】。

f(intA)

{staticc=0;

c=a+c++;

return(c);

}

main()

{inta=2,i,k;

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

k=f(a++);

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

}

40.下面程序的輸出結(jié)果是【】。

main()

{intarr[10],i,k=0;

for(i=0;i<10;i++)arr[i]=i;

for(i=0;i<4;i++)k+=arr[i]=i;

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

}

三、1.選擇題(20題)41.請(qǐng)讀程序段:charstr[]="ABCD",*p=strprint("%d\n",*(p+4));程序段的輸出結(jié)果是______。

A.68B.OC.字符'D'的地址D.不確定的值

42.下面程序的輸出結(jié)果是()#definePI3.1415#defineARE(x)PI*x*xmain(){intr=2;printf("%f",ARE(r+1));}

A.28.26B.28.26C.9.28D.9.28

43.有以下程序:#include<stdio.h>#include<string.h>main(){chara[]={'a','b','c','d','e','f','g','h','\0'};inti,j;i=sizeof(a);j=strlen(a);printf("%d,%d\b",i,j);}程序運(yùn)行后的輸出結(jié)果是

A.9,9B.8,9C.1,8D.9,8

44.設(shè)p1和p2是指向一個(gè)int型一維數(shù)組的指針變量,k為int型變量,則不能正確執(zhí)行的語句是

A.k=*p1+*p2B.p2=k;C.p1=p2;D.k=*p1*(*p2);

45.有以下程序main(){inta=3,b=4,c=5,d=2;if(a>B)if(b>C)printf("%d",d+++1);elseprintf("%d",++d+1);printf("%d\n",D);}程序運(yùn)行后的輸出結(jié)果是

A.2B.3C.43D.44

46.設(shè)變量x為float型且已經(jīng)賦值,則以下語句中能夠?qū)中的數(shù)值保留到小數(shù)點(diǎn)后面兩位,并將第三位四舍五入的是______。

A.x=x*100+0.5/100.0

B.x=(x*100+0.5)/100.0

C.x=(int)(x*100+0.5)/100.0

D.x=(x/100+0.5)*100.0

47.一個(gè)良好的算法由下面的基本結(jié)構(gòu)組成,但不包括______。

A.順序結(jié)構(gòu)B.選擇結(jié)構(gòu)C.循環(huán)結(jié)構(gòu)D.跳轉(zhuǎn)結(jié)構(gòu)

48.C語言可執(zhí)行程序的開始執(zhí)行點(diǎn)是()。

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

49.函數(shù)調(diào)用strcat(strcpy(str1,str2),str3)的功能是()。

A.將字符串str1復(fù)制到字符串str2中后再連接到字符串str3之后

B.將字符串str1連接到字符串str2之后再復(fù)制到字符串str3之后

C.將字符串str2復(fù)制到字符串str1中后再將字符串str3連接到字符串str1之后

D.將字符串str2連接到字符串str1之后再將字符串str1復(fù)制到字符串str3中

50.若有定義inta[9],*p=a;則p+5表示

A.數(shù)組元素a[5]的值B.數(shù)組元素a[5]的地址C.數(shù)組元素a[6]的地址D.數(shù)組元素a[0]的值加上5

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

A.C語言中對(duì)二進(jìn)制文件的防問速度比文本文件快

B.C語言中,隨機(jī)文件以二進(jìn)制代碼形式存儲(chǔ)數(shù)據(jù)

C.語句FILEfp;定義了一個(gè)名為fp的文件指針

D.C語言中的文本文件以ASCII碼形式存儲(chǔ)數(shù)據(jù)

52.以下程序的輸出結(jié)果是______。main(){charstr[12]={'s','t','r','i','n','g'};printf("%d/n",strlen(str));}

A.6B.7C.11D.12

53.若有如下程序:main(){inta=0,t=0;while(!a!=0)t+=a++;printf("%d,%d\n",t,A);}則程序運(yùn)行后的輸出結(jié)果是()

A.0,1B.1,0C.0,0D.1,1

54.下面描述中,符合結(jié)構(gòu)化程序設(shè)計(jì)風(fēng)格的是()。

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

B.模塊只有一個(gè)入口,可以有多個(gè)出口

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

D.不使用goto語句

55.當(dāng)調(diào)用函數(shù)時(shí),實(shí)參是一個(gè)數(shù)組名,則向函數(shù)傳送的是______。

A.數(shù)組的長(zhǎng)度B.數(shù)組的首地址C.數(shù)組每一個(gè)元素的地址D.數(shù)組每個(gè)元素中的值

56.下列程序的輸出結(jié)果是()。main(){inta,b,d=25;a=d/10%9;b=a&&(-1);printf("%d,%d\n",a,b);}

A.6,1B.2,1C.6,0D.2,0

57.下列程序的運(yùn)行結(jié)果是()。#include<stdio.h>voidfun(int*s,int*p){staticintt=3;*p=s[t];t--;}voidmain(){inta[]={2,3,4,5),k;intx;for(k=0;k<4;k++){fun(a,&x);printf("%d,",x);}}

A.5,4,3,2B.2,3,4,5,C.2,2,2,2,D.5,5,5,5,

58.請(qǐng)讀程序段:charstr[]="ABCD",*p=str;printf("%d\n",*(p+4));程序段的輸出結(jié)果是______。

A.68B.0C.字符'D'的地址D.不確定的值

59.若有如下程序:voidsub(){inta,b;a=lO;b=20;printf("%d,%d\n",b,a);}main(){inta=1O,b=20;sub();printf("%d,%d\n"'a'b);}則程序運(yùn)行后的輸出結(jié)果是()。

A.10,20B.20,1020,10C.20,10D.10,2010,2020,10

60.軟件需求分析一般應(yīng)確定的是用戶對(duì)軟件的______。

A.功能需求B.非功能需求C.性能需求D.功能需求和非功能需求

四、選擇題(20題)61.

62.

63.執(zhí)行下列程序中的輸出語句后,a的值是()。main{inta;printf(“%d\n”,(a=2*3,a*5,a+7));}A.17B.37C.6D.13

64.下列能正確進(jìn)行字符串賦值的是()。A.A.chars[5]={”ABCI)E”);

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

C.char*s;s="ABCDE";

D.char*s;printf("%S",s);

65.有以下程序:

#include<stdio.h>

#include<string.h>

main()

{charstr[][20][{"One*World","One*Dream!"},*p=str[1];

prinft("%d,",strlen(p));printf("%s\n",p);

}

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

A.9,0ne*World

B.9,0ne*Dream!

C.10,One*Dream!

D.10,Ome*World

66.以下關(guān)于結(jié)構(gòu)化程序設(shè)計(jì)的敘述中正確的是()。A.在C語言中,程序的模塊化是利用函數(shù)實(shí)現(xiàn)的

B.結(jié)構(gòu)化程序使用sotoi吾句會(huì)很便捷

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

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

67.如果inta=1,b=2,c=3,d=4;則條件表達(dá)式“a<b?a:c<d?c:d”的值是()。

A)1B)2

C)3D)4

68.

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

intfl(intx,inty){returnx>y?x:y;)

intf2(intx,inty){returnx>y?y:x;}

main

{inta=4,b=3,c=5,d=2,e,f,g;

e=f2(f1(a,b),f1(c,d));

f=f1(f2(a,b),f2(c,d));

g=a+b+c+d-e-f;

printf("%d,%d,%d\n",e,f,g);}

A.4,3,7B.3,4,7C.5,2,7D.2,5,7

69.

以下敘述中正確的是()。

A.預(yù)處理命令行必須位于C源程序的起始位置

B.在C語言中,預(yù)處理命令行都以“#”開頭

C.每個(gè)C程序必須在開頭包含預(yù)處理命令行:#include<stdio.h>

D.C語言的預(yù)處理不能實(shí)現(xiàn)宏定義和條件編譯的功能

70.函數(shù)調(diào)用strcat(strcpy(str1,str2),str3)的功能是()。

A.將字符串str1復(fù)制到字符串str2中后再連接到字符串str3之后

B.將字符串str1連接到字符串str2之后再復(fù)制到字符串str3之后

C.將字符串str2復(fù)制到字符串str1之后再將字符串str3連接到字符串str1之后

D.將字符串str2連接到字符串str1之后再將字符串strl復(fù)制到字符串str3中

71.設(shè)有定義

72.

有下列程序:

intfun(intn)

{if(n==1)}return1;

else

return(n+fun(n-1));

}

main

{intx;

scanf("%d",&x);x=fun(x);printf("%d\n",x);

)

執(zhí)行程序時(shí),給變量x輸入10,程序的輸出結(jié)果是()。

A.55B.54C.65D.45

73.

74.

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

#include<stdio.h>

#defineS(X)X*X

voidmain

{inta=9,k=3,m=2;

a/=S(k+m)/s(k+m);

printf("%d",a);

}

A.1B.4C.9D.0

75.

76.

77.

78.有以下程序

#include<stdio.h>

structst

{intx,y,z;}data[2]={3,10,2,20,15,7};

main()

{structst*p=data;

printf("%d,",p->y);

printf("%d\n",(++p)->x);

}

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

A.10,3B.20,3

C.10,20D.20,2

79.下面結(jié)構(gòu)體的定義語句中,錯(cuò)誤的是()。

A.structord{intx;intY;intZ;};struetorda;

B.structord{intx;inty;intZ;}structorda;

C.structord{intX;intY;intZ;}a;

D.struct{intX;inty;intZ;}a;

80.

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

#include<stdio.h>

main

{structst

{inty,x,z;

};

union

{longi;

intj;

chark;

}un;

printf("%d,%d\n",sizeof(structst),sizeof(un))

}

A.6,2B.6,4C.8,4D.8,6

五、程序改錯(cuò)題(1題)81.假如整數(shù)數(shù)列中的數(shù)不重復(fù),并存放在數(shù)組中。下列給定的程序中,函數(shù)proc()的功能是:刪除數(shù)列中值為x的元素。n中存放的是數(shù)列中元素的個(gè)數(shù)。請(qǐng)修改程

溫馨提示

  • 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)論