




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2022年遼寧省葫蘆島市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________
一、單選題(12題)1.設(shè)有兩個(gè)串p和q,求q在p中首次出現(xiàn)的位置的運(yùn)算稱為()。
A.連接B.模式匹配C.求子串D.求串長(zhǎng)
2.若有以下定義,則能使值為3的表達(dá)式是intk=7,x=12;
A.x%=(k%=5)B.x%=(k-k%5)C.x%=k-k%5D.(x%=k)-(k%=5)
3.若有以下定義和語(yǔ)句charc1='b',c2='e'printf("%d,%c\n",c2-c1,c2-'a'+A);則輸出結(jié)果()
A.2,MB.3,EC.2,ED.輸出項(xiàng)與對(duì)應(yīng)的格式控制不一致,輸出結(jié)果不確定
4.設(shè)變量P是指針變量,語(yǔ)句P=NULL;是給指針變量賦NULL值,它等價(jià)于()。A.A.p="";
B.p="0";
C.p=0;
D.p="";
5.
6.以下程序的輸出結(jié)果是_______。main(){inti,a[10];for(i=9;i>=0;i-)a[i]=10-i;print("%d%d%d,a[2],a[5],a[8]);}
A.258B.741C.852D.369
7.向一個(gè)棧頂指針為h的帶頭結(jié)點(diǎn)的鏈棧中插入指針s所指的結(jié)點(diǎn)時(shí),應(yīng)執(zhí)行()操作。
A.h->next=s;
B.s->next=h;
C.s->next=h;h->next=s;
D.s->next=h->next;h->next=s;
8.定義無(wú)符號(hào)整數(shù)類為UInt,下面可以作為類UInt實(shí)例化值的是()。
A.-369B.369C.0.369D.整數(shù)集合{1,2,3,4,5}
9.下列選項(xiàng)中合法的賦值語(yǔ)句是()。
A.a=b=34B.a=34,b=34C.i-1;D.m=(int)(x+y);
10.以下程序的輸出結(jié)果是()。A.1010B.99C.910D.109
11.以下說(shuō)法中正確的是()。
A.C程序總是從第一個(gè)定義的函數(shù)開(kāi)始執(zhí)行
B.C程序總是從main函數(shù)開(kāi)始執(zhí)行
C.C函數(shù)必須有返回值,否則不能使用函數(shù)
D.C程序中有調(diào)用關(guān)系的所有函數(shù)必須放在同一個(gè)程序文件中
12.以下程序的輸出結(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.輸出值不定
二、2.填空題(12題)13.
main()
{printf("Thesum=%d\n",SunFun(10));}
SunFun(intn)
{intx,s=0;
for(x=0;x<=n;x++)s+=F(【】);
returns;
}
F(intx)
{return(【】);)
14.以下程序的功能是:從鍵盤輸入一字符串,要求將每個(gè)單詞中的第一個(gè)字母改成小寫(xiě)(如果原來(lái)已是小寫(xiě)字母,則不變),然后輸出轉(zhuǎn)換結(jié)果,補(bǔ)足所缺語(yǔ)句。
main()
{charstr[200];inti=0;
while((______=getchar())!='\n');
str[i-1)='\0';
for(i=0;str[i]!='\0';i++)
if((str[i-1]==''‖i==0)&&str[i]>='A'&&str[i]<='Z')
str[i]+=______;
printf("%s\n",str);
}
15.將代數(shù)式轉(zhuǎn)換成程序設(shè)計(jì)中的表達(dá)式為【】。
16.設(shè)有如下宏定義
#defineMYSWAP(z,x,y){z=x;x=Y;Y=z;}
以下程序段通過(guò)宏調(diào)用實(shí)現(xiàn)變量a、b內(nèi)容的交換,請(qǐng)?zhí)羁铡?/p>
floata=5,b=16,c;
MYSWAP(【】,a,b);
17.下列程序執(zhí)行后輸出的結(jié)果是【】。
structs
{intx,y;}data[2]={10,100,20,200};
main()
{
structs*p=data;
printf("%d\n",++(p->x));
}
18.數(shù)據(jù)的物理結(jié)構(gòu)在計(jì)算機(jī)存儲(chǔ)空間中的存放形式稱為數(shù)據(jù)的【】。
19.已知字符A的ASCII代碼值為65,以下程序運(yùn)行時(shí)若從鍵盤輸入:B33<回車>。則輸出結(jié)果是______。
#include<stdio,h>
main()
{
chara,b;
a=geCchar();scanf("%d“,&b);
a=a-'A'+‘0';b=b*2;
printf('%c%c\n",a,b);
}
20.棧中允許進(jìn)行插入和刪除的一端叫做______。
21.計(jì)算機(jī)中網(wǎng)絡(luò)通信協(xié)議IP是【】。
22.某二叉樹(shù)中度為2的結(jié)點(diǎn)有18個(gè),則該二叉樹(shù)中有【】個(gè)葉子結(jié)點(diǎn)。
23.結(jié)構(gòu)化程序設(shè)計(jì)的三種基本邏輯結(jié)構(gòu)為順序、選擇和【】。
24.以下程序的定義語(yǔ)句中,x[1]的初值是【】,程序運(yùn)行后輸出的內(nèi)容是【】。
#include<stdio.h>
main()
{intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i;
for(i=0;i<4;i++)
{p[i]=&x[2*i+1];
printf("%d",p[i][0]);
}
printf("\n");)
}
三、3.程序設(shè)計(jì)題(10題)25.學(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ù)放在h所指的數(shù)組中。注意:分?jǐn)?shù)低的學(xué)生可能不只一個(gè),函數(shù)返回分?jǐn)?shù)最低學(xué)生的人數(shù)。
注意:部分源程序給出如下。
請(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)
{
}
main()
{
STRECs[N]={{“GA005”,82},{“GA003”,75},
{“GA002”,85},{“GA004”,78},{“GA001”,95},
{“GA007”,62},{“GA008”,60},{“GA006”,85},
{“GA015”,83},{“GA013”,94},{“GA012”,78},
{“GA014”,97},{“GA011”,60},{“GA017”,65},
{“GA018”,60},{“GA016”,74}};
STRECh[N];
inti,n;
FILE*out;
n=fun(S,h);
printf(“The%dlowestscore:\n”,n);
for(i=0;i<n;i++)
printf(“%s%4d\n”,h[i].mum,h[i].s);
/*輸出最低分學(xué)生的學(xué)號(hào)和成績(jī)*/
printf(“\n”);
out=fopen("outl9.dat",“w”);
fprintf(out,“%d\n”,n);
for(i=0;i<n;i++);
fprintf(out,“%4d\n”,h[i].s);
fclose(out);
}
26.學(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ù)值返回。
[注意]部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在fun函數(shù)的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
[試題源程序]
#include<stdio.h>
#defineN8
typedefstruct
{
charnum[10];
doubles;
}STREC;
doublefun(STREC*a,STREC*b,int*n)
{
}
voidmain()
{
STRECs[N]={{"GA05",85},
{"GA03",76},{"GA02",69},{"GA04",85},
{"GA01",91},{"GA07",72},{"GA08",64},
{"GA06",87}};
STRECh[N],t;FILE*out;
inti,j,n;
doubleave;
ave=fun(s,h,&n);
printf("The%dstudentdatawhichislowerthan%7.3f:\n",n,ave);
for(i=0;i<n;i++)
printf("%s%4.1f\n",h[i].num,h[i].s);
printf("\n");
ut=fopen("out.dat","W");
fprintf(out,"%d\n%7.3f\n",n,ave);
for(i=0;2<n-1;i++)
for(j=i+1;j<n;j++)
if(h[i].s>h[j].s)
{
t=h[i];
h[i]=h[j];
h[j]=t;
}
for(i=0;2<n;i++)
fprintf(out,"%4.1f\n",h[i].s);
fclose(out);
}
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é)生數(shù)據(jù)放在h所指的數(shù)組中。注意:分?jǐn)?shù)高的學(xué)生可能不只一個(gè),函數(shù)返回分?jǐn)?shù)最高學(xué)生的人數(shù)。
注意:部分源程序給出如下。
請(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)
{
}
main()
{
STRECs[N]={{"GA005",85},{"GA003",76},
{"GA002",69},{"GA004",85},{"GA001",91},
{"GA007",72},{"GA008",64},{"GA006",87},
{"GA015",85),("GA013",91},{"GA012",64},
{"GA014",91),{"GA011",66},{"GA017",64},
{"GA018",64},{"GA016",72}};
STRECh[N];
inti,n;
FILE*out;
n=fun(s,h);
printf("The%dhighestscore:\n",n);
for(i=0;i<n;i++)
printf("%s%4d\n",h[i].num,h[i].s);
/*輸出最高分學(xué)生的學(xué)號(hào)和成績(jī)*/
printf("\n");
ut=fopen("out45.dat","w");
fprintf(out,"%d\n",n);
for(i=0;i<n;i++)
fprintf(out,"%4d\n",h[i].s);
fclose(out);
}
28.請(qǐng)編寫(xiě)一個(gè)函數(shù)fun(),它的功能是計(jì)算并輸出給定整數(shù)n的所有因子(不包括1與自身)的平方和(規(guī)定n的值不大于100)。
例如:主函數(shù)從鍵盤給輸入n的值為56,則輸出為sum=1113。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
#include<stdio.h>
longfun(intn)
{
}
main()
{
intn;
longsum;
printf("Inputn:");
scanf("%d",&n);
sum=fun(n);
printf("sum=%ld\n",sum);
}
29.下列程序定義了N×N的二維數(shù)組,并在主函數(shù)中自動(dòng)賦值。請(qǐng)編寫(xiě)函數(shù)fun(inta[][N],intn),該函數(shù)的功能是:使數(shù)字右上半三角元素中的值乘以m。
例如,若m的值為2,a數(shù)組中的值為
a=19
27
則返回主程序后a數(shù)組的值應(yīng)為
218
214
注意:部分源程序給出如下.
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#defineN5
intfun(inta[][N],intm)
{
}
main()
{
inta[N][N],m,i,j;
clrscr();
printf{"*****Thearray*****\n");
for(i=O;i<N;i++)
/*輸出一個(gè)隨機(jī)的5×5矩陣*/
{for(j=0;j<N;j++)
{a[i][j]=rand()%20;
printf("%4d",a[i][j]);
}
printf("\n");
}
do
m=rand()%10;
while(m>=3);/*產(chǎn)生一個(gè)上于3的隨機(jī)數(shù)*/
printf("m=%4d\n",m);
fun(a,m);
printf("THERESULT\n");
for(i=0;i<N;i++)
{for(j=0;j<N;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
30.編寫(xiě)函數(shù)fun(),它的功能是求n以內(nèi)(不包括n)同時(shí)能被5與11整除的所有自然數(shù)之和的平方根s,并作為函數(shù)值返回。
例如:n為1000時(shí),函數(shù)值應(yīng)為s=96.979379。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
#include<conio.h>
#include<math.h>
#include
doublefun(intn)
{
}
main()
{
clrscr();
printf("s=%f\n",fun(1000));
}
31.請(qǐng)編寫(xiě)一個(gè)函數(shù)fun,它的功能是:將一個(gè)數(shù)字字符串轉(zhuǎn)換為一個(gè)整數(shù)(不得調(diào)用C語(yǔ)言提供的將字符串轉(zhuǎn)換為整數(shù)的函數(shù))。例如,若輸入字符串“-1234”,則函數(shù)把它轉(zhuǎn)換為整數(shù)值-1234。
注意:部分源程序存在文件PROGl.C文件中。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。
32.編寫(xiě)程序,實(shí)現(xiàn)矩陣(3行3列)的轉(zhuǎn)置(即行列互換)。
例如,若輸入下面的矩陣:
100200300
400500600
700800900
則程序輸出:
100400700
200500800
300600900
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
#include<stdio.h>
#include<conio.h>
intfun(intarray[3][3])
{
}
main()
{
inti,j;
intarray[3][3]={{100,200,300},{400,
500,600},{700,800,900}};
clrscr();
for(i-0;i<3;i++)
{for(j=0;j<3;j++)
printf("%7d",array[i][j]);
printf("\n");
}
fun(array);
printf("Convertedarray:\n");
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%7d",array[i][j]);
printf("\n");
}
}
33.請(qǐng)編寫(xiě)一個(gè)函數(shù)voidfun(char*tt,intpp[]),統(tǒng)計(jì)在tt字符串中“a”到“z”26個(gè)字母各自出現(xiàn)的次數(shù),并依次放在pp所指數(shù)組中。
例如:當(dāng)輸入字符串a(chǎn)bcdefghabcdeabc后,程序的輸出結(jié)果應(yīng)該是:33322110000000000000000000
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
#include<conio.h>
#include<stdio.h>
voidfun(char*tt,intpp[])
{
}
main()
{
charaa[1000];
intbb[26],k,n;
clrscr();
printf("\nPleaseenteracharstring:");
scanf("%s",aa);
fun(aa,bb);
for(k=0;k<26;k++)
printf("%d",bb[k]);
printf("\n");
}
34.請(qǐng)編寫(xiě)一個(gè)函數(shù)voidfun(cbara[],charb[],intn),其功能是:刪除一個(gè)字符申中指定下標(biāo)的字符。其中,a指向原字符串,刪除后的字符串存放在b所指的數(shù)組中,n中存放指定的下標(biāo)。
例如,輸入一個(gè)字符串world,然后輸入3,則調(diào)用該函數(shù)后的結(jié)果為word。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
#include<stdio.h>
#include<conio.h>
#defineLEN20
voidfun(chara[],charb[],intn)
{
}
main()
{
charstr1[LEN],str2[LEN];
intn;
clrscr();
printf("Enterthestring:\n");
gets(str1);
printf("Enterthepositionofthestring
deleted:");
scanf("%d",&n);
fun(str1,str2,n);
printf("Thenewstringis:%s\n",
str2);
}
四、單選題(0題)35.下列敘述中正確的是A.C語(yǔ)言中既有邏輯類型也有集合類型
B.C語(yǔ)言中沒(méi)有邏輯類型但有集合類型
C.C語(yǔ)言中有邏輯類型但沒(méi)有集合類型
D.C語(yǔ)言中既沒(méi)有邏輯類型也沒(méi)有集合類型
五、單選題(0題)36.有以下程序:main(){intx,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d,%d\n",x,y,z);程序運(yùn)行后的輸出結(jié)果是()。
A.2,3,3B.2,3,2C.2,3,1D.2,2,1
六、單選題(0題)37.下列程序的執(zhí)行結(jié)果是()。#include<stdioh>main{inta,b,c;a=b=2,c=I;c=(a++)-1;printf("%d,0Ad",a,c);c+=-a+++(++b);printf("%d,%d",a,c);)A.3,14,1B.3,14,2C.2,04,1D.2,14,1
參考答案
1.B
2.D解析:運(yùn)算符“%”的兩側(cè)都應(yīng)該是整型數(shù)。另外,本題需要掌握的知識(shí)點(diǎn)是:x%=k,等價(jià)于x=x%k。注意:強(qiáng)制類型轉(zhuǎn)換表達(dá)式。
3.B
4.C在C語(yǔ)言中null等價(jià)于數(shù)字0。
5.A
6.C解析:在本題運(yùn)行時(shí)主要注意的是當(dāng)i=9時(shí),a[i]=10-9=1:i=8時(shí),a[i]=10-8=2;i=7時(shí),a[i]=10-7=3;……依此類推,直到i=0時(shí),a[i]=10-0=10:此時(shí),i的值已變?yōu)?1,判斷for的循環(huán)條件,不成立,然后輸出a[2],a[5],a[8]分別為8,5,2。
7.D
8.BB【解析】只有B選項(xiàng)369可以用無(wú)符號(hào)整數(shù)來(lái)表示和存儲(chǔ)。A選項(xiàng)一369有負(fù)號(hào),選項(xiàng)C0.369是小數(shù)都不能用無(wú)符號(hào)整數(shù)類存儲(chǔ)。選項(xiàng)D是一個(gè)整數(shù)集合得用數(shù)組來(lái)存儲(chǔ)。
9.D解析:選項(xiàng)A)是一個(gè)合法的賦值表達(dá)式,但結(jié)尾沒(méi)加分號(hào),所以它不是一個(gè)賦值語(yǔ)句;選項(xiàng)B)是一個(gè)逗號(hào)表達(dá)式,也因?yàn)榻Y(jié)尾沒(méi)有加分號(hào)而不是合法的賦值語(yǔ)句,選項(xiàng)C)是一個(gè)算術(shù)表達(dá)式,雖然有分號(hào),但這個(gè)表達(dá)式?jīng)]有賦值操作,因此,也不是一條賦值語(yǔ)句。
10.D
11.B解析:C++程序總是從main函數(shù)開(kāi)始執(zhí)行。
12.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)。
13.xx*x+1或1+x*xx\r\nx*x+1或1+x*x解析:題目中要求從x=0開(kāi)始將f(x)的值累加起來(lái),直到x=10。在SunFun()函數(shù)中用了一個(gè)for循環(huán),每循環(huán)一次將f(x)累加到s中,所以在本題的第一個(gè)空白處應(yīng)該填x,然后x+1,共循環(huán)10次。F()函數(shù)的功能應(yīng)該是求數(shù)學(xué)表達(dá)式f(x)的值,所以其返回值應(yīng)該為x*x+1。
14.str[i++]32。str[i++]32。解析:while語(yǔ)句的循環(huán)控制條件既要將相應(yīng)元素賦予從鍵盤輸入的字符,又要改變?cè)氐南聵?biāo)值,以便接受下一個(gè)字符,可用下標(biāo)變量的后置加實(shí)現(xiàn);小寫(xiě)字母的ASCII碼值比相對(duì)應(yīng)的大寫(xiě)形式大32。
15.SQRT(x2+y2)/(a+b)
16.cc解析:本題關(guān)鍵在考生是不是了解宏的基本運(yùn)用,在使用宏的時(shí)候明顯少了—個(gè)實(shí)參。在定義宏的時(shí)候變量z是用來(lái)做中間變量的,題目中缺的變量就是一個(gè)中間變量c。
17.1111解析:程序中結(jié)構(gòu)體數(shù)組data首地址(即&data[0])賦值給結(jié)構(gòu)體指針變量p,++(P->x)表示先將p所指向的結(jié)構(gòu)體變量的成員x值加1,然后將此x(即data[0].x)輸出。
18.內(nèi)模式或物理模式或存儲(chǔ)模式內(nèi)模式或物理模式或存儲(chǔ)模式解析:一個(gè)數(shù)據(jù)庫(kù)只有一個(gè)內(nèi)模式,它是數(shù)據(jù)物理結(jié)構(gòu)和存儲(chǔ)方式的描述,是數(shù)據(jù)庫(kù)內(nèi)部的表示方法。例如,記錄的存儲(chǔ)方式是順序存儲(chǔ)、索引按照什么方式組織;數(shù)據(jù)是否壓縮存儲(chǔ),是否加密等。
19.1B1B解析:在C語(yǔ)古中,字符型變量可以看作整型變量來(lái)對(duì)待,與整型所不同的是字符型變量在內(nèi)存中只占1個(gè)字節(jié),而整型是2個(gè)字節(jié).字符型變量中所有的數(shù)值是它所表示字符的ASCII碼值.ASCII碼中的一些相關(guān)字符是順序排列的,如'0',的ASCII碼值為48,'1'為49以此類推一直到'9';'A'的ASCII碼值為65,'B'為66以此類推一直到'Z'。本題程序首先定義了兩個(gè)字符型變量a和b,然后分別使用getchar()和scanf()函數(shù)讀取輸入的字符'B'和十進(jìn)制整數(shù)33到a和b中,因?yàn)閍-'A'+'0'等于,'B'-'A'+'0'='1'+'0'='1',而b*2等于33*2=66'A'+1='B'。所以最終輸出的結(jié)果是:1B。
20.棧頂棧頂解析:棧是限定在表的一端進(jìn)行插入和刪除操作的線性表。在表中,允許插入和刪除的一端叫做“棧頂”,不允許插入和刪除的一端叫做“棧底”。
21.網(wǎng)際協(xié)議網(wǎng)際協(xié)議
22.1919解析:根據(jù)二叉樹(shù)的性質(zhì):在任意一棵二叉樹(shù)中,度為。的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))總是比度為2的結(jié)點(diǎn)多一個(gè)。本題中度為2的結(jié)點(diǎn)數(shù)為18,故葉子結(jié)點(diǎn)數(shù)為18+1=19個(gè)。
23.重復(fù)(或循環(huán))重復(fù)(或循環(huán))
24.224682,2468解析:在主函數(shù)中根據(jù)整型數(shù)組x[]的定義可知,x[1]的初值等于2。在for循環(huán)語(yǔ)句中,當(dāng)i=0時(shí),p[0]=&x[1],p[0][0]=2;當(dāng)i=1時(shí),p[1]=&x[3],p[1][0]=4;當(dāng)i=2時(shí),p[2]=&x[5],p[2][0]=6;當(dāng)i=3時(shí),p[3]=&x[7],\ue008p[3][0]\ue009=8,所以程序輸出的結(jié)果為2、4、6、8。
25.intfun(STREC*aSTREC*b){intij=0min=a[0].s;for(i=0;i<N;i++)if(min>a[i].s)min=a[i].s;/*找出最小值*/for(i=0;i<N;i++):if(min==a[i].s)b[j++]=a[i];/*找出成績(jī)與min相等的學(xué)生的記錄存入結(jié)構(gòu)體b中*/returnj;/*返回最低成績(jī)的學(xué)生人數(shù)*/intfun\u3000(STREC*a,STREC*b)\r\n{\r\ninti,j=0,min=a[0].s;\r\nfor(i=0;i<N;i++)\r\nif(min>a[i].s)\r\nmin=a[i].s;/*找出最小值*/\r\nfor(i=0;i<N;i++):\r\nif(min==a[i].s)\r\nb[j++]=a[i];/*找出成績(jī)與min相等的學(xué)生的記錄,存入結(jié)構(gòu)體b中*/\r\nreturnj;/*返回最低成績(jī)的學(xué)生人數(shù)*/解析:該程序使用循環(huán)嵌套,第1個(gè)for語(yǔ)句的作用是找出最小值。第2個(gè)循環(huán)的作用是找出與min相等的成績(jī),也即最低成績(jī)的學(xué)生記錄,并存入b中。
26.intfun(STREC*aSTREC*bint*n){doubleave=0.0;intij=0;*n=0;for(i=0;i<N;i++)ave+=a[i].s;ave/=N;for(i=0;i<N;i++)if(a[i].s<ave){b[j]=a[i];(*n)++;j++;}returnave;}intfun(STREC*a,STREC*b,int*n)\r\n{\r\ndoubleave=0.0;\r\ninti,j=0;\r\n*n=0;\r\nfor(i=0;i<N;i++)\r\nave+=a[i].s;\r\nave/=N;\r\nfor(i=0;i<N;i++)\r\nif(a[i].s<ave)\r\n{\r\nb[j]=a[i];\r\n(*n)++;\r\nj++;\r\n}\r\nreturnave;\r\n}解析:本題的設(shè)計(jì)思路是:(1)定義兩個(gè)變量,分別用于保存總分和平均值,定義循環(huán)變量并賦初值:(2)利用循環(huán)語(yǔ)句遍歷所有學(xué)生的分?jǐn)?shù),累加求和并計(jì)算初值;(3)再次遍歷結(jié)構(gòu)體數(shù)組,找出低于平均分的分?jǐn)?shù),把該學(xué)生的記錄保存在形參數(shù)組b中,并記錄其個(gè)數(shù);(4)用return語(yǔ)句返回平均值。
27.intfun(STREC*aSTREC*b){intij=0max=a[0].s;for(i=0;i<N;i++)if(max<a[i].s)max=a[i].s;/*找出最大值*/for(i=0;i<N;i++)if(max==a[i].s)b[j++]=a[i];/*找出成績(jī)與max相等的學(xué)生的記錄存入結(jié)構(gòu)體b中*/returnj;/*返回最高成績(jī)的學(xué)生人數(shù)*/}intfun(STREC*a,STREC*b)\r\n{\r\ninti,j=0,max=a[0].s;\r\nfor(i=0;i<N;i++)\r\nif(max<a[i].s)max=a[i].s;/*找出最大值*/\r\nfor(i=0;i<N;i++)\r\nif(max==a[i].s)b[j++]=a[i];/*找出成績(jī)與max相等的學(xué)生的記錄,存入結(jié)構(gòu)體b中*/\r\nreturnj;/*返回最高成績(jī)的學(xué)生人數(shù)*/\r\n}解析:該程序使用循環(huán)嵌套,第1個(gè)for語(yǔ)句的作用是找出最大值。第2個(gè)循環(huán)的作用是找出與max相等的成績(jī),也即最高成績(jī)的學(xué)生記錄,并存入b中。
28.longfun(intn){inti;longs=0;for(i=2;i<=n-1;i++)/*從2~n-1中找n的所有因子*/if(n%i==0)s+=i*i;/*將所有因子求平方加*/returns;/將平方和返回*/}longfun(intn)\r\n{\r\ninti;\r\nlongs=0;\r\nfor(i=2;i<=n-1;i++)/*從2~n-1中找n的所有因子*/\r\nif(n%i==0)\r\ns+=i*i;/*將所有因子求平方加*/\r\nreturns;/將平方和返回*/\r\n}解析:本題的解題思路是用n逐個(gè)去除以2到n-1之間的所有數(shù),如果n能被除盡,則把所得到的一個(gè)因子的平方累加到s中去。
29.intfun(inta[][N]intm){intij;for(i=0;i<N;i++)for(j=i;j<N;j++)a[i][j]=a[i][j]*m;/*右上半三角元素中的值乘以m*/}intfun(inta[][N],intm)\r\n{\r\ninti,j;\r\nfor(i=0;i<N;i++)\r\nfor(j=i;j<N;j++)\r\na[i][j]=a[i][j]*m;/*右上半三角元素中的值乘以m*/\r\n}解析:本題考查表示右上關(guān)三角元素的算法。行下標(biāo)肯定是從0到N-1,而列下標(biāo)要根據(jù)行下標(biāo)來(lái)定,當(dāng)?shù)降趇行時(shí)列下標(biāo)要從第i列開(kāi)始,所以我們?cè)诰帉?xiě)程序時(shí),第2個(gè)for()中有j=i(不是1);若要表示左下半三角元素時(shí),行下標(biāo)也是從0到N-1,列下標(biāo)也是從0開(kāi)始,但當(dāng)?shù)降趇行時(shí)列只到i。所以要把上述的第2個(gè)for()改成for(j=0;j<=i;++)。
30.doublefun(intn){doubles=0.0;inti;for(i=0;i<n;i++)/*從0~n中找到既能被5整除同時(shí)又能被11整除的數(shù)并將這些數(shù)求和*/if(i%5==0&&i%11==0)s=s+i;s=sqrt(s);/*對(duì)s求平方根*/returns;doublefun(intn)\r\n{doubles=0.0;\r\ninti;\r\nfor(i=0;i<n;i++)/*從0~n中找到既能被5整除同時(shí)又能被11整除的數(shù),并將這些數(shù)求和*/\r\nif(i%5==0&&i%11==0)\r\ns=s+i;\r\ns=sqrt(s);/*對(duì)s求平方根*/\r\nreturns;解析:本題的解題思路是逐個(gè)取得從。0-n之間的所有數(shù),對(duì)每次取得的數(shù)進(jìn)行條件判斷,條件是既能被5整除同時(shí)又能被11整除,注意:這兩個(gè)條件要求同時(shí)成立,因此用到了“&&”運(yùn)算符。滿足條件,該數(shù)就被累加到s中去,求出所有符合條件的數(shù)后,用sqrt()函數(shù)(包含于頭文件<math.h>中)對(duì)s求平方根。
31.
解析:該程序功能是將一個(gè)數(shù)字字符串轉(zhuǎn)換為一個(gè)整數(shù)。其中,解題思路是將每位數(shù)字字符串的ASCII碼減去48(字符“0”的ASCII碼值),變成數(shù)字0~9。然后再不斷進(jìn)行高位乘以10加低位的運(yùn)算,或者反過(guò)來(lái)從低位向高位求,即不斷進(jìn)行低位加高位乘以10的運(yùn)算。
32.intfun(intarray[3][3]){intijt;for(i=0;i<3;i++)/*將右上三角和左下三角對(duì)換實(shí)現(xiàn)行列互換*/for(j=i+1;j<3;j++){t=array[i][j];array[i][j]=array[j][i];array[j][i]=t;}}intfun(intarray[3][3])\r\n{\r\ninti,j,t;\r\nfor(i=0;i<3;i++)/*將右上三角和左下三角對(duì)換,實(shí)現(xiàn)行列互換*/\r\nfor(j=i+1;j<3;j++)\r\n{t=array[i][j];\r\narray[i][j]=array[j][i];\r\narray[j][i]=t;\r\n}\r\n}解析:注意對(duì)矩陣轉(zhuǎn)置后仍然存回其本身時(shí),只能循環(huán)矩陣中的一個(gè)角(本程序是右上半三角)。控制右上半三角的方法是在第2個(gè)循環(huán)中j從i+1或i開(kāi)始,左下半三角的方法是在第2個(gè)循環(huán)中寫(xiě)成for(j=0;j<i;j++),若要控制所有元素在第2個(gè)循環(huán)要寫(xiě)成for(j=0;j<3;j++)。
33.voidfun(char*ttintpp[]){inti;fori=0;i<26;i++)pp[i]=0;/*初始化pp數(shù)組各元素為0*/for(;*tt!='\0';tt++)if(*tt>='a'&&*tt<='z')pp[*tt-'a']++;/*將tt字符串中'a'到'z'26個(gè)字母各自出現(xiàn)的次數(shù)依次放在pp數(shù)組中任一個(gè)小寫(xiě)字母減去'a'后所得結(jié)果正好是它對(duì)應(yīng)的下標(biāo)*/}voidfun(char*tt,intpp[])\r\n{\r\ninti;\r\nfori=0;i<26;i++)\r\npp[i]=0;/*初始化pp數(shù)組各元素為0*/\r\nfor(;*tt!='\\0';tt++)\r\nif(*tt>='a'&&*tt<='z')\r\npp[*tt-'a']++;/*將tt字符串中'a'到'z'26個(gè)字母各自出現(xiàn)的次數(shù),依次放在pp數(shù)組中,任一個(gè)小寫(xiě)字\r\n母減去'a'后所得結(jié)果正好是它對(duì)應(yīng)的下標(biāo)*/\r\n}解析:第1個(gè)循環(huán)的作用是初始化數(shù)組pp,未經(jīng)賦值變量的量為一個(gè)不確定數(shù)字。由于它要將'a'到'z'26個(gè)字母的個(gè)數(shù)依次放到數(shù)組pp中。即'a'的個(gè)數(shù)存于pp[0]中,'b'的個(gè)數(shù)存于pp[1]中,'c'的個(gè)數(shù)存于pp[2]中,…,依次類推。而'a'-'a'的值正好為0,'b'-'a'的值為1,'c'-'a'的值為2,…,依此類推。即任一個(gè)小寫(xiě)字母減去'a'后所得結(jié)果正好是它對(duì)應(yīng)的下標(biāo),所以就有了pp[*tt-'a']++。但*tt必須是小寫(xiě)字母即if()不應(yīng)省略。
34.voidfun{chara[]charb[]intn){intik=0;for(i=0;a[i]!=‘\0’;i++)if(i!=n)/*將不是指定下標(biāo)的字符存入數(shù)組b中*/b[k++]=a[i];b[k]=‘\0’;/*在字符串最后加上結(jié)束標(biāo)記*/}voidfun{chara[],charb[],intn)\r\n{\r\ninti,k=0;\r\nfor(i=0;a[i]!=‘\\0’;i++)\r\nif(i!=n)/*將不是指定下標(biāo)的字符存入數(shù)組b中*/\r\nb[k++]=a[i];\r\nb[k]=‘\\0’;/*在字符串最后加上結(jié)束標(biāo)記*/\r\n}解析:本題要求刪除字符串中指定下標(biāo)的字符,即相當(dāng)于把不是指定下標(biāo)的字符留下。所以要用if(i!=n),注意不能寫(xiě)成“=”運(yùn)算。
35.D解析:在C語(yǔ)言中沒(méi)有邏輯類型,邏輯類型用整型來(lái)表示,故選項(xiàng)A和選項(xiàng)C不正確,C語(yǔ)言中沒(méi)有集合類型,故選項(xiàng)B不正確。所以,D選項(xiàng)為所選。
36.C解析:z=x++是先把x的值1賦給z,所以z=1,然后再把x加1賦給x,x=2,++y后y又加1,所以y=3。
37.A本題主要考查自加減運(yùn)算符(++,--)的使用。①如果作為前綴變量“++a,--a”,在使用a之前,先使a的值加1或者減1,再使用表達(dá)式的值參與運(yùn)算;②后綴變量“a++,a--”,先使用表達(dá)式的值參與運(yùn)算,在使用a之后,再使i的值加1或者減1。在本題中計(jì)算表達(dá)式c=(a++)-1時(shí)先使用a的值進(jìn)行計(jì)算,結(jié)果為c=2-1=1,然后將a的值加1,即執(zhí)行完此句后l3-的值是3;表達(dá)式c+=-a+++(++b)也可寫(xiě)成C=c+(一a++)+(++b),c=1+(一3)+3=1,此時(shí)a=4,b=3。2022年遼寧省葫蘆島市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________
一、單選題(12題)1.設(shè)有兩個(gè)串p和q,求q在p中首次出現(xiàn)的位置的運(yùn)算稱為()。
A.連接B.模式匹配C.求子串D.求串長(zhǎng)
2.若有以下定義,則能使值為3的表達(dá)式是intk=7,x=12;
A.x%=(k%=5)B.x%=(k-k%5)C.x%=k-k%5D.(x%=k)-(k%=5)
3.若有以下定義和語(yǔ)句charc1='b',c2='e'printf("%d,%c\n",c2-c1,c2-'a'+A);則輸出結(jié)果()
A.2,MB.3,EC.2,ED.輸出項(xiàng)與對(duì)應(yīng)的格式控制不一致,輸出結(jié)果不確定
4.設(shè)變量P是指針變量,語(yǔ)句P=NULL;是給指針變量賦NULL值,它等價(jià)于()。A.A.p="";
B.p="0";
C.p=0;
D.p="";
5.
6.以下程序的輸出結(jié)果是_______。main(){inti,a[10];for(i=9;i>=0;i-)a[i]=10-i;print("%d%d%d,a[2],a[5],a[8]);}
A.258B.741C.852D.369
7.向一個(gè)棧頂指針為h的帶頭結(jié)點(diǎn)的鏈棧中插入指針s所指的結(jié)點(diǎn)時(shí),應(yīng)執(zhí)行()操作。
A.h->next=s;
B.s->next=h;
C.s->next=h;h->next=s;
D.s->next=h->next;h->next=s;
8.定義無(wú)符號(hào)整數(shù)類為UInt,下面可以作為類UInt實(shí)例化值的是()。
A.-369B.369C.0.369D.整數(shù)集合{1,2,3,4,5}
9.下列選項(xiàng)中合法的賦值語(yǔ)句是()。
A.a=b=34B.a=34,b=34C.i-1;D.m=(int)(x+y);
10.以下程序的輸出結(jié)果是()。A.1010B.99C.910D.109
11.以下說(shuō)法中正確的是()。
A.C程序總是從第一個(gè)定義的函數(shù)開(kāi)始執(zhí)行
B.C程序總是從main函數(shù)開(kāi)始執(zhí)行
C.C函數(shù)必須有返回值,否則不能使用函數(shù)
D.C程序中有調(diào)用關(guān)系的所有函數(shù)必須放在同一個(gè)程序文件中
12.以下程序的輸出結(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.輸出值不定
二、2.填空題(12題)13.
main()
{printf("Thesum=%d\n",SunFun(10));}
SunFun(intn)
{intx,s=0;
for(x=0;x<=n;x++)s+=F(【】);
returns;
}
F(intx)
{return(【】);)
14.以下程序的功能是:從鍵盤輸入一字符串,要求將每個(gè)單詞中的第一個(gè)字母改成小寫(xiě)(如果原來(lái)已是小寫(xiě)字母,則不變),然后輸出轉(zhuǎn)換結(jié)果,補(bǔ)足所缺語(yǔ)句。
main()
{charstr[200];inti=0;
while((______=getchar())!='\n');
str[i-1)='\0';
for(i=0;str[i]!='\0';i++)
if((str[i-1]==''‖i==0)&&str[i]>='A'&&str[i]<='Z')
str[i]+=______;
printf("%s\n",str);
}
15.將代數(shù)式轉(zhuǎn)換成程序設(shè)計(jì)中的表達(dá)式為【】。
16.設(shè)有如下宏定義
#defineMYSWAP(z,x,y){z=x;x=Y;Y=z;}
以下程序段通過(guò)宏調(diào)用實(shí)現(xiàn)變量a、b內(nèi)容的交換,請(qǐng)?zhí)羁铡?/p>
floata=5,b=16,c;
MYSWAP(【】,a,b);
17.下列程序執(zhí)行后輸出的結(jié)果是【】。
structs
{intx,y;}data[2]={10,100,20,200};
main()
{
structs*p=data;
printf("%d\n",++(p->x));
}
18.數(shù)據(jù)的物理結(jié)構(gòu)在計(jì)算機(jī)存儲(chǔ)空間中的存放形式稱為數(shù)據(jù)的【】。
19.已知字符A的ASCII代碼值為65,以下程序運(yùn)行時(shí)若從鍵盤輸入:B33<回車>。則輸出結(jié)果是______。
#include<stdio,h>
main()
{
chara,b;
a=geCchar();scanf("%d“,&b);
a=a-'A'+‘0';b=b*2;
printf('%c%c\n",a,b);
}
20.棧中允許進(jìn)行插入和刪除的一端叫做______。
21.計(jì)算機(jī)中網(wǎng)絡(luò)通信協(xié)議IP是【】。
22.某二叉樹(shù)中度為2的結(jié)點(diǎn)有18個(gè),則該二叉樹(shù)中有【】個(gè)葉子結(jié)點(diǎn)。
23.結(jié)構(gòu)化程序設(shè)計(jì)的三種基本邏輯結(jié)構(gòu)為順序、選擇和【】。
24.以下程序的定義語(yǔ)句中,x[1]的初值是【】,程序運(yùn)行后輸出的內(nèi)容是【】。
#include<stdio.h>
main()
{intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i;
for(i=0;i<4;i++)
{p[i]=&x[2*i+1];
printf("%d",p[i][0]);
}
printf("\n");)
}
三、3.程序設(shè)計(jì)題(10題)25.學(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ù)放在h所指的數(shù)組中。注意:分?jǐn)?shù)低的學(xué)生可能不只一個(gè),函數(shù)返回分?jǐn)?shù)最低學(xué)生的人數(shù)。
注意:部分源程序給出如下。
請(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)
{
}
main()
{
STRECs[N]={{“GA005”,82},{“GA003”,75},
{“GA002”,85},{“GA004”,78},{“GA001”,95},
{“GA007”,62},{“GA008”,60},{“GA006”,85},
{“GA015”,83},{“GA013”,94},{“GA012”,78},
{“GA014”,97},{“GA011”,60},{“GA017”,65},
{“GA018”,60},{“GA016”,74}};
STRECh[N];
inti,n;
FILE*out;
n=fun(S,h);
printf(“The%dlowestscore:\n”,n);
for(i=0;i<n;i++)
printf(“%s%4d\n”,h[i].mum,h[i].s);
/*輸出最低分學(xué)生的學(xué)號(hào)和成績(jī)*/
printf(“\n”);
out=fopen("outl9.dat",“w”);
fprintf(out,“%d\n”,n);
for(i=0;i<n;i++);
fprintf(out,“%4d\n”,h[i].s);
fclose(out);
}
26.學(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ù)值返回。
[注意]部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在fun函數(shù)的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
[試題源程序]
#include<stdio.h>
#defineN8
typedefstruct
{
charnum[10];
doubles;
}STREC;
doublefun(STREC*a,STREC*b,int*n)
{
}
voidmain()
{
STRECs[N]={{"GA05",85},
{"GA03",76},{"GA02",69},{"GA04",85},
{"GA01",91},{"GA07",72},{"GA08",64},
{"GA06",87}};
STRECh[N],t;FILE*out;
inti,j,n;
doubleave;
ave=fun(s,h,&n);
printf("The%dstudentdatawhichislowerthan%7.3f:\n",n,ave);
for(i=0;i<n;i++)
printf("%s%4.1f\n",h[i].num,h[i].s);
printf("\n");
ut=fopen("out.dat","W");
fprintf(out,"%d\n%7.3f\n",n,ave);
for(i=0;2<n-1;i++)
for(j=i+1;j<n;j++)
if(h[i].s>h[j].s)
{
t=h[i];
h[i]=h[j];
h[j]=t;
}
for(i=0;2<n;i++)
fprintf(out,"%4.1f\n",h[i].s);
fclose(out);
}
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é)生數(shù)據(jù)放在h所指的數(shù)組中。注意:分?jǐn)?shù)高的學(xué)生可能不只一個(gè),函數(shù)返回分?jǐn)?shù)最高學(xué)生的人數(shù)。
注意:部分源程序給出如下。
請(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)
{
}
main()
{
STRECs[N]={{"GA005",85},{"GA003",76},
{"GA002",69},{"GA004",85},{"GA001",91},
{"GA007",72},{"GA008",64},{"GA006",87},
{"GA015",85),("GA013",91},{"GA012",64},
{"GA014",91),{"GA011",66},{"GA017",64},
{"GA018",64},{"GA016",72}};
STRECh[N];
inti,n;
FILE*out;
n=fun(s,h);
printf("The%dhighestscore:\n",n);
for(i=0;i<n;i++)
printf("%s%4d\n",h[i].num,h[i].s);
/*輸出最高分學(xué)生的學(xué)號(hào)和成績(jī)*/
printf("\n");
ut=fopen("out45.dat","w");
fprintf(out,"%d\n",n);
for(i=0;i<n;i++)
fprintf(out,"%4d\n",h[i].s);
fclose(out);
}
28.請(qǐng)編寫(xiě)一個(gè)函數(shù)fun(),它的功能是計(jì)算并輸出給定整數(shù)n的所有因子(不包括1與自身)的平方和(規(guī)定n的值不大于100)。
例如:主函數(shù)從鍵盤給輸入n的值為56,則輸出為sum=1113。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
#include<stdio.h>
longfun(intn)
{
}
main()
{
intn;
longsum;
printf("Inputn:");
scanf("%d",&n);
sum=fun(n);
printf("sum=%ld\n",sum);
}
29.下列程序定義了N×N的二維數(shù)組,并在主函數(shù)中自動(dòng)賦值。請(qǐng)編寫(xiě)函數(shù)fun(inta[][N],intn),該函數(shù)的功能是:使數(shù)字右上半三角元素中的值乘以m。
例如,若m的值為2,a數(shù)組中的值為
a=19
27
則返回主程序后a數(shù)組的值應(yīng)為
218
214
注意:部分源程序給出如下.
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#defineN5
intfun(inta[][N],intm)
{
}
main()
{
inta[N][N],m,i,j;
clrscr();
printf{"*****Thearray*****\n");
for(i=O;i<N;i++)
/*輸出一個(gè)隨機(jī)的5×5矩陣*/
{for(j=0;j<N;j++)
{a[i][j]=rand()%20;
printf("%4d",a[i][j]);
}
printf("\n");
}
do
m=rand()%10;
while(m>=3);/*產(chǎn)生一個(gè)上于3的隨機(jī)數(shù)*/
printf("m=%4d\n",m);
fun(a,m);
printf("THERESULT\n");
for(i=0;i<N;i++)
{for(j=0;j<N;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
30.編寫(xiě)函數(shù)fun(),它的功能是求n以內(nèi)(不包括n)同時(shí)能被5與11整除的所有自然數(shù)之和的平方根s,并作為函數(shù)值返回。
例如:n為1000時(shí),函數(shù)值應(yīng)為s=96.979379。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
#include<conio.h>
#include<math.h>
#include
doublefun(intn)
{
}
main()
{
clrscr();
printf("s=%f\n",fun(1000));
}
31.請(qǐng)編寫(xiě)一個(gè)函數(shù)fun,它的功能是:將一個(gè)數(shù)字字符串轉(zhuǎn)換為一個(gè)整數(shù)(不得調(diào)用C語(yǔ)言提供的將字符串轉(zhuǎn)換為整數(shù)的函數(shù))。例如,若輸入字符串“-1234”,則函數(shù)把它轉(zhuǎn)換為整數(shù)值-1234。
注意:部分源程序存在文件PROGl.C文件中。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。
32.編寫(xiě)程序,實(shí)現(xiàn)矩陣(3行3列)的轉(zhuǎn)置(即行列互換)。
例如,若輸入下面的矩陣:
100200300
400500600
700800900
則程序輸出:
100400700
200500800
300600900
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
#include<stdio.h>
#include<conio.h>
intfun(intarray[3][3])
{
}
main()
{
inti,j;
intarray[3][3]={{100,200,300},{400,
500,600},{700,800,900}};
clrscr();
for(i-0;i<3;i++)
{for(j=0;j<3;j++)
printf("%7d",array[i][j]);
printf("\n");
}
fun(array);
printf("Convertedarray:\n");
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%7d",array[i][j]);
printf("\n");
}
}
33.請(qǐng)編寫(xiě)一個(gè)函數(shù)voidfun(char*tt,intpp[]),統(tǒng)計(jì)在tt字符串中“a”到“z”26個(gè)字母各自出現(xiàn)的次數(shù),并依次放在pp所指數(shù)組中。
例如:當(dāng)輸入字符串a(chǎn)bcdefghabcdeabc后,程序的輸出結(jié)果應(yīng)該是:33322110000000000000000000
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
#include<conio.h>
#include<stdio.h>
voidfun(char*tt,intpp[])
{
}
main()
{
charaa[1000];
intbb[26],k,n;
clrscr();
printf("\nPleaseenteracharstring:");
scanf("%s",aa);
fun(aa,bb);
for(k=0;k<26;k++)
printf("%d",bb[k]);
printf("\n");
}
34.請(qǐng)編寫(xiě)一個(gè)函數(shù)voidfun(cbara[],charb[],intn),其功能是:刪除一個(gè)字符申中指定下標(biāo)的字符。其中,a指向原字符串,刪除后的字符串存放在b所指的數(shù)組中,n中存放指定的下標(biāo)。
例如,輸入一個(gè)字符串world,然后輸入3,則調(diào)用該函數(shù)后的結(jié)果為word。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
#include<stdio.h>
#include<conio.h>
#defineLEN20
voidfun(chara[],charb[],intn)
{
}
main()
{
charstr1[LEN],str2[LEN];
intn;
clrscr();
printf("Enterthestring:\n");
gets(str1);
printf("Enterthepositionofthestring
deleted:");
scanf("%d",&n);
fun(str1,str2,n);
printf("Thenewstringis:%s\n",
str2);
}
四、單選題(0題)35.下列敘述中正確的是A.C語(yǔ)言中既有邏輯類型也有集合類型
B.C語(yǔ)言中沒(méi)有邏輯類型但有集合類型
C.C語(yǔ)言中有邏輯類型但沒(méi)有集合類型
D.C語(yǔ)言中既沒(méi)有邏輯類型也沒(méi)有集合類型
五、單選題(0題)36.有以下程序:main(){intx,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d,%d\n",x,y,z);程序運(yùn)行后的輸出結(jié)果是()。
A.2,3,3B.2,3,2C.2,3,1D.2,2,1
六、單選題(0題)37.下列程序的執(zhí)行結(jié)果是()。#include<stdioh>main{inta,b,c;a=b=2,c=I;c=(a++)-1;printf("%d,0Ad",a,c);c+=-a+++(++b);printf("%d,%d",a,c);)A.3,14,1B.3,14,2C.2,04,1D.2,14,1
參考答案
1.B
2.D解析:運(yùn)算符“%”的兩側(cè)都應(yīng)該是整型數(shù)。另外,本題需要掌握的知識(shí)點(diǎn)是:x%=k,等價(jià)于x=x%k。注意:強(qiáng)制類型轉(zhuǎn)換表達(dá)式。
3.B
4.C在C語(yǔ)言中null等價(jià)于數(shù)字0。
5.A
6.C解析:在本題運(yùn)行時(shí)主要注意的是當(dāng)i=9時(shí),a[i]=10-9=1:i=8時(shí),a[i]=10-8=2;i=7時(shí),a[i]=10-7=3;……依此類推,直到i=0時(shí),a[i]=10-0=10:此時(shí),i的值已變?yōu)?1,判斷for的循環(huán)條件,不成立,然后輸出a[2],a[5],a[8]分別為8,5,2。
7.D
8.BB【解析】只有B選項(xiàng)369可以用無(wú)符號(hào)整數(shù)來(lái)表示和存儲(chǔ)。A選項(xiàng)一369有負(fù)號(hào),選項(xiàng)C0.369是小數(shù)都不能用無(wú)符號(hào)整數(shù)類存儲(chǔ)。選項(xiàng)D是一個(gè)整數(shù)集合得用數(shù)組來(lái)存儲(chǔ)。
9.D解析:選項(xiàng)A)是一個(gè)合法的賦值表達(dá)式,但結(jié)尾沒(méi)加分號(hào),所以它不是一個(gè)賦值語(yǔ)句;選項(xiàng)B)是一個(gè)逗號(hào)表達(dá)式,也因?yàn)榻Y(jié)尾沒(méi)有加分號(hào)而不是合法的賦值語(yǔ)句,選項(xiàng)C)是一個(gè)算術(shù)表達(dá)式,雖然有分號(hào),但這個(gè)表達(dá)式?jīng)]有賦值操作,因此,也不是一條賦值語(yǔ)句。
10.D
11.B解析:C++程序總是從main函數(shù)開(kāi)始執(zhí)行。
12.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)。
13.xx*x+1或1+x*xx\r\nx*x+1或1+x*x解析:題目中要求從x=0開(kāi)始將f(x)的值累加起來(lái),直到x=10。在SunFun()函數(shù)中用了一個(gè)for循環(huán),每循環(huán)一次將f(x)累加到s中,所以在本題的第一個(gè)空白處應(yīng)該填x,然后x+1,共循環(huán)10次。F()函數(shù)的功能應(yīng)該是求數(shù)學(xué)表達(dá)式f(x)的值,所以其返回值應(yīng)該為x*x+1。
14.str[i++]32。str[i++]32。解析:while語(yǔ)句的循環(huán)控制條件既要將相應(yīng)元素賦予從鍵盤輸入的字符,又要改變?cè)氐南聵?biāo)值,以便接受下一個(gè)字符,可用下標(biāo)變量的后置加實(shí)現(xiàn);小寫(xiě)字母的ASCII碼值比相對(duì)應(yīng)的大寫(xiě)形式大32。
15.SQRT(x2+y2)/(a+b)
16.cc解析:本題關(guān)鍵在考生是不是了解宏的基本運(yùn)用,在使用宏的時(shí)候明顯少了—個(gè)實(shí)參。在定義宏的時(shí)候變量z是用來(lái)做中間變量的,題目中缺的變量就是一個(gè)中間變量c。
17.1111解析:程序中結(jié)構(gòu)體數(shù)組data首地址(即&data[0])賦值給結(jié)構(gòu)體指針變量p,++(P->x)表示先將p所指向的結(jié)構(gòu)體變量的成員x值加1,然后將此x(即data[0].x)輸出。
18.內(nèi)模式或物理模式或存儲(chǔ)模式內(nèi)模式或物理模式或存儲(chǔ)模式解析:一個(gè)數(shù)據(jù)庫(kù)只有一個(gè)內(nèi)模式,它是數(shù)據(jù)物理結(jié)構(gòu)和存儲(chǔ)方式的描述,是數(shù)據(jù)庫(kù)內(nèi)部的表示方法。例如,記錄的存儲(chǔ)方式是順序存儲(chǔ)、索引按照什么方式組織;數(shù)據(jù)是否壓縮存儲(chǔ),是否加密等。
19.1B1B解析:在C語(yǔ)古中,字符型變量可以看作整型變量來(lái)對(duì)待,與整型所不同的是字符型變量在內(nèi)存中只占1個(gè)字節(jié),而整型是2個(gè)字節(jié).字符型變量中所有的數(shù)值是它所表示字符的ASCII碼值.ASCII碼中的一些相關(guān)字符是順序排列的,如'0',的ASCII碼值為48,'1'為49以此類推一直到'9';'A'的ASCII碼值為65,'B'為66以此類推一直到'Z'。本題程序首先定義了兩個(gè)字符型變量a和b,然后分別使用getchar()和scanf()函數(shù)讀取輸入的字符'B'和十進(jìn)制整數(shù)33到a和b中,因?yàn)閍-'A'+'0'等于,'B'-'A'+'0'='1'+'0'='1',而b*2等于33*2=66'A'+1='B'。所以最終輸出的結(jié)果是:1B。
20.棧頂棧頂解析:棧是限定在表的一端進(jìn)行插入和刪除操作的線性表。在表中,允許插入和刪除的一端叫做“棧頂”,不允許插入和刪除的一端叫做“棧底”。
21.網(wǎng)際協(xié)議網(wǎng)際協(xié)議
22.1919解析:根據(jù)二叉樹(shù)的性質(zhì):在任意一棵二叉樹(shù)中,度為。的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))總是比度為2的結(jié)點(diǎn)多一個(gè)。本題中度為2的結(jié)點(diǎn)數(shù)為18,故葉子結(jié)點(diǎn)數(shù)為18+1=19個(gè)。
23.重復(fù)(或循環(huán))重復(fù)(或循環(huán))
24.224682,2468解析:在主函數(shù)中根據(jù)整型數(shù)組x[]的定義可知,x[1]的初值等于2。在for循環(huán)語(yǔ)句中,當(dāng)i=0時(shí),p[0]=&x[1],p[0][0]=2;當(dāng)i=1時(shí),p[1]=&x[3],p[1][0]=4;當(dāng)i=2時(shí),p[2]=&x[5],p[2][0]=6;當(dāng)i=3時(shí),p[3]=&x[7],\ue008p[3][0]\ue009=8,所以程序輸出的結(jié)果為2、4、6、8。
25.intfun(STREC*aSTREC*b){intij=0min=a[0].s;for(i=0;i<N;i++)if(min>a[i].s)min=a[i].s;/*找出最小值*/for(i=0;i<N;i++):if(min==a[i].s)b[j++]=a[i];/*找出成績(jī)與min相等的學(xué)生的記錄存入結(jié)構(gòu)體b中*/returnj;/*返回最低成績(jī)的學(xué)生人數(shù)*/intfun\u3000(STREC*a,STREC*b)\r\n{\r\ninti,j=0,min=a[0].s;\r\nfor(i=0;i<N;i++)\r\nif(min>a[i].s)\r\nmin=a[i].s;/*找出最小值*/\r\nfor(i=0;i<N;i++):\r\nif(min==a[i].s)\r\nb[j++]=a[i];/*找出成績(jī)與min相等的學(xué)生的記錄,存入結(jié)構(gòu)體b中*/\r\nreturnj;/*返回最低成績(jī)的學(xué)生人數(shù)*/解析:該程序使用循環(huán)嵌套,第1個(gè)for語(yǔ)句的作用是找出最小值。第2個(gè)循環(huán)的作用是找出與min相等的成績(jī),也即最低成績(jī)的學(xué)生記錄,并存入b中。
26.intfun(STREC*aSTREC*bint*n){doubleave=0.0;intij=0;*n=0;for(i=0;i<N;i++)ave+=a[i].s;ave/=N;for(i=0;i<N;i++)if(a[i].s<ave){b[j]=a[i];(*n)++;j++;}returnave;}intfun(STREC*a,STREC*b,int*n)\r\n{\r\ndoubleave=0.0;\r\ninti,j=0;\r\n*n=0;\r\nfor(i=0;i<N;i++)\r\nave+=a[i].s;\r\nave/=N;\r\nfor(i=0;i<N;i++)\r\nif(a[i].s<ave)\r\n{\r\nb[j]=a[i];\r\n(*n)++;\r\nj++;\r\n}\r\nreturnave;\r\n}解析:本題的設(shè)計(jì)思路是:(1)定義兩個(gè)變量,分別用于保存總分和平均值,定義循環(huán)變量并賦初值:(2)利用循環(huán)語(yǔ)句遍歷所有學(xué)生的分?jǐn)?shù),累加求和并計(jì)算初值;(3)再次遍歷結(jié)構(gòu)體數(shù)組,找出低于平均分的分?jǐn)?shù),把該學(xué)生的記錄保存在形參數(shù)組b中,并記錄其個(gè)數(shù);(4)用return語(yǔ)句返回平均值。
27.intfun(STREC*aSTREC*b){intij=0max=a[0].s;for(i=0;i<N;i++)if(max<a[i].s)max=
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年數(shù)控加工中心項(xiàng)目發(fā)展計(jì)劃
- 14窮人 教學(xué)設(shè)計(jì)-2024-2025學(xué)年六年級(jí)上冊(cè)語(yǔ)文統(tǒng)編版
- 8 蝴蝶的家教學(xué)設(shè)計(jì)-2024-2025學(xué)年四年級(jí)上冊(cè)語(yǔ)文統(tǒng)編版
- 2024年春八年級(jí)生物下冊(cè) 第七單元 第一章 第四節(jié) 鳥(niǎo)的生殖和發(fā)育教學(xué)實(shí)錄 (新版)新人教版
- 9 y w(教學(xué)設(shè)計(jì))-2024-2025學(xué)年統(tǒng)編版語(yǔ)文一年級(jí)上冊(cè)
- 2024年秋七年級(jí)英語(yǔ)上冊(cè) Unit 9 My favorite subject is science Section A教學(xué)實(shí)錄 (新版)人教新目標(biāo)版
- 2025年電動(dòng)助力轉(zhuǎn)向裝置合作協(xié)議書(shū)
- 2024-2025學(xué)年高中歷史 專題一 古代中國(guó)的政治家 二 盛唐偉業(yè)的奠基人-唐太宗教學(xué)教學(xué)實(shí)錄 人民版選修4
- 2024年四年級(jí)英語(yǔ)上冊(cè) Unit 2 My schoolbag The fourth period(第四課時(shí))教學(xué)實(shí)錄 人教PEP
- 2024年五年級(jí)數(shù)學(xué)下冊(cè) 七 包裝盒-長(zhǎng)方體和正方體 信息窗三 體積、容積及其單位間的換算第1課時(shí)教學(xué)實(shí)錄 青島版六三制
- 集裝箱知識(shí)培訓(xùn)課件
- 江蘇省蘇州市(2024年-2025年小學(xué)六年級(jí)語(yǔ)文)部編版小升初真題(下學(xué)期)試卷及答案
- 2024年四川瀘州古藺縣選調(diào)事業(yè)單位工作人員26人歷年管理單位遴選500模擬題附帶答案詳解
- 《動(dòng)靜脈采血技術(shù)》課件
- 2024年支氣管哮喘臨床診療指南:課件精講
- 2024版福州存量房買賣合同2篇
- 模具費(fèi)支付合同模板
- 餐飲部總監(jiān)述職報(bào)告
- 遼寧省沈陽(yáng)市第七中學(xué)2024-2025學(xué)年九年級(jí)上學(xué)期期中英語(yǔ)試題
- 小學(xué)金融普及
- 2024電力建設(shè)工程綠色建造評(píng)價(jià)規(guī)范
評(píng)論
0/150
提交評(píng)論