版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2021年湖南省衡陽(yáng)市全國(guó)計(jì)算機(jī)等級(jí)考試
C語(yǔ)言程序設(shè)計(jì)真題(含答案)
學(xué)校:班級(jí):姓名:考號(hào):
一、2.填空題(10題)
1.在最壞情況下,冒泡排序的時(shí)間復(fù)雜度為【】。
2.問(wèn)題處理方案的正確而完整的描述稱(chēng)為o
3.下列程序的輸出結(jié)果是____o
#include<stdio.h>
main()
{intx=10,y=10,i;
for(i=0;x>8;y=++)
printf("%d%d",X-,y);
}
4.數(shù)據(jù)庫(kù)保護(hù)分為:安全性控制并發(fā)性控制和數(shù)據(jù)的恢復(fù)。
5.以下程序運(yùn)行時(shí),若從鍵盤(pán)輸入:102030〈回車(chē)〉,輸出的結(jié)果是
[]o
#include<stdio.h>
main()
{inti=0,j=0,k=0;
scanf("%d%*d%d",&i,&j,&k);
prinff("%d%d%d\n",i,j,k);
6.在一個(gè)容量為25的循環(huán)隊(duì)列中,若頭指針front=16,尾指針rear=9,
則該循環(huán)隊(duì)列中共有【】個(gè)元素。
7.以下程序的輸出結(jié)果是()。#include<stdio.h>voidmain(){intf,
fl,f2,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");}
8.下列程序能將字符串si中的所有與字符串strl相同的子串替換成字
符串sb2,并將替換后的新串存于字符數(shù)組s2中。
#include<stdio.h>
voidreplace(s1,s2,str1,str2)
char*sl,*s2,*strl,*str2;
{char*t0,*tl,*t2,*x,*y;
x=sl;y=s2;
while([])
(
for(tO=sl,tl=strl;((*tl!='\O'&&[];tO++,tl++);
if(*tl!='\O')*s2++=[];
else
{for(tl=str2;*tl!='\0';)*s2++=【];
【】;
*s2='\0';
main()
{staticcharsl[]="abcdefababcdabab.",s2125];
replace(si,s2,"abc","XYZ");
printf("%s\n",s2);
}
9.若變量n中的值為24,則prnt函數(shù)共輸出【】行。
voidprnt(intn,intaa[])
{inti;
for(i=1;i<=n;i++)
{printf("%6d",aa[i]);
if!(i%5))printf("\n");
)
printf("\n");
}
10.軟件工程研究的內(nèi)容主要包括:【】技術(shù)和軟件工程管理。
二、單選題(10題)
1L在下列排序算法中,在待排序的數(shù)據(jù)表已經(jīng)為有序時(shí),花費(fèi)時(shí)間反而
最多的是0
A.希爾排序B.堆排序C.冒泡排序D.快速排序
12.
(14)若變量已正確定義并賦值,則以下符合C語(yǔ)言語(yǔ)法的表達(dá)式是()。
A)a=a+7;B)a=7+b+c,a++
C)int(12.3%4)D)a=a+7=c+b
13.插入和刪除只能在一端進(jìn)行線(xiàn)性表,稱(chēng)為0。
A.隊(duì)列B.循環(huán)隊(duì)列C.棧D.循環(huán)棧
14.
(33)有以下程序:
#include<stdio.h>
/include"string.h"
voidfun(char*s[],intn)
(
charij;
fbr(i=K);i<n-l;i4-+)
for(j=i+ly<ny-^+)
if(strlen(s[i])>strlen(s[j])){t=s[i];s[i]=s[j];sO]=t;}
main()
char*ss[]={HbccM,Hbbcc1V,xyn,naaaacc,1/,aabccH};
,,M
fun(ss,5);printf(%s,%s\n,ss[0]>ss[4]);
程序的運(yùn)行結(jié)果是()o
A)xy,aaaaccB)aaaacc,xyC)bcc,aabccD)aabcc.bcc
15.設(shè)有定義“struct{charmark[12];intnuml;doublenum2;}tl,t2;”,若
變量均已正確賦初值,則下列語(yǔ)句中錯(cuò)誤的是()。
A.tl=t2;
B.t2.numl=tl.numl;
C.t2.mark=tl.mark;
D.t2.num2=tl.num2;
16.
(12)若有以下定義和語(yǔ)句:
inta=010,b=0x10,c=10;
printR"%d,%d,%d\n",a,b,c);
則輸出結(jié)果是().
A)8,10,10B)10,10,10C)8,8,10D)8,16,10
17.有以下程序
#include<stdio.h>
#include<string.h>
typedefstrllct{charname[9];charsex;floatscore[2];}STU;
STUf(STUa)
{STUb={"Zhao",'m',85.0,90.0);inti;
strcpy(aname,b.name);
sex:b.sex;
for(i=0;i<2;i++)a.score[i]=b.score[i];
returna;
)
main
{STUc="Qian",'f,95.0,92.0},d;
d=f(c).printf("%s,%c,%2.Of,%2.Of",d.Name,d.sex,
d.score[0],d.score[l]);
)
程序的運(yùn)行結(jié)果是()。
A.A.Qian,f,95,92
B.Qian,m,85,90
C.Zhao,m,85,90
D.Zhao,f,95,92
18.下列選項(xiàng)中非法的字符常量是()。
A.'\t'B.'\039'C.','D.'\n'
19.設(shè)x=011050,則x=x&01252的值是()。
A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
20,有以下程序:#include<stdio.h>#include<stdio.h>main(){chare[6];
inti=0;for(;j<6;c[i]=getchar(),i++);for(i=0;i<6;i++)putchar(c[i]);
printf("\n");}如果從鍵盤(pán)上輸入:ab<回車(chē)>c<回車(chē)>def(回車(chē)>則輸
出結(jié)果為O
A.abcdefB.abedC.abcdD.abcdef
三、程序設(shè)計(jì)題(10題)
21.
請(qǐng)編寫(xiě)函數(shù)proc(),該函數(shù)的功能是:將M行N列的二維數(shù)組中的數(shù)
據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個(gè)數(shù)存放在形
參n所指的存儲(chǔ)單元中。例如,若二維數(shù)組中的數(shù)據(jù)為:13233343
1424344415253545則一維數(shù)組中的內(nèi)容應(yīng)該是1323334314243444
15253545o注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和
其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫(xiě)的若
干語(yǔ)句。試題程序:
gincludeVcuHo.b>
roadprar(im(?nn?b?ii>t?n?mtmm-aitrwi
voidtBftint>
iott33.33?a?33)?(,4.44?44.44).
(53.55?55?55?i?i*
mt4100],<0)?n-0?
prtfM(<"ThenuitriM:\na>i
for<imOiiV3ii+?)
forif?,
pni?t((-S3d*??rr{i'?)])!
priRih?
prorqarr???&n?3?4).
pnnth*TheAarray
loc(iMOii^niI*—)
priatf<*%3d.?4[?]
pnntf<*\n\nw>t
22.請(qǐng)編寫(xiě)函數(shù)proc(),該函數(shù)的功能是:計(jì)算n門(mén)課程的平均分,計(jì)
算結(jié)果作為函數(shù)值返回。例如,有6門(mén)課程的成績(jī)是90.5,72,80,
61.5,55,60,則函數(shù)的值為69.83o注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的
花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:
若includeVMdio.h>
floatproc(float?a?intn)
voidmain()
<
float弄core[30jH<90.5?72.80?61?5.55.6O).
aven
aver=proc(score?6))
printf("XnAveragcscoreis:%5.2f\n".aver)i
23.使用VC++2010打開(kāi)考生文件析下progl中的解決方案。此解決方案
的項(xiàng)目中包含一個(gè)源程序文件progl.c。在此程序中,請(qǐng)編寫(xiě)函數(shù)fun(),
tt指向一個(gè)M行N列的二維數(shù)組,求出二維數(shù)組每列中值最大的元素,
并依次放入PP所指的一維數(shù)組中。二維數(shù)組中的元素已在主函數(shù)中給
出。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花
括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。
試題程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#defineM3
#defineN4
voidfun(inttt[M][N],intpp[N])
(
}
voidmain()
(
intt[M][N]={{68,32,54,12],{14,24,88,58},{42,22,44,56}};
intp[N],i,j,k;
ystem(“CLS”);
printff'Theoriginaldatais:\n");
for(i=0;i<=""p="">
(
for(j=0;j<=""p="">
printf("%6d”,t[i][j]);
printf("\n"n);
fun(t,p);
printf("\nTheresultis:\n^^);
for(k=0;k<n;k++)<p=""x/n;k++)<>
printf("%4d'',p[k]);
printfC^\n^^);
)
24.請(qǐng)編寫(xiě)函數(shù)proc(),其功能是:計(jì)算并輸出下列多項(xiàng)式值。S=(1+1
/2)+(1/3+1/4)+...+(1/(2n-l)+1/2n)例如,若輸入10,
則輸出為S=3.597740。n的值要求大于1但不大于100。注意:部分
源程序給出如下。請(qǐng)勿改動(dòng)函數(shù)main()和其他函數(shù)中的任何內(nèi)容,
僅在函數(shù)proc()的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:
sinciixlcV
doubleproc<mtn)
votd>
iniBI
double
prviuRHi
ucanH,*d*?&■h
*mproc(n)i
pnnifC*\n??Sf\n*?a)?
25.規(guī)定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫(xiě)函數(shù)fun,其功能是:
除了字符串前導(dǎo)的。號(hào)之外,將串中其他*號(hào)全部刪除。在編寫(xiě)函數(shù)時(shí)不
得使用C語(yǔ)言提供的字符串函數(shù).
例如.字符串中的內(nèi)容為「???.A.BC.DEF?.............................”.*除后.字符串中的內(nèi)容應(yīng)當(dāng)
是:??*??ABCDEFG”.
注意:部分那程序在文件PR0G1.C中。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。
tindude<stdio.h>
voidfim(chAr?a)
main()
|chvs[81];voidNONO();
pnntf("Enterastring:\n");gete(s);
pnntf("Thestringafterdeleted:\n");puts(s)?
NONOO;
I
voidNONO()
1/?本南數(shù)用于打開(kāi)文件,幅入數(shù)據(jù).利用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。?/
FILE?in.?out;
izrti;chars[81];
in=fopen("in.dat\-r");
outsibpen("out.dat*/w*);
for(i=0;i<10;i??)
I
Hn
bcanf(int%8ts);
^nntf(out,M%a\n",?);
I
fdme(in);
(doaeCaut);
26.使用VC++2010打開(kāi)考生文件夾下progl中的解決方案。此解決方
案的項(xiàng)目中包含一個(gè)源程序文件progl.c。在此程序中,請(qǐng)編寫(xiě)一個(gè)函
數(shù)fun(),該函數(shù)的功能是將大于整數(shù)m且緊靠m的k個(gè)素?cái)?shù)存入所
指的數(shù)組中。例如,若輸入17、5,則應(yīng)輸出19、23、29、31、37。注
意:部分源程序在文件progl.c中。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中
的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題
程序:
1tinclude<conio.h>
2#include<stdio.h>
3linclude<stdlib.h>
4voidfun(intm,intk,intxx[])
5(
6
71
8voidmain()
9(
10FILE?wf;
IIintmrn,zz[1000];
12system(MCLSn);
13printf(M\nPleaseentertwoin-
或tegers:M);
14scanf(w%d%d,\&m,&n);
■Kfun(mrn,zz);
16for(m=0;m<n;m++)
17printf(n%d”,zz[m]);
18printf(w\n");
19//
20wf-fopen("out.dat*\nwM);
21fun(17r5rzz);
22for(m=0;m<5;m++)
H
23fprintf(wfr%d",zz[m]);
flEfclose(wf);
■■//
■}
27.使用VC++2010打開(kāi)考生文件夾下progl中的解決方案。此解決方案
的項(xiàng)目中包含一個(gè)源程序文件progl.c。在此程序中,規(guī)定輸入的字符串
中只包含字母和*號(hào)。請(qǐng)編寫(xiě)函數(shù)其功能是使字符串的前導(dǎo)*號(hào)不得多于
n個(gè),若多于n個(gè),則刪除多余的*號(hào);若少于或等于n個(gè),則不做處
理。字符串中間和尾部的*號(hào)不刪除。
例如,字符串中的內(nèi)容為“*******A*BC*DEF*G****”,若n的值為
4,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是“****A*BC*DEF*G****”;若n
的值為8,則字符串中的內(nèi)容仍為“*******A*BC*DEF*G****”。n的
值在主函數(shù)中輸入。在編寫(xiě)函數(shù)時(shí),不得使用C語(yǔ)言提供的字符串函
數(shù)。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花
括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。
試題程序:
#include<stdio.h>
#include<conio.h>
voidfun(char*a,intn)
(
)
voidmain()
(
chars[81];intn;
printf("Enterastring:\n,5);
gets(s);
printf("Enter
scanf("%d”,&n);
fun(s,n);
printf("Thestringafterdeleted:\n^^);
puts(s);
28.請(qǐng)編寫(xiě)函數(shù)proc(),它的功能是計(jì)算:s=(In(1)4-ln(2)+In(3)
4-...+ln(m))0.5在C語(yǔ)言中可調(diào)用log(n)函數(shù)求In(n)o例如,
若nl的值為30,則proc()函數(shù)值為8.640500o注意:部分源程序
給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函
數(shù)proc()的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:
UincherVttdbk.h>
叁includeVefito.
,includeh>
=includrVaih,h>
doubleprocCmnm)
)
voediiMunl>
prmtf(*Xf\n*?proc(30>>i
29.使用VC++2010打開(kāi)考生文件夾下progl中的解決方案。此解決方
案的項(xiàng)目中包含一個(gè)源程序文件progl.c。在此程序中,請(qǐng)編寫(xiě)函數(shù)
fun(),它的功能是求出能整除x且不是偶數(shù)的整數(shù),并將這些整數(shù)按從
小到大的順序放在PP所指的數(shù)組中,總個(gè)數(shù)通過(guò)形參n返回。如x中
的值為30,則有4個(gè)數(shù)符合要求,它們是1、3、5、15。注意:部分源
程序在文件progl.c中。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)
容,僅在函數(shù)fun()的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題程序:
1tinclude<conio.h>
2tinclude<stdio.h>
3finclude<stdlib.h>
4voidfun(intxFintpp[]rint*n)
(
6
鬻}
8Ivoidmain()
9{
10FILE?wf;
11intxraa[1000],n,i;
12system(WCLSM);
13printf(w\nPleaseenteran
integernumber:\n;
14scant&x);
15fun(x,aar&n);
16for(i=0;i<n;i++)
17printf("%d”,aa[i]);
18printf("\n");
19/?????*???found***?*????/
20wf=fopen("out.datM,MwM);
21fun(30raa,&n);
22for(i=0;i<n;i++)
n
23fprintf(wfr%d,aa[i]);
24fclose(wf);
25/??***??**found**?*??*?*/
26}
30.請(qǐng)編寫(xiě)函數(shù)proc(),其功能是:利用以下所示的簡(jiǎn)單迭代方法求方
程cos(x)-x=0的一個(gè)實(shí)根。
xn+l=COS(xn)
迭代步驟如下:
⑴取xl初始值為0.0;
(2)x0=xl,把?XI的值賦給x0;
(3)xl=cos(xO),求出一個(gè)新的xl;
(4)若xO-xl的絕對(duì)值小于0.000001,則執(zhí)行步驟
(5),否則執(zhí)行步驟(2);
(5)所求xl就是方程cos(x)-x=0的一個(gè)實(shí)根,作為函數(shù)值返回。
程序?qū)⑤敵鼋Y(jié)果root=0.739085。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括
號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
ssnciudcVconicxh>
*meludrViwatk.h>
9mciudcVSUIBO.h3>
VkxHpror()
wh?|<(N0*~KI)>■I。-6);
murn*11
tnam<)
Hoel]=pcoct)i
*root*Sf\n**()i
四、2.程序修改題(10題)
31.給定程序M0D11.C中函數(shù)fun的功能是:比較兩個(gè)字符串,將長(zhǎng)
的那個(gè)字符串的首地址作為函數(shù)值返回。
請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
1tinclude<stdio.h>
2/**********foundw*********/
3charfun(char*srchar*t)
4{intsl?0rtl?0;char*ssr*tt;
5ss-s;tt?t;
6while(*ss)
7{sl++;
8
9(*SS)
10}
11while(*tt)
12(C++;
13/?****??***found**********/
14
15)
16if(tl>sl)returnt;
17elsereturns;
18}
19main()
20{chara[80],b[80];
21printf(H\nEnterastring:");
gets(a);
22printf(w\nEnterastringagain:
");gets(b);
23printf(w\nThelongeris:\n\n\
nwR
ts\\nrfun(a,b));
24
32.給定程序MOD11.C中函數(shù)fun的功能是:統(tǒng)計(jì)一個(gè)無(wú)符號(hào)整數(shù)中
各位數(shù)字值為零的個(gè)數(shù),通過(guò)形參傳回主函數(shù);并把該整數(shù)中各位上最
大的數(shù)字值作為函數(shù)值返回。例如,若輸入無(wú)符號(hào)整數(shù)30800,則數(shù)字
值為零的個(gè)數(shù)為3,各位上數(shù)字值最大的是8。
請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
linclude<stdio.h>
intfun(unsignedn,int*zero)
3{intcount?0,max=091;
4do
5{t-n%10;
6/…………*foUnd…………★/
7if(t-0)
8counts*;
9if(max<t)max-t;
10n?n/10;
11}while(n);
12/???★★★★found**???,★????育?/
13zero-count;
14returnmax;
15
16main()
17{unsignedn;intzero#max;
18printf(n\nlnputn(unsigned):");
scanf(w%dw,&n);
19max-fun(nr&zero);
20printf(H\nTheresult:max^tdzero=
%d\n"rmaxrzero);
21
33.給定程序MOD11.C中函數(shù)fun的功能是;從低位開(kāi)始取出長(zhǎng)整型
變量s中偶數(shù)位上的數(shù),依次構(gòu)成一個(gè)新數(shù)放在t中。高位仍在高位,
低位仍在低位。
例如,當(dāng)s中的數(shù)為:7654321時(shí),t中的數(shù)為:642。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
1linclude<stdio.h>
2//foundf
3voidfun(longs,longt)
4(longsl-10;
5s/?10;
6*t-s%10;
7/*********w**found************
8while(s<0)
9ss/100;
10*<s%10*sl?*t;
11si?10;
12
13
14main()
15(longs,t;
16printf(w\nPleaseenters:");scanf
("Id”,&s);
17fun(s,&t);
MH
18printf(Theresultis:%ld\nrt);
19
34.下列給定程序中,函數(shù)fun()的功能是計(jì)算并輸出high以?xún)?nèi)的素?cái)?shù)
之和。high由主函數(shù)傳給fun()函數(shù)。
例如:若high的值為100,則函數(shù)的返回值為1060o
請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。
[注意]不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
[試題源程序]
#include<conio.h>
#include<stdio.h>
#include<math.h>
intfun(inthigh)
intsum=0,n=0,j,yes;
while(high>=2)
yes=l;
for(j=2;j<=high/2;j++)
ifhigh%j==O
yes=O;
break;
if(yes==O)
('
sum+=high;
n++;
)
high-;
)
returnsum;
)
main()
(
clrscr();
printf("%d\n",fun(lOO));
35.下列給定程序中,函數(shù)fun()的功能是:計(jì)算s所指字符串中含有t
所指字符串的數(shù)目,并作為函數(shù)值返回。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<string.h>
#include<stdio.h>
#defineN80
intfun(char*s,char*t)
{intn;
char*p,*
n=0;
while(*s)
P=s;
/vL-、!//、1、!,<1*vj**t-vt-*.L*、],、!”7,7,/
/不不不不不不不不不不不不不不T/~\ime不不不不不不不不不不不不個(gè)個(gè)個(gè)/
r=p;
while(*r)
if{*r==*p){r++;p++;}
elsebreak;
/KI>K(>、!,vL-、!)/、1、!,<1**X?*1--*1**.L*7,7,7,/
/不不不不不不不不不不不不不不T/~\ime不不不不不不不不不不不個(gè)個(gè)個(gè)個(gè)/
if(*r==O)
n++;
s++;
)
returnn;
1
main()
{chara[N],b[N];intm;
clrscr();
printf("\nPleaseenterstringa:");
gets(a);
printf("\nPleaseentersubstringb:");
gets(b);
m=fun{a,b);
printf("\nTheresultis:m=%d\n",m);
36.給定程序M0D11.C中函數(shù)fun的功能是:根據(jù)整型形參m,計(jì)算
如下公式的值。
11.1..1
y=一十——??一
100?100200e2003OO?3OOm'm
例如,若m=2000,則應(yīng)輸出:0.000160。
請(qǐng)改正程序中的語(yǔ)法錯(cuò)誤,使它能計(jì)算出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
iinclude<stdio.h>
2/*6?*??**??■?found育育*******■?*/
3fun(intm)
4(doubley-0,d;
5inti;
6/…………found…………/
7for(i■100,i<?mri+=100)
8(d=(double)i*(double)i;
9y??l.0/d;
10]
11return(y);
12)
13main()
14{intn=2000;
15printf(H\nTheresultis
fun(n));
16
37.給定程序MOD11.C中函數(shù)fun的功能是:將p所指字符串中的所
有字符復(fù)制到b中,要求每復(fù)制三個(gè)字符之后插入一個(gè)空格。
例如,在調(diào)用fun函數(shù)之前給a輸入字符串:ABCDEFGHIJK,調(diào)用函
數(shù)之后,字符數(shù)組b中的內(nèi)容則為:ABCDEFGHIJKO
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
finclude<stdio.h>
2voidfun(charchar*b)
3(inti,k-0;
4while(*p)
5{i-1;
6while(i<?3&&*p)<
7/?????*****found**???*****/
8b[kl-p;
9p++;
10;1
11if(*p)
12
13/……★…found……?…/
b[k++]=”n
15
16
17
18!)
19main()
20{chara[80]rb[80];
21printf("Enterastring:");gets(a);
22printf("Theoriginalstring:");
puts(a);
23fun(arb);
24printf(w\nThestringafterinsert
space:w);puts(b);printf<w\n\n");
25
38.給定程序MOD11.C中函數(shù)fun的功能是:將s所指字符串的正序
和反序進(jìn)行連接,形成一個(gè)新串放在t所指的數(shù)組中。
例如,當(dāng)s所指字符串為:“ABCD”時(shí),貝h所指字符串中的內(nèi)容應(yīng)為:
“ABCDDCBA”。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
tinclude<stdio.h>
2tinclude<string.h>
3Z*w**********found*****w******/
4voidfun(chars,chart)
5(
6int1,d;
7d-strlen(s);
8for(i=0;i<d;i++)t[i]?s[i];
9for(i?0;i<d;i++)t[d+i]■
s[d-l-i];
10/…………found…………/
11t[2*d-l]-,\0,;
12)
13main()
14(
15chars[100],t[100];
16printf(w\nPleaseenterstringS:R);
ww
scanf(%s/s);
17fun(s,t);
18printf("\nTheresultis:%s\nN,t);
19
39.下列給定程序中,函數(shù)fun()的功能是:傳入一個(gè)整數(shù)m,計(jì)算如下
公式的值。
t=l/2-l/3-...-l/m
例如,若輸入5,則應(yīng)輸出-0.283333。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
doublefun(intm)
doublet=1.0;
inti;
for(i=2;i<=m;i++)
t=1.0-l/i;
/*************found**************/
main()
{intm;
clrscr();
printf("\nPleaseenter1integernumbers
:In");
scanf("%d",&m);
printf("\n\nTheresultis
fun(m));
40.下列給定程序中,函數(shù)fun()的功能是;計(jì)算函數(shù)F(x,y,z)=(x+y)/(x-
y)+(z+y)/(z-y)的值。其中x和y不相等,z和y不等。例如,當(dāng)x的值
為9,y的值為11,2的值為15時(shí),函數(shù)值為-3.50。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<math,h>
/**************found******************/
#defineFU(m,n)(m/n)
floatfun(floata,floatb,floatc)
{floatvalue;
value=FU(a+b,a-b)+FU(c+b,c-b);
/*************found******************/
return(Value);
main()
{floatx,y,z,sum;
printf("Inputxyz::");
scanf("%f%f%f",&x,&y,&z);
printf("x=%f,y=%f,z=%f\n",x,y,z);
if(x==y||y==z){printf("Dataerror!\n");
exit(0);}
sum=fun(x,y,z);
printf("Theresultis:%5.2f\n",sum);
五、程序改錯(cuò)題(2題)
41.
下列給定程序中,函數(shù)fun的功能是求兩個(gè)非零正整數(shù)的最大公約數(shù),
并作為函數(shù)值返回。
例如,若nmnl和num2分別為49和21,則輸出的最大公約數(shù)為7;若
numl和num2分別為27和81,
則輸也的最大公約數(shù)為27o
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或硼行,也不得更改程序的結(jié)構(gòu)!
試題程序:
#tnclude<stdio.h>
iirtfun(mta^intb)
{int3
if(a<b)
/******拿*?*******4c1^1md*****************/
)
r=a%b;
whfle(r!=O)
{a=b;b=r;r=a%b;}
尸北***********拿**91^g&,率******,*****,今*/
屐tum(a);
)
voidmain()
{intnuml,num2,a;
,printfif,Inputnumlnum2:");
scanf(H%d%d,',&nuni!,&num2);
MM
printf(num1nufn2=%d\n\nTnum1Tnum2);
a=^un(numlfnum2);
jxin或FiemaximuiicommoficKvisoris%d\n\n,,^J;
)
42.下列給定程序中,函數(shù)fun()的功能是:將str所指字符串中的字母
轉(zhuǎn)換為按字母序列的后續(xù)字母(Z轉(zhuǎn)換A,z轉(zhuǎn)換a),其他字符不變。
請(qǐng)修改函數(shù)fun()中的錯(cuò)誤,得出正確的結(jié)果。
注意:不要改動(dòng)main。函數(shù),不得增行或刪行,也不得更改程序的結(jié)
構(gòu)。
試題程序:
岑indudtV,tdio.h>
,include<ctype.h>
SincludeVento.h>
midfumCciuir?Mr)
//????(oond????
while(?
M(A'&&??tr<
a'&&
i(<??tr-B.N)
??tr?'A'i
elseU(?Mr*,-'/>
<?K
//????(ound????
(??tr>+??
voidm?m()
cluirMrfSOji
prrnt”Ent”■tiringwiibkngth<80.Aa\nfl)i
v
crt?(wtr)ipeif>d("\?The?tnngt\o\n>i
pui?(Mr)i
fg?>ir)?
printK*\n\nTheCorda?t\a\n*)i
pvis(Mr)t
六、操作題(2題)
43.以下程序運(yùn)行后的輸出結(jié)果是【】
#include<string.h>
voidfun(char*s,intP,intk)
{inti;
for(i=p;i<k-l;i++)s[i]=s[i+2];
main()
{chars[]="abcdefg";
fun(s,3,strlen(s));puts(s)
)
44.給定程序中,函數(shù)fun的功能是:調(diào)用隨機(jī)函數(shù)產(chǎn)生20個(gè)互不相同
的整數(shù)放在形參a所指數(shù)組中(此數(shù)組在主函數(shù)中已置0)。
請(qǐng)?jiān)诔绦虻南聞澗€(xiàn)處填入正確的內(nèi)容并把下劃線(xiàn)刪除,使程序得出正確
的結(jié)果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
1?include<stdlib.h>
2tinclude<stdio.h>
3tdefineN20
4voidfun(int*a)
5(int1,x,n-0;
6x-rand()%20;
7/??found?
8while(n<_1_)
9(for(i?0;i<n;i++)
10/???***??**foundw*?***?***/
11if(x-a[i])_2_;
12/………”ound………?/
13if(i-_3_)(a[n]?x;)
14xsrand()%20;
15
16
17main()
18intx[N]-(0),i;
19fun(x);
20printf(wTheresult:\nw);
21for(iw0;i<N;i++)
ww
22(printf(%4drx[i]);
23if((i+1)%5??0)printf(H\nw);
24)
25printf(w\n\nw);
26
參考答案
L2X|2J2X(21解析:冒泡排序法是通
過(guò)相鄰數(shù)據(jù)元素的交換逐步將線(xiàn)性表變成有序。假設(shè)線(xiàn)性表的長(zhǎng)度為n,
則在最壞的情況下,冒泡排序需要經(jīng)過(guò)遍的從前往后的掃描和
遍的從后往前的掃描,需要的比較次數(shù)為。
2.算法或程序或流程圖算法或程序或流程圖解析算法是問(wèn)題處理方案
正確而完整的描述。
3.101091101091解析:for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語(yǔ)句的功能
是:首先計(jì)算表達(dá)式1的值,然后檢測(cè)表達(dá)式2的值,若其值為真,則
執(zhí)行循環(huán)體語(yǔ)句,執(zhí)行完畢后,再計(jì)算表達(dá)式3的值。然后再檢測(cè)表達(dá)
式2的值是否為真,若為真,繼續(xù)執(zhí)行循環(huán)體語(yǔ)句,若為假,則退出循
環(huán);第1次循環(huán)x>8成立,輸出x=10,y=10后,x的值減1,i=l,執(zhí)
行丫=+內(nèi)操作,y的值變?yōu)?;判斷條件還成立,輸出x=9,y=l,然后
x的值減1,循環(huán)條件不成立,則退出循環(huán)。
4.完整性控制完整性控制
5.1030010300解析:在scanf格式控制符中有一個(gè)“*”附加說(shuō)明符,表示
跳過(guò)它指定的列數(shù)。程序中%(1%*(1%(1,表示首先將10賦給i,然后遇%。
d讀入整數(shù)但不賦給任何變量,最后將讀人的整數(shù)30賦給變量j,變量
k并沒(méi)有重新賦值,仍為初始值0。所以輸出的結(jié)果為10300。
6.1818解析:設(shè)循環(huán)隊(duì)列的容量為n。若rear>front,則循環(huán)隊(duì)列中的
元素個(gè)數(shù)為rear-front;若rear<front,則循環(huán)隊(duì)列中的元素個(gè)數(shù)為
n+(rear-front)o題中,front=16,rear=9,g[]rear<front,所以,循環(huán)隊(duì)列
中的元素個(gè)數(shù)為m+(rear-front)=25+(9-16)=18o
7.0111201112解析:在主函數(shù)中定義了整型變量fl和f2,并把其值
賦為。和1,在屏幕上輸出。然后在第一次運(yùn)行for循環(huán)語(yǔ)句時(shí),變量f
的值等于1,把其值輸出,把變量fl的值0賦給變量f2,變量f的值1
賦給n,在執(zhí)行第二次for循環(huán)語(yǔ)句時(shí),變量f的值等于1,把此值輸出。
然后再把變量fl的值1賦給變量f2,變量f的值1賦給fl,在執(zhí)行第
三次for循環(huán)語(yǔ)句時(shí),變量f的值等于2,把此值輸出。所以程序運(yùn)行后
的結(jié)果為01112。
8.*sl!='\0'或*si*t0=*tl*sl++*tl++sl=tO或s1=s1+strlen(str1)*s1!='\\0'
或*sl\r\n*t0=*11\r\n*s1++\r\n*11++\r\ns1=t0或sl=sl+strlen(strl)
9.55解析:本題的關(guān)鍵在于if(!(i%5))printf(Nn),這句,即如果i可被5
整除時(shí),則換行。i值為24,可以被5整除4次,并余4,因此,prnt函
數(shù)共輸出5行,最后一行有4個(gè)數(shù)。
10.軟件開(kāi)發(fā)
11.D
12.B
13.C
14.A
15.Cmark為結(jié)構(gòu)體中的數(shù)組,不能直接賦值,所以C選項(xiàng)錯(cuò)誤。故本題
答案為C選項(xiàng)。
16.D
17.C
f函數(shù)的功能是對(duì)形參a的各個(gè)成員用結(jié)構(gòu)體變量b的各個(gè)成員進(jìn)行賦
值后,然后返回變量a。
18.B
水平制表符中,'\f表示的是橫向跳若干格;選項(xiàng)B中,入039錯(cuò)誤,
、039,是八進(jìn)制形式表的字符,最大數(shù)為7,但其中出現(xiàn),9,1,'是字
符逗號(hào);選項(xiàng)D中,入鼠表示的是換行。
19.A
本題考查按位與運(yùn)算,按位與就是相同為1,不同為0,把x=011050
化成二進(jìn)制為0001001000101000,把01252化成二進(jìn)制為
0000001010101010,兩者相與得0000001000101000o
20.C解析:1.getcharO:此函數(shù)的作用是從終端(或系統(tǒng)隱含指定的輸
入設(shè)備)輸入一個(gè)字符。
2.putchar():此函數(shù)的作用是向終端輸出一個(gè)字符,也可以輸出控制字
符。本題在輸入字符時(shí),ab和c后面的回車(chē)符分別賦給了c[2]和c[4],
所以,正確答案為C。
21.
【解析】要將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一
維數(shù)組中,可以首先通過(guò)行循環(huán),然后列循環(huán)取出二維數(shù)組中的每一個(gè)
元素,并將其放入一維數(shù)組中,最后將一維數(shù)組的長(zhǎng)度通過(guò)形參返回到
主函數(shù)當(dāng)中。
22.
【解析】要計(jì)算n門(mén)課程的平均分,首先可以求得n門(mén)課程的總分,然
后除以n得到其平均分,最后將其平均分返回到主函數(shù)中。
23.voidfun(inttt[M][N],intpp[N])
inti,j,max;
for(j=0;j<=""p="">
(
max=tt[O][j];/*假設(shè)各列中的第1個(gè)元素值最大*/
for(i=0;i<=""p="">
if(tt[i][l]>max)
/*如果各列中的其他元素值比最大值大,則將這個(gè)值更大的元素看作
當(dāng)前該列中值最大的元素*/
max=tt[i][j];
pp[j]=max;/*將各列的最大值依次放入pp數(shù)組中*/
}
)
本題函數(shù)fun()的功能是求出二維數(shù)組中每列值最大的元素。首先,假設(shè)
各列中的第1個(gè)元素值最大,然后利用行下標(biāo)的移動(dòng)來(lái)依次取得各列中
其他元素的值,并與假設(shè)的最大值進(jìn)行比較,如果遇到更大的,則把這
個(gè)值更大的元素看作當(dāng)前該列中值最大的元素,繼續(xù)與該列中的其他元
素進(jìn)行比較。
24.
【解析】首先定義一個(gè)變量來(lái)存放表達(dá)式的和,根據(jù)題目中提供的多項(xiàng)
式,通過(guò)n次循環(huán)來(lái)求出n項(xiàng)的和。最后把所求得的和返回到主函數(shù)當(dāng)
中。
25.
程序設(shè)計(jì)題解析:
【考點(diǎn)分析】
本題考查:指針型變最定義;wh丑e循環(huán)語(yǔ)句;語(yǔ)句條件
表達(dá)式;字符串結(jié)束標(biāo)識(shí)
【解題思路】
函數(shù)fun的功能:除了字符串前導(dǎo)的*號(hào)之外,將串中其他+號(hào)全部刪
除。
【解答本題】
⑴定義一個(gè)臨時(shí)指針P,初始指向原串首地址;(2)利用循環(huán)語(yǔ)句把字
符串前導(dǎo)*號(hào)拷貝到原串;(3)繼續(xù)移動(dòng)指針,把串中和串尾的非*號(hào)字
符拷貝到原串;(4)為修改后的字符串賦結(jié)束字符,0\
【解題寶典】
要?jiǎng)h除字符串中的指定字符,我們通常采用保留非指定字符的方法。
可以將非指定字符保留在原串,即將需要保留的字符從原串的起始位
置重新賦值;也可以保留到新串,即新建一個(gè)字符串,存放要保留的
字符。
26.lvoidfun(intm,intk,intxx[])
2{
3inti,j,n;
4for(i=m+l,n=O;n
<k;i++)p*<>找
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 前期部部門(mén)及崗位職責(zé)
- 工程安全施工計(jì)劃
- 校園活動(dòng)安全保障方案
- 家居裝修環(huán)氧地坪施工方案
- 地下水凈化設(shè)備調(diào)試方案
- 110kV線(xiàn)路工程風(fēng)險(xiǎn)評(píng)估方案
- 臨時(shí)活動(dòng)電氣安裝施工方案
- 化妝品行業(yè)采購(gòu)人溝通方案
- 水生植物護(hù)坡施工方案
- 青島飛洋職業(yè)技術(shù)學(xué)院《地理信息系統(tǒng)工程》2023-2024學(xué)年第一學(xué)期期末試卷
- 骨折診療與護(hù)理考核試題與答案
- 學(xué)校膳食委員會(huì)成員及職責(zé)-
- 礦業(yè)技術(shù)經(jīng)濟(jì)學(xué)教學(xué)課件匯總完整版電子教案全書(shū)整套課件幻燈片(最新)
- 小學(xué)預(yù)防性侵害講座
- DRAM內(nèi)存顆粒測(cè)試簡(jiǎn)介PPT課件(PPT 37頁(yè))
- GB∕T 10395.5-2021 農(nóng)業(yè)機(jī)械 安全 第5部分:驅(qū)動(dòng)式耕作機(jī)械
- 中小學(xué)生時(shí)間管理主題班會(huì)PPT課件
- 基于multisim的腦電采集系統(tǒng)的設(shè)計(jì)與仿真
- 《倉(cāng)庫(kù)目視化管理》PPT課件.ppt
- 《視神經(jīng)炎》ppt課件
- 工程派工單模板
評(píng)論
0/150
提交評(píng)論