版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2022年四川省成都市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)真題(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________
一、2.填空題(10題)1.函數(shù)voidfun(float*sn,intn)的功能是:根據(jù)以下公式計(jì)算s,計(jì)算結(jié)果通過形參指針sn傳回;n通過形參傳入,n的值大于等于0。請(qǐng)?zhí)羁铡?/p>
voidfun(float*sn,intn)
{floats=0.0,w,f=-1.0;
inti=0;
for(i=0;i<=n;i++)
{f=【】*f;
w=f/(2*i+1);
s+=w;}
【】=s;}
2.以下程序運(yùn)行后的輸出結(jié)果是______。
#include<string.h>
voidfun(char*s,intp,intk)
{inti;
for(i=p;i<k-1;i++)s[i]=s[i+2];
}
main()
{chars[]="abcdefg";
fun(s,3,strlen(s));puts(s);
}
3.有下列程序;
#include<stdio.h>
main()
{charc;
while((c=getchar())!=',')putchar(++C);
}
程序運(yùn)行時(shí),如果從鍵盤輸入:A,B,<CR>,則輸出結(jié)果為______。
4.設(shè)一棵完全二叉樹共有700個(gè)結(jié)點(diǎn),則在該二叉樹中有【】個(gè)葉子結(jié)點(diǎn)。
5.若有定義:inta[4][4]={{1,2,3,4},{0},{4,6,8,10},<1,3,5,7}},則初始化后,a[2][2]得到的初值是______。
6.對(duì)數(shù)組中的元素值進(jìn)行排序。請(qǐng)?zhí)羁铡?/p>
#include<stdio.h>
main()
{inta[]={2,4,15,3,17,5,8,23,9,7,11,13,}i,j,k;
for(k=0;k<12;k++)
for(i=k;i<12;i++)
if(a[i]>【】)
{j=a[i];
a[i]=【】;
【】=j(luò);}
for(i=0;i<12;i++)
printf("%4d",a[i]);
printf("\n");
}
7.在鏈表的運(yùn)算過程中,能夠使空表與非空表的運(yùn)算統(tǒng)一的結(jié)構(gòu)是______。
8.函數(shù)fun的返回值是【】。
fun(char*a,char*b)
{intnum=0,n=0;
while(*(a+num)!='\0')num++;
while(b[n]){*(a+num)=b[n];num++;n++;}
returnnum;
}
9.數(shù)據(jù)模型按不同應(yīng)用層次分成3種類型,它們是概念數(shù)據(jù)模型、【】和物理數(shù)據(jù)模型。
10.下面程序的運(yùn)行結(jié)果是()。
#defineEXCH(a,B){intt;t=a;a=b;b=t;}
main()
{intx=1,y=2;
EXCH(x,y);
printf("x=%d,y=%d\n",x,y);
}
二、單選題(10題)11.有以下程序:main{inti,j;for(j=10;j<11;j++){for(i=9;i<j;i++)if(!(j%i))break;if(i==j-1)printf("%d",j);}}輸出結(jié)果是()。A.11B.10C.9D.1011
12.有以下程序:程序運(yùn)行后的輸出結(jié)果是()。A.20B.13C.10D.31
13.設(shè)有如下函數(shù)定義:#include<stdio.h>intfun(intk){if(k<1)return0;elseif(k==1)return1;elsereturnfun(k-1)+1;}若執(zhí)行調(diào)用語句“n=fun(3);”,則函數(shù)fun總共被調(diào)用的次數(shù)是()。
A.2B.3C.4D.5
14.某完全二叉樹有256個(gè)節(jié)點(diǎn),則該二叉樹的深度為()。
A.7B.8C.9D.10
15.樹的度為3,且有9個(gè)度為3的節(jié)點(diǎn),5個(gè)度為1的節(jié)點(diǎn),但沒有度為2的節(jié)點(diǎn)。則該樹中的葉子節(jié)點(diǎn)數(shù)為()。
A.18B.33C.19D.32
16.
17.有以下程序:#include<stdio.h>main(){char*s=“01234”;while(*(++s)!=‘\0’){switch(*s-‘0’){case0:case1:putchar(*s+1);break;case2:putchar(*s+1);break;case3:putchar(*s+1);default:putchar(*s+1);break;}}}程序運(yùn)行后的輸出結(jié)果是()。
A.22345B.2345C.12345D.23445
18.
19.下面程序段的運(yùn)行結(jié)果是char*p="abcdefgh";p+=3;printf("%d\n",strlen(strcpy(p,"ABCD")));
A.8B.12C.4D.7
20.在一個(gè)有向圖中,所有頂點(diǎn)的入度之和等于所有頂點(diǎn)的出度之和的()倍。A.A.1/2B.1C.2D.4
三、程序設(shè)計(jì)題(10題)21.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫一個(gè)函數(shù)fun(),該函數(shù)的功能是將大于整數(shù)m且緊靠m的k個(gè)素?cái)?shù)存入所指的數(shù)組中。例如,若輸入17、5,則應(yīng)輸出19、23、29、31、37。注意:部分源程序在文件prog1.c中。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語句。試題程序:
22.請(qǐng)編一個(gè)函數(shù)floatproe(doubleh),函數(shù)的功能是對(duì)變量h中的值保留2位小數(shù),并對(duì)第3位進(jìn)行四舍五人(規(guī)定h中的值為正數(shù))。例如,若h值為7.32596,則函數(shù)返回7.33;若h值為7.32496,則函數(shù)返回7.32。注意:部分源程序給出如下。.請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語句。試題程序:
23.使用VC++2010打開觸文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫函數(shù)fun(),其功能是移動(dòng)字符串中的內(nèi)容,移動(dòng)的規(guī)則是把第1~m個(gè)字符,移動(dòng)到字符串的最后,把第m+1到最后的字符移動(dòng)到于符串的前面。例如,字符串中原有的內(nèi)容為“ABCDEFGHIJK”,m的值為3,移動(dòng)后,字符串中的內(nèi)容應(yīng)該是“DEFGHUKABC”。注意:部分源程序在文件prog1.c中。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語句。試題程序:
24.函數(shù)fun的功能是:將S所指字符串中除下標(biāo)為偶數(shù)同時(shí)ASCIl碼值也為偶數(shù)的字符外,其余的全部刪除;字符串中剩余字符所形成的新串放在t所指的數(shù)組中。例如,若s所指字符串中的內(nèi)容為“ABCDEFGl23456”,其中字符A的ASCIl碼值為奇數(shù),因此應(yīng)當(dāng)刪除;字符8的ASCIl碼值為偶數(shù),但在數(shù)組中的下標(biāo)為奇數(shù),因此也應(yīng)當(dāng)刪除;字符2的ASCIl碼值為偶數(shù),在數(shù)組中的下標(biāo)也為偶數(shù),因此不應(yīng)當(dāng)刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是‘'246”。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。試題程序:
25.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),其功能是根據(jù)以下公式計(jì)算S,并將計(jì)算結(jié)果作為函數(shù)值返回,通過形參傳入。例如,若n的值為11時(shí),函數(shù)的值為1.833333。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語句。試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<string.h>floatfun(intn){}voidmain(){ intn; floats; system(“CLS”); printf(“\nPleaseenterN:”); scanf(“%d”,&n); s=fun(n); printf(“Theresultis:%f\n”,s);}
26.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,定義了NxN的二維數(shù)組,并在主函數(shù)中自動(dòng)賦值。請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是使數(shù)組上三角元素中的值乘以m。若m的值為2,a數(shù)組中的值為197238456則返回主程序后a數(shù)組中的值應(yīng)為2181426164512注意:部分源程序在文件prog1.c中。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語句。試題程序: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*/
27.N名學(xué)生的成績已在主函數(shù)中放人一個(gè)帶頭節(jié)點(diǎn)的鏈表結(jié)構(gòu)中,h指向鏈表的頭節(jié)點(diǎn)。請(qǐng)編寫函數(shù)fun,其功能是:求出平均分,并由函數(shù)值返回。
例如,若學(xué)生的成績是:8576698591726487,則平均分應(yīng)當(dāng)是:78.625。注意:部分源程序在文件PROGl.C中。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填人你編寫的若干語句。
28.三個(gè)整數(shù)a、b、c,由鍵盤輸入,輸出其中最大的一個(gè)數(shù)。
29.編程將文件read.txt中的字符讀出顯示到屏幕上。
30.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,定義了NxN的二維數(shù)組,并在主函數(shù)中賦值。請(qǐng)編寫函數(shù)fun(),其功能是求出數(shù)組周邊元素的平均值并將其作為函數(shù)值返回給主函數(shù)中的s。例如,若a數(shù)組中的值為0127919745238314568259141則返回主程序后s的值應(yīng)為3.375。注意:部分源程序在文件prog1.c中。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語句。試題程序: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}四、2.程序修改題(10題)31.下列給定程序中函數(shù)fun()的功能是:將長整型數(shù)中每一位上為奇數(shù)的數(shù)依次取出,構(gòu)成一個(gè)新數(shù)放在沖。高位仍在高位,低位仍在低位。例如當(dāng)s中的數(shù)為87653142時(shí),t中的數(shù)為7531。
請(qǐng)改正函數(shù)fun()中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<conlo.h>
voidfun(longs,long*t)
{intd;
longs1=1;
/*************found**************/
t=0;
while(s>0)
{d=s%10;
/*************found**************/
if(d%2==0)
{*t=d*s1+*t;
s1*=10;
}
s/=10;
}
}
main()
{longs,t;
clrscr();
printf("\nPleaseenters:");scanf("%ld",&s);
fun(s,&t);
printf("Theresultis:%ld\n",t);
}
32.下列給定的程序中,函數(shù)fun()的功能是:計(jì)算并輸出k以內(nèi)最大的6個(gè)能被7或11整除的自然數(shù)之和。K的值由主函數(shù)傳入,若k的值為500,則函數(shù)的值為2925。
請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<conio.h>
intfun(intk)
{
intm=0,mc=0,j;
/*************found*************/
while(k>=2)&&(mc<6)
{
/*************found*************/
if((k%7=0)||(k%ll=0))
{
/*************found**************/
m=k;
mc++;
}
k--;
}
returnm;
}
main()
{
clrscr();
printf("%d\n",fun(500));
}
33.下列給定程序中,函數(shù)fun()的功能是:刪除字符串s中所有空白字符(包括Tab字符、回車符及換行符)。輸入字符串時(shí)用’#’結(jié)束輸入。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).
試題程序:
#include<string.h>
#include<stdio.h>
#include<ctype.h>
fun(char*p)
{int!i,t;charc[80];
for(i=0,t=0;p[i];i++)
if(!isspace(*(p+i)))c[t++]=p[i];
/**********************************/
c[t]='\0';
strcpy(p,c);
}
main()
{charc,s[80];
inti=0;
printf("Inputastring:");
c=getchar();
while(c!='#')
(s[i]=c;i++;c=getchar();}
s[i]="\0";
fun(s);
puts(s);
}
34.給定程序MODll.C中函數(shù)fun的功能是:求三個(gè)數(shù)的最小公倍數(shù)。
例如,給主函數(shù)中的變量x1、x2、x3分別輸入15112,則輸出結(jié)果應(yīng)當(dāng)是:330。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
35.下列給定程序中,函數(shù)fun()的功能是:用下面的公式求π的近似值,直到最后一項(xiàng)的絕對(duì)值小于指定的數(shù)(參數(shù)num)為止。
π/4≈1-1/3+1/5-1/7+…
例如,程序運(yùn)行后,輸入0.0001,則程序輸出3.1414。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<math.h>
#include<stdio.h>
floatfun(floatnum)
{ints;
floatn,t,pi;
t=1;pi=0;n=1;s=1;
/**************found***************/
while(t>=num)
{
pi=pi+t;
n=n+2;
s=-s;
/**************found**************/
t=s%n;
}
pi=pi*4;
returnpi;
}
main()
{floatn1,n2;
clrscr();
printf("Enterafloatnumber:");
scanf("%f",&n1);
n2=fun(n1);
printf("%6.4f\n",n2);
}
36.給定程序MODll.C中函數(shù)fun的功能是:用下面的公式求π的近似值,直到最后一項(xiàng)的絕對(duì)值小于指定的數(shù)(參數(shù)num)為止:
例如,程序運(yùn)行后,輸入0.0001,則程序輸出3.1414。
請(qǐng)改正程序中的錯(cuò)誤,使它能輸出正確的結(jié)果。
注意:不要改動(dòng)smain函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
37.給定程序MODll.C中函數(shù)fun的功能是:計(jì)算n的5次方的值(規(guī)定n的值大于2、小于8),通過形參指針傳回主函數(shù);并計(jì)算該值的個(gè)位、十位、百位上數(shù)字之和作為函數(shù)值返回。
例如,7的5次方是16807,其低3位數(shù)的和值是15。
請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
38.給定程序MODll.C中函數(shù)fun的功能是:將s所指字符串中的字母轉(zhuǎn)換為按字母序列的后續(xù)字母(但z轉(zhuǎn)換為A,z轉(zhuǎn)換為a),其他字符不變。
請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
39.下列給定的程序中,函數(shù)fun()的功能是:用選擇法對(duì)數(shù)組中的n個(gè)元素按從大到小的順序進(jìn)行排序。請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#defineN20
voidfun(inta[],intn)
{
inti,j,t,p;
/*************found*************/
for(j=0;j<n-1;j++);
{
p=j;
for(i=j;i<n;i++)
if(a[i)>a[p])
p=i;
t=a[p];
a[p]=a[i];
/*************found**************/
a[p]=t;
}
}
main()
{
inta[N]={11,32,-5,2,14},i,m=5;
printf(“排序前的數(shù)據(jù):”);
for(i=0;i<m;i++)
printf(“%d”,a[i]);
printf(“\n”);
fun(a,m);
printf(“排序后的順序:”);
for(i=0;i<m;i++)
printf(“%d”,a[i]);
printf(“\n”);
}
40.給定程序MODll.C中函數(shù)fun的功能是:從n(形參)個(gè)學(xué)生的成績中統(tǒng)計(jì)出低于平均分的學(xué)生人數(shù),此人數(shù)由函數(shù)值返回,平均分存放在形參aver所指的存儲(chǔ)單元中。
例如,若輸入8名學(xué)生的成績:80.5607290.59851.58864則低于平均分的學(xué)生人數(shù)為:4(平均分為:75.5625)。
請(qǐng)改正程序中的錯(cuò)誤,使它能統(tǒng)計(jì)出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
五、程序改錯(cuò)題(2題)41.下列給定程序中,函數(shù)proc()的功能是:將字符串str中的所有字符復(fù)制到字符串b中,要求在每復(fù)制3個(gè)字符之后插入1個(gè)空格。例如,在調(diào)用proc()函數(shù)之前給字符
串str輸入abcdefghijk,調(diào)用函數(shù)之后,字符串b中的內(nèi)容則為abcdefghijk。
請(qǐng)修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
42.下列給定程序的功能是:讀入一個(gè)整數(shù)n(2<=n<=5000),打印它的所有為素?cái)?shù)的因子。例如,若輸入整數(shù)1234,則應(yīng)輸出:2,617。
請(qǐng)修改程序中的錯(cuò)誤,使程序能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不能增選或刪行,也不能匿改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
//****found****
Prime(intm);
{
intj,P;
p=1;
//****found****
for(j=2;j<m;j++)
if!(m%j)
{
p=0;
break;
}
return(p);inti,n;
printf("\npleaseenteranintegernumberbetween2
and5000:");
scanf("%d",&n);
printf("\n\nTheprimefactor(s)of%dis(are):",n):
for(i=2;i<n;i4+)
if((!(n%i))&&(Prime(i)))
printf("%4d,",i);
printf("\n");
}六、操作題(2題)43.下列程序利用指針將2個(gè)數(shù)按從大到小的順序輸出。
main()
{inta,b,【】;
printf("inputa,b:");
scanf("%d%d",&a,&b);
【】;
p2=&b;
if(a<b)
{p=p1;
p1=p2;
p2=p;
}
printf("a=%db=%d\n",a,b);
printf("max=%dmin=%d\n",【】);
44.設(shè)有下列程序:
#include<stdio.h>
#include<string.h>
main()
{inti;
chars[10],t[10];
gets(t);
for(i=0;i<2;i++)
{gets(s);
if(strcmp(t,s)<0)strcpy(t,s);
}
printf("%s\n",t);
}
程序運(yùn)行后,從鍵盤上輸入(<CR>代表回車符):DEF<CR>BADEP<CR>QTHRG<CR>,則程序的輸出結(jié)果是______。
參考答案
1.=-1*sn=-1\r\n*sn解析:C語言中實(shí)參變量和形參變量的數(shù)據(jù)傳遞是單向的“值傳遞”方式。指針變量作函數(shù)也要遵循這一規(guī)則。調(diào)用函數(shù)不可能改變實(shí)參指針變量的值,但可以改變實(shí)參指針變量所指變量的值。
2.abcfgabcfg解析:本題考查的是字符數(shù)組用作函數(shù)參數(shù)。C語言中數(shù)組名可以看作該數(shù)組首地址的常量指針、因此可以直接傳遞給指針類型的參數(shù)。本題的主函數(shù)調(diào)用fun(s,3,strlen(s));后,函數(shù)中for循環(huán)就是for(i=3;i<strlen(s)-1;i++),即i從3遞增到字符數(shù)組s的長度-2位置,循環(huán)中讓s[i]=s[i+2],所以函數(shù)fun()實(shí)現(xiàn)的功能簡(jiǎn)單來說就是將字符串s下標(biāo)為p+2~k范圍的字符整體復(fù)制到字符串s下標(biāo)為p~k-2的位置上。在本題中strlen(s)返回s的長度7,所以復(fù)制的字符為s[5]~s[7],即'f'、'g','\\0'三個(gè)字符,復(fù)制到s[3]~s[5],故最終輸出的字符串為abcfg(因?yàn)閟[5]為'\\0',所以后面的字符不會(huì)輸出)。
3.BB解析:因?yàn)閏是字符類型變量,它只能接收一個(gè)字符,所以c=A,字符型變量在參與算術(shù)運(yùn)算的時(shí)候是用其相應(yīng)的ASCII碼參與運(yùn)算的,這樣++c得到字母B的ASCII碼,用putchar函數(shù)輸出是輸出其相應(yīng)的字符,所以是B。
4.350350解析:在任意一棵二叉樹中,度為0的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))總是比度為2的結(jié)點(diǎn)多一個(gè)。在根據(jù)完全二叉樹的定義,在一棵完全二叉樹中,最多有1個(gè)度為1的結(jié)點(diǎn)。因此,設(shè)一棵完全二叉樹具有n個(gè)結(jié)點(diǎn),若n為偶數(shù),則在該二叉樹中有n/2個(gè)葉子結(jié)點(diǎn)以及n/2-1個(gè)度為2的結(jié)點(diǎn),還有1個(gè)是度為1的結(jié)點(diǎn):若n為奇數(shù),則在該二叉樹中有[n/2]+1個(gè)葉子結(jié)點(diǎn)以及[n/2]個(gè)度為2的結(jié)點(diǎn),沒有度為1的結(jié)點(diǎn)。本題中,完全二叉樹共有700個(gè)結(jié)點(diǎn),700是偶數(shù),所以,在該二叉樹中有350個(gè)葉子結(jié)點(diǎn)以及349個(gè)度為2的結(jié)點(diǎn),還有1個(gè)是度為1的結(jié)點(diǎn)。所以,本題的正確答案為350。
5.88解析:二維數(shù)組可以看成是按矩陣形式排列的,題目中給二維數(shù)組賦初值是按行分段賦值的,a[4][4]可以分解為4個(gè)一維數(shù)組,其數(shù)組名分別為a[0]、a[1]、a[2]、a[3],這4個(gè)一維數(shù)組都有4個(gè)元素,a[0]的元素為a[0][0]、a(0][1]、a[0][2]、a[0][3]
6.a[k]a[k]a[k]
7.循環(huán)鏈表循環(huán)鏈表解析:在循環(huán)鏈表中,由于設(shè)置了一個(gè)頭結(jié)點(diǎn),因此在任何情況下,循環(huán)鏈表中至少有一個(gè)結(jié)點(diǎn)存在,從而使空表與非空表的運(yùn)算統(tǒng)一。
8.字符串a(chǎn)和b的長度之和字符串a(chǎn)和b的長度之和解析:本題首先通過第一個(gè)while循環(huán)計(jì)算字符串a(chǎn)的長度,再通過第二個(gè)循環(huán),將字符串a(chǎn)和b相連,最后返回連接后的總長度。
9.邏輯數(shù)據(jù)模型邏輯數(shù)據(jù)模型解析:數(shù)據(jù)是現(xiàn)實(shí)世界符號(hào)的抽象,而數(shù)據(jù)模型(datamodel)則是數(shù)據(jù)特征的抽象,它從抽象層次上描述了系統(tǒng)的靜態(tài)特征、動(dòng)態(tài)行為和約束行為,為數(shù)據(jù)庫系統(tǒng)的信息表示與操作提供一個(gè)抽象的框架。數(shù)據(jù)模型按不同的應(yīng)用層次分成3種類型,它們是概念數(shù)據(jù)模型(conceptualdatamodel)、邏輯數(shù)據(jù)模型(logicdatamodel)、物理數(shù)據(jù)模型(physicaldatamodel)。
10.x=2y=1
11.B本題考多循環(huán)的使用,當(dāng)j=10,i=9時(shí),循環(huán)成立,第一個(gè)if條件為假,第二個(gè)if條件i==j-1成立,則輸出j的值為10,接者執(zhí)行i++后,i為10;當(dāng)i為10,for循環(huán)不成立,退出內(nèi)層循環(huán),此時(shí)執(zhí)行j++后,j為11,循環(huán)不成立,退出循環(huán)。
12.D程序首先定義整型變量s和i,s的初值為0。for循環(huán)中i的取值為1,2,3,4,另外在switch語句中,執(zhí)行各個(gè)分支后,若沒有break語句,會(huì)繼續(xù)執(zhí)行后續(xù)分支。當(dāng)i=1時(shí),switch語句執(zhí)行case1、case2和default,將s自增3后再自增5,此時(shí)s的值為8;當(dāng)i=2時(shí),switch語句執(zhí)行case2、default,將s自增3后再自增5,此時(shí)s的值為16;當(dāng)i=3時(shí),switch語句執(zhí)行case3、case1、case2、default,將s逐步自增2,自增3,自增5,此時(shí)s的值為26;當(dāng)i=4時(shí),switch語句執(zhí)行default語句,將s自增5,此時(shí)s的值為31。本題答案為D選項(xiàng)。
13.B執(zhí)行調(diào)用語句“n=fun(3);”,3被當(dāng)作實(shí)參傳遞進(jìn)去,進(jìn)行了一次調(diào)用。3被當(dāng)作實(shí)參傳進(jìn)去后,程序會(huì)執(zhí)行“elsereturnfun(k-1)+1;”,函數(shù)被調(diào)用了第2次,參數(shù)是3-1,也就是2。2被當(dāng)作參數(shù)傳進(jìn)去后,程序會(huì)執(zhí)行“elsereturnfun(k-1)+1;”函數(shù)被調(diào)用了第3次,參數(shù)是2-1,也就是1。1被當(dāng)作實(shí)參傳進(jìn)去后,程序會(huì)執(zhí)行“elseif(k==1)return1;”,函數(shù)不再被遞歸調(diào)用。所以最終結(jié)果為3次。故本題答案為B選項(xiàng)。
14.C
15.C設(shè)葉子結(jié)點(diǎn)數(shù)為〃,則該樹的結(jié)點(diǎn)數(shù)為n+9+5=n+\n14,根據(jù)樹中的結(jié)點(diǎn)數(shù)=樹中所有結(jié)點(diǎn)的度之和+1,得9×3+0×2+5×1+n×0+1=n+14,則n=19。本題選擇C選項(xiàng)。
16.A
17.D程序首先定義一個(gè)字符指針s,指向一個(gè)常量字符串“01234”;接著while循環(huán)的循環(huán)條件每次將s指向下一個(gè)字符,然后判斷s指向的字符是否為空字符“\\0”,若不是,則執(zhí)行循環(huán)體,將當(dāng)前字符與‘0’”的ASCII差值作為switch語句的常量表達(dá)式,執(zhí)行對(duì)應(yīng)的case語句。指針s指向空字符“\\0”時(shí),則終止循環(huán),程序結(jié)束。從常量字符串“01234”可知,循環(huán)過程中s指向的各個(gè)字符分別是1、2、3、4。當(dāng)*s是字符“1”時(shí),*s-‘0’的值為1,執(zhí)行case1語句,輸出*s+1,即字符“2”;當(dāng)*s是字符“2”時(shí),*s-‘0’的值為2,執(zhí)行case2語句,輸出*s+1,即字符“3”;當(dāng)*s是字符“3”時(shí),*s-‘0’的值為3,執(zhí)行case3和default語句,兩次輸出*s+1,即字符“4”;當(dāng)*s是字符“4”時(shí),*s-‘0’的值為4,執(zhí)行default語句,輸出*s+1,即字符“5”。綜上,程序輸出結(jié)果為23445。故本題答案為D選項(xiàng)。
18.C
19.C在本題中,程序段首先定義了字符型指針變量p,并使其指向一個(gè)字符串,然后將指針變量p加3,即使其指向字符串的第四個(gè)元素。然后執(zhí)行輸出語句,通過輸出語句的輸出格式我們可以知道,最后輸出的是一個(gè)十進(jìn)制數(shù)的整型數(shù)值,其輸出列表為strlen(strcpy(P,″ABCD″))。這就要求我們了解strlen函數(shù)和strcpy函數(shù)的作用。
strcpy的調(diào)用格式是:strcpy(目的地址,源地址),其功能是把源地址的字符串復(fù)制到目的地址中,這種復(fù)制將覆蓋原來的字符串。strcat函數(shù)的功能是將源地址的字符串復(fù)制到目的地址字符串的后面。
strlen的調(diào)用格式是:strlen(字符串地址),其功能是返回字符串中字符的個(gè)數(shù)。
那么程序中執(zhí)行strcpy(P,″ABCD″)后指針變量p所指向的字符串為“ABCD”,該字符串中字符的個(gè)數(shù)為4,那么執(zhí)行strlen后,程序最終輸出的結(jié)果是4。因此本題正確的答案是C。
20.B21.1voidfun(intm,intk,intxx[])2{3inti,j,n;4for(i=m+1,n=0;n<k;i++)p*<>找大于m的素?cái)?shù),循環(huán)k次,即找出緊靠m的k個(gè)素?cái)?shù)*/5{for(j=2;j<i;j++)p*#]斷一<>個(gè)M否為素?cái)?shù),如果不是,跳出此循環(huán),判斷下一個(gè)數(shù)*/6if(i%j==0)break;7if(j>=i)/*如果是素?cái)?shù),存入數(shù)組XX中*/8xx[n++]=i;9}10}本題主要考查素?cái)?shù)的判定方法。如果一個(gè)數(shù)不能被除了1和其自身以外的數(shù)整除,則這個(gè)數(shù)為素?cái)?shù)。本程序使用循環(huán)語句控制需要判斷的數(shù),在循環(huán)體中判斷該數(shù)是否為素?cái)?shù),若是則存入數(shù)組XX中。當(dāng)數(shù)組XX的素?cái)?shù)個(gè)數(shù)為k個(gè)時(shí),退出循環(huán)。</i;j++)p*#]斷一<></k;i++)p*<>
22.
【解析】要實(shí)現(xiàn)對(duì)變量的值保留2位小數(shù)。并對(duì)第3位小數(shù)進(jìn)行四舍五入,可以通過先將其小數(shù)點(diǎn)后3位變?yōu)檎龜?shù)后加5,所得到的數(shù)除10,最后再除100來實(shí)現(xiàn)。
23.Voidfun(char*w,intm)chart;for(i=1;i<=m;i++)/*進(jìn)行m次的循環(huán)左移*/{t=w[o];for(j=1;w[j]!='\0';j++)/*從第2個(gè)字符開始以后的每個(gè)字符都依次前移一個(gè)字符*/w[j-l]=w[j];9w[j-l]=t;/*將第1個(gè)字符放到最后一個(gè)字符中*/10}}本題應(yīng)采用“循環(huán)左移”的算法。外層循環(huán)用于控制移動(dòng)的字符的個(gè)數(shù),即需進(jìn)行多少次循環(huán)。內(nèi)層循環(huán)的作用是將第2個(gè)字符以后的每個(gè)字符依次前移一個(gè)位置,最后將第1個(gè)字符放到最后一個(gè)字符中。
24.25.floatfun(intn){ inti,s1=0; floats=0.0; for(i=1;i<=n;i++) { s1=s1+i; /*求每一項(xiàng)的分母*/ s=s+1.0/s1; /*求多項(xiàng)式的值*/ } returns;}首先需要根據(jù)題意分析表達(dá)式的規(guī)律,得出通項(xiàng),然后再完成程序語句。本題中公式的規(guī)律類似于求1+2+…+n的倒數(shù)之和??梢酝ㄟ^for循環(huán)語句來實(shí)現(xiàn)第1項(xiàng)到第n項(xiàng)的變化。先根據(jù)題目要求定義變量,注意該變量的數(shù)據(jù)類型。然后對(duì)其進(jìn)行初始化操作,因?yàn)樵撟兞肯喈?dāng)于累加器,所以初值應(yīng)為0(或0.0,根據(jù)變量數(shù)據(jù)類型來確定),再通過for循環(huán)語句來完成累加過程。本題中s1用來表示每一項(xiàng)的分母,每一項(xiàng)的分母都是由前一項(xiàng)分母加項(xiàng)數(shù)得到的。注意,由于s1定義成一個(gè)整型,因此在s=s+1.0/s1語句中不能把1.0寫成1。
26.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個(gè)循環(huán)用于控制列坐標(biāo),第2個(gè)循環(huán)用于控制行下標(biāo)。27.
【考點(diǎn)分析】
本題考查:鏈表的操作,對(duì)鏈表的主要操作有以下幾種:建立鏈表、結(jié)構(gòu)的查找與輸出、插入一個(gè)結(jié)點(diǎn)、刪除一個(gè)結(jié)點(diǎn)。
【解題思路】
題目要求求鏈表中數(shù)據(jù)域的平均值,應(yīng)首先使用循環(huán)語句遍歷鏈表,求各結(jié)點(diǎn)數(shù)據(jù)域中數(shù)值的和,再對(duì)和求平均分。遍歷鏈表時(shí)應(yīng)定義一個(gè)指向結(jié)點(diǎn)的指針P,因?yàn)椤邦^結(jié)點(diǎn)”中沒有數(shù)值,所以程序中讓P直接指向“頭結(jié)點(diǎn)”的下一個(gè)結(jié)點(diǎn),使用語句STREC+P=h÷next。28.\n\tmain
\n{inta,b,c;
\nprintf(“請(qǐng)輸入三個(gè)整數(shù):”);
\nscanf(“%d,%d,%d”,&a,&b,&c);
\nif(aif(belseprintf(“max=%d\\n”,b);
\nelseif(aelseprintf(“max=%d\\n”,a);}
\n
29.\n#include'stdio.h'
\nmain
\n{intc;
\nFILE*fp;
\nfp=open('read.txt','r');
\nc=fgetc(fp);
\nwhile(c!=\\n)
\n{putchar(c);
\nc=fgetcr(fp);
\n}}
\nfclose;}\n30.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)中有一個(gè)為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++)本題要求計(jì)算二維數(shù)組周邊元素的平均值,for循環(huán)語句控制循環(huán)過程,if條件語句根據(jù)數(shù)組元素的下標(biāo)判斷該元素是否為二維數(shù)組的周邊元素。本題采用逐一判斷的方式,周邊元素的規(guī)律為下標(biāo)中有一個(gè)是0或N-1,所以只要下標(biāo)中有一個(gè)是0或N-1,那么它一定是周邊元素。計(jì)算周邊元素個(gè)數(shù)的方式是當(dāng)給sum累加一個(gè)值時(shí),k也加1。</n;j++)</n;i++)
31.(1)錯(cuò)誤:t=0;正確:*t=0;(2)錯(cuò)誤:if(d%2==0)正確:if(d%2!=0)(1)錯(cuò)誤:t=0;正確:*t=0;\r\n(2)錯(cuò)誤:if(d%2==0)正確:if(d%2!=0)解析:其實(shí),本題的重點(diǎn)在考查兩個(gè)問題:第1個(gè)錯(cuò)誤中出現(xiàn)了一個(gè)t=0,那么請(qǐng)看一下,t是從哪兒來的,第1次出現(xiàn)t的地方在哪兒?對(duì),就這么簡(jiǎn)單。那我們?cè)賮硭伎家幌掠肅語言表達(dá)一個(gè)奇數(shù)的話應(yīng)該怎么表達(dá)?用數(shù)學(xué)的方法呢?偶數(shù)是能被2整除的,奇數(shù)剛好相反,那么if(d%2==0)是想表示奇數(shù)呢還是偶數(shù),看題目就明白了!
32.(1)錯(cuò)誤:while(k>=2)&&(mc<6)正確:while((k>=2)&&(mc<6))(2)錯(cuò)誤:if((k%7=0)||(k%11=0))正確:if((k%7==0)||(k%11=0))(3)錯(cuò)誤:m=k正確:m=m+k;(1)錯(cuò)誤:while(k>=2)&&(mc<6)正確:while((k>=2)&&(mc<6))\r\n(2)錯(cuò)誤:if((k%7=0)||(k%11=0))正確:if((k%7==0)||(k%11=0))\r\n(3)錯(cuò)誤:m=k正確:m=m+k;解析:錯(cuò)誤1:C語言規(guī)定while語句后的表達(dá)式兩側(cè)必須要有圓括號(hào)。錯(cuò)誤2:if語句的判斷條件應(yīng)用關(guān)系運(yùn)算符,而不是賦值運(yùn)算符。錯(cuò)誤3:根據(jù)題意,將滿足條件的數(shù)求累加和。
33.錯(cuò)誤:c[t]="\0"正確:c[t]='\0'錯(cuò)誤:c[t]='\\0',正確:c[t]=\'\\0\'解析:注意,該程序的if條件中應(yīng)用了isspace函數(shù),該函數(shù)的功能是檢查ch是否空格、跳格符(制
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版大型設(shè)備搬運(yùn)工程車租賃協(xié)議3篇
- 2024版婚宴花卉租賃合同
- 2024版冷水機(jī)組安裝合同
- 2024年餐具批量采購供應(yīng)協(xié)議一
- 2022年中考化學(xué)模擬卷1(廣東專用)
- 2024年高效能源渣石買賣協(xié)議3篇
- 2024版智能化產(chǎn)品OEM合作采購協(xié)議樣本版B版
- 2024年環(huán)保項(xiàng)目投資借款轉(zhuǎn)換正式協(xié)議3篇
- 2024影視制作公司與演員藝人演藝經(jīng)紀(jì)合同
- 勞務(wù)派遣的保險(xiǎn)責(zé)任協(xié)議書
- GB/T 44481-2024建筑消防設(shè)施檢測(cè)技術(shù)規(guī)范
- 班主任月考成績質(zhì)量分析總結(jié)與反思
- 小學(xué)五年級(jí)家長會(huì)-主題班會(huì)
- DB11T 211-2017 園林綠化用植物材料 木本苗
- 【3套試卷】人教版八年級(jí)數(shù)學(xué)上冊(cè)期末考試試題【答案】
- 單詞連連看答題闖關(guān)游戲課堂互動(dòng)課件1
- 中山市2023-2024八年級(jí)上學(xué)期期末考試數(shù)學(xué)試卷
- 2024年廣州市南沙區(qū)初中語文畢業(yè)班模擬考試卷(附答案解析)
- 物業(yè)服務(wù)考核辦法及評(píng)分細(xì)則(表格模板)
- 2024年春九年級(jí)化學(xué)下冊(cè) 第九單元 溶液教案 (新版)新人教版
- DL-T 1071-2023 電力大件運(yùn)輸規(guī)范
評(píng)論
0/150
提交評(píng)論