版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026廣東廣州市越秀區(qū)洪橋街招聘禁毒工作人員1人備考題庫(kù)及參考答案詳解一套
- 2026年?yáng)|營(yíng)河口區(qū)事業(yè)單位公開(kāi)招聘工作人員備考題庫(kù)(21人)及答案詳解1套
- 2026廣西玉林市育輝高級(jí)中學(xué)赴南寧公開(kāi)招聘教師5人備考題庫(kù)完整參考答案詳解
- 2026上半年貴州事業(yè)單位聯(lián)考貴州省紅十字會(huì)招聘1人備考題庫(kù)及參考答案詳解1套
- 2026年春季廣東中山市東區(qū)艷陽(yáng)學(xué)校教師招聘?jìng)淇碱}庫(kù)及完整答案詳解一套
- 2026大唐西藏能源開(kāi)發(fā)有限公司招聘4人備考題庫(kù)及答案詳解(易錯(cuò)題)
- 2025銅川市新區(qū)審判庭招聘筆試成績(jī)查詢(xún)及資格復(fù)審、面試、速錄 技能測(cè)試備考題庫(kù)及完整答案詳解
- 福建省莆田市2025-2026學(xué)年上學(xué)期期末八年級(jí)數(shù)學(xué)試卷(含答案)
- 2024-2025學(xué)年福建省三明市永安市七年級(jí)(上)期末數(shù)學(xué)試卷(含答案)
- 行測(cè)的考試題及答案
- 湖南省益陽(yáng)市2024-2025學(xué)年高一(上)期末考試物理試卷(含答案)
- 自愿退出豁免協(xié)議書(shū)范文范本
- 重慶市配套安裝工程施工質(zhì)量驗(yàn)收標(biāo)準(zhǔn)
- 機(jī)器人實(shí)訓(xùn)室規(guī)劃建設(shè)方案
- 綜合布線辦公樓布線方案
- 鞍鋼檢驗(yàn)報(bào)告
- 河南省信陽(yáng)市2023-2024學(xué)年高二上學(xué)期期末教學(xué)質(zhì)量檢測(cè)數(shù)學(xué)試題(含答案解析)
- 北師大版七年級(jí)上冊(cè)數(shù)學(xué) 期末復(fù)習(xí)講義
- 2023年初級(jí)經(jīng)濟(jì)師《初級(jí)人力資源專(zhuān)業(yè)知識(shí)與實(shí)務(wù)》歷年真題匯編(共270題)
- 氣穴現(xiàn)象和液壓沖擊
- 公民健康素養(yǎng)知識(shí)講座課件
評(píng)論
0/150
提交評(píng)論