版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2023年湖北省鄂州市全國計算機(jī)等級考試C語言程序設(shè)計測試卷(含答案)學(xué)校:________班級:________姓名:________考號:________
一、2.填空題(10題)1.以下程序運(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);
}
2.以下程序輸出的最后一個值是【】
intff(intn)
{staticintf=1;
f=f*n;
returnf;
}
main()
{inti;
for(i=1;i<=5;i++)printf("%d\n",ff(i));
}
3.下列程序的輸出結(jié)果是【】。
intt(intx,inty,intcp,intdp)
{cp=x*x+y*y;
dp=x*x-y*y;
}
main()
{inta=4,b=3,c=5,d=6;
t(a,b,c,d);
printf("%d%d\n",c,d);
}
4.按照邏輯結(jié)構(gòu)分類,結(jié)構(gòu)可以分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),棧屬于______。
5.樹中度為零的結(jié)點(diǎn)稱為______。
6.以下函數(shù)rotate的功能是:將a所指N行N列的二維數(shù)組中的最后一行放到b所指二維數(shù)組的第0列中,把a(bǔ)所指二維數(shù)組中的第0行放到b所指二維數(shù)組的最后一列中,b所指二維數(shù)組中其他數(shù)據(jù)不變。
#defineN4
voidrotade(inta[][N],intb[][N])
{inti,j;
for(i=0;i<N;i++)
{b[i][N-1]=[9];[10]:a[N-1][i];}}
7.在算法正確的前提下,評價一個算法的兩個標(biāo)準(zhǔn)是【】。
8.以下程序的功能是:求出數(shù)組x中各相鄰兩個元素的和依次存放到a數(shù)組中,然后輸出。請?zhí)羁铡?/p>
main()
{intx[10],a[9],i;
for(i=0;i<10;i++)scanf("%d",&x[i]);
for([11];i<10;i++)
a[i-1]=x[i]+[12];.
for(i=0;i<9;i++)printf("%d",a[i]);
printf("");
}
9.“printf("%d\n",strlen("\t\"023\xABC\n");”語句的輸出結(jié)果是______。
10.若有定義doublea[5];,則a數(shù)組元素下標(biāo)的上限為______。
二、單選題(10題)11.設(shè)有定義語句“int(*f)(int);”,則下列敘述中正確的是()。
A.f是基類型為int的指針變量
B.f是指向函數(shù)的指針變量,該函數(shù)具有一個int類型的形參
C.f是指向int類型一維數(shù)組的指針變量
D.f是函數(shù)名,該函數(shù)的返回值是基類型為int類型的地址
12.若i和k都是int類型變量,有以下for語句:for(i=0,k=-1;k=1;k++)printf("*****\n");下面關(guān)于語句執(zhí)行情況的敘述中正確的是()。
A.循環(huán)體執(zhí)行兩次B.循環(huán)體執(zhí)行一次C.循環(huán)體一次也不執(zhí)行D.構(gòu)成無限循環(huán)
13.在順序表{2,5,7,10,14,15,18,23,35,41,52}中,用二分法查找關(guān)鍵碼12需做()次關(guān)鍵碼比較。
A.2B.3C.4D.5
14.以下有關(guān)scanf函數(shù)的敘述中錯誤的是()。
A.在scanf函數(shù)的格式字符前既可以加入正整數(shù)指定輸入數(shù)據(jù)所占的寬度,也可以對實(shí)數(shù)指定小數(shù)位的寬度
B.scanf函數(shù)有返回值,其值就是本次調(diào)用scanf函數(shù)時正確讀入的數(shù)據(jù)項個數(shù)
C.scanf函數(shù)從輸入字符流中按照格式控制指定的格式解析出相應(yīng)數(shù)據(jù),送到指定地址中
D.在scanf函數(shù)中的格式控制字符串不會輸出到屏幕上
15.下列選項中非法的字符常量是()。
A.'\t'B.'\039'C.','D.'\n'
16.以下程序的輸出結(jié)果是()。#include<stdio.h>main(){intn=4;while(n--)printf("%d",--n);}
A.20B.31C.321D.210
17.設(shè)有定義“struct{charmark[12];intnum1;doublenum2;}t1,t2;”,若變量均已正確賦初值,則下列語句中錯誤的是()。
A.t1=t2;
B.t2.num1=t1.num1;
C.t2.mark=t1.mark;
D.t2.num2=t1.num2;
18.下列對于線性鏈表的描述中正確的是()
A.存儲空間不一定是連續(xù),且各元素的存儲順序是任意的
B.存儲空間不一定是連續(xù),且前件元素一定存儲在后件元素的前面
C.存儲空間必須連續(xù),且前件元素一定存儲在后件元素的前面
D.存儲空間必須連續(xù),且各元素的存儲順序是任意的
19.下面程序的輸出結(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
20.有以下程序intfun(intx,inty){return(x+y);}main{inta=1,b=2,C=3,sum;sum=fun((a++,b++,a+b),c++printf("%d\n",sum);)執(zhí)行后的輸出結(jié)果是()。A.6B.7C.8D.9
三、程序設(shè)計題(10題)21.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),該函數(shù)的功能是求出二維數(shù)組周邊元素之和,作為函數(shù)值返回。二維數(shù)組中的值在主函數(shù)中賦予。例如,若二維數(shù)組中的值為13579299946999813570則函數(shù)值為61。注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:1#include2#include3#include4#defineM45#defineN56intfun(inta[m][n])7{89}10voidmain()11{12FILE*wf;13intaa[M][N]={{1,3,5,7,9},{2,9,9,9,4},{6,9,9,9,8},{1,3,5,7,0}};14inti,j,y;15system("CLS");16printf("Theoriginaldatais:\n");17for(i=0;i<m;i++)18{for(j=0;j<n;j++)19printf("%6d",aa[i][j]);20printf("\n");21}22y=fun(aa);23printf("\nThesum:%d\nM,y);24printf("\n");25/******************/26wf=fopen("out.dat","w");27fprintf(wf,"%d",y);28fclose(wf)29/******************/30}
22.請編寫函數(shù)proc(),它的功能是:求出1~1000中能被5或13整除,但不能同時被5和13整除的所有整數(shù),并將它們放在arr所指的數(shù)組中,通過n返回這些數(shù)。注意:部分源程序給H{如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
23.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,定義了NxN的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)fun(),該函數(shù)的功能是使數(shù)組上三角元素中的值乘以m。若m的值為2,a數(shù)組中的值為197238456則返回主程序后a數(shù)組中的值應(yīng)為2181426164512注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:1#include2#include3#include4#include5#defineN56voidfun(inta[][N],intm)7{89}10main()11{12inta[N][N],m,i,j;13FILE*out;14printf("***Thearray***\n");15for(i=0;i<n;i++)16{for(j=0;j<n;i++)27{for(j=0;j38{for(j=0;j<n;j++)39fprintf(out,"%4d",a[i][j]);40fprintf(out,"\n");41}42fclose(out);43/*********found********/44}1voidfun(inta[][n],intm)2{3inti,j;4for(j=0;j<n;j++)5:for(i=0;i<=j;i++)6:a[i][j]=a[i][j]*m;/*上三角元素中的值乘以m*/
24.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),其功能是將兩個兩位數(shù)的正整數(shù)a、b合并成一個整數(shù)放在c中。合并的方式是將a中的十位數(shù)和個位數(shù)依次放在c數(shù)的十位和千位上,b中的十位數(shù)和個位數(shù)依次放在c數(shù)的百位和個位上。例如,當(dāng)a=45,b=12時,調(diào)用該函數(shù)后,c=5142。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入編寫的若干語句。試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c){}main(){ inta,b; longc; printf(“Inputa,b:”); scanf(“%d%d”,&a,&b); fun(a,b,&c); printf(“Theresultis:%ld\n”,c);}
25.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,定義了NxN的二維數(shù)組,并在主函數(shù)中賦值。請編寫函數(shù)fun(),其功能是求出數(shù)組周邊元素的平均值并將其作為函數(shù)值返回給主函數(shù)中的s。例如,若a數(shù)組中的值為0127919745238314568259141則返回主程序后s的值應(yīng)為3.375。注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:1#include<stdio.h>2#include<conio.h>3#include<stdlib.h>4#defineN55doublefun(intw[][n])6{78}9voidmain()10{11FILE*wf;12inta[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,13inti,j;14doubles;15system("CLS");16printf("***Thearray***\n");17for(i=0;i<N;i++)18{for(j=0;j<N;j++)19{printf("%4d",a[i][j]);}20printf("\n");21}22s=fun(a);23printf("***TheResult***\n");24printf("Thesumis:%lf\n",s);25/******************/26wf=fopen("out.dat","w");27fprintf(wf,"%if",s);28fclose(wf);29/******************/30}26.下列程序定義了M×M的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)fun(intarr[][M]),該函數(shù)的功能是使數(shù)組左下半三角元素中的值全部置成0。例如,arr數(shù)組中的值為:
注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。
試題程序:
27.編寫函數(shù)fun(),其功能是:求出1~1000中能被7或11整除,但不能同時被7和ll整除的所有整數(shù),并將其放在a所指的數(shù)組中,通過n返回這些數(shù)的個數(shù)。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入所編寫的若干語句。試題程序:
28.N名學(xué)生的成績已在主函數(shù)中放人一個帶頭節(jié)點(diǎn)的鏈表結(jié)構(gòu)中,h指向鏈表的頭節(jié)點(diǎn)。請編寫函數(shù)fun,其功能是:求出平均分,并由函數(shù)值返回。
例如,若學(xué)生的成績是:8576698591726487,則平均分應(yīng)當(dāng)是:78.625。注意:部分源程序在文件PROGl.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填人你編寫的若干語句。
29.請編寫函數(shù)proc(),對長度為9個字符的字符串,除首、尾字符外,將其余7個字符按ASCⅡ碼值降序排列。例如,原來的字符串為HabcdefA,則排序后輸出為HfedcbaA。注意:部分源程序給出如下。請勿改動main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()中填入所編寫的若干語句。試題程序:
30.四、2.程序修改題(10題)31.給定程序MODll.C中函數(shù)fun的功能是:將p所指字符串中的所有字符復(fù)制到b中,要求每復(fù)制三個字符之后插入一個空格。
例如,在調(diào)用fun函數(shù)之前給a輸入字符串:ABCDEFGHIJK,調(diào)用函數(shù)之后,字符數(shù)組b中的內(nèi)容則為:ABCDEFGHIJK。
請改正程序中的錯誤,使它能得出正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
32.給定程序MODll.C中函數(shù)fun的功能是:將十進(jìn)制正整數(shù)m轉(zhuǎn)換成k(2≤k≤9)進(jìn)制數(shù),并按高位到低位順序輸出。
例如,若輸入8和2,則應(yīng)輸出1000(即十進(jìn)制數(shù)8轉(zhuǎn)換成二進(jìn)制表示是1000)。
請改正fun函數(shù)中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù)。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
33.下列給定程序中,函數(shù)fun的功能是按以下遞歸公式求函數(shù)值。
例如:當(dāng)給n輸入5時,函數(shù)值為240;當(dāng)給n輸入3時,函數(shù)值為60。
請改正程序中的錯誤,使它能得到正確結(jié)果。
注意;不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
/*************found****+*******/
fun(intn);
{
intc;
/*************found********+*****/
if(n=1)
c=15;
else
c=fun(n-1)*2;
return(c);
}
main()
{
intn;
printf("Entern:");
scanf("%d",&n);
printf("Theresult:%d\n\n",fun(n));
}
34.下列給定程序中,函數(shù)fun()的功能是:根據(jù)形參m的值(2≤m≤9),在m行m列的二維數(shù)組中存放如下所示的數(shù)據(jù),由main()函數(shù)輸出。
例如,若輸入2,則輸出12
24
輸入4,則輸出1234
2468
36912
481216
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).
試題程序:
#include<conio.h>
#include<stdio.h>
#defineM10
intaiM][MI={0};
/***************found*******************/
fun(int**a,intm)
{intj,k;
for(j=0;j<m;j++)
for(k=0;k<m;k++)
/***************found*******************/
a[j][k]=k*j;
}
main()
{inti,j,n;
clrscr();
printf("Entern\n");scanf("%d",&n);
fun(a,n);
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
35.下列給定程序中函數(shù)fun()的功能是計算正整數(shù)num的各位上的數(shù)字之平方和。
例如:輸入352,則輸出應(yīng)該是38;若輸入328,則輸出應(yīng)該是77。
請改正程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<conio.h>
longfun(longnum)
{
/*+**+*+*+*found************/
longk=1;
do
{
k+=(num%10)*(num%10);
num/=10;
/*********+found*+**+*+******/
}while(num)
return(k);
}
main()
{
longn;
clrscr();
printf("\Pleaseenteranumber:");
scanf("%ld",&n);
printf("\n%ld\n",fun(n));
}
36.下列給定程序中,函數(shù)fun()的功能是:從n個學(xué)生的成績中統(tǒng)計出低于平均分的學(xué)生人數(shù),此人數(shù)由函數(shù)值返回,平均分存放在形參aver所指的存儲單元中。例如輸入8名學(xué)生的成績:
80.5607290.59851.58864
則低于平均分的學(xué)生人數(shù)為4(平均分為75.5625)。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<conio.h>
#defineN20
intfun(float*s,ihtn,float*aver)
{floatave,t=0.0;
intcount=0,k,i;
for(k=0;k<n;k++)
/*************found**************/
t=s[k];
ave=t/n;
for(i=0;i<n;i++)
if(s[i]<ave)count++;
/*************found**************/
*aver=&ave;
returncount;
}
main()
{floats[30],aver;
intm,i;
clrscr();
printf("\nPleaseenterm:");scanf
("%d",&m);
printf("\nPleaseenter%dmark:\n",m);
for(i=0;iprintf("\nThenumberofstudents:
%d\n",fun(s,m,&aver));
printf("Ave=%f\n",aver);
}
37.給定程序MODll.C中函數(shù)fun的功能是:首先將大寫字母轉(zhuǎn)換為對應(yīng)小寫字母;若小寫字母為a~u,則將其轉(zhuǎn)換為其后的第5個字母;若小寫字母為v~z,使其值減21。轉(zhuǎn)換后的小寫字母作為函數(shù)值返回。例如,若形參是字母A,則轉(zhuǎn)換為小寫字母f若形參是字母W,則轉(zhuǎn)換為小寫字母b。
請改正函數(shù)fun中指定部位的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
38.下列給定程序中,函數(shù)fun()的功能是:從s所指字符串中,找出t所指字符串的個數(shù)作為函數(shù)值返回。例如,當(dāng)s所指字符串中的內(nèi)容為abcdabfab,t所指字符串的內(nèi)容為ab,則函數(shù)返回整數(shù)3。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).
試題程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
intfun(char*s,char*t)
{intn;char*p,*r;
n=0;
while(*s)
{p=s;
r=t;
while(*r)
/**************found**************/
if(*r==*p){r++;p++}
elsebreak;
/*************found**************/
if(r=='\0')
n++;
s++;
}
returnn;
}
main()
{chars[100],t[100];intm;
clrscr();
printf("\nPleaseenterstrings:");
scanf("%s",s);
printf("\nPleaseentersubstringt:");
scanf("%s",t);
m=fun(s,t);
printf("\nTheresultis:m=%d\n",m);
}
39.給定程序MODll.C中函數(shù)fun的功能是:為一個偶數(shù)尋找兩個素數(shù),這兩個素數(shù)之和等于該偶數(shù),并將這兩個素數(shù)通過形參指針傳回主函數(shù)。
請改正函數(shù)fun中指定部位的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
40.給定程序MODll.C中函數(shù)fun的功能是:將s所指字符串的正序和反序進(jìn)行連接,形成一個新串放在t所指的數(shù)組中。
例如,當(dāng)s所指字符串為:“ABCD”時,則t所指字符串中的內(nèi)容應(yīng)為:“ABCDDCBA”。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
五、程序改錯題(2題)41.下列給定程序中,proc()函數(shù)的功能是:根據(jù)形參m,計算下列公式的值。t=1+1/2+1/3+1/4+…+1/m例如,若輸入10,則應(yīng)輸出2.928968。請修改程序中的錯誤,使它能計算出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
42.寫出下列程序的運(yùn)行結(jié)果。
fun(inta,intb)
{if(a>b)return(a);
Elsereturn(b);}
main
{intx=3,y=8,z=6,r;
r=fun(fun(x,y),2*z);printf(“%d\n”,r);}
六、操作題(2題)43.請編寫函數(shù)proc,該函數(shù)的功能是:將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個數(shù)存放在形參n所指的存儲單元中。
例如,若二維數(shù)組中的數(shù)據(jù)為
13233343
14243444
15253545
則一維數(shù)組中的內(nèi)容應(yīng)該是132333431424344415253545。
注意:部分源程序給出如下。
請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
voidproc(int(*s)[103,int*b,int*n,intrain.intnn)
{}
voidmain
{
intarr[10][10]={{33,33,33,33),{44,44,44,44},
{55,55,55,55}),i,j;
inta[l00]={o),n=o;
printf("Thematrix:\n");
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
printf("%3d",arr[i][j]):
printf("\n");
}
proc(arr,a,&n,3,4):
printf("TheAarray:\n");
for(i=0;i<n;i++)
printf("%3d",a[i]):
printf("\n\n");
}
44.執(zhí)行以下程序后的輸出結(jié)果是【】。
main()
{inta=10;
a=(3*5,a+4);printf("a=%d\n",a);
}
參考答案
1.21
2.120120解析:靜態(tài)變量的類型說明符是static,靜態(tài)局部變量屬于靜態(tài)存儲方式,它具有以下特點(diǎn):
①靜態(tài)局部變量屬于靜態(tài)存儲類別,在靜態(tài)存儲區(qū)內(nèi)分配存儲單元。在程序整個運(yùn)行期間都不釋放。
②對靜態(tài)局部變量是在編譯時賦初值的,即只賦初值—次,在程序運(yùn)行時它已有初值。以后每次調(diào)用函數(shù)時不再重新賦初值而只是保留上次函數(shù)調(diào)用結(jié)束時的值。
③如在定義局部變量時不賦初值的話,則對靜態(tài)局部變量來說,編譯時自動賦初值0(對數(shù)值型變量)或空字符(對字符變量)。(注意:C語言中的非靜態(tài)變量在定義時,系統(tǒng)并不會自動給它賦初值)
④雖然靜態(tài)局部變量在函數(shù)調(diào)用結(jié)束后仍然存在,但其他函數(shù)是不能引用它的。
本題中函數(shù)的功能是:與for語句一起求一個整數(shù)的階乘。
3.5656解析:本題中a,b,c,d足實(shí)參,x,y,cp,dp是形參。C語言規(guī)定,實(shí)參變量對形參變量的數(shù)據(jù)傳遞是“值傳遞”,即單向傳遞,只由實(shí)參傳給形參,而不能由形參傳回來給實(shí)參。在內(nèi)存中,實(shí)參單元與形參單元是不同的單元。在調(diào)用函數(shù)時,給形參分配存儲單元,并將實(shí)參對應(yīng)的值傳遞給形參,調(diào)用結(jié)束后,形參單元被釋放,實(shí)參單元仍保留并維持原值。因此,程序的輸出結(jié)果是56。
4.線性結(jié)構(gòu)線性結(jié)構(gòu)解析:數(shù)據(jù)的邏輯結(jié)構(gòu)是指數(shù)據(jù)元素之間的邏輯關(guān)系,分為線性結(jié)構(gòu)和非線性結(jié)構(gòu)。常見的線性結(jié)構(gòu)有線性表、棧和隊列等,常見的非線性結(jié)構(gòu)有樹、二叉樹等。
5.葉子結(jié)點(diǎn)葉子結(jié)點(diǎn)解析:樹中度為零的結(jié)點(diǎn),也就是沒有后件的結(jié)點(diǎn),稱為葉子結(jié)點(diǎn)。
6.b[i][N-1];s[0][i]實(shí)現(xiàn)把a(bǔ)所指二維數(shù)組中的第0行放到b所指二維數(shù)組的最后一列中,b[i][0]=a[N-1][i]門實(shí)現(xiàn)將a所指N行N列的二維數(shù)組中的最后一行放到b所指二維數(shù)組中的第0列。\r\n\r\n
7.時間復(fù)雜度和空間復(fù)雜度時間復(fù)雜度和空間復(fù)雜度
8.對于10個數(shù),相鄰的兩個數(shù)相加取和,總共要進(jìn)行9次加法運(yùn)算,所以空14處應(yīng)填入i=1。相鄰的兩個數(shù)相加取和,放在數(shù)組a中,x[0]與x[1]的和存放在a[0]中,所以空15處應(yīng)填入x[i-1]。\r\n\r\n
9.66解析:strlen()函數(shù)的作用是計算字符串的長度并作為函數(shù)的返回值,這里的長度不包括串尾的結(jié)束標(biāo)志\'\\0\'。
\'\\t\'f是轉(zhuǎn)義字符,代表橫向跳若干格:'\\'是轉(zhuǎn)義字符,代表雙引號;\'\\023\'只代表一個字符,而不管轉(zhuǎn)義字符后面有幾個字符;’僅AB,是以兩位十六進(jìn)制數(shù)AB表示的ASCII碼字符,只代表一個字符;\'\\n\'是轉(zhuǎn)義字符,代表回車換行。
5個字符常量各代表一個字符,再加上字母C,所以返回的長度是6。
10.44解析:一維數(shù)組元素的定義形式為:數(shù)組名[N],則該數(shù)組中元素的下限是0,上限是N-1。
11.B此定義語句“int(*f)(int);”為指向函數(shù)的指針變量的定義方法,其中f為指向函數(shù)的指針變量,第1個int為函數(shù)返回值類型,第2個int為函數(shù)的形參類型。故本題答案為B選項。
12.D此題考查的是基本的循環(huán),答案為D。
13.B
14.A在scanf函數(shù)的格式字符前可以加入一個正整數(shù)指定輸入數(shù)據(jù)所占的寬度,但不可以對實(shí)數(shù)指定小數(shù)位的寬度,選項A錯誤,其他選項正確。故本題答案為A選項。
15.B水平制表符中,'\t'表示的是橫向跳若干格;選項B中,'\039'錯誤,'\039'是八進(jìn)制形式表的字符,最大數(shù)為7,但其中出現(xiàn)'9',','是字符逗號;選項D中,'\n'表示的是換行。
16.A解析:n--是先使用后自減,--n是先自減后使用。n=4時,執(zhí)行n--后,n變?yōu)?,執(zhí)行--n后,n變?yōu)?,所以,第一次輸出時,n為2;同上過程,第二次輸出時,n為0。
17.Cmark為結(jié)構(gòu)體中的數(shù)組,不能直接賦值,所以C選項錯誤。故本題答案為C選項。
18.A本題考查的是線性單鏈表、雙向鏈表與循環(huán)鏈表的結(jié)構(gòu)及其基本運(yùn)算。\n在鏈?zhǔn)酱鎯Y(jié)構(gòu)中,存儲數(shù)據(jù)結(jié)構(gòu)的存儲空間可以不連續(xù),各數(shù)據(jù)結(jié)點(diǎn)的存儲順序與數(shù)據(jù)元素之間的邏輯關(guān)系可以不一致,而數(shù)據(jù)元素之間的邏輯關(guān)系是由指針域來確定的。故本題答案為A。
19.B解析:本題考查函數(shù)的調(diào)用。函數(shù)fun2的作用是將形參x和y的值相乘后減去3,在fun2中的變量m是一個局部變量,它的值在fun2函數(shù)內(nèi)有效;在主函數(shù)中的m指的是全局變量,其值為13,所以fun2(a,b)/m的值為(7*5-3)/13,即2。
20.Csum=fun((a++,b++,a+b),c++)中a++,b++,a+b為逗號表達(dá)式,運(yùn)算后取a+b的值為5,c++為3,故函數(shù)調(diào)用后輸出結(jié)果為8。
21.1intfun(inta[M][N])2{3inti,j,sum=0;4for(i=0;i<m;i++)5for(j=0;j<n;j++)6if(i==o||i==M-1||j==0||j==N-1)/*只要下標(biāo)中有一個為?;騇-1或N-1,則它一定是周邊元素*/7sum=sum+a[i][j];/*將周邊元素相加*/8returnsum;9}本題采用逐一判斷的方式求數(shù)組周邊元素和。二維數(shù)組周邊元素的規(guī)律是,其兩個下標(biāo)中一定有一個是0或M-1或N-1。程序中循環(huán)語句用來控制數(shù)組的行和列,條件語句用來判斷數(shù)組元素是否為周邊元素。
22.
【解析】題目中要求出1~1000中能被5或13整除,但不能同時被5和13整除的所有整數(shù),首先應(yīng)判斷1~1000的每一個整數(shù)是否符合要求,將符合要求的每一個整數(shù)放入數(shù)組arr中。最后將整數(shù)的個數(shù)作為形參返回給主函數(shù)。
23.1voidfun(inta[][n],intm)2{3inti,j;4for(j=0;j
<="">5for(i=0;i<=j;i++)6a[i][j]=a[i][j]*m;/*上三角元素中的值乘以m*/7}本程序?qū)崿F(xiàn)的是:矩陣上三角元素的值乘以m。上三角元素下標(biāo)的特點(diǎn)是行下標(biāo)小于等于列下標(biāo),即“i<=j”使用循環(huán)語句遍歷數(shù)組元素,第1個循環(huán)用于控制列坐標(biāo),第2個循環(huán)用于控制行下標(biāo)。24.voidfun(inta,intb,long*c){/*b%10獲取b的個位數(shù),a/10獲取a的十位數(shù),a%10獲取a的個位數(shù),b/10獲取b的十位數(shù)*/ *c=b%10+(a/10)*10+(b/10)*100+(a%10)*1000;}本題主要考核如何取出a和b的個位數(shù)和十位數(shù),取出后如何將其表示成c中相應(yīng)的位數(shù)。由于a和b都是只有兩位的整數(shù),因此分別對它們除以10可得到它們的十位數(shù),分別用10對它們求余可得到它們的個位數(shù)。將得到的數(shù)對應(yīng)乘以1000、100、10、1,即可得到c的千位數(shù)、百位數(shù)、十位數(shù)、個位數(shù)。注意使用c時要進(jìn)行指針運(yùn)算。25.1doublefun(intw[][n])2{3inti,j,k=0;4doublesum=0.0;5for(i=0;i<n;i++)6for(j=0;j</n;i++)<n;i++)<n;j++)7if(i==0||i==N-1||j==0||j==N-l)/*只要下標(biāo)中有一個為0或N-1,則它一定是周邊元素*/</n;j++)</n;i++)<n;i++)<n;j++)8{sum=sum+w[i][j];/*將周邊元素求和*/</n;j++)</n;i++)<n;i++)<n;j++)9k++;</n;j++)</n;i++)<n;i++)<n;j++)10}</n;j++)</n;i++)<n;i++)<n;j++)11returnsum/k;/*求周邊元素的平均值*/</n;j++)</n;i++)<n;i++)<n;j++)12}</n;j++)</n;i++)<n;i++)<n;j++)本題要求計算二維數(shù)組周邊元素的平均值,for循環(huán)語句控制循環(huán)過程,if條件語句根據(jù)數(shù)組元素的下標(biāo)判斷該元素是否為二維數(shù)組的周邊元素。本題采用逐一判斷的方式,周邊元素的規(guī)律為下標(biāo)中有一個是0或N-1,所以只要下標(biāo)中有一個是0或N-1,那么它一定是周邊元素。計算周邊元素個數(shù)的方式是當(dāng)給sum累加一個值時,k也加1。</n;j++)</n;i++)
26.
【解析】題目中要求使數(shù)組左下半三角元素中的值全部置成0。首先要找到數(shù)組左下半三角元素,然后將其值置為0。二維數(shù)組左下半三角元素的特點(diǎn)為,行下標(biāo)大于等于列下標(biāo)。根據(jù)此特點(diǎn)找出二維數(shù)組中所有的左下半三角元素,最后將這些位置上的元素均置為0。
27.
【解析】根據(jù)題意,所寫函數(shù)要用for循環(huán)實(shí)現(xiàn)對整數(shù)1~1000的遍歷;通過if語句找出能被7或11整除,但不能同時被7和11整除的所有整數(shù),因?yàn)橥瑫r被7和11整除的整數(shù)一定能被77整除,且不能被77整除的數(shù)不一定就是能被7或11整除,可得出表達(dá)式“(i%7==0||i%11==O)&&i%77!=0”;再按題目要求,將找出來的整數(shù)放在a所指的數(shù)組中,通過n返回這些數(shù)的個數(shù)即可。
28.
【考點(diǎn)分析】
本題考查:鏈表的操作,對鏈表的主要操作有以下幾種:建立鏈表、結(jié)構(gòu)的查找與輸出、插入一個結(jié)點(diǎn)、刪除一個結(jié)點(diǎn)。
【解題思路】
題目要求求鏈表中數(shù)據(jù)域的平均值,應(yīng)首先使用循環(huán)語句遍歷鏈表,求各結(jié)點(diǎn)數(shù)據(jù)域中數(shù)值的和,再對和求平均分。遍歷鏈表時應(yīng)定義一個指向結(jié)點(diǎn)的指針P,因?yàn)椤邦^結(jié)點(diǎn)”中沒有數(shù)值,所以程序中讓P直接指向“頭結(jié)點(diǎn)”的下一個結(jié)點(diǎn),使用語句STREC+P=h÷next。
29.
【解析】按照題目中要求,求除首、尾字符外,將其余7個字符按ASCⅡ碼值降序排列。首先需要判斷除首、尾字符之外,其余7個字符ASCⅡ碼值的大小,將不符合順序要求的字符互換。
30.
31.(1)b[k]=*p;(2)b[k++]=’’;(1)b[k]=*p;(2)b[k++]=’’;解析:本題中函數(shù)的功能是將字符串p中的所有字符復(fù)制到字符串b中,要求每復(fù)制三個字符之后插入一個空格。本題可以利用一個計算數(shù)器統(tǒng)計復(fù)制字符的個數(shù),根據(jù)計數(shù)器的值決定什么時候輸入空格。
32.(1)aa[i]=m%k;(2)printf("%d"aa[i-1]);(1)aa[i]=m%k;\r\n(2)printf("%d",aa[i-1]);解析:本題中函數(shù)的功能是將十進(jìn)制正整數(shù)m轉(zhuǎn)換成k(2≤k≤9)進(jìn)制數(shù)。對于十進(jìn)制轉(zhuǎn)換成k進(jìn)制數(shù)的一般算法是將這個數(shù)除以進(jìn)制,取余反序輸出。
33.(1)錯誤:fun(intn);正確:fun(intn)(2)錯誤:if(n=1)正確:if(n==1)(1)錯誤:fun(intn);正確:fun(intn)\r\n(2)錯誤:if(n=1)正確:if(n==1)解析:錯誤1:該行是函數(shù)的首部,不是一條語句,因此不能以分號結(jié)束。錯誤2:if垢面應(yīng)該緊跟一個條件判斷表達(dá)式,若寫成“if(n=1)”,則說明該表達(dá)式的值永遠(yuǎn)為真,也就是說這個條件永遠(yuǎn)成立,沒有遞歸執(zhí)行。
34.(1)錯誤:fun(int**aintm)正確:voidfun(int(*a)[M]intm)(2)錯誤:a[j][k]=k*j;正確:a[j][k]=(k+1)*(j+1);(1)錯誤:fun(int**a,intm)正確:voidfun(int(*a)[M],intm)\r\n(2)錯誤:a[j][k]=k*j;正確:a[j][k]=(k+1)*(j+1);解析:對于二維數(shù)組,應(yīng)該理解成為是由幾個一維數(shù)組作元素組成的一維數(shù)組,或者說,二維數(shù)組實(shí)際是一個一維數(shù)組,只不過它的每個數(shù)組元素又都是一個一維數(shù)組。我們先來看看指針數(shù)組的表示形式:
(1)p+i和a+i均表示a[i]的地址,或者講,它們均指向數(shù)組第i號元素,即指向a[i]。
(2)*(p+i)和*(a+i)都表示p+i和a+i所指對象的內(nèi)容,即為a[i]。
(3)指向數(shù)組元素的指針,也可以表示成數(shù)組的形式,也就是說,它允許指針變量帶下標(biāo),如p[i]與*(p+i)等價。因此,二維數(shù)組元素a[i][j]可表示成*(a[i]+j)或*(*(a+i)+j),它們都與a[i][j]等價,或者還可寫成(*(a+i))[j]。了解了以上這些內(nèi)容后本題就好解決了。
35.(1)錯誤:longk=1;正確:longk=0;(2)錯誤:while(num)正確:while(num);(1)錯誤:longk=1;正確:longk=0;\r\n(2)錯誤:while(num)正確:while(nu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒類生產(chǎn)技術(shù)規(guī)范制度
- 易制毒安全生產(chǎn)規(guī)章制度
- 2026上半年云南林業(yè)職業(yè)技術(shù)學(xué)院招聘16人備考考試題庫附答案解析
- 安全生產(chǎn)三個清單制度
- 存貨及生產(chǎn)成本管理制度
- 2026江西吉安吉州區(qū)興泰科技股份有限公司向社會招募就業(yè)見習(xí)人員參考考試試題附答案解析
- 鄉(xiāng)鎮(zhèn)農(nóng)業(yè)標(biāo)準(zhǔn)化生產(chǎn)制度
- 2026北京國防科技大學(xué)電子對抗學(xué)院幼兒園社會招聘3人參考考試試題附答案解析
- 變電站安全生產(chǎn)獎罰制度
- 獸醫(yī)站安全生產(chǎn)制度
- 成體館加盟協(xié)議書范文范本集
- DB34T 4506-2023 通督調(diào)神針刺療法應(yīng)用指南
- 02-輸電線路各階段設(shè)計深度要求
- 《認(rèn)識時鐘》大班數(shù)學(xué)教案
- T-CI 178-2023 高大邊坡穩(wěn)定安全智能監(jiān)測預(yù)警技術(shù)規(guī)范
- THHPA 001-2024 盆底康復(fù)管理質(zhì)量評價指標(biāo)體系
- 傷口的美容縫合減少瘢痕的形成
- MSOP(測量標(biāo)準(zhǔn)作業(yè)規(guī)范)測量SOP
- 顱鼻眶溝通惡性腫瘤的治療及護(hù)理
- 人教版四年級《上冊語文》期末試卷(附答案)
- 四川山體滑坡地質(zhì)勘察報告
評論
0/150
提交評論