2022-2023學(xué)年陜西省渭南市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第1頁(yè)
2022-2023學(xué)年陜西省渭南市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第2頁(yè)
2022-2023學(xué)年陜西省渭南市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第3頁(yè)
2022-2023學(xué)年陜西省渭南市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第4頁(yè)
2022-2023學(xué)年陜西省渭南市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第5頁(yè)
已閱讀5頁(yè),還剩58頁(yè)未讀 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

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

文檔簡(jiǎn)介

2022-2023學(xué)年陜西省渭南市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(12題)1.

2.有以下程序

#include<stdio.h>

main()

{inta[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL;

*q=*(p+5);

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

}

程序運(yùn)行后的輸出結(jié)果是A.運(yùn)行后報(bào)錯(cuò)B.66C.611D.510

3.以下編碼方法中,()屬于熵編碼。

A.哈夫曼編碼B.小波變換編碼C.線性預(yù)測(cè)編碼D.形成編碼

4.設(shè)有定義“doublea[10],*s=a;”,以下能夠代表數(shù)組元素a[3]的是()。

A.(*s)[3]B.*(s+3)C.*s[3]D.*s+3

5.一個(gè)棧的初始狀態(tài)為空。現(xiàn)將元素1、2、3、4、5、A、B、C、D、E依次入棧,然后再依次出棧,則元素出棱的順序是()。A.A.12345ABCDEB.EDCBA54321C.ABCDEl2345D.54321EDCBA

6.以下合法的字符型常量是A.B.C.D.

7.結(jié)構(gòu)化程序由三種基本結(jié)構(gòu)組成,三種基本結(jié)構(gòu)組成的算法A.可以完成任何復(fù)雜的任務(wù)B.只能完成部分復(fù)雜的任務(wù)C.只能完成符合結(jié)構(gòu)化的任務(wù)D.只能完成一些簡(jiǎn)單的任務(wù)

8.下面程序的輸出結(jié)果是()。#include<stdio.h>intm=13;intfun2(intx,inty){intm=3;return(x*y-m);}main(){inta=7,b=5;printf("%d\n",fun2(a,b)/m);}

A.1B.2C.7D.10

9.若有如下程序:intsub(){staticintn=1;intx=1;x*=n;n++;returnx;}main(){intn,t=1;for(n=1;n<6;n++)t*=sub();printf("%d\n",t);}則程序運(yùn)行后的輸出結(jié)果是()

A.15B.120C.34560D.-30976

10.下列標(biāo)識(shí)符不是關(guān)鍵字的是()。

A.breakB.charC.SwithchD.return

11.有以下程序#include<stdio.h>voidfun(intx){if(x/2>1)fun(x/2);printf("%d",x);}main{fun(7);printf("\n");}程序運(yùn)行后的輸出結(jié)果是()。A.137B.731C.73D.37

12.有以下程序:#include<stdio.h>voidfun(doublex,double*y,double*z){*y=*y-1.0;*z=*z+x;}main(){doublea=2.5,b=9.0,*pa,*pb;pa=&a;pb=&b;fun(b-a,pa,pb);printf(“%f\n”,a);}程序運(yùn)行后的輸出結(jié)果是()。

A.8.000000B.9.000000C.1.500000D.10.500000

二、2.填空題(12題)13.函數(shù)fun的功能是計(jì)算xn。

doublefun(doublex,intn)

{inti;doubley=1;

for(i=1;i<=n;i++)y=y*x;

returny;

}

主函數(shù)中已經(jīng)正確定義變量m,a,b并賦值,要調(diào)用函數(shù)fun計(jì)算:m=a4+b4-(a+b)3。實(shí)現(xiàn)這一計(jì)算的函數(shù)調(diào)用語(yǔ)句為【】。

14.軟件維護(hù)活動(dòng)包括以下幾類(lèi):改正性維護(hù)、適應(yīng)性維護(hù)、【】維護(hù)和預(yù)防性維護(hù)。

15.以下程序的功能是將字符串s中所有小寫(xiě)字母'a'刪去,請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

main()

{chars[]="absuWWUDJFKFLaaakdK";

inti,j;

for(i=j=0;s[i]!='\0';i++)

if()

s[j++]=s[i];

s[j]='\0';

printf("%s",s);

}

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

#include<conio.h>

#include<stdio.h>

#defineM100

voidfun(intm,int*a,int*n)

{inti,j=0;

for(i=1;i<=m;i++)

if(i%7==0‖i%11==0)

a[j++]=i;

*n=j;}

main()

{intaa[M],n,k;

clrscr();

fun(10,aa,&n);

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

if((k+1)%20==0)printf("\n");

elseprintf("%4d",aa[k]);

printf("\n");}

17.有以下程序:

#include<stdio.h>

intsub(intn)

{return(n/10+n%10);}

main()

{intx,y;

seanf("%d",&x);y=sub(sub(sub(x)));

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

}

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

18.以下程序的運(yùn)行結(jié)果為【】。

#defineN5

main()

{inta[N]={1,2,3,4,5},i,temp;

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

{temp=a[i];

a[i]=a[N-i-1];

a[N-i-1)=temp;

}

printf("\n");

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

}

19.在一個(gè)容量為32的循環(huán)隊(duì)列中,若頭指針front=3,尾指針rear=2,則該循環(huán)隊(duì)列中共有______個(gè)元素。

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

main()

{

intx=1,y=0,a=0,b=0;

switch(x)

{

case1:

switch(y)

{

case0:a++;break;

case1:b++;break;

case2:a++;b++;break;

}

printf("%d%d\n",a,B);

}

21.設(shè)有如下程序段:

inti=0,sum=1;

do

{sum+=i++;}

while(i<6);

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

上述程序段的輸出結(jié)果是【】。

22.設(shè)有chara,b;,若要通過(guò)a&b運(yùn)算屏蔽掉a中的其他位,只保留第2位和第8位(右起為第1位),則b的二進(jìn)制是【】。

23.表達(dá)式1/2*(int)3.7/(int)(2.4*(1.5+2.5))值的數(shù)據(jù)類(lèi)型為_(kāi)_____。

24.下列程序中的數(shù)組a包括10個(gè)整數(shù)元素,分別將前項(xiàng)和后項(xiàng)之和存入數(shù)組b,并按每行4個(gè)元素輸出數(shù)組b。請(qǐng)?zhí)羁铡?/p>

#include<stdioh>

main()

{inta[10],b[10],i;

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

scanf("%d",&a[i]);

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

for(i;0;i<9;i++)

{if(i%4==0)primf("\n");

printf("%3d",b[i];

}

}

三、3.程序設(shè)計(jì)題(10題)25.N名學(xué)生的成績(jī)己在主函數(shù)中放入一個(gè)帶頭節(jié)點(diǎn)的鏈表結(jié)構(gòu)中,h指向鏈表的頭節(jié)點(diǎn)。請(qǐng)編寫(xiě)函數(shù)fun(),它的功能是:求出平均分,由函數(shù)值返回。

例如,若學(xué)生的成績(jī)是85,76,69,91,72,64,87,則平均分應(yīng)當(dāng)是78.625。

注童:部分源程序給出如下.

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

試題程序:

#include<stdlib.h>

#include<stdio.h>

#defineN8

structslist

{doubles;

structslist*next;

};

typedefstructslistSTREC;

doublefun(STREC*h)

{

}

STREC*creat(double*s)/*創(chuàng)建鏈表*/

{

STREC*h,*p,*q;

inti=0;

h=p=(STREC*)malloc(sizeof(STREC));

p->s=0;

while(i<N)

{q=(STREC*)malloc(sizeof(STREC));

q->s=sIi];i++;p->next=q;p=q;

}

p->next=0;

returnh;

}

outlist(STREC*h)

{

STREC*p;

p=h->next;

printf("head");

do

{printf("->%4.if",p->s);

p=p->next;/*輸出各成績(jī)*/

}

while(p!=0)

}

main()

{

doubles[N]={85,76,69,85,91,72,64,

87},ave;

STREC*h;

h=creat(s);

outlist(h);

ave=fun(h);

printf("ave=%6.3f\n",ave);

}

26.請(qǐng)編寫(xiě)函數(shù)fun(),它的功能是:求出1到1000之內(nèi)能被5或13整除、但不能同時(shí)被5和13整除的所有整數(shù)并將它們放在9所指的數(shù)組中,通過(guò)n返回這些數(shù)的個(gè)數(shù)。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

voidfun(int*a,int*n)

{

}

main()

{

intaa[1000],n,k;

clrscr();

fun(aa,an);

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

if((k+1)%10==0)

{

printf("%5d",aa[k]);

printf("\n");/*—行寫(xiě)10個(gè)數(shù)*/

}

else

printf("%5d",aa[k]);

}

27.學(xué)生的記錄由學(xué)號(hào)和成績(jī)組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請(qǐng)編寫(xiě)函數(shù)fun(),它的功能是按分?jǐn)?shù)的高低排列學(xué)生的記錄,低分在前。

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

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

試題程序:

#include<stdio.h>

#defineN16

typedefstruct

{charmum[10);

ints;

}STREC;

intfun(STRECa[])

{

}

main()

{

STRECs[N]={{“GA005”,88},{“GA003”,64},

{“CA002”,77},{“GA004”,89},{“GA001”,54},

{“GA007”,72},{“GA008”,72},{“GA006”,65},

{“GA015”,83},{“GA013”,95},{“GA012”,55},

{“GA014”,68},{“GA01l”,78},{“GA017”,53},

{“GA018”,92},{“GA016”,82}};

inti;

FILE*out;

fun(s);

printf(“Thedataaftersorted:\n”);

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

{

if((i)%4==0)

/*每行輸出4個(gè)學(xué)生記錄*/

printf(“\n”);

printf(“%s%4d”,s[i].num,s[i].s);

}

printf(“\n”);

ut=fopen(“out21.dat”,“w”);

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

{

if((i)%4==0&&i)

fprintf(out,“\n”);

fPrintf(out,“%4d”,s[i].s);

}

fprintf(out,“\n”);

fClose(out);

}

28.請(qǐng)編寫(xiě)函數(shù)fun(),它的功能是計(jì)算下列級(jí)數(shù)和,和值由函數(shù)值返回。

S=1-x+x2(上標(biāo))/2!-x3(上標(biāo))/3!+…+(-1*x)n(上標(biāo))/n!

例如,當(dāng)n=15,x=0.5時(shí),函數(shù)值為0.606531。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<math.h>

doublefun(doublex,intn)

{

}

main()

{

clrscr();

printf("%f",fun(0.5,15));

}

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

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

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

30.編寫(xiě)一個(gè)函數(shù),該函數(shù)可以統(tǒng)計(jì)一個(gè)長(zhǎng)度為2的字符串在另一個(gè)字符串中出現(xiàn)的次數(shù)。例如,假定輸入的字符串為asdasasdfgasdaszx67asdmklo,子字符串為as,則應(yīng)當(dāng)輸出6。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

intfun(char*str,char*substr)

{

}

main()

{

charstr[81],substr[3];

intn;

clrscr();

printf("輸入主字符串");

gets(str);

printf("輸入子字符串");

gets(substr);

puts(str);

puts(substr);

n=fun(shr,substr);

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

}

31.請(qǐng)編寫(xiě)一個(gè)函數(shù)intfun(int*s,intt,int*k),用來(lái)求出數(shù)組的最大元素在數(shù)組中的下標(biāo)并存放在k所指的存儲(chǔ)單元中。

例如,輸入如下整數(shù):

876675896101301401980431451777

則輸出結(jié)果為6,980。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

intfun(int*s,intt,int*k)

{

}

main()

{

inta[10]={876,675,896,101,301,401,

980,431,451,777},k;

clrscr();

fun(a,10,&k);

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

}

32.學(xué)生的記錄由學(xué)號(hào)和成績(jī)組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請(qǐng)編寫(xiě)函數(shù)fun(),它的功能是:把指定分?jǐn)?shù)范圍之外的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,分?jǐn)?shù)范圍之外的學(xué)生人數(shù)由函數(shù)值返回。

例如,輸入的分?jǐn)?shù)是80和89,則應(yīng)當(dāng)把分?jǐn)?shù)低于80和高于89的學(xué)生數(shù)據(jù)進(jìn)行輸出,不包含80分和89分的學(xué)生數(shù)據(jù)。主函數(shù)中把80放在low中,把89放在heigh中。

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

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

試題程序

#include<stdio.h>

#defineN16

typedefstruct

{charnum[10];

ints;

}STREC;

intfun(STREC*a,STREC*b,int1,inth)

{

}

main()

{

STRECs[N]={{“GA005”,55},{“GA003”,96},

{“GA002”,80},{“GA004”,68},{“GA001”,88},

{“GA007”,74},{“GA008”,85},{“GA006”,99},

{“GA015”,90},{“GA013”,53},{“GA012”,66},

{“GA014”,82},{“GA0ll”,73},{“GA017”,69},

{“GA018”,64},{“GA016”,86}};

STECh[N],tt;

FILE*out;

inti,j,n,low,heigh,t;

printf(“Enter2integernumberlow&heigh:”);

scanf(“%d%d”,&low,&heigh);

if(heigh<low)

{

t=heigh;

heigh=low;

low=t;

}

n=fun(S,h,low,heigh);

printf(“Thestudent'Sdataout%d--%d:\n”,low,heigh);

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

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

/*輸出指定分?jǐn)?shù)范圍內(nèi)的學(xué)生記錄*/

printf(“\n”);

ut=fopen(“out23.dat”,“w”);

fprintf(out,“%d\n”,n);

n=fun(s,h,70,79);

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

/*分?jǐn)?shù)在70~79之外的學(xué)生記錄按分?jǐn)?shù)從低到高排列*/

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

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

{

tt=h[i];

h[i]=h[j];

h[j]=tt;

}

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

fprintf(out,“%4d\n”,h[i].s);

fprintf(out,“\n”);

fclose(out);

}

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

例如,字符串中的內(nèi)容為****A*BC*DEF*G*******,若n的值為2,刪除后,字符串中的內(nèi)容則應(yīng)當(dāng)是**A*BC*DEF*G*******;若n的值為4,則字符串中的內(nèi)容仍為****A*BC*DEF*G******。n的值在主函數(shù)中輸入。在編寫(xiě)函數(shù)時(shí),不得使用C語(yǔ)言提供的字符串函數(shù)。

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

voidfun(charAa,intn)

{

}

main()

{chars[81];intn;

printf("Enterastring:\n");gets(s);

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

fun(s,n);

printf("Thestringafterdeleted:\n");

puts(s);

}

34.編寫(xiě)函數(shù)fun,它的功能是計(jì)算下列級(jí)數(shù)和,和值由函數(shù)值返回。

例如,當(dāng)n=10,x=0.3時(shí),函數(shù)值為1.349859。

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

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

四、單選題(0題)35.將一棵有100個(gè)結(jié)點(diǎn)的完全二叉樹(shù)從上到下,從左到右依次對(duì)結(jié)點(diǎn)進(jìn)行編號(hào),根結(jié)點(diǎn)的編號(hào)為1,則編號(hào)為49的結(jié)點(diǎn)的左孩子的編號(hào)為_(kāi)_____。

A.98B.99C.50D.48

五、單選題(0題)36.

六、單選題(0題)37.有以下程序:#include<stdio.h>voidf1(char*a,charb){charc;c=*a;*a=b;b=c;}voidf2(chara,charb){charc;c=a;a=b;b=c;}voidf3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}main(){chart1,t2;t1=‘A’;t2=‘B’;f3(&t1,&t2);putchar(t1);putchar(t2);t1=‘A’;t2=‘B’;f2(t1,t2);putchar(t1);putchar(t2);t1=‘A’;t2=‘B’;f1(&t1,t2);putchar(t1);putchar(t2);printf(“\n”);}程序運(yùn)行后的輸出結(jié)果是()。

A.ABBABBB.BAABBBC.BABABAD.BABAAB

參考答案

1.B

2.C解析:本題中第一行代碼對(duì)指針P進(jìn)行了初始化,其指向數(shù)組a的第6個(gè)元素,在其后的操作中p的值也沒(méi)有改變過(guò),所以最后輸出*p=*\u3000\u3000(p+0)\u3000\u3000=a\u3000[5]\u3000=6,而第二行代碼中對(duì)q指向的值進(jìn)行賦值,等價(jià)于*q=a[10]=11,所以輸出結(jié)果*q為11。

3.A

4.B題中,首先定義了double型的數(shù)組a,并將數(shù)組首地址賦給指針s?!?*s)”表示“a[1]”,“s[3]”不是指針變量,不能使用間址運(yùn)算符“*”,故選項(xiàng)A、C不能表示“a[3]”;選項(xiàng)D的“*s+3”等于“a[0]+3”。故本題答案為B選項(xiàng)。

5.B棧是先進(jìn)后出的原則組織數(shù)據(jù),所以人棧最早的最后出棧,所以選擇B。

6.A解析:C語(yǔ)言的字符常量是用單引號(hào)(即撇號(hào))括起來(lái)的一個(gè)字符。除此之外,在C語(yǔ)言中還允許用以一個(gè)“\\”開(kāi)頭的字符序列來(lái)表示字符常量。其中,形式“\\ddd”表示1到3位8進(jìn)制數(shù)所代表的字符;形式“\\xhh”表示1到2位16進(jìn)制數(shù)所代表的字符。在本題中‘\\x13’表示回車(chē)符,是一個(gè)字符常量;‘\\081’用\u30008進(jìn)制數(shù)所代表的字符,但形式不正確,因?yàn)?進(jìn)制數(shù)所表示的字符中不會(huì)出現(xiàn)數(shù)字“8”;‘65’不是一個(gè)字符,而是一個(gè)+進(jìn)制數(shù)字;“\\n”是用雙引號(hào)括起來(lái)的一個(gè)字符,表示一個(gè)字符串,而不是字符常量。

7.A解析:C程序由順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)三種基本的結(jié)構(gòu)組成,這三種結(jié)構(gòu)可以組成任何復(fù)雜的C程序,即可以完成任何復(fù)雜的任務(wù)。

8.B解析:本題考查函數(shù)的調(diào)用。函數(shù)fun2的作用是將形參x和y的值相乘后減去3,在fun2中的變量m是一個(gè)局部變量,它的值在fun2函數(shù)內(nèi)有效;在主函數(shù)中的m指的是全局變量,其值為13,所以fun2(a,b)/m的值為(7*5-3)/13,即2。

9.B

10.C在C語(yǔ)言中,字母區(qū)分大小,所以break、char、return、switch都是C語(yǔ)言中的關(guān)鍵字,而Swithch不是。

11.D本程序主要考查遞歸函數(shù)。fun(7),首先將參數(shù)代入函數(shù),因?yàn)?7/2)>1,所以執(zhí)行f(3),依此類(lèi)推直到f(1.5),(1.5/2)<1,所以執(zhí)行打印函數(shù),此時(shí)X值為3,然后退出f(1.5),返回f(3),打印x值即7。所以選D。

12.Cmain函數(shù)定義兩個(gè)double類(lèi)型的變量a、b,分別賦初值為2.5、9.0。另外定義兩個(gè)double類(lèi)型的指針變量pa、pb,其中pa指向a,pb指向b。然后將b-a、pa、pb傳給函數(shù)fun,此時(shí)x的值為6.5,y指向a,z指向b?!?y=*y-1.0;”是將變量a的值減去1.0賦給a,a的值為1.5;“*z=*z+x;”是將變量b的值加上6.5賦給b,b的值為15.5。fun函數(shù)執(zhí)行完畢后,輸出a的值為1.5。故本題答案為C選項(xiàng)。

13.fun(a4)+fun(b4)-fun((a+b)3);fun(a,4)+fun(b,4)-fun((a+b),3);解析:函數(shù)fun的功能是計(jì)算x的n次方,a的4次方的調(diào)用函數(shù)為fun(a,4),b的4次方的調(diào)用函數(shù)為fun(b,4),(a+b)的3次方的調(diào)用函數(shù)為fun((a+b),3),計(jì)算m=a4+b4-(a+b)3的函數(shù)調(diào)用語(yǔ)句為:fun(a,4)+fun(b,4)-fun((a+b),3);

14.完善性軟件維護(hù)活動(dòng)包括以下幾類(lèi):改正性維護(hù),適應(yīng)性維護(hù)、完善性維護(hù)和預(yù)防性維護(hù),完善性維護(hù)是指為了滿(mǎn)足用戶(hù)對(duì)軟件提出的新功能與性能要求,需要修改或再開(kāi)發(fā)軟件,以擴(kuò)充軟件功能、增強(qiáng)軟件性能、改進(jìn)加工效率、提高軟件的可維護(hù)性。

15.s[i]!='a's[i]!='a'解析:本題是要將字符串s中所有小寫(xiě)字母'a'刪去,所以if語(yǔ)句的判斷條件應(yīng)該是字符串s中的字符和字符'a'不相同的時(shí)候,就把它仍然存在原來(lái)的數(shù)組中,若是和字符'a'相同,就不再保存它。

16.77解析:解答本題的關(guān)鍵是要讀懂程序,要找出能被7或11整除的所有整數(shù),注意數(shù)學(xué)中的“或”和C語(yǔ)言中的“或”的區(qū)別,但在此處,if條件語(yǔ)句中用了“‖”運(yùn)算符,若要找能同時(shí)被7和11整除的所有整數(shù)則在if的條件中應(yīng)使用“&&”運(yùn)算符。

當(dāng)然,如果m的值輸入50,即表達(dá)式fun(10,aa,&n);為fun(50,aa,&n);時(shí)輸入結(jié)果為:711142122283335424449。

17.1010解析:函數(shù)sub遞歸調(diào)用的返回值被作為再次調(diào)用sub函數(shù)的實(shí)參傳給函數(shù)sub的形參,共進(jìn)行3次遞歸調(diào)用。第1次調(diào)用sub(1234)的返回值為1234/10+1234%10=127;第2次調(diào)用sub(127)的返回值為127/10+127%10=19;第3次調(diào)用sub(19)的返回值為19/10+19%10=10。所以程序的輸出為10。

18.54321

19.3131解析:設(shè)隊(duì)列容量為m,如果:rear>front,則隊(duì)列中元素個(gè)數(shù)為rear-front;如果rear<front,則隊(duì)列中元素個(gè)數(shù)為m+(rear-front)。本題rear<front,則m=32+(2-3)=31。

20.2121解析:本題考核的知識(shí)點(diǎn)是switch語(yǔ)句的嵌套應(yīng)用。外層switch語(yǔ)句后面括號(hào)里的x的值為1,所以執(zhí)行從case1:后面的語(yǔ)句開(kāi)始執(zhí)行,而case1:后面語(yǔ)句也為switch語(yǔ)句,這個(gè)switch語(yǔ)句后面括號(hào)里的y的值為0,所以從該switch語(yǔ)句里的case():開(kāi)始執(zhí)行即執(zhí)行a++,這時(shí)a的值變?yōu)?,執(zhí)行完畢,遇到break語(yǔ)句,退出內(nèi)層switch語(yǔ)句,又回到外層switch語(yǔ)句,繼續(xù)執(zhí)行case1:下面的語(yǔ)句即case2:執(zhí)行完畢后,a自加1變?yōu)?,b自加1變1。所以最后輸出的a和b的值為21。

21.16

22.1000001010000010解析:運(yùn)算“&”的規(guī)則是只有當(dāng)兩個(gè)相應(yīng)的二進(jìn)制位都為1時(shí),該位的結(jié)果才為1。要保留第2、8位,只要將其與二進(jìn)制數(shù)10000010相與。

23.整型整型解析:上面的表達(dá)式中,通過(guò)強(qiáng)制類(lèi)型轉(zhuǎn)換把最后參與運(yùn)算的數(shù)據(jù)都轉(zhuǎn)換成了int型,所以最后得到的結(jié)果也是int類(lèi)型。

24.b[i]=a[i]+a[i+1]b[i]=a[i]+a[i+1]解析:將數(shù)組a中元素a[i]與a[i+1]值相加后的值賦予數(shù)組b中元素b[i]小即可實(shí)現(xiàn)將一個(gè)數(shù)組的前項(xiàng)和后項(xiàng)之和存入另一數(shù)組。

25.doublefun(STREC*h){doubleav=0.0;STREC*p-h->next;/*p直接指向“頭結(jié)點(diǎn)”的下一個(gè)結(jié)點(diǎn)即第—個(gè)成績(jī)*/while(p!=NULL){aY=ay+p->s;/*求總分?jǐn)?shù)*/p=p->next;}returnay/N;/*返回平均值*/}doublefun(STREC*h)\r\n{\r\ndoubleav=0.0;\r\nSTREC*p-h->next;/*p直接指向“頭結(jié)點(diǎn)”的下一個(gè)結(jié)點(diǎn),即第—個(gè)成績(jī)*/\r\nwhile(p!=NULL)\r\n{aY=ay+p->s;/*求總分?jǐn)?shù)*/\r\np=p->next;\r\n}\r\nreturnay/N;/*返回平均值*/\r\n}解析:本題是關(guān)于鏈表問(wèn)題,所以,一定要弄清表示出使指針變量p指向下一個(gè)“結(jié)點(diǎn)”的方法及表示結(jié)束的判斷,本題中,因?yàn)椤邦^結(jié)點(diǎn)”中沒(méi)有數(shù)值,所以程序中讓p直接指向“頭結(jié)點(diǎn)”的下一個(gè)結(jié)點(diǎn),使用語(yǔ)句STREC*p=h->next,當(dāng)然也可將p一開(kāi)始就指向“頭結(jié)點(diǎn)”。

26.voidfun(int*aint*n){inti.j=0;for(i=1;i<=1000;i++)/*求1到1000之內(nèi)能被5或13整除、但不能同時(shí)被5和13整除的所有整數(shù)并放入數(shù)組a中*/if((i%5==0||i%13==0)&&i%65!=0)a[j++]=i;*n=j;/*傳回滿(mǎn)足條件的數(shù)的個(gè)數(shù)*/}voidfun(int*a,int\u3000*n)\r\n{\r\ninti.j=0;\r\nfor(i=1;i<=1000;i++)/*求1到1000之內(nèi)能被5或13整除、但不能同時(shí)被5和13整除的所有整數(shù),并放入數(shù)組a中*/\r\nif((i%5==0||i%13==0)&&i%65!=0)\r\na[j++]=i;\r\n*n=j;/*傳回滿(mǎn)足條件的數(shù)的個(gè)數(shù)*/\r\n}解析:注意本題題目是找出能被5或13整除但不能同時(shí)被5和13整除的所有整數(shù)。能同時(shí)被5和13整除的整數(shù)一定能被65整除,且不能被65整除的數(shù)不一定就是能被5或13整除的數(shù)。所以可得出程序中的if()。按運(yùn)算優(yōu)先級(jí)可知(i%5==0||i%13==0),注意,兩邊必須要有小括號(hào)。

27.intfun(STRECa[]){intij;STRECt;for(i=l;i<N;i++)/*用冒泡法進(jìn)行排序進(jìn)行N-1次比較*/for(j=0;j<N-1;j++)/*在每—次比較中要進(jìn)行N-1次兩兩比較*/if(a[j].s>a[j+1].s)/*按分?jǐn)?shù)的高低排列學(xué)生的記錄低分在前*/{t=a[j];a[j]=a[j+1];a[j+1]=t;}}intfun(STRECa[])\r\n{\r\ninti,j;\r\nSTRECt;\r\nfor(i=l;i<N;i++)/*用冒泡法進(jìn)行排序,進(jìn)行N-1次比較*/\r\nfor(j=0;j<N-1;j++)/*在每—次比較中要進(jìn)行N-1次兩兩比較*/\r\nif(a[j].s>a[j+1].s)/*按分?jǐn)?shù)的高低排列學(xué)生的記錄,低分在前*/\r\n{\r\nt=a[j];\r\na[j]=a[j+1];\r\na[j+1]=t;\r\n}\r\n}解析:冒泡法算法思路:如果有N個(gè)數(shù),則要進(jìn)行N-1次比較,在每—次比較中要進(jìn)行N-1次兩兩比較(這種算法較好理解但不是最精的)。所謂兩兩比較就是從頭到尾依次將相鄰兩個(gè)數(shù)進(jìn)行比較并將其中大的數(shù)放在前或在后(若要求從小到大排序,則大的數(shù)要放在后。反之則對(duì)調(diào)),即兩兩比較后這兩個(gè)數(shù)要形成題中所要求的順序。由于總是從頭到尾進(jìn)行比較,所以第1次比較結(jié)束后,最大(或最小)數(shù)肯定在最后,第2次比較結(jié)束后,次最大(或次最小)數(shù)肯定在倒數(shù)的第2個(gè)數(shù),依次類(lèi)推,所以進(jìn)行第一次比較時(shí)必須比較到最后一個(gè)數(shù),而進(jìn)行第2次比較時(shí)只要比較到倒數(shù)的第2個(gè)數(shù)即可,所以進(jìn)行第i次比較I時(shí)只需比較N-i次即可(這種算法較難理解,但它是最好的)。

28.doublefun(doublexintn){intij=1;doubles=1.0s1=1.0;for(i=1;i<=n;i++){j=-1*j;s1=s1*i/*各項(xiàng)中的階乘*/s=s+j*pow(xi)/s1;/*按公式求出*/}returns;}doublefun(doublex,intn)\r\n{\r\ninti,j=1;\r\ndoubles=1.0,s1=1.0;\r\nfor(i=1;i<=n;i++)\r\n{\r\nj=-1*j;\r\ns1=s1*i/*各項(xiàng)中的階乘*/\r\ns=s+j*pow(x,i)/s1;/*按公式求出*/\r\n}\r\nreturns;\r\n}解析:本程序中用s1來(lái)表示每項(xiàng)的分母(即各項(xiàng)中的階乘),要注意本程序中s和s1的初值都為1。注意到本題的公式中是加減相間的,這里要學(xué)會(huì)使用語(yǔ)句j=-1*j來(lái)實(shí)現(xiàn)。

29.

解析:該程序功能是把高于或等于平均分的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,高于等于平均分的學(xué)生人數(shù)通過(guò)形參n傳回,平均分通過(guò)函數(shù)返回值返回。解題過(guò)程首先求得平均分,然后將所有成績(jī)與平均分進(jìn)行比較,如果大于或等于平均分,存入指定數(shù)組。

30.intfun(char*strchar*substr){intij=0;for(i=0;str[i+1]!='\0';i++)/*如果一個(gè)長(zhǎng)度為2的子字符串在主字符串中出現(xiàn)一次則j+1如此循環(huán)*/if(str[i]==substr[0]&&str[i+1]==substr[1])j++;returnj;/*返回子字符串在主字符串中出現(xiàn)的次數(shù)*/}intfun(char*str,char*substr)\r\n{\r\ninti,j=0;\r\nfor(i=0;str[i+1]!='\\0';i++)/*如果一個(gè)長(zhǎng)度為2的子字符串在主字符串中出現(xiàn)一次,則j+1,如此\r\n循環(huán)*/\r\nif(str[i]==substr[0]&&str[i+1]==substr[1])\r\nj++;\r\nreturnj;/*返回子字符串在主字符串中出現(xiàn)的次數(shù)*/\r\n}解析:該題中subsu只有兩個(gè)字符,所以可以用if語(yǔ)句來(lái)直接進(jìn)行判斷。要注意if())中str組的下標(biāo)為i和i+1,即比較當(dāng)前字符及其以后的一個(gè)字符是否分別與substr中的字符對(duì)應(yīng)相同,若都相同則表示出現(xiàn)了一次。

31.intfun(int*sinttint*k){inti;*k=0;/*k所指的數(shù)是數(shù)組的下標(biāo)值*/for(i=0;i<t;i++)if(s[*k]<s[i])*k=i;/*找到數(shù)組的最大元素把該元素的下標(biāo)賦給k所指的數(shù)*/returns[*k];/*返回?cái)?shù)組的最大元素*/}intfun(int*s,intt,int*k)\r\n{\r\ninti;\r\n*k=0;/*k所指的數(shù)是數(shù)組的下標(biāo)值*/\r\nfor(i=0;i<t;i++)\r\nif(s[*k]<s[i])*k=i;/*找到數(shù)組的最大元素,把該元素的下標(biāo)賦給k所指的數(shù)*/\r\nreturns[*k];/*返回?cái)?shù)組的最大元素*/\r\n}解析:本題中直接使用指針變量k,但在使用時(shí)要注意對(duì)k的指針運(yùn)算,此外,一開(kāi)始應(yīng)讓*k的值為數(shù)組中的某一下標(biāo)值,即*k=0。

32.intfun(STREC*aSTREC*bintlinth){intij=0;for(i=0;i<N;i++)if((a[i].s>=0&&a[i].s<1)||(a[i].s>h&&a[i].s<=100))/*將各分?jǐn)?shù)低于1高于h的學(xué)生記錄存于結(jié)構(gòu)體數(shù)組b中*/b[j++]=a[i];returnj;/*返回分?jǐn)?shù)范圍內(nèi)的學(xué)生人數(shù)*/}intfun(STREC*a,STREC*b,intl,inth)\r\n{\r\ninti,j=0;\r\nfor(i=0;i<N;i++)\r\nif((a[i].s>=0&&a[i].s<1)||(a[i].s>h&&a[i].s<=100))/*將各分?jǐn)?shù)低于1,高于h的學(xué)生記錄存于結(jié)構(gòu)體數(shù)組b中*/\r\nb[j++]=a[i];\r\nreturnj;/*返回分?jǐn)?shù)范圍內(nèi)的學(xué)生人數(shù)*/\r\n}解析:處理此類(lèi)分段統(tǒng)計(jì)問(wèn)題,可采用多分支選擇語(yǔ)句或條件選擇語(yǔ)句。此處采用條件選擇語(yǔ)句解答,具體見(jiàn)參考答案。使用條件選擇語(yǔ)句進(jìn)行分段統(tǒng)計(jì)時(shí)應(yīng)當(dāng)注意分段范圍。

33.voidfun(char*aintn){inti=0k=0;char*p*t;p=t=a;/*開(kāi)始時(shí)p與t同時(shí)指向數(shù)組的首地址*/while(*t==‘*’)/*用k來(lái)統(tǒng)計(jì)前部星號(hào)的個(gè)數(shù)*/{k++;t++;}if(k>n)/*如果k大于n則佼p的前部保留n個(gè)星號(hào)其后的字符依次存入數(shù)組a中*/{while(*P){a[i]=*(p+k-n);i++p++;}a[i]=‘\0’;/*在字符串最后加上結(jié)束標(biāo)志位*/}}voidfun(char*a,intn)\r\n{\r\ninti=0,k=0;\r\nchar*p,*t;\r\np=t=a;/*開(kāi)始時(shí),p與t同時(shí)指向數(shù)組的首地址*/\r\nwhile(*t==‘*’)/*用k來(lái)統(tǒng)計(jì)前部星號(hào)的個(gè)數(shù)*/\r\n{k++;t++;}\r\nif(k>n)/*如果k大于n,則佼p的前部保留n個(gè)星號(hào),其后的字符依次存入數(shù)組a中*/\r\n{while(*P)\r\n{a[i]=*(p+k-n);\r\ni++\r\np++;\r\n}\r\na[i]=‘\\0’;/*在字符串最后加上結(jié)束標(biāo)志位*/\r\n}\r\n}解析:while()循環(huán)的作用是計(jì)算出前部星號(hào)的個(gè)數(shù);if()的作用是判斷星號(hào)個(gè)數(shù)是否多于n個(gè),若是則只保留n個(gè)星號(hào),即從字符串前部的倒數(shù)第n個(gè)星號(hào)開(kāi)始,到最后一個(gè)字符都存入數(shù)組a中,最后記得在字符串最后加上結(jié)束標(biāo)志位。

34.

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

35.A

36.D

37.B函數(shù)f1(*a,b),*a為地址傳遞,b為值傳遞,將b值傳給*a,則f1(&t1,t2)調(diào)用后輸出t1、t2為BB。f2(a,b)為值傳遞,傳入的只是a、b的值,不實(shí)現(xiàn)交換,則f2(t1,t2)調(diào)用后輸出t1、t2為AB。f3(*a,*b)為地址傳遞,可以實(shí)現(xiàn)a、b值的交換,則f3(&t1,&t2)調(diào)用后輸出t1、t2為BA。因此結(jié)果為BAABBB。故本題答案為B選項(xiàng)。2022-2023學(xué)年陜西省渭南市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、單選題(12題)1.

2.有以下程序

#include<stdio.h>

main()

{inta[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL;

*q=*(p+5);

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

}

程序運(yùn)行后的輸出結(jié)果是A.運(yùn)行后報(bào)錯(cuò)B.66C.611D.510

3.以下編碼方法中,()屬于熵編碼。

A.哈夫曼編碼B.小波變換編碼C.線性預(yù)測(cè)編碼D.形成編碼

4.設(shè)有定義“doublea[10],*s=a;”,以下能夠代表數(shù)組元素a[3]的是()。

A.(*s)[3]B.*(s+3)C.*s[3]D.*s+3

5.一個(gè)棧的初始狀態(tài)為空?,F(xiàn)將元素1、2、3、4、5、A、B、C、D、E依次入棧,然后再依次出棧,則元素出棱的順序是()。A.A.12345ABCDEB.EDCBA54321C.ABCDEl2345D.54321EDCBA

6.以下合法的字符型常量是A.B.C.D.

7.結(jié)構(gòu)化程序由三種基本結(jié)構(gòu)組成,三種基本結(jié)構(gòu)組成的算法A.可以完成任何復(fù)雜的任務(wù)B.只能完成部分復(fù)雜的任務(wù)C.只能完成符合結(jié)構(gòu)化的任務(wù)D.只能完成一些簡(jiǎn)單的任務(wù)

8.下面程序的輸出結(jié)果是()。#include<stdio.h>intm=13;intfun2(intx,inty){intm=3;return(x*y-m);}main(){inta=7,b=5;printf("%d\n",fun2(a,b)/m);}

A.1B.2C.7D.10

9.若有如下程序:intsub(){staticintn=1;intx=1;x*=n;n++;returnx;}main(){intn,t=1;for(n=1;n<6;n++)t*=sub();printf("%d\n",t);}則程序運(yùn)行后的輸出結(jié)果是()

A.15B.120C.34560D.-30976

10.下列標(biāo)識(shí)符不是關(guān)鍵字的是()。

A.breakB.charC.SwithchD.return

11.有以下程序#include<stdio.h>voidfun(intx){if(x/2>1)fun(x/2);printf("%d",x);}main{fun(7);printf("\n");}程序運(yùn)行后的輸出結(jié)果是()。A.137B.731C.73D.37

12.有以下程序:#include<stdio.h>voidfun(doublex,double*y,double*z){*y=*y-1.0;*z=*z+x;}main(){doublea=2.5,b=9.0,*pa,*pb;pa=&a;pb=&b;fun(b-a,pa,pb);printf(“%f\n”,a);}程序運(yùn)行后的輸出結(jié)果是()。

A.8.000000B.9.000000C.1.500000D.10.500000

二、2.填空題(12題)13.函數(shù)fun的功能是計(jì)算xn。

doublefun(doublex,intn)

{inti;doubley=1;

for(i=1;i<=n;i++)y=y*x;

returny;

}

主函數(shù)中已經(jīng)正確定義變量m,a,b并賦值,要調(diào)用函數(shù)fun計(jì)算:m=a4+b4-(a+b)3。實(shí)現(xiàn)這一計(jì)算的函數(shù)調(diào)用語(yǔ)句為【】。

14.軟件維護(hù)活動(dòng)包括以下幾類(lèi):改正性維護(hù)、適應(yīng)性維護(hù)、【】維護(hù)和預(yù)防性維護(hù)。

15.以下程序的功能是將字符串s中所有小寫(xiě)字母'a'刪去,請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

main()

{chars[]="absuWWUDJFKFLaaakdK";

inti,j;

for(i=j=0;s[i]!='\0';i++)

if()

s[j++]=s[i];

s[j]='\0';

printf("%s",s);

}

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

#include<conio.h>

#include<stdio.h>

#defineM100

voidfun(intm,int*a,int*n)

{inti,j=0;

for(i=1;i<=m;i++)

if(i%7==0‖i%11==0)

a[j++]=i;

*n=j;}

main()

{intaa[M],n,k;

clrscr();

fun(10,aa,&n);

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

if((k+1)%20==0)printf("\n");

elseprintf("%4d",aa[k]);

printf("\n");}

17.有以下程序:

#include<stdio.h>

intsub(intn)

{return(n/10+n%10);}

main()

{intx,y;

seanf("%d",&x);y=sub(sub(sub(x)));

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

}

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

18.以下程序的運(yùn)行結(jié)果為【】。

#defineN5

main()

{inta[N]={1,2,3,4,5},i,temp;

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

{temp=a[i];

a[i]=a[N-i-1];

a[N-i-1)=temp;

}

printf("\n");

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

}

19.在一個(gè)容量為32的循環(huán)隊(duì)列中,若頭指針front=3,尾指針rear=2,則該循環(huán)隊(duì)列中共有______個(gè)元素。

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

main()

{

intx=1,y=0,a=0,b=0;

switch(x)

{

case1:

switch(y)

{

case0:a++;break;

case1:b++;break;

case2:a++;b++;break;

}

printf("%d%d\n",a,B);

}

21.設(shè)有如下程序段:

inti=0,sum=1;

do

{sum+=i++;}

while(i<6);

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

上述程序段的輸出結(jié)果是【】。

22.設(shè)有chara,b;,若要通過(guò)a&b運(yùn)算屏蔽掉a中的其他位,只保留第2位和第8位(右起為第1位),則b的二進(jìn)制是【】。

23.表達(dá)式1/2*(int)3.7/(int)(2.4*(1.5+2.5))值的數(shù)據(jù)類(lèi)型為_(kāi)_____。

24.下列程序中的數(shù)組a包括10個(gè)整數(shù)元素,分別將前項(xiàng)和后項(xiàng)之和存入數(shù)組b,并按每行4個(gè)元素輸出數(shù)組b。請(qǐng)?zhí)羁铡?/p>

#include<stdioh>

main()

{inta[10],b[10],i;

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

scanf("%d",&a[i]);

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

for(i;0;i<9;i++)

{if(i%4==0)primf("\n");

printf("%3d",b[i];

}

}

三、3.程序設(shè)計(jì)題(10題)25.N名學(xué)生的成績(jī)己在主函數(shù)中放入一個(gè)帶頭節(jié)點(diǎn)的鏈表結(jié)構(gòu)中,h指向鏈表的頭節(jié)點(diǎn)。請(qǐng)編寫(xiě)函數(shù)fun(),它的功能是:求出平均分,由函數(shù)值返回。

例如,若學(xué)生的成績(jī)是85,76,69,91,72,64,87,則平均分應(yīng)當(dāng)是78.625。

注童:部分源程序給出如下.

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

試題程序:

#include<stdlib.h>

#include<stdio.h>

#defineN8

structslist

{doubles;

structslist*next;

};

typedefstructslistSTREC;

doublefun(STREC*h)

{

}

STREC*creat(double*s)/*創(chuàng)建鏈表*/

{

STREC*h,*p,*q;

inti=0;

h=p=(STREC*)malloc(sizeof(STREC));

p->s=0;

while(i<N)

{q=(STREC*)malloc(sizeof(STREC));

q->s=sIi];i++;p->next=q;p=q;

}

p->next=0;

returnh;

}

outlist(STREC*h)

{

STREC*p;

p=h->next;

printf("head");

do

{printf("->%4.if",p->s);

p=p->next;/*輸出各成績(jī)*/

}

while(p!=0)

}

main()

{

doubles[N]={85,76,69,85,91,72,64,

87},ave;

STREC*h;

h=creat(s);

outlist(h);

ave=fun(h);

printf("ave=%6.3f\n",ave);

}

26.請(qǐng)編寫(xiě)函數(shù)fun(),它的功能是:求出1到1000之內(nèi)能被5或13整除、但不能同時(shí)被5和13整除的所有整數(shù)并將它們放在9所指的數(shù)組中,通過(guò)n返回這些數(shù)的個(gè)數(shù)。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

voidfun(int*a,int*n)

{

}

main()

{

intaa[1000],n,k;

clrscr();

fun(aa,an);

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

if((k+1)%10==0)

{

printf("%5d",aa[k]);

printf("\n");/*—行寫(xiě)10個(gè)數(shù)*/

}

else

printf("%5d",aa[k]);

}

27.學(xué)生的記錄由學(xué)號(hào)和成績(jī)組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請(qǐng)編寫(xiě)函數(shù)fun(),它的功能是按分?jǐn)?shù)的高低排列學(xué)生的記錄,低分在前。

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

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

試題程序:

#include<stdio.h>

#defineN16

typedefstruct

{charmum[10);

ints;

}STREC;

intfun(STRECa[])

{

}

main()

{

STRECs[N]={{“GA005”,88},{“GA003”,64},

{“CA002”,77},{“GA004”,89},{“GA001”,54},

{“GA007”,72},{“GA008”,72},{“GA006”,65},

{“GA015”,83},{“GA013”,95},{“GA012”,55},

{“GA014”,68},{“GA01l”,78},{“GA017”,53},

{“GA018”,92},{“GA016”,82}};

inti;

FILE*out;

fun(s);

printf(“Thedataaftersorted:\n”);

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

{

if((i)%4==0)

/*每行輸出4個(gè)學(xué)生記錄*/

printf(“\n”);

printf(“%s%4d”,s[i].num,s[i].s);

}

printf(“\n”);

ut=fopen(“out21.dat”,“w”);

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

{

if((i)%4==0&&i)

fprintf(out,“\n”);

fPrintf(out,“%4d”,s[i].s);

}

fprintf(out,“\n”);

fClose(out);

}

28.請(qǐng)編寫(xiě)函數(shù)fun(),它的功能是計(jì)算下列級(jí)數(shù)和,和值由函數(shù)值返回。

S=1-x+x2(上標(biāo))/2!-x3(上標(biāo))/3!+…+(-1*x)n(上標(biāo))/n!

例如,當(dāng)n=15,x=0.5時(shí),函數(shù)值為0.606531。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<math.h>

doublefun(doublex,intn)

{

}

main()

{

clrscr();

printf("%f",fun(0.5,15));

}

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

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

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

30.編寫(xiě)一個(gè)函數(shù),該函數(shù)可以統(tǒng)計(jì)一個(gè)長(zhǎng)度為2的字符串在另一個(gè)字符串中出現(xiàn)的次數(shù)。例如,假定輸入的字符串為asdasasdfgasdaszx67asdmklo,子字符串為as,則應(yīng)當(dāng)輸出6。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

intfun(char*str,char*substr)

{

}

main()

{

charstr[81],substr[3];

intn;

clrscr();

printf("輸入主字符串");

gets(str);

printf("輸入子字符串");

gets(substr);

puts(str);

puts(substr);

n=fun(shr,substr);

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

}

31.請(qǐng)編寫(xiě)一個(gè)函數(shù)intfun(int*s,intt,int*k),用來(lái)求出數(shù)組的最大元素在數(shù)組中的下標(biāo)并存放在k所指的存儲(chǔ)單元中。

例如,輸入如下整數(shù):

876675896101301401980431451777

則輸出結(jié)果為6,980。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

intfun(int*s,intt,int*k)

{

}

main()

{

inta[10]={876,675,896,101,301,401,

980,431,451,777},k;

clrscr();

fun(a,10,&k);

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

}

32.學(xué)生的記錄由學(xué)號(hào)和成績(jī)組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請(qǐng)編寫(xiě)函數(shù)fun(),它的功能是:把指定分?jǐn)?shù)范圍之外的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,分?jǐn)?shù)范圍之外的學(xué)生人數(shù)由函數(shù)值返回。

例如,輸入的分?jǐn)?shù)是80和89,則應(yīng)當(dāng)把分?jǐn)?shù)低于80和高于89的學(xué)生數(shù)據(jù)進(jìn)行輸出,不包含80分和89分的學(xué)生數(shù)據(jù)。主函數(shù)中把80放在low中,把89放在heigh中。

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

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

試題程序

#include<stdio.h>

#defineN16

typedefstruct

{charnum[10];

ints;

}STREC;

intfun(STREC*a,STREC*b,int1,inth)

{

}

main()

{

STRECs[N]={{“GA005”,55},{“GA003”,96},

{“GA002”,80},{“GA004”,68},{“GA001”,88},

{“GA007”,74},{“GA008”,85},{“GA006”,99},

{“GA015”,90},{“GA013”,53},{“GA012”,66},

{“GA014”,82},{“GA0ll”,73},{“GA017”,69},

{“GA018”,64},{“GA016”,86}};

STECh[N],tt;

FILE*out;

inti,j,n,low,heigh,t;

printf(“Enter2integernumberlow&heigh:”);

scanf(“%d%d”,&low,&heigh);

if(heigh<low)

{

t=heigh;

heigh=low;

low=t;

}

n=fun(S,h,low,heigh);

printf(“Thestudent'Sdataout%d--%d:\n”,low,heigh);

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

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

/*輸出指定分?jǐn)?shù)范圍內(nèi)的學(xué)生記錄*/

printf(“\n”);

ut=fopen(“out23.dat”,“w”);

fprintf(out,“%d\n”,n);

n=fun(s,h,70,79);

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

/*分?jǐn)?shù)在70~79之外的學(xué)生記錄按分?jǐn)?shù)從低到高排列*/

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

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

{

tt=h[i];

h[i]=h[j];

h[j]=tt;

}

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

fprintf(out,“%4d\n”,h[i].s);

fprintf(out,“\n”);

fclose(out);

}

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

例如,字符串中的內(nèi)容為****A*BC*DEF*G*******,若n的值為2,刪除后,字符串中的內(nèi)容則應(yīng)當(dāng)是**A*BC*DEF*G*******;若n的值為4,則字符串中的內(nèi)容仍為****A*BC*DEF*G******。n的值在主函數(shù)中輸入。在編寫(xiě)函數(shù)時(shí),不得使用C語(yǔ)言提供的字符串函數(shù)。

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

voidfun(charAa,intn)

{

}

main()

{chars[81];intn;

printf("Enterastring:\n");gets(s);

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

fun(s,n);

printf("Thestringafterdeleted:\n");

puts(s);

}

34.編寫(xiě)函數(shù)fun,它的功能是計(jì)算下列級(jí)數(shù)和,和值由函數(shù)值返回。

例如,當(dāng)n=10,x=0.3時(shí),函數(shù)值為1.349859。

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

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

四、單選題(0題)35.將一棵有100個(gè)結(jié)點(diǎn)的完全二叉樹(shù)從上到下,從左到右依次對(duì)結(jié)點(diǎn)進(jìn)行編號(hào),根結(jié)點(diǎn)的編號(hào)為1,則編號(hào)為49的結(jié)點(diǎn)的左孩子的編號(hào)為_(kāi)_____。

A.98B.99C.50D.48

五、單選題(0題)36.

六、單選題(0題)37.有以下程序:#include<stdio.h>voidf1(char*a,charb){charc;c=*a;*a=b;b=c;}voidf2(chara,charb){charc;c=a;a=b;b=c;}voidf3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}main(){chart1,t2;t1=‘A’;t2=‘B’;f3(&t1,&t2);putchar(t1);putchar(t2);t1=‘A’;t2=‘B’;f2(t1,t2);putchar(t1);putchar(t2);t1=‘A’;t2=‘B’;f1(&t1,t2);putchar(t1);putchar(t2);printf(“\n”);}程序運(yùn)行后的輸出結(jié)果是()。

A.ABBABBB.BAABBBC.BABABAD.BABAAB

參考答案

1.B

2.C解析:本題中第一行代碼對(duì)指針P進(jìn)行了初始化,其指向數(shù)組a的第6個(gè)元素,在其后的操作中p的值也沒(méi)有改變過(guò),所以最后輸出*p=*\u3000\u3000(p+0)\u3000\u3000=a\u3000[5]\u3000=6,而第二行代碼中對(duì)q指向的值進(jìn)行賦值,等價(jià)于*q=a[10]=11,所以輸出結(jié)果*q為11。

3.A

4.B題中,首先定義了double型的數(shù)組a,并將數(shù)組首地址賦給指針s?!?*s)”表示“a[1]”,“s[3]”不是指針變量,不能使用間址運(yùn)算符“*”,故選項(xiàng)A、C不能表示“a[3]”;選項(xiàng)D的“*s+3”等于“a[0]+3”。故本題答案為B選項(xiàng)。

5.B棧是先進(jìn)后出的原則組織數(shù)據(jù),所以人棧最早的最后出棧,所以選擇B。

6.A解析:C語(yǔ)言的字符常量是用單引號(hào)(即撇號(hào))括起來(lái)的一個(gè)字符。除此之外,在C語(yǔ)言中還允許用以一個(gè)“\\”開(kāi)頭的字符序列來(lái)表示字符常量。其中,形式“\\ddd”表示1到3位8進(jìn)制數(shù)所代表的字符;形式“\\xhh”表示1到2位16進(jìn)制數(shù)所代表的字符。在本題中‘\\x13’表示回車(chē)符,是一個(gè)字符常量;‘\\081’用\u30008進(jìn)制數(shù)所代表的字符,但形式不正確,因?yàn)?進(jìn)制數(shù)所表示的字符中不會(huì)出現(xiàn)數(shù)字“8”;‘65’不是一個(gè)字符,而是一個(gè)+進(jìn)制數(shù)字;“\\n”是用雙引號(hào)括起來(lái)的一個(gè)字符,表示一個(gè)字符串,而不是字符常量。

7.A解析:C程序由順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)三種基本的結(jié)構(gòu)組成,這三種結(jié)構(gòu)可以組成任何復(fù)雜的C程序,即可以完成任何復(fù)雜的任務(wù)。

8.B解析:本題考查函數(shù)的調(diào)用。函數(shù)fun2的作用是將形參x和y的值相乘后減去3,在fun2中的變量m是一個(gè)局部變量,它的值在fun2函數(shù)內(nèi)有效;在主函數(shù)中的m指的是全局變量,其值為13,所以fun2(a,b)/m的值為(7*5-3)/13,即2。

9.B

10.C在C語(yǔ)言中,字母區(qū)分大小,所以break、char、return、switch都是C語(yǔ)言中的關(guān)鍵字,而Swithch不是。

11.D本程序主要考查遞歸函數(shù)。fun(7),首先將參數(shù)代入函數(shù),因?yàn)?7/2)>1,所以執(zhí)行f(3),依此類(lèi)推直到f(1.5),(1.5/2)<1,所以執(zhí)行打印函數(shù),此時(shí)X值為3,然后退出f(1.5),返回f(3),打印x值即7。所以選D。

12.Cmain函數(shù)定義兩個(gè)double類(lèi)型的變量a、b,分別賦初值為2.5、9.0。另外定義兩個(gè)double類(lèi)型的指針變量pa、pb,其中pa指向a,pb指向b。然后將b-a、pa、pb傳給函數(shù)fun,此時(shí)x的值為6.5,y指向a,z指向b。“*y=*y-1.0;”是將變量a的值減去1.0賦給a,a的值為1.5;“*z=*z+x;”是將變量b的值加上6.5賦給b,b的值為15.5。fun函數(shù)執(zhí)行完畢后,輸出a的值為1.5。故本題答案為C選項(xiàng)。

13.fun(a4)+fun(b4)-fun((a+b)3);fun(a,4)+fun(b,4)-fun((a+b),3);解析:函數(shù)fun的功能是計(jì)算x的n次方,a的4次方的調(diào)用函數(shù)為fun(a,4),b的4次方的調(diào)用函數(shù)為fun(b,4),(a+b)的3次方的調(diào)用函數(shù)為fun((a+b),3),計(jì)算m=a4+b4-(a+b)3的函數(shù)調(diào)用語(yǔ)句為:fun(a,4)+fun(b,4)-fun((a+b),3);

14.完善性軟件維護(hù)活動(dòng)包括以下幾類(lèi):改正性維護(hù),適應(yīng)性維護(hù)、完善性維護(hù)和預(yù)防性維護(hù),完善性維護(hù)是指為了滿(mǎn)足用戶(hù)對(duì)軟件提出的新功

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論