版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2022年湖南省益陽市全國(guó)計(jì)算機(jī)等級(jí)考試
C語言程序設(shè)計(jì)真題(含答案)
學(xué)校:班級(jí):姓名:考號(hào):
一、2.填空題(10題)
1.以下程序的輸出結(jié)果是()。#include<stdio.h>voidmain(){intf,
fl,fl,i;fl=0;f2=l;printf("%d%d",fl,f2);for(i=3;i<=5;i++)
{f=-fl+f2,printf("%d",f);f2=fl;fl=f;}printf("\n");}
2.數(shù)據(jù)字典是各類數(shù)據(jù)描述的集合,它通常包括5個(gè)部分,即數(shù)據(jù)項(xiàng)、
數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流和處理過程。
3.以下程序運(yùn)行后的輸出結(jié)果是【】。
main()
{inta[4][4]={{l,2,3,4),{5,6,7.8},{11,12,13.14},{15,
16,17,18}};
inti=0,j=0,s=0;
while(i++<4)
(
if(i==2||i==4)continue;
j=0;
do{S+=a[i][j];j++;}while(j<4);
)
printf("%d\n",s);
)
4.函數(shù)voidfun(float*sn,intn)的功能是:根據(jù)以下公式計(jì)算s,計(jì)算
結(jié)果通過形參指針sn傳回…通過形參傳入,n的值大于或等于0。請(qǐng)
填空。
s=§
42xi+1
voidfun(float*sn,intn)
{floats=0.0,w,f=-1.0;
inti;
for(i=0;i<=n;i++)
{f=[】*f;
w=f/(2*i+l);
s+=w;
)
【】=S;
}
5.用十六進(jìn)制給存儲(chǔ)器中的字節(jié)地址進(jìn)行編號(hào),其地址編號(hào)從0000到
FFFF,則該存儲(chǔ)器容量是【】。
6.以下程序運(yùn)行后輸出結(jié)果是【】。
#include<stdio,h>
main()
{inta,b,c;
a=10;b:20;c=(a%b<1)II(a/b>1);
printf("%d%d%d\n",a,b,c);
)
7.以下程序運(yùn)行后的輸出結(jié)果是【】。
#include<stdio.h>
fun(intx)
{if(x/2>0)fun(x/2);
printf("%d",x);
)
main()
{fun(6);}
8.數(shù)據(jù)庫(kù)設(shè)計(jì)分為以下6個(gè)設(shè)計(jì)階段:需求分析階段-------邏輯設(shè)
計(jì)階段、物理設(shè)計(jì)階段、實(shí)施階段、運(yùn)行和維護(hù)階段。
9.下列程序的輸出結(jié)果是____o
main()
{chara[]="ABCDEFG";
char*cp=&a[7];
while(—cp>&a[0])putchar(*cp);
)
10.在關(guān)系數(shù)據(jù)庫(kù)中把數(shù)據(jù)表示成二維表,每一個(gè)二維表稱為【】。
二、單選題(10題)
11.設(shè)有定義“Charp[]={T,2,3},*q=p;",以下不能計(jì)算出一個(gè)char
型數(shù)據(jù)所占字節(jié)數(shù)的表達(dá)式是()。
A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[0])
12.二叉樹的第三層最少有個(gè)結(jié)點(diǎn)。
A.OB.lC.2D.3
13.已知字母A的ASCII代碼值為65,若變量kk為char型,以下不能正
確判斷出kk中的值為大寫字母的表達(dá)式是
A.kk>='A'&&kk<='Z'
B.!(kk>='A'||kk<='Z')
C.(kk+32)>=W&&(kk+32)<=2
D.isalpha(kk)&&(kk<91)
14.折半查找法的查找速度一定比順序查找法快()。
A.正確B.錯(cuò)誤
15.程序運(yùn)行后的輸出結(jié)果是()。
]社inchide<stdio.h>
mainO
{
intb[3][3]={0Il,2s0;ls2J0sL2},i,j,t=h
fbr(i=O;i<3;i++)
fbr(j=i;j<=i;j++)t+=b[i][b[j][i]];
printfr^6dn",t);
}
A.3B.4C.1D.9
16.在多媒體計(jì)算機(jī)系統(tǒng)中,不能用以存儲(chǔ)多媒體信息的是
A.光纜B.軟盤C.硬盤D.光盤
17.在下面棧的基本運(yùn)算中,不是加工型運(yùn)算的是
A.初始化B.進(jìn)棧C.退棧D.判棧空
18.若有以下定義和語句:
chars[10]="abcd!%*s2="\nl23\\";
Drintf("%d%d\n",strlen(sl),strlen(s2));
則輸出結(jié)果是()。
A.55B.105C.107D.58
19.以下敘述中正確的是()。
A.C程序中注釋部分可以出現(xiàn)在程序中任意合適的地方
B.花括號(hào)"(“和只能作為函數(shù)體的定界符
C.構(gòu)成C程序的基本單位是函數(shù),所有函數(shù)名都可以由用戶命名
D.分號(hào)是C語句之間的分隔符,不是語句的一部分
20.
(40)已知一個(gè)文件中存放若干工人檔案記錄,其數(shù)據(jù)結(jié)構(gòu)如下:
structa.?
{charnumber[100];
intage;
floatp[6];);
定義一個(gè)數(shù)組:structanumber[10];
假定文件己正確打開,不能正確地從文件中讀入10名工人數(shù)據(jù)到數(shù)組b中的是()o
A)fread(b,sizeofl[structa),10,fp);B)fbr(i=0;i<10;i-H-)
fread(b[i],sizeof(structa),l,fp);
C)fbr(i=0;i<10;i+4-)D)fbr(i=O;i<5;i-?-=2)
frcad(b+i,sizcof{structa),l,fp);fread(b+i9sezeof(stnicta),2,fp);
三、程序設(shè)計(jì)題(10題)
21.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方
案的項(xiàng)目中包含一個(gè)源程序文件progl.c。在此程序中,請(qǐng)編寫函數(shù)fun(),
其功能是找出一維整型數(shù)組元素中最大的值及其所在的下標(biāo),并通過形
參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。
主函數(shù)中x是數(shù)組名,n表示x中的元素個(gè)數(shù),max存放最大值,
index存放最大值所在元素的下標(biāo)。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花
括號(hào)中填入你編寫的若干語句。
試題程序:
#include<time.h>
#include<stdlib.h>
#include<stdio.h>
voidfun(inta[],intn,int*max,int*d)
(
}
voidmain()
(
inti,x[20],max,index,n=10;
srand((unsigned)time(NULL));
for(i=0;i<=n;i++)
(
x[i]=rand()%50;
printfC4%4d”,x[i]);
/*輸出一個(gè)隨機(jī)數(shù)組*/
printf(n\nH);
fun(xfnf&max,&index);
printf("Max=%5d,Index=%4d\n”,max,index);
)
22.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方
案的項(xiàng)目中包含一個(gè)源程序文件progl.c。在此程序中,編寫函數(shù)
fun(),它的功能是求小于形參n同時(shí)能被3與7整除的所有自然數(shù)之
和的平方根,并將其作為函數(shù)值返回。例如,若n為1000時(shí),程序輸
出應(yīng)為s=153.909064。注意:部分源程序在文件progl.c中。請(qǐng)勿改動(dòng)
主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填
入你編寫的若干語句。試題程序:
1#include<math.h>
2tinclude<stdio.h>
3doublefun(intn)
4{
5
靠}
7main()/*主函數(shù)?/
8{voidNONO();
w
9printf("s?%f\nrfun(1000));
10NONO();
篡)
12voidNONO()
13{/*本函數(shù)用于打開文件、輸入數(shù)據(jù)、調(diào)
用函數(shù)、榆出數(shù)據(jù)及關(guān)閉文件*/
FILE*fp,*wf;
inti,n;
doubles;
fp■fopen(win.datn,wrw);
18wf=fopen(Mout.datn,Hww);
19for(i=0;i<10;i++){
20fscanf(fpr,?%d",&n);
21s=fun(n);
22fprintf(wf,n%f\n",s);
23)
24fclose(fp);
25fclose(wf);
26
23.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方
案的項(xiàng)目中包含一個(gè)源程序文件progl.co在此程序中,編寫函數(shù)fun(),
其功能是將s所指字符串中除了下標(biāo)為奇數(shù)同時(shí)ASCII值也為奇數(shù)的字
符之外的其余所有字符全部刪除,字符串中剩余字符所形成的一個(gè)新字
符串存放在t所指的數(shù)組中。
例如,若s所指字符串的內(nèi)容為“ABCDEFG12345",其中字符A的
ASCII值為奇數(shù),但所在元素的下標(biāo)為偶數(shù),因此需要?jiǎng)h除;而字符1
的ASCII值為奇數(shù),所在數(shù)組中的下標(biāo)也為奇數(shù),因此不應(yīng)當(dāng)刪除,
其他依此類推。最后t所指數(shù)組中的內(nèi)容應(yīng)為“135”。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花
括號(hào)中填入你編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
voidfun(char*s,chart[])
(
)
main()
{
chars[100],t[100];
printf("\nPleaseenterstrings:");
scanfs);
fun(s,t);
printf("\nTheresultis:%
)
24.請(qǐng)編寫函數(shù)proc(),其功能是:計(jì)算并輸出下列多項(xiàng)式值。S=(1+1
/2)+(1/3+1/4)+...+(1/(2n-l)+1/2n)例如,若輸入10,
則輸出為S=3.5977400n的值要求大于1但不大于100。注意:部分
源程序給出如下。請(qǐng)勿改動(dòng)函數(shù)main()和其他函數(shù)中的任何內(nèi)容,
僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語句。試題程序:
夕includehj>
doubleproHintn)
iniBI
double
prmifcnt
?mproc<n)t
prmtfC**>)>
25.請(qǐng)編寫一個(gè)函數(shù)proc,它的功能是:求出1?m(含m)能被7或11
整除的所有整數(shù)放在數(shù)組a中,通過n返回這些數(shù)的個(gè)數(shù)。
例如,若傳給m的值為70,則程序輸出:
7111421222833354244495556636670
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括
號(hào)中填入所編寫的若干語句。
試題程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#defineN100
voidproc(intm,int*a,int*n)
{
}
voidmain
(
intarr[N],n,k;
system("CLS");
proc(70,arr,&n);
for(k=0;k<n;k++)
if((k+l)%20==0)//每行輸出20個(gè)數(shù)
{printf("%4d",arr[k]);
printf("\n");
)
else
printf("%4d",arr[k]);
printf("\n");
)
26.請(qǐng)編寫函數(shù)proc,該函數(shù)的功能是:將M行N列的二維數(shù)組中的
數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個(gè)數(shù)存放
在形參n所指的存儲(chǔ)單元中。
例如,若二維數(shù)組中的數(shù)據(jù)為
13233343
14243444
15253545
則一維數(shù)組中的內(nèi)容應(yīng)該是132333431424344415253545。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括
號(hào)中填入所編寫的若干語句。
試題程序:
#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[100]={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");
)
27.
請(qǐng)編寫一個(gè)函數(shù)voidproc(chara[],charbE3,intn),其功能是:刪除
一個(gè)字符串中指定下標(biāo)的字符。其中,a指向原字符串,刪除后的字符
串存放在b所指的數(shù)組中,n中存放指定的下標(biāo)。例如,輸入一個(gè)字符
串student,然后輸入5,則調(diào)用該函數(shù)后的結(jié)果為studet。注意:部分
源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,
僅在函數(shù)proc的花括號(hào)中填入所編寫的若干語句。試題程序:
#includeVstdlib.h>
#include<stdio.h>
#include<conio.h>
5defineN20
voidproc(chara[].charb[].intn)
voidmain()
《
charstr![N].str2[Nji
intn?
xystemC**C1-S*,)i
printf("Enterthesiring:\n")i
gets(strl)t
printf(*Enterthepositionofthestringdeleted:
*>I
scan!&n>i
proc(strl??1r2an)i
print!("Thenewstringis*%*\n".sir2>i
28.請(qǐng)編一個(gè)函數(shù)fun(char*str),該函數(shù)的功能是把字符串中的內(nèi)容逆
置。例如,字符串中原有的字符串為asdfg,則調(diào)用該函數(shù)后,串中的
內(nèi)容為gfdsa。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在
函數(shù)proc()的花括號(hào)中填入所編寫的若干語句。試題程序:
?Mtcludc<Mmg.
.MKUKWh2>
?ifirlvdr<M4KXk>
■Mm*NIM
voidItmCcliar?MY>
NMMI<)
HMM?N].
FILE?<nrti
pciiith*EIN?T?Mrwg??,.
pnatlc*TWongwoi3vwg..*>j
,i“s
pmn{<-TWvtracafwrwAf.%*>g
pvt?<a)a
?ircpy<a.*W?IRMB?!->a
l?M<a>i
Out■*fopettl4atW)i
(pciatf(ovi?0M?*?a)s
29.
請(qǐng)編寫一個(gè)函數(shù),用來刪除字符串中的所有空格。
例如,輸入asdafaaz67,則輸出為asdafaaz67o
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括
號(hào)中填入你編寫的若干語句。
試題程序:
/iwlude<stdiA.h>
#include<ctype.h>
#hiclude<conio.h>
vodfun(char*str)
}(
main。
fcharstr[81];
charMsgf]=°Inputastring:T,;
intn;
printf(Msg);gftt5(str);puts(atr);fun(str);
printfC****str:%&\nM,str);
I,
30.請(qǐng)編一個(gè)函數(shù)intfun(inta),它的功能是:判斷a是否是素?cái)?shù),若a是
素?cái)?shù),返回1;若不是素?cái)?shù),返回0°A的值由主函數(shù)從鍵盤讀入。
四、2.程序修改題(10題)
31.下列給定程序中函數(shù)fun()的功能是:計(jì)算n!。例如,給n輸入5,
則輸出120.000000。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<conio.h>
doublefun(intn)
{doubleresult=1.0;
/*************found**************/
ifn==0
return1.0;
while(n>l&&n<170)
/*************found**************/
result*=n—
returnresult;
)
main()
{intn;
printf("InputN:");
scanf("%d"&n);
printf("\n\n%d!=%lf\n\n",n,fun(n));
)
32.下列給定程序中,函數(shù)fun()的功能是:從字符串s中,刪除所有大
寫字母F。
請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
voidfun(char*s)
inti,j;
/*************found**************/
for(i=j=0;s[i]!='O';i++)
if(s[i]!=F)
/*************found**************/
s[j]=s[i];
sU]='\O';
)
main()
chars[80];
printf("\nEnterastring:");
gets(s);
printf("Theoriginalstring:");
puts(s);
fun(s);
printf("Thestringafterdeleted:");
puts(s);
printf("\n\n");
)
33.給定程序中,函數(shù)fun()的功能是:使數(shù)組中的元素的值增加10倍。
改正其中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).
試題程序:
#include<stdio.h>
#include<conio.h>
ihtm[10];
voidfun(void)
(
intj;
printf("Insubfuncaftercalling\n");
for(j=0;j<10;j++)
/******不不*不不不**不不不*不不不*不不********不不/
printf("%3d",m[j]*10);
)
)
main()
{inti;
printf("Inmainbeforecalling\n");
for(i=0;i<10;i++)
m[i]=i;
printf("%3d",m[i]);
fun();
printf("\nlnmainaftercalling\n");
for(i=0;i<10;i++)
printf("%3d",m[i]);
getch();
)
34.給定程序M0D11.C中函數(shù)fun的功能是:先從鍵盤上輸入一個(gè)3
行3列矩陣的各個(gè)元素的值,然后輸出主對(duì)角線元素之和。
請(qǐng)改正函數(shù)fun中的錯(cuò)誤或在橫線處填上適當(dāng)?shù)膬?nèi)容并把橫線刪除,使
它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
1?include<stdio.h>
2finclude〈string.h>
3voidfun()
4(
5inta[3][3]rsum;
6intj;
7
8
9printf("Inputdata:w);
10for(i-0;i<3;i+*)
11{for(j-0;j<3;j++)
12/**w******found**********/
wR
13scanf(%dra[i](jj);
14
15for(i,0;i<3;
16sum-sum*a(i)[i];
w,t
17printf(Sum-%d\nrsum);
18
19main()
20
21fun();
22
35.給定程序MODII.C中函數(shù)fun的功能是:把主函數(shù)中輸入的3個(gè)
數(shù),最大的放在a中,最小的放在c中,中間的放在b中。
例如,輸入的數(shù)為:551234,輸出結(jié)果應(yīng)當(dāng)是:a=55.0,b=34.0,
c=12.0o
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
linclude<stdio.h>
2voidfun(float*arfloat*b#float*c)
3(
4/**********found***?W?*???/
5float*k;
6if(*a<*b)
7{k?*a;*a-*b;*b?k;}
8/*****w****found******w***/
9if(*a>*c)
10{k-*c;*c?wa;*a-k;)
11if(*b<*c)
12{k-wb;*b-*c;*c-k;}
13)
14main()
15{floata,b,c;
16printf("Inputabc:R);scanf
《“mm&br?c);
w
17printf(a-%4.Ifrb-%4.If,c
H
-%4.1f\n\nra,b,c);
18fun(&a,&b,;
19printf(wa=%4.If,b■%4.If,c
-%4.1f\n\n"rarbrc);
20
36.下列給定程序中,函數(shù)fun()的功能是;將s所指字符串中的字母轉(zhuǎn)
換為按字母序列的后續(xù)字母(但Z轉(zhuǎn)化為A,z轉(zhuǎn)化為a),其他字符不
亦
又O
請(qǐng)改正函數(shù)fun()中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<ctype.h>
#include<conio.h>
voidfun(char*s)
/*************found**************/
{while(*s!='@')
{if(*s>='A'&*s<='z'||*s>='a'&&*s<='z')
{if(*s=='Z')*S='A';
elseif(*S=='z')*s-a';
else*s+=l;
/*************found**************/
(*s)++;
)
main()
{chars[80];
clrscr();
printf("\nEnterastringwithlength<80:\n\n");gets(s);
printf("\nThestring:\n\n");puts(s);
fun(s);
printf("\n\nTheCords:\n\n");puts(s);
37.給定程序MODH.C中函數(shù)fun的功能是:根據(jù)整型形參m,計(jì)算
如下公式的值。
V=-----------+------------+------------
lOO?lOO200?200300?300ni'm
例如,若m=2000,則應(yīng)輸出:0.000160。
請(qǐng)改正程序中的語法錯(cuò)誤,使它能計(jì)算出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
1finclude<stdio.h>
/…………found…………
3fun(intm)
4(doubley0,d
5inti;
6/…………found…………/
7for(i,100,i<?mri+=100)
8(d?(double)i*(double)i;
9yl.0/d;
10
11return(y);
12
13main()
14(intn=2000;
15printf("\nTheresultis%lf\n",
fun(n));
16}
38.以下程序可把輸入的十進(jìn)制數(shù)以十六進(jìn)制數(shù)的形式輸出。
請(qǐng)?jiān)跈M線上填上適當(dāng)?shù)膬?nèi)容并把橫線刪除,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序;
main()
charb[17]={"0123456789ABCDEF"};
intc[64],d,i=0,base=16;
longn;
printf("Enteranumberin'');
scanf("%ld",&n);
do{
/*****************f^ound****************/
c[i]=;i++;n=n/base;}
while(n!=0);
printf("Transmitenewbase:\n");
for(—i;i>=0;—i)
/***************'^Qurid*******************/
{d=c[i];printf("%c",b..);)
printf("\n");
39.給定程序中,函數(shù)fun()的功能是:使數(shù)組中的元素的值縮小5倍。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<conio.h>
floatm[10];
/*************found**************/
intfun(void)
(
intj;
printf("Insubfuncaftercalling\n");
for(j=O;j<10;j++)
/*************found**************/
print("%f",m[j]%5);
)
main()
inti;
printf("Inmainbeforecalling\n");
for(i=0;i<10;i++)
(
m[i]=i+20;
printf("%f",m[i]);
)
fun();
printf("\nlnmainaftercalling\n");
for(i=O;i<10;i++)
printf("%f",m[i]/5);
40.下列給定程序中函數(shù)fun()的功能是;從低位開始取出長(zhǎng)整型變量s
中奇數(shù)位上的數(shù),依次構(gòu)成一個(gè)新數(shù)放在t中。例如,當(dāng)s中的數(shù)為
4576235時(shí),t中的數(shù)為4725。
請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<conio.h>
/************found*************/
intfun(longS,long*t)
longsi=10;
*tiS%10;
while(s>0)
/*************found*************/
s=s%100;
*t=S%10*Sl+*t;
sl=sl*10;
)
)
main()
(
longS,t;
clrscr();
printf("\nPIeaseenterS:");
scanf("%ld”,&s);
fun(S,&t);
printR'Theresultis:%ld\n",t);
)
五、程序改錯(cuò)題(2題)
41.下列給定程序中,函數(shù)ptoc的功能是:利用插入排序法對(duì)字符串
中的字符按從小到大的順序進(jìn)行排序。插入法的基本方法是:先對(duì)字
符串中的頭兩個(gè)元素進(jìn)行排序,然后把第3個(gè)字符插入前兩個(gè)字符
中,插入后前3個(gè)字符依然有序;再把第4個(gè)字符插入前三個(gè)字符
中,待排序的字符串已
在主函數(shù)中賦予。
請(qǐng)修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)
構(gòu)。
試題程序:
#include<strin9.h>
#include<stdiO.h>
#defineM80
voidproc(char*arr)
{inti,j,n;charch;
n=strlen(arr):
for(i=l;i<n;i++)
//****found****
{c=arr[i];
j=i-l;
while((j>=o)&&(ch<arr[j]))
(
arr[j+l]=arr[j];
j-;
)
arr[j+l]=ch;
)
)
voidmain
(
chara[Ml="QWERTYUIOPASDFGHJKLMNBVCXZ";
printf("Theoriginalstring:%s'n”,a);
proc(a);
printf("Thestringaftersortin9:
%s\n\n",a);
42.下列給定的程序中,函數(shù)proc()的功能是:計(jì)算并輸出k以內(nèi)最大
的10個(gè)能被15或18整除的自然數(shù)之和,k的值由主函數(shù)傳人。若k
的值為800,則函數(shù)的值為7605。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main。函數(shù),不得增行或刪行,也不得更改程序的結(jié)
構(gòu)。
試題程序:
giurludcVcodio.h>
giticludr<sldUKh>
mtprodmtk)
■m-<>?ji
WX(卜>Id
//????found????
k——?
//????????
returnmi
)
voidmmnC>
(
?ynteni(*CLS-)i
pnfid<eMd\ft?.proe《800》>,
六、操作題(2題)
43.下列給定程序的功能是:讀入一個(gè)整數(shù)n(2<=n<=5000),打印
它的所有為素?cái)?shù)的因子。例如,若輸入整數(shù)1234,則應(yīng)輸出:2,
6170
請(qǐng)修改程序中的錯(cuò)誤,使程序能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不能增選或刪行,也不能匿改程序的結(jié)
構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
//****found****
Prime(intm);
(
intj,P;
p=l;
〃****found****
for(j=2;j++)
if!(m%j)
(
p=0;
break;
)
retum(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");
)
44.請(qǐng)編一個(gè)函數(shù)voidproc(intttEM][N],intpp[N]),tt指向一"個(gè)M行
N列的二維數(shù)組,求出二維數(shù)組每行中最大元素,并依次放入pp所指
的一維數(shù)組中。二維數(shù)組中的數(shù)已在主函數(shù)中給出。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括
號(hào)中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#defineM3
#defineN4
voidproc(intttrM3rN]。intpp[N])
voidmain
intstr[M][Nl={{34,56,84,78},
{23,84,93,12),
{28,38,39,93}};
intp[Nl,i,j,k;
systemC'CLS");
printf("Theriginaldatais:\n");
for(i=0;i<M;i++)
(
for(j=0;j<N;j++)
printf("%6d",str口皿);
printf("\n");
)
proc(str,p);
printf("\nTheresultis:\n");for(k=0:k<M;k++)
printf("%4d",p[k]);
printfC'n");)
參考答案
1.0111201112解析:在主函數(shù)中定義了整型變量fl和f2,并把其值
賦為。和1,在屏幕上輸出。然后在第一次運(yùn)行for循環(huán)語句時(shí),變量f
的值等于1,把其值輸出,把變量fl的值。賦給變量位,變量f的值1
賦給n,在執(zhí)行第二次for循環(huán)語句時(shí),變量f的值等于1,把此值輸出。
然后再把變量fl的值1賦給變量f2,變量f的值1賦給fl,在執(zhí)行第
三次for循環(huán)語句時(shí),變量f的值等于2,把此值輸出。所以程序運(yùn)行后
的結(jié)果為。1112。
2.數(shù)據(jù)存儲(chǔ)數(shù)據(jù)存儲(chǔ)
3.9292解析:本題的主函數(shù)中首先定義了一個(gè)4行4列的二維數(shù)組,然
后執(zhí)行一個(gè)while循環(huán),該循環(huán)中又嵌套了一個(gè)do-while循環(huán)。先看
while循環(huán),該循環(huán)通過i++的值來判斷是否結(jié)束循環(huán),當(dāng)i++的值為4
的時(shí)候結(jié)束循環(huán),當(dāng)i=0時(shí),執(zhí)行while的循環(huán)體,顯然if語句條件不
滿足不執(zhí)行,接著讓j=0,然后執(zhí)行do-while循環(huán)體,不難看出do-while
循環(huán)的功能是將第i+1行的所有元素加起來,所以這時(shí)s的值為
s=a[l][0]+a[l][l]+a[l][2]+a[l][3]=26^i=j±i+l=2,if后面括號(hào)里的
表達(dá)式的值為真執(zhí)行后面的continue語句,結(jié)束該次循環(huán);當(dāng)i=2時(shí),
i加1變?yōu)?,把第3+1行的所有元素的值加到s上,此時(shí)
s=s+a⑵[0]+a[2][l]+a⑵⑵+a[2][3]=92,當(dāng)i=3時(shí),3+1=4,if后面括號(hào)里
的表達(dá)式的值為真執(zhí)行后面的continue語句,結(jié)束該次循環(huán),當(dāng)i=3時(shí),
if后面括號(hào)里的表達(dá)式的值為真執(zhí)行后面的continue語句,結(jié)束該次循
環(huán)當(dāng)i=4時(shí)while循環(huán)結(jié)束,所以最后輸出的s的值為92o
4.-1*sn-1*sn解析:根據(jù)公式可知,第一處應(yīng)填-1;由于計(jì)算結(jié)果要
通過形參指針sn傳回,所以第二處應(yīng)填*sn。
5.64KB
6.1020010200解析:程序中(a%b<l)||(a/b>1)的運(yùn)算順序?yàn)橄人憷ㄌ?hào)
一算術(shù)運(yùn)算符一關(guān)系運(yùn)算符t邏輯運(yùn)算符。首先計(jì)算a%b=10,a/b=O,
因?yàn)閍%b<l為假(0),a/b>l也為假(0),所以整個(gè)表達(dá)式的結(jié)果為假
(0),最后輸出a,b,c的值為10200。
7.136136解析:程序中定義了一個(gè)遞歸調(diào)用函數(shù)fun。程序運(yùn)行時(shí),
先把實(shí)參6傳給形參。if語句中6/2>0成立,執(zhí)行fun(x/2),即fun(3),
同時(shí)輸出x的值6;再判斷if條件,3/2>0成立,再執(zhí)行fun(x/2),即
fun(l),同時(shí)輸出x的值3;此時(shí)1/2>0不再成立,輸出1。而遞歸調(diào)用
的輸出順序是相反的,故輸出結(jié)果為136。
8.概念設(shè)計(jì)階段(數(shù)據(jù)庫(kù)概念設(shè)計(jì)階段)概念設(shè)計(jì)階段(數(shù)據(jù)庫(kù)概念設(shè)計(jì)階
段)
9.GFEDCB。GFEDCBO解析:開始指針cp指向字符串結(jié)束標(biāo)志,在
循環(huán)中,cp依次向前移動(dòng),當(dāng)打印出第二個(gè)字符后,cp指向第一個(gè)字
符,循環(huán)判斷條件不滿足,退出循環(huán),因此,只打印出第一個(gè)字符以后
的字符的逆序列。
10.關(guān)系或一個(gè)關(guān)系關(guān)系或一個(gè)關(guān)系解析:在關(guān)系數(shù)據(jù)庫(kù)中,把數(shù)據(jù)表
示成二維表,而一個(gè)二維表就是一個(gè)關(guān)系。
11.A
根據(jù)題目中的定義可知,“sizeof(p)”計(jì)算的是數(shù)組p中所有元素所占用
的字節(jié)數(shù),而不是char型數(shù)據(jù)所占的字節(jié)數(shù)。故本題答案為A選項(xiàng)。
12.B
13.B解析:C語言的字符以其ASCII碼的形式存在,所以要確定某個(gè)字
符是大寫字母,只要確定它的ASCII碼在A和Z之間就可以了,選項(xiàng)A)和
C)符合要求。函數(shù)isalpha用來確定一個(gè)字符是否為字母,大寫字母的
ASCII碼值的范圍為65到90,所以如果一個(gè)字母的ASCII碼小于91,那
么就能確定它是大寫字母。
14.B
15.B
[解析]每次內(nèi)循環(huán)只循環(huán)一-次就結(jié)束,第一次外循環(huán)時(shí)t=t+b[][0][]=
l+b[0][0]=1+0=1;第二次外循環(huán)時(shí)t=t+b[l][b[l][l]]=l+b[l][l]=l+l=2;
第三次外循環(huán)時(shí)t=t+b[][2][]=2+b⑵⑵=2+2=40
16.A
解析:光纜是傳輸多媒體信息的通道,不能用以存儲(chǔ)多媒體信息。
17.D
18.A
\\n和\\\\分別為轉(zhuǎn)義字符,各占據(jù)一個(gè)字符的位置。
19.A解析:/*與*/之間的信息稱為注釋信息,在C語言中,允許在任何
能夠插入空格符的位置插入注釋,但C語言的注釋不能進(jìn)行嵌套,故選
項(xiàng)A正確:在C語言中,函數(shù)體是從花括號(hào){開始,到花括號(hào)}結(jié)束。但
沒有規(guī)定花括號(hào){和}只能作為函數(shù)體定界符,故選項(xiàng)B錯(cuò)誤;選項(xiàng)C中
前半句是正確的,C程序由一個(gè)或多個(gè)函數(shù)所組成,但不是所有的函數(shù)
都由用戶自己命名,有些函數(shù),比如主函數(shù)main()就不能由用戶來命名,
故選C不正確;在?語言中明確規(guī)定每條語句以分號(hào);結(jié)束,分號(hào)是語
句不可缺少的一部分,故選項(xiàng)D不正確。所以,4個(gè)選項(xiàng)中選項(xiàng)A符合
題意。
20.B
21.voidfun(inta[],intn,int*max,int*d)
int1;
*max=a[0];
*d=0;
l;i<=""p="">
(
i/f*max<a[i])
max=a[i];*d=i;}
fun()函數(shù)形參max用來存放最大值,形參d用來存放最大值的下標(biāo)。由
于它們都是指針變量,因此在引用所指向的變量時(shí),要進(jìn)行指針運(yùn)算。
循環(huán)語句用來遍歷數(shù)組元素,找出最大值。條件語句用來判斷該數(shù)組元
素是否最大。
22.1doublefun(intn)
doublesum=0.0;inti;
for(i=21;i<=n;i++)if((i%3==0)&&(i%7==0))sum+=i;
retumsqrt(sum);
本題考查算術(shù)運(yùn)算的算法。首先利用一個(gè)for循環(huán)判斷小于n且能同時(shí)
被3和7整除的整數(shù),并將滿足條件的整數(shù)累加到sum。之后調(diào)用
Sqrt()函數(shù)計(jì)算sum的平方根,并將其作為函數(shù)的返回值返回。
23.voidfun(char*s,chart[])
{
inti,j=0,n;
n=strlen(s);
for(i=0;i<=""p="">
if((i%2)&&(s[i]%2))
(
t[j++]=s[i];/*將下標(biāo)為奇數(shù)同時(shí)ASCII值為奇數(shù)的字符放入數(shù)組
t中*/
}
中]='\。';/*最后加上字符串結(jié)束標(biāo)志*/
本題要求保留下標(biāo)為奇數(shù)同時(shí)ASCII值也為奇數(shù)的字符,其余的所有字
符都刪除。將S字符串中,滿足條件的字符存放到字符串t中。if的條
件表達(dá)式為:if(i%2!=0&&s[i]%2!=0)o
24.
【解析】首先定義一個(gè)變量來存放表達(dá)式的和,根據(jù)題目中提供的多項(xiàng)
式,通過n次循環(huán)來求出n項(xiàng)的和。最后把所求得的和返回到主函數(shù)當(dāng)
中。
25.\n\tvoidproc(intm,int*a,int*n)
\n{
\ninti,j=0;
\nfor(i=l;i<=m;i++)//進(jìn)行m次循環(huán)
\nif(i%7==0||i%U==0)//能被7或11整除的所有整數(shù)
\na[j++]=i;//符合條件的數(shù)放在數(shù)組a中
\n*n=j;//返回這些數(shù)的個(gè)數(shù)
\n}
\n【解析】本題需要先判斷1?m每一個(gè)整數(shù)能否被7或11整除,然
后將符合條件的整數(shù)放在數(shù)組a中,最后將符合條件的數(shù)的個(gè)數(shù)通過
形參n返回主函數(shù)。\n
26.\r\n\tvoidproc(int(*s)[10],int*b,int*n,intmm,intnn)
(
inti,j,k=0;
for(i=0;i<mm;i++)//i是表示其行的下標(biāo)
for(j=0;j<nn;j++)//j是表示其列的下標(biāo)
b[k++]=s[i][j];//把其放到b的一維數(shù)組中
*n=k;//把b數(shù)組的長(zhǎng)度通過形參n傳回到主函數(shù)中
)
【解析】要將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一
維數(shù)組中,可以通過首先行循環(huán),然后列循環(huán)取出二維數(shù)組中的每一
個(gè)元素,并將其放入一維數(shù)組中。最后,將一維數(shù)組的長(zhǎng)度通過形參
返回到主函數(shù)當(dāng)中。
27.
【解析】按照題目中的要求,刪除一個(gè)字符串中指定下標(biāo)的字符。首先,
將指定下標(biāo)之前的字符放入字符數(shù)組b中,然后將指定下標(biāo)之后的字符
也放入字符數(shù)組b中,最后為新的字符數(shù)組b添加結(jié)束符。
28.
【解析】在fun()函數(shù)中,首先求行字符串的長(zhǎng)度,然后通過循環(huán)進(jìn)行字
符交換。要注意的是,如果字符串長(zhǎng)度是奇數(shù),則最中間的元素在逆置
前后的位置是沒有改變的。
29.[答案]
voidfiin(char?str)
{inti=0;
char*p=?str;
while(*p『遍歷字符串?/
.
{
/*如果當(dāng)前元素不為空格*/
即p!二
{??
/*將當(dāng)前元素保存到西中*/
sti(ij=*p;
i++;
)
P++;
}
6用尸\0V*字符串最后加上結(jié)束標(biāo)記符M力
)
[解析]
題目要求刪除空格,也就是重新保存空格以外的其他字符。通過循環(huán)刪
除字符串中的每一個(gè)空格,將非空格字符進(jìn)行重新保存。
30.\n#include"stdio.h"
\nintfun(inta)
\n{intI;
\nif(a==2)return1;1=2;
\nwhile((a%I)!=OI<=sqrt((float)a))
\nl++;
\nif(a%I==O)
\n{printf("%disnotaprime!,5,a);
\nretum0;}
\nprintf(t4%disaprime!,5,a);
\nretum1;}
\nmain
\n{intx;
\nprintf("\\npleaseenteranumber:^^);
\nscanf("%d",&x);
\nprintf("%d\\n”,ftm(x));}
\n
31.(1)錯(cuò)誤:ifn==0正確:if(n==0)⑵錯(cuò)誤:result*=n—正確:result*=n-
-;(1)錯(cuò)誤:ifn==0正確:if(n==0)\r\n(2)錯(cuò)誤:result*=n—正確:result*=n-
-;解析:在做這道題之前,我們首先應(yīng)該明白一個(gè)數(shù)學(xué)上的概念,一
般判卷人員先要執(zhí)行程序,如果結(jié)果正確,得滿分,否則錯(cuò)一個(gè)扣分,
再錯(cuò)再扣,本題考查5!即51=5x4x3x2x1=120,要求輸出double型結(jié)
果。
32.(1)錯(cuò)誤:for(i=j=0;s[i]!='0';i++)正確:for(i=j=0;s[i]!'\0';i++)(2)錯(cuò)誤:
s[j]=s[i]正確:s[j++]=s[i];⑴錯(cuò)誤:for(i=j=0;s[i]!=O升+)正確:
for(i=j=0;s[i]!'\\01;i++)\r\n(2)錯(cuò)誤:s|j]=s[i]正確:s[j++]=s[i];解析:錯(cuò)
誤1:本題考查是否掌握字符串的最后一個(gè)字符是結(jié)束標(biāo)志符錯(cuò)誤
2:在循環(huán)中,新字符串的下標(biāo)也要遞增,這樣最終產(chǎn)生一個(gè)新的字符
串。
33.錯(cuò)誤:printf("%3d"m[j]*10);正確:printf("%3d"m[j]=m[j]*10錯(cuò)誤:
printf('%3d'm[j]*10);正確:printf(%3cf解析:本題考查
全局變量相關(guān)知識(shí)。該題程序中的fun()沒有參數(shù)輸入,但數(shù)組皿⑼為
全局變量,故可在fun()函數(shù)中使用,fun()函數(shù)對(duì)數(shù)組m的操作可以反
映到主函數(shù)的輸出結(jié)果中。
34.(l)sum=0(2)scanfr%d,,&a[i][j]);(l)sum=O(2)scanf(“%d,“,&
a[i][j]);解析:該題中函數(shù)功能是計(jì)算元素的和。從已給定源程序的
main主函數(shù)開始入手,然后通過“fUn();”語句調(diào)用fun函數(shù)的功能。
35.(l)floatk;(2)if(*a<*c)(l)floatk;(2)if(*a<*c)解析:本題中函數(shù)
的功能是把主函數(shù)中輸入的3個(gè)數(shù),最大的放在a中,最小的放在c中。
對(duì)三個(gè)數(shù)進(jìn)行兩兩比較,實(shí)現(xiàn)函數(shù)功能。
36.⑴錯(cuò)誤:whil
溫馨提示
- 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. 人人文庫(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 44779-2024國(guó)際貿(mào)易業(yè)務(wù)流程規(guī)范購(gòu)買-運(yùn)輸-支付參考數(shù)據(jù)模型
- pwc -引領(lǐng)未來的數(shù)字化領(lǐng)導(dǎo)力模型
- 海-氣相互作用和環(huán)流異常(講義)-2025年高考地理一輪復(fù)習(xí)
- 2024年文教體育用品項(xiàng)目投資申請(qǐng)報(bào)告代可行性研究報(bào)告
- 2023年炮塔式銑床資金籌措計(jì)劃書
- 強(qiáng)化管理-有效教育-交通安全-常抓不懈1
- 經(jīng)濟(jì)數(shù)學(xué)-教學(xué)日歷
- Python程序設(shè)計(jì)實(shí)踐- 習(xí)題及答案匯 張銀南 ch01-21 Python程序設(shè)計(jì)實(shí)驗(yàn)的目的與要求- 中文詞云
- 關(guān)于青春無悔演講稿范文分享(33篇)
- 設(shè)計(jì)單元教學(xué)計(jì)劃
- DM1204-B調(diào)音臺(tái)
- 干膜介紹及干膜工藝詳解實(shí)力干貨
- 課題初中數(shù)學(xué)作業(yè)優(yōu)化設(shè)計(jì)的研究研究報(bào)告
- 67種甲類中成藥最高零售價(jià)格表
- 世界各國(guó)國(guó)家標(biāo)準(zhǔn)制定機(jī)構(gòu)
- 壓路機(jī)合格證及檢驗(yàn)報(bào)告(共3頁)
- Maxsurf 的中文使用手冊(cè)(船舶設(shè)計(jì)建造軟件)
- 《園冶》全文
- 2號(hào)表-天津市基本醫(yī)療保險(xiǎn)住院醫(yī)療費(fèi)申請(qǐng)支付審核單
- 留守兒童成長(zhǎng)檔案(精編版)
- 單位對(duì)個(gè)人教育教學(xué)情況定性綜合分析
評(píng)論
0/150
提交評(píng)論