2021年吉林省松原市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)_第1頁
2021年吉林省松原市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)_第2頁
2021年吉林省松原市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)_第3頁
2021年吉林省松原市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)_第4頁
2021年吉林省松原市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)_第5頁
已閱讀5頁,還剩48頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

2021年吉林省松原市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(12題)1.設(shè)線性鏈表中結(jié)點(diǎn)的結(jié)構(gòu)為(data,next)。若想刪除結(jié)點(diǎn)p的直接后繼,則應(yīng)執(zhí)行下列()操作。

A.p->next=p->next->next;

B.p=p->nextp->next=p->next->next;

C.p->next=p->next;

D.p=p->next->next;

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

A.1,2,3,1,5,9,

B.1,3,5,1,3,5,

C.1,3,5,0,d,8,

D.1,3,5,-1,3,7,

3.已知有結(jié)構(gòu)體:structsk{inta;floatb;}data,*p;若有p=&data,則對(duì)data的成員a的正確引用是()。

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

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

C.x、y、z都是結(jié)構(gòu)體成員名

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

4.標(biāo)準(zhǔn)庫函數(shù)fgets(str,n,fp)的功能是()。A.從fp所指的文件中讀取長(zhǎng)度不超過n-1的字符串存入指針str所指的內(nèi)存

B.從fp所指的文件中讀取長(zhǎng)度為n的字符串存入指針str所指的內(nèi)存

C.從fp所指的文件中讀取n個(gè)字符串存入指針str所指的內(nèi)存

D.從fp所指的文件中讀取長(zhǎng)度為n-1的字符串存入指針str所指的內(nèi)存

5.以下程序的輸出結(jié)果是()。main(){inti,a[4][4]一{{1,3,5),{2,4,6},{3,5,7}};printf("%(1%d%d%d\n".a(chǎn)[O][3],a[1][2],a[2][1],a[3][0];}A.0650B.1470C.5430D.輸出值不定

6.

有以下程序

#include<stdio.h>

#include<string.h>

typedefstrlIct{charname[9];charsex;floatscore[2];}STU;

STUf(STUa)

{STUb={"Zhao",m,85.0,90.0);inti;

strcpy(aname,b.name);

sex:b.sex;

for(i=0;i<2;i++)a.score[i]=b.score[i];

returna;

}

main

{STUc="Qian",f,95.0,92.0},d;

d=f(c).printf("%s,%c,%2.0f,%2.0f",d.Name,d.sex,d.score[0],d.score[1]);

}

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

A.Qian,f,95,92

B.Qian,m,85,90

C.Zhao,m,85,90

D.Zhao,f,95,92

7.下列程序的輸出結(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

8.數(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)系

9.若有定義“floatx=1.5;inta=1,b=3,c=2;”,則正確的switch語句是()。

A.switch(a+b){ case1:printf(“*\n”); case2+1:printf(“**\n”);}

B.switch((int)x);{ case1:printf(“**\n”); case2:printf(“**\n”);}

C.switch(x){ case1.0:printf(“*\n”); case2.0:printf(“**\n”);}

D.switch(a+b){ case1:printf(“*\n”); casec:printf(“**\n”);}

10.有以下程序#include<stdio.h>intf(intx,inty){return()y-x)*x);}main(){inta=3,b=4,c=5,d;d=f(f(a,b),f(a,c));printf(“%d\n”,d);}程序運(yùn)行后的輸出結(jié)果是A.10B.9C.8D.7

11.

12.軟件生命周期是指()。

A.軟件的定義和開發(fā)階段

B.軟件的需求分析、設(shè)計(jì)與實(shí)現(xiàn)階段

C.軟件的開發(fā)階段

D.軟件產(chǎn)品從提出、實(shí)現(xiàn)、使用維護(hù)到停止使用退役的過程

二、2.填空題(12題)13.有以下程序

intsub(intn){retnrn(n/10+n%10);}

main()

{intx,y;

scanf("%d",&x);

y=sub(sub(sub(x)));

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

}

若運(yùn)行時(shí)輸入:1234<回車>,程序的輸出結(jié)果是______。

14.計(jì)算機(jī)網(wǎng)絡(luò)按通信距離來劃分可以分為【】。

15.可以把具有相同屬性的一些不同對(duì)象歸類,稱為【】。

16.下面程序的運(yùn)行結(jié)果是【】。

main()

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

for(;;)

{i+=k;

if(i>j)

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

break;}

s+=i;}}

17.以下函數(shù)用來求出2個(gè)整數(shù)之和,并通過形參將結(jié)果傳回。

voidfunc(intx,inty,【】z)

{*z=x+y;}

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

#include<stdio.h>

intfun(intx)

{intp;

if(x==0‖x==1)

return3;

else

p=x-fun(x-2);

returnp;

}

voidmain()

{printf("\n%d",fun(11));

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

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{inti=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\N,*p,*q))

}

20.函數(shù)fun的返回值是【】。

fun(char*a,char*b)

{intnum=0,n=0;

while(*(a+num)!='\0')num++;

while(b[n]){*(a+num)=b[n];num++;n++;}

returnnum;

}

21.數(shù)據(jù)庫技術(shù)的主要特點(diǎn)為數(shù)據(jù)的集成性、數(shù)據(jù)的高【】和低冗余性、數(shù)據(jù)獨(dú)立性和數(shù)據(jù)統(tǒng)—管理與控制。

22.以下程序的功能是:將輸入的正整數(shù)按逆序輸出。例如:若輸入135則輸出531。請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

main()

{intn,s;

printf("Enteranumber:");scanf("%d",&n);

printf("Output:");

do

{s=n%10;printf("%d",s);【】;

}while(n!=0);

printf("\n");

}

23.若輸入tear、test、arj,則下列程序的運(yùn)行結(jié)果為【】。

main()

{char*strl[20],*str2[20],*str3[20];

charswap();

scanf("%s",str1);

scanf("%s",str2);

scanf("%s",str3);

if(strcmp(str1,str2)>0)swap(str1,str2);

if(strcmp(str1,str3)>0)swap(str1,str3);

if(strcmp(str2,str3)>0)swap(str2,str3);

printf("%s%s%s\n",str1,str2,str3);

}

charswap(p1,p2)

char*p1,*p2;

{char*p[20];

strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);

}

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

______

main()

{printf("\n");

try_me();

printf("\n");}

三、3.程序設(shè)計(jì)題(10題)25.請(qǐng)編寫函數(shù)fun,其功能是:計(jì)算并輸出

例如,在主函數(shù)中從鍵盤給n輸入20后,輸出為:s=534.188884。

注意:要求n的值大于1但不大于100。

部分源程序在文件PROGl.C中。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。

26.請(qǐng)編寫函數(shù)fun(),函數(shù)的功能是求出二維數(shù)組周邊元素之和,作為函數(shù)值返回。二維數(shù)組中的值在主函數(shù)中賦予。

例如:若二維數(shù)組中的值為

13579

29994

69998

13570

則函數(shù)值為61。

注意:部分源程序給出如下。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序:

#include<conio.h>

#include<stdio.h>

#defineM4

#defineN5

intfun(inta[M][N])

{

}

main()

{

intaa[M][N]={{1,3,5,7,9},{2,9,9,9,4},

{6,9,9,9,8},{1,3,5,7,0}};

inti,j,y;

clrscr();

printf("Theoriginaldatais:\n");

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

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

printf("%6d",aa[i][j]);

printf("\n");

}

y=fun(aa);

printf("\nThesun:%d\n",y);

printf("\n");

}

27.學(xué)生的記錄由學(xué)號(hào)和成績(jī)組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請(qǐng)編寫函數(shù)fjun(),該函數(shù)的功能是:把高于等于平均分的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,高于等于平均分的學(xué)生人數(shù)通過形參n傳回,平均分通過函數(shù)值返回。

注意:部分源程序給出如下。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

#defineN12

typedefstruct

{charnum[10];

doubles;

}STREC;

doublefun(STREC*a,STREC*b,int*n)

{

}

main()

STRECsIN]={{"GA05",85},{"GA03",76},

{"GA02",69},{"GA04",85},{"GA01",91},

{"GA07",72},{"GA08",64},{"GA06",87},

{"GA09",60},{"GAll",79},{"GA12",73},

{"GA10",90}};

STRECh[N],t;

FILE*out;

inti,j,n;

doubleave;

ave=fun(s,h,&n);

printf("The%dstudentdatawhichis

higherthan%7.3f:In",n,ave);

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

printf("%s%4.1f\n",h[i].num,h[i].s);

printf("\n");

out=fopen("out90.dat","w");

fprintf(out,"%dkn%7.3f\n",n,ave);

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

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

if(h[i].s<h[j].s)

{t=hIi];h[i]=h[j];h[j]=t;}

/*分?jǐn)?shù)從高到低排列*/

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

fprintf(out,"%4.1f\n",h[i].s);

fclose(out);

}

28.函數(shù)fun的功能是:將s所指字符串中除了下標(biāo)為偶數(shù)、同時(shí)ASCII值也為偶數(shù)的字符外,其余的全都刪除;串中剩余字符所形成的一含新串放在t所指的數(shù)組中。

例如,若s所指字符串中的內(nèi)容為:“ABCDEFGl23456”,其中字符A的ASCII碼值為奇數(shù),因此應(yīng)當(dāng)刪除:其中字符B的ASCII碼值為偶數(shù),但在數(shù)組中的下標(biāo)為奇數(shù),因此也應(yīng)當(dāng)刪除;而字符2的ASCII碼值為偶數(shù),所在數(shù)組中的下標(biāo)也為偶數(shù),因此不應(yīng)當(dāng)刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是:“246”。

注意:部分源程序存在文件PROGl.C中。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。

29.請(qǐng)編寫函數(shù)fun(),其功能是;計(jì)算井輸出下列多項(xiàng)式值。

S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-1/2n)

例如,若主函數(shù)從鍵盤給n輸入8后,則輸出為S-0.662872。

注意;部分源程序給出如下。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序;

#include<stdio.h>

doublefun(intn)

{

}

main()

{

intn;

doubles;

printf("\nInputn:");

scanf("%d",&n);

s=fun(n);

printf("\ns=%f\n",s);

}

30.請(qǐng)編寫函數(shù)fun,其功能是:計(jì)算并輸出當(dāng)x<0.97時(shí)下列多項(xiàng)式的值,直到|Sn-Sn-2

|<0.000001為止。

例如,在主函數(shù)中從鍵盤給x輸入0.21后,輸出為:s=1.100000。

注意:部分源程序在文件PROGl.C中。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。

31.請(qǐng)編寫函數(shù)fun(),對(duì)長(zhǎng)度為7個(gè)字符的字符串,除首、尾字符外,將其余5個(gè)字符按ASCII碼值升序排列。

例如:原來的字符串為BdsihAd,則排序后輸出為BAdhisd。

注意:部分源程序給出如下。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

#include<ctype.h>

#include<conio.h>

intfun(char*s,intnum)

{

}

main()

{

chars[10];

clrscr();

printf("輸入7個(gè)字符的字符串:");

gets(s);

fun(s,7);

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

}

32.假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫函數(shù)fun,它的功能是:使字符串的前導(dǎo)*號(hào)不得多于n個(gè);若多于n個(gè),則刪除多余的*號(hào):若少于或等于n個(gè),則什么也不做,字符串中間和尾部的*號(hào)不刪除。

例如,字符串中的內(nèi)容為:******A*BC*DEF*G****,若n的值為4,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:****A*BC*DEF*G****;若n的值為8,則字符串中的內(nèi)容仍為;*******A*BC*DEF*G****。n的值在主函數(shù)中輸入。

在編寫函數(shù)時(shí),不得使用C語言提供的字符串函數(shù)。

注意:部分源程序在文件PROGl.C文件中。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容。僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。

33.函數(shù)fun的功能是:將a、b中的兩個(gè)兩位正整數(shù)合并形成一個(gè)新的整數(shù)放在c中。合并的方式是:將a中的十位和個(gè)位數(shù)依次放在變量c的千位和十位上,b中的十位和個(gè)位數(shù)依次放在變量c的個(gè)位和百位上。

例如,當(dāng)a=45,b=12。調(diào)用該函數(shù)后,c=4251。

注意:部分源程序存在文件PROGl.C中。數(shù)據(jù)文件IN.DAT中的數(shù)據(jù)不得修改。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。

34.請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是:統(tǒng)計(jì)各年齡段的人數(shù)。N個(gè)年齡通過調(diào)用隨機(jī)函數(shù)獲得,并放在主函數(shù)的age數(shù)組中。要求函數(shù)把0至9歲年齡段的人數(shù)在d[0]中,把10至19歲年齡段的人數(shù)放在d[1]中,把20至29歲年齡段的人數(shù)放在d[2]中,依次類推,把100歲(含100)以上年齡的人數(shù)都放在d[10]中。結(jié)果在主函數(shù)中輸出。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。試題程序:#include<stdio.h>#defineN50#defineM11voidfun(int*a,int*b){}doublernd(){statict=29,c=217,m=1024,r=0;r=(r*t+c)%m;return((double)r/m);}main(){intage[N],i,d[M];for(i=0;i<N;i++)age[i]=(int)(i15*rnd());/*產(chǎn)生一個(gè)隨機(jī)的年齡數(shù)組*/printf("Theoriginaldata:\n");for(i=0;i<N;i++)printf((i+l)%10==07“%4d\n”;“%4d”,age[i]);/*每行輸出10個(gè)數(shù)*/printf(“\n\n”);fun(age,d);for(i=0;i<l0;i++)printf(“%4d---%4d:%4d\n”;,i*l0,i*10+9,d[i]);printf(“Over100;%4dkn”;,d[10]).;}

四、單選題(0題)35.在有向圖G的拓?fù)湫蛄兄校繇旤c(diǎn)Vi在頂點(diǎn)Vj之前,則下列情形不可能出現(xiàn)的是()。

A.G中有弧

B.G中有一條從Vi到Vj的路徑

C.G中沒有弧

D.G中有一條從Vj到Vi的路徑

五、單選題(0題)36.有以下程序:#include<stdio,h>main(){intk=5,n=0;while(k>0){switch(k){default:break;case1:n+=k;case2:case3:n+=k;}k--;printf("%d\n",n);}程序運(yùn)行后的輸出結(jié)果是()。

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

六、單選題(0題)37.有以下程序段:

以下選項(xiàng)中表達(dá)式的值為11的是()。

A.

B.

C.

D.

參考答案

1.A

2.Dmain函數(shù)中,fun(fun(t))嵌套調(diào)用fun函數(shù)。第一次調(diào)用為fun(1),調(diào)用后,a[3]={1,3,5},輸出1,3,5,返回a[1]=3。第二次調(diào)用為fun(3),調(diào)用后,a[3]={一1,3,7},輸出一l,3,7。

3.B解析:本題主要考查結(jié)構(gòu)類型的定義:struct是結(jié)構(gòu)體類型的關(guān)鍵字;structstr是結(jié)構(gòu)體類型名;x、y、z都是結(jié)構(gòu)體成員名;st是結(jié)構(gòu)變量名。

4.Afgets函數(shù)的功能是從fp所指文件中讀入n-1個(gè)字符放入以str為起始地址的空間內(nèi),讀取長(zhǎng)度不超過n-1,讀入結(jié)束后,自動(dòng)在最后添加’\\0’,選項(xiàng)A正確。本題答案為A選項(xiàng)。

5.A當(dāng)所賦的值不夠其列的寬度時(shí),系統(tǒng)在其后自動(dòng)補(bǔ)0,因此a[0][3]=0,a[1][2]=6,a[2][1]=5,a[3][0]=0,故選擇A選項(xiàng)。

6.Cf函數(shù)的功能是對(duì)形參a的各個(gè)成員用結(jié)構(gòu)體變量b的各個(gè)成員進(jìn)行賦值后,然后返回變量a。

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

8.C(10)C)解析:DB即數(shù)據(jù)庫(Database),是統(tǒng)一管理的相關(guān)數(shù)據(jù)的集合;DBMS即數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem),是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,為用戶或應(yīng)用程序提供訪問DB的方法;DBS即數(shù)據(jù)庫系統(tǒng)(DatabaseSystem)由如下5部分組成,數(shù)據(jù)庫(數(shù)據(jù))、數(shù)據(jù)庫管理系統(tǒng)(軟件)、數(shù)據(jù)庫管理員(人員)、系統(tǒng)平臺(tái)之一——硬件平臺(tái)(硬件)、系統(tǒng)平臺(tái)之二——軟件平臺(tái)(軟件)。

9.AB選項(xiàng)中“switch((int)x);”語句中不應(yīng)該有最后的分號(hào)。switch(expr1)中的expr1不能用浮點(diǎn)類型或long類型,也不能為一個(gè)字符串,所以C選項(xiàng)錯(cuò)誤。case后面必須為常量表達(dá)式,所以D選項(xiàng)錯(cuò)誤。故本題答案為A選項(xiàng)。

10.B

11.C

12.D通常把軟件產(chǎn)品從提出、實(shí)現(xiàn)、使用、維護(hù)到停止使用、退役的過程稱為軟件生命周期。選項(xiàng)A、B、C選項(xiàng)均為生命周期的一部分。故選D選項(xiàng)。

13.1010解析:本題程序中定義了一個(gè)函數(shù)sub(),用來計(jì)算一個(gè)整數(shù)整除10的商和余數(shù)的和。在主函數(shù)中,首先用scanf()函數(shù)讀入一個(gè)十進(jìn)制整數(shù)1234,然后對(duì)1234三次嵌套調(diào)用函數(shù)svb()。首先看最里層的調(diào)用,應(yīng)該返回的值是123+4=127;然后中間一層調(diào)用應(yīng)該返回的是12+7=19;所以最外層調(diào)用返回1+9=10。故最后輸出10。

14.局域網(wǎng)和廣域網(wǎng)局域網(wǎng)和廣域網(wǎng)

15.對(duì)象類

16.3030解析:考查for循環(huán)的使用。題目中for(;;)表示:for循環(huán)的初始化表達(dá)式,條件表達(dá)式和修正表達(dá)式都省略了,表示進(jìn)行for循環(huán)和for循環(huán)的終止都沒有限制。

17.int*

18.44解析:本題考查函數(shù)的遞歸調(diào)用。在主函數(shù)中第1次調(diào)用子函數(shù)是調(diào)用的fun(11),返回11-fun(9):第2次調(diào)用子函數(shù)是調(diào)用的fun(9),返回9-tim(7);第3次調(diào)用子函數(shù)是調(diào)用的fun(7),返回7-fun(5);第4次調(diào)用子函數(shù)是調(diào)用的fun(5),返回5-fun(3);第5次調(diào)用子函數(shù)是調(diào)用的fun(3),返回3-fun(1);第6次調(diào)用子函數(shù)是調(diào)用的fun(1),返回3。總的返回值是:11-(9-(7-(5-(3-3))))=4。

19.3535解析:函數(shù)swap(int*a,int*b)的功能是實(shí)現(xiàn)*a和*b中兩個(gè)數(shù)據(jù)的交換,在主函數(shù)中調(diào)用swap(p,q)后,形參指針變量a和b分別指向i和j,在swap(int*a,int*b)執(zhí)行完后,指針變量a和b分別指向j和i,而指針變量p,q所指向變量的值沒有發(fā)生變化,所以輸出結(jié)果為35。

20.字符串a(chǎn)和b的長(zhǎng)度之和字符串a(chǎn)和b的長(zhǎng)度之和解析:本題首先通過第一個(gè)while循環(huán)計(jì)算字符串a(chǎn)的長(zhǎng)度,再通過第二個(gè)循環(huán),將字符串a(chǎn)和b相連,最后返回連接后的總長(zhǎng)度。

21.共享性共享性解析:數(shù)據(jù)庫技術(shù)的主要特點(diǎn)有以下幾個(gè)方面:數(shù)據(jù)的集成性,數(shù)據(jù)的高共享性與低冗余性,數(shù)據(jù)的獨(dú)立性,數(shù)據(jù)統(tǒng)—管理與控制。

22.n/=10或n=n/10n/=10或n=n/10解析:每次循環(huán)把n除以10所得的商賦給n。

23.arjteartest

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

25.

解析:該程序功能是對(duì)題干中給出的多項(xiàng)式的求解。根據(jù)題干中給出的數(shù)列,首先推出每一項(xiàng)的表達(dá)式,然后再對(duì)多項(xiàng)式進(jìn)行累加求和。

26.intfun(inta[M][N]){intijsum=0;for(i=0;i<M;i++)for(j=0;i<N;j++)if(i==0||i==M-1||j==0||j==N-1)/*只要下標(biāo)中有一個(gè)為0或M-1或N-1則它一定是周邊元素*/sum=sum+a[i][j];/*將周邊元素相加*/returnsum;}intfun(inta[M][N])\r\n{\r\ninti,j,sum=0;\r\nfor(i=0;i<M;i++)\r\nfor(j=0;i<N;j++)\r\nif(i==0||i==M-1||j==0||j==N-1)/*只要下標(biāo)中有一個(gè)為0或M-1或N-1,則它一定是周邊元素*/\r\nsum=sum+a[i][j];/*將周邊元素相加*/\r\nreturnsum;\r\n}解析:本題采用逐一判斷的方式,周邊元素的下標(biāo)一定有一個(gè)是0或M-1或N-1,且只要下標(biāo)中有一個(gè)為0或M-1或N-1,則它一定是周邊元素。

27.doublefun(STREC*aSTREC*bint*n){inti;doubleay=0.0;*n=0;for(i=0;i<N;i++)av=av+a[i].s;ay=ay/N;/*求平均值*/for(i=0;i<N;i++)if(av<=a[i].s){b[*n]=a[i];*n-*n+l;}/*將高于等于平均分的學(xué)生存從所指存儲(chǔ)單元中并統(tǒng)計(jì)人數(shù)*/returnay;/*返回嚴(yán)均分*/}doublefun(STREC*a,STREC*b,int*n)\r\n{\r\ninti;\r\ndoubleay=0.0;\r\n*n=0;\r\nfor(i=0;i<N;i++)\r\nav=av+a[i].s;\r\nay=ay/N;/*求平均值*/\r\nfor(i=0;i<N;i++)\r\nif(av<=a[i].s)\r\n{b[*n]=a[i];*n-*n+l;}/*將高于等于平均分的學(xué)生存從所指存儲(chǔ)單元中,并統(tǒng)計(jì)人數(shù)*/\r\nreturnay;/*返回嚴(yán)均分*/\r\n}解析:本題中第1個(gè)循環(huán)的作用求出所有分?jǐn)?shù)的總和,只有進(jìn)行了av=av/N后才得到平均值(我們?cè)谇懊娴某绦蛑信龅竭^類似問題)。第2個(gè)循環(huán)的作用是將高于等于平均分的學(xué)生存入b所指存儲(chǔ)單元中。同一結(jié)構(gòu)體變量之間可以互相賦值。

本程序中直接用*n來表示b的下標(biāo),注意開始時(shí)要給,*n賦0,且使用時(shí)不能少*號(hào)。因?yàn)閱为?dú)的n是一個(gè)指針變量,而我們要用的是它所指向的那個(gè)存儲(chǔ)單元中的值。

28.

解析:該程序功能是將字符串中除了下標(biāo)為偶數(shù)、ASCII值也為偶數(shù)的字符外,其余的全都刪除。解題過程利用if條件判斷表達(dá)式選擇符合條件的字符,然后將符合條件的字符放入指定的字符串。

29.doublefun(intn){inti;doubles=0.0;for(i=1;i<=n;i++)s=s+(1.0/(2*i-1)-1.0/(2*i));/*計(jì)算S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-l/2n)*/returns;}doublefun(intn)\r\n{\r\ninti;\r\ndoubles=0.0;\r\nfor(i=1;i<=n;i++)\r\ns=s+(1.0/(2*i-1)-1.0/(2*i));/*計(jì)算S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-l/2n)*/returns;\r\n}解析:本題中s=s+(1.0/(2*i-1)-1,O/(2*i));語句是用C程序去表達(dá)題目中的每一項(xiàng),這是關(guān)鍵,其他問題不難理解。

30.

解析:該程序功能是計(jì)算并輸出當(dāng)x<0.97時(shí)題干中給出的多項(xiàng)式的值。根據(jù)題干中給出的數(shù)列,首先推出每一項(xiàng)的表達(dá)式,然后再對(duì)多項(xiàng)式進(jìn)行累加求和。

31.intfun(char*sintnum){chart;intij;for(i=1;i<num-2;i++)/*下標(biāo)值從1開始用循環(huán)依次取得字符串中的字符*/for(j=i+1;j<num-1;j++)/*將字符與其后的每個(gè)字符比較*/if(s[i]>s[j])/*如果后面字符的ASCII碼值小于該字符的ASCII碼值*/{t=s[i];/*則交換這兩個(gè)字符*/s[i]=s[j];s[j]=t;}}intfun(char*s,intnum)\r\n{chart;\r\ninti,j;\r\nfor(i=1;i<num-2;i++)/*下標(biāo)值從1開始,用循環(huán)依次取得字符串中的字符*/\r\nfor(j=i+1;j<num-1;j++)/*將字符與其后的每個(gè)字符比較*/\r\nif(s[i]>s[j])/*如果后面字符的ASCII碼值小于該字符的ASCII碼值*/\r\n{t=s[i];/*則交換這兩個(gè)字符*/\r\ns[i]=s[j];\r\ns[j]=t;\r\n}\r\n}解析:本題考查利用循環(huán)來控制數(shù)組元素的操作,首尾元素除外,因此,數(shù)組的下標(biāo)值要從1開始,用循環(huán)變量i來依次取得數(shù)組中的元素,用數(shù)組中的元素s[i]和s[j]進(jìn)行比較,如果后一個(gè)元素的ASCII碼值小于前一個(gè)元素的ASCII碼值,則交換這兩個(gè)數(shù)組元素的值。

32.

解析:該程序功能是根據(jù)字符串前導(dǎo)的“*”號(hào)個(gè)數(shù)進(jìn)行相關(guān)操作。解題過程首先確定字符串尾,然后由串頭開始對(duì)字符進(jìn)行判斷,同時(shí)對(duì)“*”字符進(jìn)行統(tǒng)計(jì),如果大于n,就進(jìn)行截取。

33.*c=(a/10)*1000+(b%10)*100+(a%10)*10+(b/10);*c=(a/10)*1000+(b%10)*100+(a%10)*10+(b/10);解析:該程序功能是將正整數(shù)a、b合并形成一個(gè)新整數(shù)。本題類型首先要考慮整數(shù)的位數(shù)分離,然后要進(jìn)行位數(shù)合成。也就是先將數(shù)字的各位數(shù)拆開,改變排列順序后,再組合成新的數(shù)字。

34.voidfun(int*aint*b){intij;for(j=0;j<M;j++)b[j]=0;/*數(shù)組b初始化為0*/for(i=0;i<N;i++)if(a[i]>=100)b[10]++;/*如果年齡大于等于100b[10]自增1*/elseb[a[i]/10]++;/*如果年齡小于100則將其分別統(tǒng)計(jì)到b[a[i]/10]中*/}voidfun(int*aint*b){intij;for(j=0;j<M;j++)b[j]=0;/*數(shù)組b初始化為0*/for(i=0;i<N;i++)if(a[i]>=100)b[10]++;/*如果年齡大于等于100b[10]自增1*/elseb[a[i]/10]++;/*如果年齡小于100則將其分別統(tǒng)計(jì)到b[a[i]/10]中*/\r\n}voidfun(int*a,int*b){inti,j;for(j=0;j<M;j++)b[j]=0;/*數(shù)組b初始化為0*/for(i=0;i<N;i++)if(a[i]>=100)b[10]++;/*如果年齡大于等于100,b[10]自增1*/elseb[a[i]/10]++;/*如果年齡小于100,則將其分別統(tǒng)計(jì)到b[a[i]/10]中*/\r\n}

35.D若G中有一條從Vj到Vi的路徑,則圖的拓?fù)湫蛄兄许旤c(diǎn)Vj在頂點(diǎn)Vi之前。設(shè)G(V,E)是一個(gè)具有n個(gè)頂點(diǎn)的有向圖,V中頂點(diǎn)的序列v1,v2,…,vn稱為一個(gè)拓?fù)湫蛄校?dāng)且僅當(dāng)該頂點(diǎn)滿足下列條件:若在有向圖G中,從頂點(diǎn)vi在vj有一條路徑,則在拓?fù)湫蛄兄许旤c(diǎn)vi必須排在頂點(diǎn)vj之前。

36.D解析:在程序中,當(dāng)L的值為5和4時(shí),case都沒有與其匹配的值,所以執(zhí)行default語句;當(dāng)k=3時(shí),執(zhí)行n+=k;得n=3;當(dāng)L=2時(shí),執(zhí)行case2:然后順序執(zhí)行case3:n+=k;得n=5;當(dāng)k=1時(shí),執(zhí)行case1:n+=k;得n=6,然后順序執(zhí)行case2:和case3:n+=k;使得n=7。

37.C→的運(yùn)算優(yōu)先級(jí)比++高,此時(shí),pt→x=10,執(zhí)行自加運(yùn)算后為11。2021年吉林省松原市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(12題)1.設(shè)線性鏈表中結(jié)點(diǎn)的結(jié)構(gòu)為(data,next)。若想刪除結(jié)點(diǎn)p的直接后繼,則應(yīng)執(zhí)行下列()操作。

A.p->next=p->next->next;

B.p=p->nextp->next=p->next->next;

C.p->next=p->next;

D.p=p->next->next;

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

A.1,2,3,1,5,9,

B.1,3,5,1,3,5,

C.1,3,5,0,d,8,

D.1,3,5,-1,3,7,

3.已知有結(jié)構(gòu)體:structsk{inta;floatb;}data,*p;若有p=&data,則對(duì)data的成員a的正確引用是()。

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

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

C.x、y、z都是結(jié)構(gòu)體成員名

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

4.標(biāo)準(zhǔn)庫函數(shù)fgets(str,n,fp)的功能是()。A.從fp所指的文件中讀取長(zhǎng)度不超過n-1的字符串存入指針str所指的內(nèi)存

B.從fp所指的文件中讀取長(zhǎng)度為n的字符串存入指針str所指的內(nèi)存

C.從fp所指的文件中讀取n個(gè)字符串存入指針str所指的內(nèi)存

D.從fp所指的文件中讀取長(zhǎng)度為n-1的字符串存入指針str所指的內(nèi)存

5.以下程序的輸出結(jié)果是()。main(){inti,a[4][4]一{{1,3,5),{2,4,6},{3,5,7}};printf("%(1%d%d%d\n".a(chǎn)[O][3],a[1][2],a[2][1],a[3][0];}A.0650B.1470C.5430D.輸出值不定

6.

有以下程序

#include<stdio.h>

#include<string.h>

typedefstrlIct{charname[9];charsex;floatscore[2];}STU;

STUf(STUa)

{STUb={"Zhao",m,85.0,90.0);inti;

strcpy(aname,b.name);

sex:b.sex;

for(i=0;i<2;i++)a.score[i]=b.score[i];

returna;

}

main

{STUc="Qian",f,95.0,92.0},d;

d=f(c).printf("%s,%c,%2.0f,%2.0f",d.Name,d.sex,d.score[0],d.score[1]);

}

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

A.Qian,f,95,92

B.Qian,m,85,90

C.Zhao,m,85,90

D.Zhao,f,95,92

7.下列程序的輸出結(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

8.數(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)系

9.若有定義“floatx=1.5;inta=1,b=3,c=2;”,則正確的switch語句是()。

A.switch(a+b){ case1:printf(“*\n”); case2+1:printf(“**\n”);}

B.switch((int)x);{ case1:printf(“**\n”); case2:printf(“**\n”);}

C.switch(x){ case1.0:printf(“*\n”); case2.0:printf(“**\n”);}

D.switch(a+b){ case1:printf(“*\n”); casec:printf(“**\n”);}

10.有以下程序#include<stdio.h>intf(intx,inty){return()y-x)*x);}main(){inta=3,b=4,c=5,d;d=f(f(a,b),f(a,c));printf(“%d\n”,d);}程序運(yùn)行后的輸出結(jié)果是A.10B.9C.8D.7

11.

12.軟件生命周期是指()。

A.軟件的定義和開發(fā)階段

B.軟件的需求分析、設(shè)計(jì)與實(shí)現(xiàn)階段

C.軟件的開發(fā)階段

D.軟件產(chǎn)品從提出、實(shí)現(xiàn)、使用維護(hù)到停止使用退役的過程

二、2.填空題(12題)13.有以下程序

intsub(intn){retnrn(n/10+n%10);}

main()

{intx,y;

scanf("%d",&x);

y=sub(sub(sub(x)));

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

}

若運(yùn)行時(shí)輸入:1234<回車>,程序的輸出結(jié)果是______。

14.計(jì)算機(jī)網(wǎng)絡(luò)按通信距離來劃分可以分為【】。

15.可以把具有相同屬性的一些不同對(duì)象歸類,稱為【】。

16.下面程序的運(yùn)行結(jié)果是【】。

main()

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

for(;;)

{i+=k;

if(i>j)

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

break;}

s+=i;}}

17.以下函數(shù)用來求出2個(gè)整數(shù)之和,并通過形參將結(jié)果傳回。

voidfunc(intx,inty,【】z)

{*z=x+y;}

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

#include<stdio.h>

intfun(intx)

{intp;

if(x==0‖x==1)

return3;

else

p=x-fun(x-2);

returnp;

}

voidmain()

{printf("\n%d",fun(11));

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

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{inti=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\N,*p,*q))

}

20.函數(shù)fun的返回值是【】。

fun(char*a,char*b)

{intnum=0,n=0;

while(*(a+num)!='\0')num++;

while(b[n]){*(a+num)=b[n];num++;n++;}

returnnum;

}

21.數(shù)據(jù)庫技術(shù)的主要特點(diǎn)為數(shù)據(jù)的集成性、數(shù)據(jù)的高【】和低冗余性、數(shù)據(jù)獨(dú)立性和數(shù)據(jù)統(tǒng)—管理與控制。

22.以下程序的功能是:將輸入的正整數(shù)按逆序輸出。例如:若輸入135則輸出531。請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

main()

{intn,s;

printf("Enteranumber:");scanf("%d",&n);

printf("Output:");

do

{s=n%10;printf("%d",s);【】;

}while(n!=0);

printf("\n");

}

23.若輸入tear、test、arj,則下列程序的運(yùn)行結(jié)果為【】。

main()

{char*strl[20],*str2[20],*str3[20];

charswap();

scanf("%s",str1);

scanf("%s",str2);

scanf("%s",str3);

if(strcmp(str1,str2)>0)swap(str1,str2);

if(strcmp(str1,str3)>0)swap(str1,str3);

if(strcmp(str2,str3)>0)swap(str2,str3);

printf("%s%s%s\n",str1,str2,str3);

}

charswap(p1,p2)

char*p1,*p2;

{char*p[20];

strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);

}

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

______

main()

{printf("\n");

try_me();

printf("\n");}

三、3.程序設(shè)計(jì)題(10題)25.請(qǐng)編寫函數(shù)fun,其功能是:計(jì)算并輸出

例如,在主函數(shù)中從鍵盤給n輸入20后,輸出為:s=534.188884。

注意:要求n的值大于1但不大于100。

部分源程序在文件PROGl.C中。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。

26.請(qǐng)編寫函數(shù)fun(),函數(shù)的功能是求出二維數(shù)組周邊元素之和,作為函數(shù)值返回。二維數(shù)組中的值在主函數(shù)中賦予。

例如:若二維數(shù)組中的值為

13579

29994

69998

13570

則函數(shù)值為61。

注意:部分源程序給出如下。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序:

#include<conio.h>

#include<stdio.h>

#defineM4

#defineN5

intfun(inta[M][N])

{

}

main()

{

intaa[M][N]={{1,3,5,7,9},{2,9,9,9,4},

{6,9,9,9,8},{1,3,5,7,0}};

inti,j,y;

clrscr();

printf("Theoriginaldatais:\n");

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

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

printf("%6d",aa[i][j]);

printf("\n");

}

y=fun(aa);

printf("\nThesun:%d\n",y);

printf("\n");

}

27.學(xué)生的記錄由學(xué)號(hào)和成績(jī)組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請(qǐng)編寫函數(shù)fjun(),該函數(shù)的功能是:把高于等于平均分的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,高于等于平均分的學(xué)生人數(shù)通過形參n傳回,平均分通過函數(shù)值返回。

注意:部分源程序給出如下。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

#defineN12

typedefstruct

{charnum[10];

doubles;

}STREC;

doublefun(STREC*a,STREC*b,int*n)

{

}

main()

STRECsIN]={{"GA05",85},{"GA03",76},

{"GA02",69},{"GA04",85},{"GA01",91},

{"GA07",72},{"GA08",64},{"GA06",87},

{"GA09",60},{"GAll",79},{"GA12",73},

{"GA10",90}};

STRECh[N],t;

FILE*out;

inti,j,n;

doubleave;

ave=fun(s,h,&n);

printf("The%dstudentdatawhichis

higherthan%7.3f:In",n,ave);

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

printf("%s%4.1f\n",h[i].num,h[i].s);

printf("\n");

out=fopen("out90.dat","w");

fprintf(out,"%dkn%7.3f\n",n,ave);

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

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

if(h[i].s<h[j].s)

{t=hIi];h[i]=h[j];h[j]=t;}

/*分?jǐn)?shù)從高到低排列*/

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

fprintf(out,"%4.1f\n",h[i].s);

fclose(out);

}

28.函數(shù)fun的功能是:將s所指字符串中除了下標(biāo)為偶數(shù)、同時(shí)ASCII值也為偶數(shù)的字符外,其余的全都刪除;串中剩余字符所形成的一含新串放在t所指的數(shù)組中。

例如,若s所指字符串中的內(nèi)容為:“ABCDEFGl23456”,其中字符A的ASCII碼值為奇數(shù),因此應(yīng)當(dāng)刪除:其中字符B的ASCII碼值為偶數(shù),但在數(shù)組中的下標(biāo)為奇數(shù),因此也應(yīng)當(dāng)刪除;而字符2的ASCII碼值為偶數(shù),所在數(shù)組中的下標(biāo)也為偶數(shù),因此不應(yīng)當(dāng)刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是:“246”。

注意:部分源程序存在文件PROGl.C中。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。

29.請(qǐng)編寫函數(shù)fun(),其功能是;計(jì)算井輸出下列多項(xiàng)式值。

S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-1/2n)

例如,若主函數(shù)從鍵盤給n輸入8后,則輸出為S-0.662872。

注意;部分源程序給出如下。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序;

#include<stdio.h>

doublefun(intn)

{

}

main()

{

intn;

doubles;

printf("\nInputn:");

scanf("%d",&n);

s=fun(n);

printf("\ns=%f\n",s);

}

30.請(qǐng)編寫函數(shù)fun,其功能是:計(jì)算并輸出當(dāng)x<0.97時(shí)下列多項(xiàng)式的值,直到|Sn-Sn-2

|<0.000001為止。

例如,在主函數(shù)中從鍵盤給x輸入0.21后,輸出為:s=1.100000。

注意:部分源程序在文件PROGl.C中。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。

31.請(qǐng)編寫函數(shù)fun(),對(duì)長(zhǎng)度為7個(gè)字符的字符串,除首、尾字符外,將其余5個(gè)字符按ASCII碼值升序排列。

例如:原來的字符串為BdsihAd,則排序后輸出為BAdhisd。

注意:部分源程序給出如下。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

#include<ctype.h>

#include<conio.h>

intfun(char*s,intnum)

{

}

main()

{

chars[10];

clrscr();

printf("輸入7個(gè)字符的字符串:");

gets(s);

fun(s,7);

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

}

32.假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫函數(shù)fun,它的功能是:使字符串的前導(dǎo)*號(hào)不得多于n個(gè);若多于n個(gè),則刪除多余的*號(hào):若少于或等于n個(gè),則什么也不做,字符串中間和尾部的*號(hào)不刪除。

例如,字符串中的內(nèi)容為:******A*BC*DEF*G****,若n的值為4,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:****A*BC*DEF*G****;若n的值為8,則字符串中的內(nèi)容仍為;*******A*BC*DEF*G****。n的值在主函數(shù)中輸入。

在編寫函數(shù)時(shí),不得使用C語言提供的字符串函數(shù)。

注意:部分源程序在文件PROGl.C文件中。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容。僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。

33.函數(shù)fun的功能是:將a、b中的兩個(gè)兩位正整數(shù)合并形成一個(gè)新的整數(shù)放在c中。合并的方式是:將a中的十位和個(gè)位數(shù)依次放在變量c的千位和十位上,b中的十位和個(gè)位數(shù)依次放在變量c的個(gè)位和百位上。

例如,當(dāng)a=45,b=12。調(diào)用該函數(shù)后,c=4251。

注意:部分源程序存在文件PROGl.C中。數(shù)據(jù)文件IN.DAT中的數(shù)據(jù)不得修改。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。

34.請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是:統(tǒng)計(jì)各年齡段的人數(shù)。N個(gè)年齡通過調(diào)用隨機(jī)函數(shù)獲得,并放在主函數(shù)的age數(shù)組中。要求函數(shù)把0至9歲年齡段的人數(shù)在d[0]中,把10至19歲年齡段的人數(shù)放在d[1]中,把20至29歲年齡段的人數(shù)放在d[2]中,依次類推,把100歲(含100)以上年齡的人數(shù)都放在d[10]中。結(jié)果在主函數(shù)中輸出。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。試題程序:#include<stdio.h>#defineN50#defineM11voidfun(int*a,int*b){}doublernd(){statict=29,c=217,m=1024,r=0;r=(r*t+c)%m;return((double)r/m);}main(){intage[N],i,d[M];for(i=0;i<N;i++)age[i]=(int)(i15*rnd());/*產(chǎn)生一個(gè)隨機(jī)的年齡數(shù)組*/printf("Theoriginaldata:\n");for(i=0;i<N;i++)printf((i+l)%10==07“%4d\n”;“%4d”,age[i]);/*每行輸出10個(gè)數(shù)*/printf(“\n\n”);fun(age,d);for(i=0;i<l0;i++)printf(“%4d---%4d:%4d\n”;,i*l0,i*10+9,d[i]);printf(“Over100;%4dkn”;,d[10]).;}

四、單選題(0題)35.在有向圖G的拓?fù)湫蛄兄校繇旤c(diǎn)Vi在頂點(diǎn)Vj之前,則下列情形不可能出現(xiàn)的是()。

A.G中有弧

B.G中有一條從Vi到Vj的路徑

C.G中沒有弧

D.G中有一條從Vj到Vi的路徑

五、單選題(0題)36.有以下程序:#include<stdio,h>main(){intk=5,n=0;while(k>0){switch(k){default:break;case1:n+=k;case2:case3:n+=k;}k--;printf("%d\n",n);}程序運(yùn)行后的輸出結(jié)果是()。

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

六、單選題(0題)37.有以下程序段:

以下選項(xiàng)中表達(dá)式的值為11的是()。

A.

B.

C.

D.

參考答案

1.A

2.Dmain函數(shù)中,fun(fun(t))嵌套調(diào)用fun函數(shù)。第一次調(diào)用為fun(1),調(diào)用后,a[3]={1,3,5},輸出1,3,5,返回a[1]=3。第二次調(diào)用為fun(3),調(diào)用后,a[3]={一1,3,7},輸出一l,3,7。

3.B解析:本題主要考查結(jié)構(gòu)類型的定義:struct是結(jié)構(gòu)體類型的關(guān)鍵字;structstr是結(jié)構(gòu)體類型名;x、y、z都是結(jié)構(gòu)體成員名;st是結(jié)構(gòu)變量名。

4.Afgets函數(shù)的功能是從fp所指文件中讀入n-1個(gè)字符放入以str為起始地址的空間內(nèi),讀取長(zhǎng)度不超過n-1,讀入結(jié)束后,自動(dòng)在最后添加’\\0’,選項(xiàng)A正確。本題答案為A選項(xiàng)。

5.A當(dāng)所賦的值不夠其列的寬度時(shí),系統(tǒng)在其后自動(dòng)補(bǔ)0,因此a[0][3]=0,a[1][2]=6,a[2][1]=5,a[3][0]=0,故選擇A選項(xiàng)。

6.Cf函數(shù)的功能是對(duì)形參a的各個(gè)成員用結(jié)構(gòu)體變量b的各個(gè)成員進(jìn)行賦值后,然后返回變量a。

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

8.C(10)C)解析:DB即數(shù)據(jù)庫(Database),是統(tǒng)一管理的相關(guān)數(shù)據(jù)的集合;DBMS即數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem),是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,為用戶或應(yīng)用程序提供訪問DB的方法;DBS即數(shù)據(jù)庫系統(tǒng)(DatabaseSystem)由如下5部分組成,數(shù)據(jù)庫(數(shù)據(jù))、數(shù)據(jù)庫管理系統(tǒng)(軟件)、數(shù)據(jù)庫管理員(人員)、系統(tǒng)平臺(tái)之一——硬件平臺(tái)(硬件)、系統(tǒng)平臺(tái)之二——軟件平臺(tái)(軟件)。

9.AB選項(xiàng)中“switch((int)x);”語句中不應(yīng)該有最后的分號(hào)。switch(expr1)中的expr1不能用浮點(diǎn)類型或long類型,也不能為一個(gè)字符串,所以C選項(xiàng)錯(cuò)誤。case后面必須為常量表達(dá)式,所以D選項(xiàng)錯(cuò)誤。故本題答案為A選項(xiàng)。

10.B

11.C

12.D通常把軟件產(chǎn)品從提出、實(shí)現(xiàn)、使用、維護(hù)到停止使用、退役的過程稱為軟件生命周期。選項(xiàng)A、B、C選項(xiàng)均為生命周期的一部分。故選D選項(xiàng)。

13.1010解析:本題程序中定義了一個(gè)函數(shù)sub(),用來計(jì)算一個(gè)整數(shù)整除10的商和余數(shù)的和。在主函數(shù)中,首先用scanf()函數(shù)讀入一個(gè)十進(jìn)制整數(shù)1234,然后對(duì)1234三次嵌套調(diào)用函數(shù)svb()。首先看最里層的調(diào)用,應(yīng)該返回的值是123+4=127;然后中間一層調(diào)用應(yīng)該返回的是12+7=19;所以最外層調(diào)用返回1+9=10。故最后輸出10。

14.局域網(wǎng)和廣域網(wǎng)局域網(wǎng)和廣域網(wǎng)

15.對(duì)象類

16.3030解析:考查for循環(huán)的使用。題目中for(;;)表示:for循環(huán)的初始化表達(dá)式,條件表達(dá)式和修正表達(dá)式都省略了,表示進(jìn)行for循環(huán)和for循環(huán)的終止都沒有限制。

17.int*

18.44解析:本題考查函數(shù)的遞歸調(diào)用。在主函數(shù)中第1次調(diào)用子函數(shù)是調(diào)用的fun(11),返回11-fun(9):第2次調(diào)用子函數(shù)是調(diào)用的fun(9),返回9-tim(7);第3次調(diào)用子函數(shù)是調(diào)用的fun(7),返回7-fun(5);第4次調(diào)用子函數(shù)是調(diào)用的fun(5),返回5-fun(3);第5次調(diào)用子函數(shù)是調(diào)用的fun(3),返回3-fun(1);第6次調(diào)用子函數(shù)是調(diào)用的fun(1),返回3。總的返回值是:11-(9-(7-(5-(3-3))))=4。

19.3535解析:函數(shù)swap(int*a,int*b)的功能是實(shí)現(xiàn)*a和*b中兩個(gè)數(shù)據(jù)的交換,在主函數(shù)中調(diào)用swap(p,q)后,形參指針變量a和b分別指向i和j,在swap(int*a,int*b)執(zhí)行完后,指針變量a和b分別指向j和i,而指針變量p,q所指向變量的值沒有發(fā)生變化,所以輸出結(jié)果為35。

20.字符串a(chǎn)和b的長(zhǎng)度之和字符串a(chǎn)和b的長(zhǎng)度之和解析:本題首先通過第一個(gè)while循環(huán)計(jì)算字符串a(chǎn)的長(zhǎng)度,再通過第二個(gè)循環(huán),將字符串a(chǎn)和b相連,最后返回連接后的總長(zhǎng)度。

21.共享性共享性解析:數(shù)據(jù)庫技術(shù)的主要特點(diǎn)有以下幾個(gè)方面:數(shù)據(jù)的集成性,數(shù)據(jù)的高共享性與低冗余性,數(shù)據(jù)的獨(dú)立性,數(shù)據(jù)統(tǒng)—管理與控制。

22.n/=10或n=n/10n/=10或n=n/10解析:每次循環(huán)把n除以10所得的商賦給n。

23.arjteartest

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

25.

解析:該程序功能是對(duì)題干中給出的多項(xiàng)式的求解。根據(jù)題干中給出的數(shù)列,首先推出每一項(xiàng)的表達(dá)式,然后再對(duì)多項(xiàng)式進(jìn)行累加求和。

26.intfun(inta[M][N]){intijsum=0;for(i=0;i<M;i++)for(j=0;i<N;j++)if(i==0||i==M-1||j==0||j==N-1)/*只要下標(biāo)中有一個(gè)為0或M-1或N-1則它一定是周邊元素*/sum=sum+a[i][j];/*將周邊元素相加*/returnsum;}intfun(inta[M][N])\r\n{\r\ninti,j,sum=0;\r\nfor(i=0;i<M;i++)\r\nfor(j=0;i<N;j++)\r\nif(i==0||i==M-1||j==0||j==N-1)/*只要下標(biāo)中有一個(gè)為0或M-1或N-1,則它一定是周邊元素*/\r\nsum=sum+a[i][j];/*將周邊元素相加*/\r\nreturnsum;\r\n}解析:本題采用逐一判斷的方式,周邊元素的下標(biāo)一定有一個(gè)是0或M-1或N-1,且只要下標(biāo)中有一個(gè)為0或M-1或N-1,則它一定是周邊元素。

27.doublefun(STREC*aSTREC*bint*n){inti;doubleay=0.0;*n=0;for(i=0;i<N;i++)av=av+a[i].s;ay=ay/N;/*求平均值*/for(i=0;i<N;i++)if(av<=a[i].s){b[*n]=a[i];*n-*n+l;}/*將高于等于平均分的學(xué)生存從所指存儲(chǔ)單元中并統(tǒng)計(jì)人數(shù)*/returnay;/*返回嚴(yán)均分*/}doublefun(STREC*a,STREC*b,int*n)\r\n{\r\ni

溫馨提示

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