版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2022年遼寧省營(yíng)口市全國(guó)計(jì)算機(jī)等級(jí)考試
C語(yǔ)言程序設(shè)計(jì)真題(含答案)
學(xué)校:班級(jí):姓名:考號(hào):
一、2.填空題(10題)
1.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu),線(xiàn)性鏈表屬于[】。
2.數(shù)據(jù)字典是各類(lèi)數(shù)據(jù)描述的集合,它通常包括5個(gè)部分,即數(shù)據(jù)項(xiàng)、
數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、和處理過(guò)程。
3.函數(shù)check用來(lái)判斷字符串s是否是“回文”(順讀和倒讀都一樣的字
符串為“回文”,如abeba)。是則函數(shù)返回值1,否則返回值0,請(qǐng)?zhí)羁铡?/p>
intcheck(char*s)
(
char*pl,*p2;intn;
n=strlen(s);
pl=s;
p2=[];
while(pl<p2)
(
if(*pl!=*p2)break;
else{pl++;p2—;}
if([])return0;
elsereturn1;
4.以下程序的輸出結(jié)果是【】。
main()
{chars[]="ABCD",*p;
for(p=s+l;p<s+4;p++)printf("%s\n",p);)
5.若輸入5、9,以下程序的運(yùn)行結(jié)果為【】。
main()
{inta,b,*ptl,*pt2;
printf("inputa,b:");
scanf("%d%d",&a,&b);
ptl=&a;
pt2=&b;
if(a<b)swap(ptl,pt2);
printf("\n%d,%d\n",*ptl,*pt2);
)
swap(pl,p2)
int*p1,*p2;
{int*p;
P=P1;
pl=p2;
P2=P;
6.以下程序的輸出是【】。
main()
(
charstrl[]="Howdoyoudo",*pl=strl;
strcpy(strl+strlen(strl)/2,"esshe");
printf("%s\n",pl);
7.數(shù)據(jù)庫(kù)系統(tǒng)中實(shí)現(xiàn)各種數(shù)據(jù)管理功能的核心軟件稱(chēng)為【】。
8.閱讀下面程序,則執(zhí)行后的輸出結(jié)果是【】。
#include"stdio.h"
main()
{intx,y,z;
x=];y=2;z=3;
if(x>y)if(x>z)printf("%d",x);
elseprintf("%d",y);
printf("%d\n",z);)
9.設(shè)一棵二叉樹(shù)的中序遍歷結(jié)果為DBEAFC,前序遍歷結(jié)果為
ABDECF,則后序遍歷結(jié)果為【】。
10.mystrlen函數(shù)的功能是計(jì)算str所指字符串的長(zhǎng)度,并作為函數(shù)值返
回。請(qǐng)?zhí)羁铡?/p>
intmystrlen(char*str)
{intI;
for(I=0;[]!='\n';I++);
return(I);}
二、單選題(10題)
ll.設(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.下面程序的輸出結(jié)果是()。chars()="ABCD",*p;main(){for(p=s;p
<s+4;p++)printf("%s\n",p);)
A.ABCDBCDCDDB.ABCDC.DCBAD.ABCDABCABA
13.字符串"alibaba”的二進(jìn)制哈夫曼編碼有多少位()
A.llB.12C.13D.14
14.下列程序的輸出結(jié)果是()。#include<stdio.h>main(){structst{int
y,x,z;};union{longi;intj;chark;Jun;
printf("%d,%d\n",sizeof(structst),sizeof(un));}
A.6,2B.6,4C.8,4D,8,6
15.結(jié)構(gòu)化程序設(shè)計(jì)主要強(qiáng)調(diào)的是()。
A.程序的規(guī)模B.程序的效率C.程序設(shè)計(jì)語(yǔ)言的先進(jìn)性D.程序的易讀
性
16.
(1)算法的空間復(fù)雜度是指()。
A)算法程序的長(zhǎng)度B)算法程序中的指令條數(shù)
C)算法程序所占的存儲(chǔ)空間D)律法執(zhí)行過(guò)程中所需要的存儲(chǔ)空間
17.C語(yǔ)言中char類(lèi)型數(shù)據(jù)占字節(jié)數(shù)為()。
A.3B.4C.1D.2
18.要聲明一個(gè)有10個(gè)int型元素的數(shù)組,正確的語(yǔ)句是()。
A.inta[10];B.inta[2,5];C.inta[];D.int*a[10];
19.有以下程序:main(){inta[][3]={{1,2,3),{4,5,0)),(*pa)[3],i;pa=a;
for(i=0;i<3;i++)if(i<2)pa[l][i]=pa[l][i]-l;elsepa[l][i]=l;
printf("%d\n",a[O][l]+a[l][l]+a[l][2]);}執(zhí)行后輸出結(jié)果是()。
A.7B.6c.8D.無(wú)確定值
20.以下描述中正確的是
A.由于do-while循環(huán)中循環(huán)體語(yǔ)句只能是一條可執(zhí)行語(yǔ)句,所以循環(huán)體
內(nèi)不能使用復(fù)合語(yǔ)句
B.do-while循環(huán)由d。開(kāi)始,用while結(jié)束,在while(表達(dá)式)后面不能寫(xiě)
分號(hào)
C.在do-while循環(huán)體中,是先執(zhí)行一次循環(huán),再進(jìn)行判斷
D.do-while循環(huán)中,根據(jù)情況可以省略while
三、程序設(shè)計(jì)題(10題)
21.請(qǐng)編寫(xiě)函數(shù)proc(),該函數(shù)的功能是:移動(dòng)一維數(shù)組中的內(nèi)容,若
數(shù)組中有n個(gè)整數(shù),要求把下標(biāo)從p到n-l(p<n-l)的數(shù)組元素平移到
數(shù)組的前面。例如,一維數(shù)組中的原始內(nèi)容為1,2,3,4,5,6,7,
8,9,10,11,12,13,14,P的值為4。移動(dòng)后,一維數(shù)組中的內(nèi)容應(yīng)
為5,6,7,8,9,10.11,12,13,14,1,2,3,4O注意:部分源
程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅
在函數(shù)proc()的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:
/includeh>
*defineM80
voidproc(int?w.intp.intn)
voidmain()
(
intarr[M]=<1.2.3?4.5.6?7?8?9?10.11?12?13,
14h
inti.p?n14s
printf("Theoriginaldaiat\nw)i
for(i'Oji-Cnsib4")
printf("%3d"?arrfi])?
printf(*\n\nEntcrpj**)>
wanfL%d"?&p)?
proc(arr?p?n)t
printfC**\nThedataaftermoving;\n*):
for(im0|i<Cnii4-+>
printf("%3d".arrfi])?
printf(*\n\n*)i
22.請(qǐng)編一個(gè)函數(shù)intfun(inta),它的功能是:判斷a是否是素?cái)?shù),若a是
素?cái)?shù),返回1;若不是素?cái)?shù),返回0。A的值由主函數(shù)從鍵盤(pán)讀入。
23.下列程序定義了MM的二維數(shù)組,并在主函數(shù)中自動(dòng)賦值。請(qǐng)編寫(xiě)
函數(shù)proc(inta口[M]),該函數(shù)的功能是:使數(shù)組左下半三角元素中的值
全部置成0。例如,a數(shù)組中的值為:
a=i7409
48824
55171
15276
14232
用返網(wǎng)主程序后a數(shù)組中的值應(yīng)為:
07409
00824
00071
00006
nnnnn
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)main。函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括
號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
Uinclude<conio.h>
iincludeVstdio.h>
3$includeh2>
s?includeVstdlibuh>
二defineM5
voidproc(inta[j[M])
voidmain<>
intarif
srand((unsigned)time(NULL))i
sy5tem("CI.S*)?
print”"????Thearray????\nM)i
for(iraO|j<Mji++)
〃產(chǎn)生一個(gè)隨機(jī)的5,5矩陣
<for(j=Oij<Msj++>
(arrfi]£j]=rand(>%10i
printf("%4d",arr[i](jJ)?
)
printf(**\nw)i
)
proc(arr):
printf(wTHERESULT'n"),
for(i=0$iVM[i++)
(for(j?0ij<Mij4-4->
printf("%4d*warr[i][j])s
printfC*\n**)i
24.請(qǐng)編寫(xiě)函數(shù)proc(),該函數(shù)的功能是:將兩個(gè)兩位數(shù)的正整數(shù)
numl,num2合并形成一個(gè)整數(shù)放在num中。合并的方式是:將numl
數(shù)的十位和個(gè)位數(shù)依次放在num數(shù)的十位和千位上,num2數(shù)的十位
和個(gè)位數(shù)依次放在c數(shù)的百位和個(gè)位上。
例如,當(dāng)num1=64,num2=18時(shí),調(diào)用到該函數(shù)后,num=4168o
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括
號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
sfincludeVstdlib.h>
sincludeVstdio.h>
Minclude<conio.h>
voidproc(ininuml?intnum2Jong?num)
voidmain()
intnuml.num2s
longnum:
siystem("CLS*)?
printfC"Inputnuml,num2(")i
sc?nf("%d%d",&numl.&-num2)?
proc(numl?num2?&*num)t
printfCThcresultisi%ld\nN?num)?
25.編寫(xiě)函數(shù)fun,其功能是:求ss所指字符串中指定字符的個(gè)數(shù),并返
回此值。
例如,若輸入字符串123412132,輸入字符為1,則輸出3。
注意:部分源程序在文件PR0G1.C中。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括
號(hào)中填入你編寫(xiě)的若干語(yǔ)句。
Windude<stdio.h>
tfincludr<siring,ii>
HdrfineM8!
intfun(rhoir?HS.charc)
miun()
|churMJ?ch;
voidNONO():
printf(**XnPlenseenWrastring:");grU?(A):
printf(**\nPleaseenterachar:"I;ch=gctchar();
printf(**\nTlirnumberofthechnris:%d\np.fun(■.ch));
NONO():
vnidNONO()
|/?本函數(shù)用于打開(kāi)文件.輸入測(cè)試數(shù)據(jù).調(diào)用fun函數(shù).檢出數(shù)據(jù),關(guān)閉文件。*/
inii:
FILE*乩■M;
ehara[M]?b[M],ch;
rf=fbprn(nin.r**);
wf=fi?prn("out.dal*';
(or(i=0;i<10?i?-)|
fnc4mf(rf,M%R**.a);
ft?>anf(rf.**%?**.b);
ch=?b;
fprinrf(wf.,*%c=%d\n"'.ch?fun(a.ch));
(clone(if);
fclooefwf);
26.
請(qǐng)編寫(xiě)函數(shù)proc(),它的功能是計(jì)算:s=(1-ln(1)-In(2)-In(3)
-...-In(m))2s作為函數(shù)值返回。在C語(yǔ)言中可調(diào)用log(n)函數(shù)求
In(n)olog函數(shù)的引用說(shuō)明是doublelog(doublex)o例如,若m的
值為10,則proc()函數(shù)值為198.934454O注意:部分源程序給出如
下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc
()的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:
sindudeVCCMIIQ.
Sincludeb>
¥indudeh>
doublepVQr(mim)
mHMuUfH)
?y?tctn(*CLS*)i
prifitit*Kf\n**proc(10))i
27.
請(qǐng)編寫(xiě)一個(gè)函數(shù)proc(),它的功能是:根據(jù)以下公式求7c的值(要求
滿(mǎn)足精度。.。。。5,即某項(xiàng)小于。.。05時(shí)停止迭代)o
K/2?1+1/3+1*2/(3?5)+1?2?3/(3?5?7)4-1
*2?3?4/(3?5?7?9)+,,,+1#2?3?????n/(3?S?
7w????(2n4-l)l
程序運(yùn)行后,如果輸入精度0.0005,則程序輸出3.140578o注意:
部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)
容,僅在函數(shù)proc()的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:
4include<conio.h>
UincludeVstdi。.h>
zinclude<math.h>
doubleproc(doubleeps>
voidmain()
(
doublesi
printfC"\nPkascenteraprecision:*)i
scanf(wKIP?&M)i
printfCXnPi^%lf\n*,proc(s))t
28.規(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*G*******,刪除后,字符
串中的內(nèi)容應(yīng)當(dāng)是:
****ABCDEFG。
注意:部分源程序在文件PR0G1.C中。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括
號(hào)中填入你編寫(xiě)的若干語(yǔ)句。
#include<stdin,h>
voidfun(rhar?■)
main()
chars[81];voidNONO();
printf(*Enterastring:\nN);geu(B);
fun(、):
|irintf("Thestringafterdeleted:\n");puts(?);
NONO():
voidNONO()
!/?本南數(shù)用于打開(kāi)文件.輸入數(shù)據(jù),調(diào)用函數(shù),臨出數(shù)據(jù),關(guān)閉文件.?/
FILE?in,?oul;
mtt;chars[81J;
in=fopen("in.dat",**r**);
outwfopcn("out.dat**.ww*);
fw(i=
f?canf(in.**%?*,?);
fun(?)(
fprinlf(out.H%?\n**..);
(cloec(in);
IcloseCout);
29.
假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫(xiě)函數(shù)proc(),它的功能
是:使字符串中前部的*號(hào)不得多余m個(gè);若多余m個(gè),則刪除多余的
*號(hào);若少于或等于m個(gè),則什么也不做,字符串中間和尾部的*號(hào)不刪
除。例如,字符串中的內(nèi)容為****A*BC*DEF*G****,若m的值為2,
刪除后,字符串中的內(nèi)容則應(yīng)當(dāng)是**A*BC*DEF*G****;若m的值為
4,則字符串中的內(nèi)容仍為****A*BC*DEF*G****°n的值在主函數(shù)中輸
入。在編寫(xiě)函數(shù)時(shí),不得使用c語(yǔ)言提供的字符串函數(shù)。注意:部分源
程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅
在函數(shù)proc()的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:
/includeh>
磐mclmie<COCMO.h>
midproc<char?a?intn)
voidt**in(>
(cii*rzrfjiifiiRI*
eEnter*Mnngi\nM>ifrt?(?tr)i
pnarK*Entertni?
procC
pnntfC"TbrAtnugafterdrlct?l*\i1*)t
tMi?(?tr)t
30….請(qǐng)編寫(xiě)函數(shù)。fun能是:判斷形參n中的正整數(shù)是幾位數(shù)(輸入數(shù)
據(jù)的位數(shù)不超過(guò)4位),并將結(jié)果通過(guò)函數(shù)值返回。例如:若輸入的數(shù)
據(jù)為123,則輸出結(jié)果為:輸入的數(shù)字是3位。注意:部分源程序存在
PR0G1.C中,請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函
數(shù)fun的花括號(hào)中填入所縮寫(xiě)的若干語(yǔ)句。試題程
iinclude<stdio.h>
voidNONOO;
intfun(intn)
main()
{intn,place;
do{
printf請(qǐng)輸入一個(gè)4位以?xún)?nèi)的正整數(shù):?);
scanf;
)while(n<0IIn>9999);
place-fun(n);
printf("IS人的數(shù)字是%d位\n**,place);
NONO();
)
voidNONO()
{/?本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用雨數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/
FILE?fp,?wf;
inti,n,place;
fp■fopen("c:\test\in.dat","r");
wf-fopen("c:\test\sut.dat**,Ww");
for(i-0;i<10;i1)
(
fscanf(fp,"%d",in);
place?fun(n);
R
fprintf(wfr%d\n",place);
>
fclose(fp);
fclose(wf);
序:,
四、2.程序修改題(10題)
31.給定程序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)。
tinclude<stdio.h>
2voidfun(floatfloat*b,float*c)
(
/***?*?*?**found**********/
5float*k;
6if(*a<*b)
7(k?*a;*a-*b;*b?k;}
8/????***???found*****???**/
9if(*a>*c)
10{k-*c;*c?*a;*a-k;}
11if(*b<*c)
12{k-*b;*b-*c;*c-k;}
13)
14main()
15{floata,b.c;
16printf("Inputabc:scanf
RH
(%f%f%fr&ar&br&c);
R
17printf(a=%4.Ifrb?44.Ifrc
w
■%4.1f\n\nrafbrc);
18fun(&a,&b,&c);
w
19printf(a=44.Iffb-%4.1frc
w
-%4.lf\n\n,a,brc);
20
32.下列給定程序中,函數(shù)fun()的功能是:輸出M行N列整數(shù)方陣,
然后求兩條對(duì)角線(xiàn)上的各元素的平方和,返回此和數(shù)。
請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
#defineM5
intfun(intn,intXX[][M])
inti,j,sum=O;
printf("\nThe%dx%dmatrix:\n",M,M);
for(i=0;i<N;i++)
for(j=0;j<M;j++)
/*************found*************/
printf("%4d",XX[ij]);
/*************found*************/
printfC\n');
)
for(i=0;i<n;i++)
sum+=xx[i][i]*XX[i][i]+XX[i][n-i-1]
*XX[i][n-i-l];
return(sum);
)
main()
(
intaa[M][M)={{3,12,4,24,35},
{11,3,3,7,56},{61,27,58,49,24},
(17,28,7,36,85},{15,33,5,24,9});
clrscr();
printf("\nTheresultofallelementson2
diagnalsiS%d",fun(M,aa));
33.下列給定程序中,函數(shù)fun()的功能是:根據(jù)整型形參m的值,計(jì)算
如下公式的值。
t=l-l/(2x2)-l/(3x3)-...-l/(mxm)
請(qǐng)改正函數(shù)fun()中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
doublefun(intm)
{doubley=l.O;
inti;
/*************found**************/
for(i=2;i<m;i++)
/************found**************/
y-=l/(i*i);
return(y);
main()
{intn=5;
clrscr();
printf("\nTheresultis%lRn",fun(n));
34.下列給定程序中,函數(shù)fun()的功能是:求出以下分?jǐn)?shù)序列的前n項(xiàng)
之和。
2/1,3/2,5/3,8/5,13/8,21/13,.......
和值通過(guò)函數(shù)值返回main()函數(shù)。例如,若輸入n=5,則應(yīng)輸出8.391667O
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
/*************found**************/
fun(intn)
{inta=2,b=l,c,k;
doubles=0.0;
for(k=l;k<=n;k++)
{s=s+1.0*a/b;
/*************found**************/
c=a;a+=b;b+=c;
)
return(s);
}
main()
{intn=5;
clrscr();
printf("\nThevalueoffunctionis:
%lAn",fun(n));
35.下列給定程序中,函數(shù)fun()的功能是:計(jì)算并輸出下列級(jí)數(shù)的的
N項(xiàng)之和SN,直到SN+1大于q為止,q的值通過(guò)形參傳入。
SN=2/1+3/2+4/3+(N+1)/N
例如,若q的值為50.0,則函數(shù)值為49.394948。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意,?不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).
試題程序:
#include<conio.h>
#include<stdio.h>
/**************found***************/
doublefun(doubleq)
{intn;doubles,t;
n=2;
s=2.0;
while(s<=q)
t=s
/*************found*************/
s=s+(n+l)/n;
n++;
printf("n=%d\n",n);
/************found***************/
returns;
main()
{clrscr();
printf("%f\n",fun(50));
36.下列給定程序中,函數(shù)fun()的功能是:計(jì)算整數(shù)n的階乘。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
doublefun(intn)
(
doubleresult=L0;
whil(n>l&&n<170)
/**************found********************/
result*=—n;
/**************found********************/
return;
main()
{int.n;
clrscr();
printf("Enteraninteger:");
scanf("%d",&n);一
printf("\n\n%d!=%lg\n\n",n,fun(n));
37.給定程序M0D11.C中函數(shù)fun的功能是:將十進(jìn)制正整數(shù)m轉(zhuǎn)換
成k(2SkS9)進(jìn)制數(shù),并按高位到低位順序輸出。
例如,若輸入8和2,則應(yīng)輸出1。。0(即十進(jìn)制數(shù)8轉(zhuǎn)換成二進(jìn)制表示
是1000)o
請(qǐng)改正fun函數(shù)中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù)。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
1*include<conio.h>
2?include<stdio.h>
3voidfun(intm,intk)
4
5intaa[20]9i;
6for(i-0;m;i++)
7(
8/?肯????????found*?????????/
9aa[i]-m/k;
10m/■k;
11
12for(;i;i--)
13found**********/
Rw
14printf(%draa[i]);
15}
16main()
17(
18intb;n;
19printf(w\nPleaseenteranumber
andabase:\nw);
20scanf(R%d%d-,&b);
21fun(nrb);
22printf(w\nw);
23
38.下列給定程序中,函數(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,*r;
n=0;
while(*s)
p=s,
/*1**1*01*1**1**1**1-**4*/
/不不不不不不不不不不不不不不Iciin「不不不不不不不不不不不不干不干/
r=P;
while(*r)
if{*r==*p){r++;p++;}
elsebreak;
/*1**1**1**1**1*vl**1**1**1*。1*1**1**1**1**1**1*K!*/
/不不不不不不不不不不不不不不T/~1l不不不不不不不不不不不不干不不/
if(*r==0)
n++;
s++;
)
returnn;
)
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);
)
39.下列給定的程序中,函數(shù)fun()的功能是;將s所指字符串中出現(xiàn)的
n所指字符串全部替換成t2所指字符串,所形成的新的字符串放在w所
指的數(shù)組中。在此處,要求口和t2所指字符串的長(zhǎng)度相同。例如:當(dāng)
s所指字符串中所指的內(nèi)容為abcdabfab,tl所指字符串中的內(nèi)容為ab,
t2所指字符串中的內(nèi)容為99時(shí),結(jié)果在w所指的數(shù)組中的內(nèi)容應(yīng)為
99cd99f99。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
intfun(char*s,char*tl,char*t2,char*w)
inti;char*p,*r,*a;
strcpy(w,s);
while(*w)
{p=w;r=tl;
/*************found**************/
while(r)
if(*r==*p){r++;p++;}
elsebreak;
if(*r=='\0')
{a=w;r=t2;
/*************found**************/
while(*r){*a=*r;a++;r++}
w+=strlen(t2);
elsew++;
main()
{chars[100],tl[100],t2[100],w[100];
clrscr();
printf("\nPleaseenterstringS:");
scanf("%s",s);
printf("\nPleaseentersubstringtl:");
scanf("%s",tl);'
printf("\nPleaseentersubstringt2:");
scanf("%s",t2);“
if(strlen(tl)==strlen(t2))
(
fun(s,tl,t2,w);
printf("\nTheresultis:%s\n",w);
}
elseprintf("Error:strlen(t2)\n");
40.下列給定程序中,函數(shù)fun()的功能是紿定n個(gè)實(shí)數(shù),輸出平均值,
并統(tǒng)計(jì)平均值以上(含平均值)的實(shí)數(shù)個(gè)數(shù)。例如,n=8時(shí),輸入193.199,
195,673,195,757,196,051,196.092,196,596,196,579,196.763,所
得平均值為195.838745,在平均值以上的實(shí)數(shù)個(gè)數(shù)應(yīng)為5。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
intfun(floatx[],intn)
/***************^Qund*******************/
ihtj,c=0;floatxa=0.0;
for(j=0;j<n;.j++)
xa+=x[j]/n;
printf("ave=%f\n",xa);
for(j=0;j<n;j++)
if(x[j]>=xa)
C++;
returnc;
)
main()
{floatx[100]={193.199,195,673,195,757,
196,051,196.092,196,596,
196,579,196.763);
clrscr();
printf("%d\n",fun(x,8));
)
五、程序改錯(cuò)題(2題)
41.下列給定的程序中,函數(shù)proc()的功能是:計(jì)算并輸出k以?xún)?nèi)最大
的10個(gè)能被15或18整除的自然數(shù)之和,k的值由主函數(shù)傳人。若k
的值為800,則函數(shù)的值為7605。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)
構(gòu)。
試題程序:
gtficludrVgdkx
8includeVcocuo.
*includeVsidliKh>
intproHintIt)
mttn?O.mc-O?ji
whdi?(<W-2)&&?t0)1
//????found??■?
jf<(kXlS*O>/14k%l8-0>)
m-4*lt||Mr-4--i)
k-—?
//????(oufid????
returnmi
voidnwiinC)
wystetnC*CLS")i
prmtf<aKAna?procOOO>);
42.下列給定程序中,函數(shù)proc()的功能是:根據(jù)整型形參n的值,計(jì)
算如下公式的值。t=l-l/(2*2)-1/(3*3)-...-1/(n*n)例如,當(dāng)
n=7時(shí),t=0.488203。請(qǐng)修改函數(shù)proc()中的錯(cuò)誤,使它能得出正
確的結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得
更改程序的結(jié)構(gòu)。試題程序:
#knclude<<idhkb>
sincludeVconio,h>
?include<sttd>o.h>
dooblcprocitutn)
(doubleI,Oi
iniii
//????IOUMI????
!(wqi-2iiV0ii*?)
//????ICWMI????
,一■■l/Ci?
mura<y)i
voidmain<)
(ini|>-7|
*CLS*)?
prmtf<*\nTheresulti?/lf\n'?pruc(n)>s
六、操作題(2題)
43.函數(shù)delete(s,i,n)是作用是從字符串s中刪除從第i個(gè)字符開(kāi)始的n
個(gè)字符,請(qǐng)?zhí)羁铡?/p>
voiddelete(chars[],inti,intn)
{intj,k,length=O;
while(s[length])
[];
-i;
j=i
)
if([])
{k=i+n;
if(i+n<=length)
while(k<length)
s[j++]=s[k++];
s[j]='\O';
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)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#defineM3
#defineN4
voidproc(intttrM3rN]□intpp[N])
(
)
voidmain
(
intstr[M][N]={{34,56,84,78},
{23,84,93,12),
{28,38,39,93}};
intp[N],i,j,k;
system("CLS");
printf("Theriginaldatais:\n");
for(i=0;i<M;i++)
for(j=0;j<N;j++)
printf("%6d",str[i][j]);
printf("\n");
)
proc(str,p);
printf("\nTheresultis:\n");for(k=0:k<M;k++)
printf("%4d",p[k]);
printf("n");}
參考答案
1.存儲(chǔ)結(jié)構(gòu)
2.數(shù)據(jù)存儲(chǔ)數(shù)據(jù)存儲(chǔ)
3.s+n-lpl<p2s+n-l\r\npl<p2解析:判斷是否“回文”字符串,應(yīng)該使用
兩個(gè)字符型指針,一個(gè)從前往后遍歷字符串,另一個(gè)從后往前遍歷字符
串,直到它們中途相遇,如果每次兩個(gè)指針?biāo)傅淖址枷嗤?,則為“回
文”字符串。程序中已經(jīng)使pl=s,即指向字符串的第一個(gè)字符了,所以
p2應(yīng)該指向s的最后一個(gè)字符,故第一空應(yīng)填s+n-1。比較兩個(gè)指針時(shí),
如果有一次不相同,則跳出循環(huán),因?yàn)榇藭r(shí)已可肯定不是“回文”字符串。
如果是while循環(huán)的條件pl<p2不滿(mǎn)足時(shí)自然結(jié)束的循環(huán),則每次比
較都是相同的,兩個(gè)指針是中途相遇了才結(jié)束比較。兩種情況的區(qū)別就
是pl<p2是否成立。故第二空應(yīng)該填pl<p2。
4.BCDCDDBCD\r\nCD\r\nD解析:本題考查指向字符串的指針的運(yùn)算
方法。指針變量P首先指向字符串中的第一個(gè)字符A,執(zhí)行p=s+l后,p指
向字符串中的第二個(gè)字符B,然后輸出值記CD并換行,依次執(zhí)行循環(huán)語(yǔ)句。
5.59
6.HowdoessheHowdoesshe解析:strcpy(strl,si);字符串拷貝函數(shù),
作用是將字符串si拷貝到字符數(shù)組strl中去。strlen(str):測(cè)試字符串str
的長(zhǎng)度,函數(shù)的值為字符串中實(shí)際長(zhǎng)度,不包括\'\\ov在內(nèi)。本題中
strlen(strl)的值為13,貝strcpy(strl+strlen(strl)/2,'esshe');相當(dāng)于
strcpy(strl+6,'esshe');,因此可得答案為Howdoesshe
7.數(shù)據(jù)庫(kù)管理系統(tǒng)
數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)
8.33解析:C語(yǔ)言的語(yǔ)法規(guī)定:else子句總是與前面最近的不帶else的
if相結(jié)合。因?yàn)閤不大于y,所以執(zhí)行printf(%d\\n;z);語(yǔ)句。
9.DEBFCA
10.*(str+I)或str[I]*(str+I)或str[I]解析:str是指針變量,它指向字符型數(shù)
據(jù),在循環(huán)過(guò)程中,可以用*(str+I)來(lái)訪(fǎng)問(wèn)字符串中的第I個(gè)元素,判斷是
否為結(jié)束標(biāo)志,如果不是,1=1+1,繼續(xù)取下一個(gè)元素進(jìn)行判斷,直到*(str+I)
的值為'\\0'為止也可以用下標(biāo)的方式引用字符,如*(str+I)相當(dāng)于str[I]。
11.A
根據(jù)題目中的定義可知,“sizeof(p)”計(jì)算的是數(shù)組p中所有元素所占用
的字節(jié)數(shù),而不是char型數(shù)據(jù)所占的字節(jié)數(shù)。故本題答案為A選項(xiàng)。
12.A解析:p為指針型變量。第一次循環(huán),p=s,p的值為字符數(shù)組s的
首地址,輸出字符串ABCD:p++,第二次循環(huán),p的值為字符數(shù)組s的
首地址加1,輸出字符串‘BCD:p++,第三次循環(huán),p的值為字符數(shù)組s
的首地址加2,輸出字符串CD:p++,第4次循環(huán),p的值為字符數(shù)組
s的首地址加3,輸出字符串VD。
13.C
14.B解析:本題主要考查結(jié)構(gòu)體和聯(lián)合內(nèi)存使用的區(qū)別:結(jié)構(gòu)中不同
的成員分別使用不同的內(nèi)存空間,一個(gè)結(jié)構(gòu)所占內(nèi)存空間的大小是結(jié)構(gòu)
中每個(gè)成員所占內(nèi)存空間大小的總和,結(jié)構(gòu)中每個(gè)成員相互獨(dú)立;聯(lián)合
所占用的內(nèi)存空間為最長(zhǎng)的成員所占用的空間。
15.D解析:程序不僅是編寫(xiě)完就結(jié)束了,為了測(cè)試和維護(hù)程序,往往還
有其他人閱讀和跟蹤程序,因此程序設(shè)計(jì)的風(fēng)格應(yīng)該強(qiáng)調(diào)簡(jiǎn)單和清晰,
即程序的易讀性,“清晰第一,效率第二”。
16.D
17.C
Char類(lèi)型數(shù)據(jù)占1個(gè)字節(jié)。
18.A
19.A解析:本題定義了一個(gè)指向由3個(gè)元素組成的一維數(shù)組的指針變
量pa,通過(guò)賦值讓它指向具有2行3列的數(shù)組a,此時(shí)用指針變量pa,
表示數(shù)組元素的形式是pa[i][j]ofor循環(huán)執(zhí)行了3次;第一次i值
為0,執(zhí)行pa[l][0]=pa[l][0]-l,執(zhí)行后的值變?yōu)?;第二次i值
為1,執(zhí)行執(zhí)行后的值為4;第三次i值為
2,執(zhí)行pa[l][2]=l,執(zhí)行后a[l]⑵的值變?yōu)?。故printf語(yǔ)句輸入的值
為2+4+1=7。所以,A選項(xiàng)為所選。
20.C解析:do-while語(yǔ)句的一般形式為:do循環(huán)體語(yǔ)句while(表達(dá)式);,
其中循環(huán)體語(yǔ)句可以是復(fù)合型語(yǔ)句,但必須用花括號(hào)括起來(lái)。while后
必須要有分號(hào)作為語(yǔ)句的結(jié)束,在do-while循環(huán)中,不可以省略while。
21.
【解析】題目中要求把下標(biāo)從p到n-1的數(shù)組元素平移到數(shù)組的前面,
可以通過(guò)每一次循環(huán)將最后一個(gè)元素放在第一個(gè)位置上,使其成為第一
個(gè)元素,其余元素后移一個(gè)位置。通過(guò)n-1-p次循環(huán)實(shí)現(xiàn)將從p到n-1
的數(shù)組元素平移到數(shù)組的前面。
22.\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==0)
\n{printf("%disnotaprime!”,a);
\nretum0;}
\nprintf("%disaprime!”,a);
\nretum1;}
\nmain
\n{intx;
\nprintf("\\npleaseenteranumber:^^);
\nscanf("%d",&x);
\nprintf(tc%d\\n,,,fun(x));}
\n
23.
【解析】要使數(shù)組左下半三角元素中的值全部置成0,先要找出數(shù)組的
下半三角元素,再將其值全部賦值為0。二維數(shù)組中下半三角元素的特
點(diǎn)為,其列下標(biāo)小于其行下標(biāo)。根據(jù)這個(gè)特點(diǎn),將二維數(shù)組的下半三
角元素都賦值為0。
24.
【解析】要算出變量num的值,首先需要得到變量numl和hum2個(gè)
位和十位上的數(shù)字。然后將在千位上的數(shù)字乘以1000,百位上的數(shù)字
乘以100,十位上的數(shù)字乘以10,各位上的數(shù)字乘以1,就能得到要求
的hum。
25.
【考點(diǎn)分析】
本題考查:for循環(huán)語(yǔ)句遍歷字符串,并通過(guò)if條件語(yǔ)句,判斷字符串
是否結(jié)束。
【解題思路】
從字符串中查找指定字符,需要使用循環(huán)判斷結(jié)構(gòu),循環(huán)語(yǔ)句用來(lái)遍
歷字符串,循環(huán)條件為字符串沒(méi)有結(jié)束,即當(dāng)前字符不是'\0',判斷
語(yǔ)句用來(lái)判斷當(dāng)前字符是否為指定字符。最后返回指定字符的個(gè)數(shù)。
26.
【解析】首先我們應(yīng)定義一個(gè)變量來(lái)表示其和,另一個(gè)來(lái)表示其項(xiàng)數(shù),
然后通過(guò)循環(huán),求得其差值,最后把和的平方返回到主函數(shù)中。
27.
【解析】我們應(yīng)定義一個(gè)變量表示其和,一個(gè)變量表示其分?jǐn)?shù),由題目
中可知循環(huán)結(jié)束的標(biāo)志為分?jǐn)?shù)小于eps,因此其為循環(huán)結(jié)束的條件,根
據(jù)公式的變化規(guī)律,可求得s,最后把2*s返回到主函數(shù)中。
28.
程序設(shè)計(jì)題解析:
【考點(diǎn)分析】
本題考查:指針型變量定義;while循環(huán)語(yǔ)句;if語(yǔ)句條件表達(dá)式;字
符串結(jié)束標(biāo)識(shí)、(T。
【解題思路】
函數(shù)fun的功能:除了字符串前導(dǎo)的*號(hào)之外,將串中其他。號(hào)全部刪
除。解答本題,(1)定義一個(gè)臨時(shí)指針P,初始指向原串首地址;(2)利
用循環(huán)語(yǔ)句把字符串前導(dǎo)*號(hào)拷貝到原串;(3)繼續(xù)移動(dòng)指針,把串中和
串尾的非*號(hào)字符拷貝到原串;(4)為修改后的字符串賦結(jié)束字符
【解題寶典】
要?jiǎng)h除字符串中的指定字符,通常采用保留非指定字符的方法??梢?/p>
將非指定字符保留在原串,即將需要保留的字符從原串的起始位置重
新賦值;也可以保留到新串,即新建一個(gè)字符串,存放要保留的字
符。
29.
【解析】題目中要求字符串前部的*不得多于m,首先要計(jì)算出字符串
前部的*號(hào)的個(gè)數(shù),與變量m進(jìn)行比較。當(dāng)字符串前部的*多于m個(gè)時(shí),
刪除多余的*。規(guī)定不能用字符串函數(shù)處理,可以通過(guò)移動(dòng)字符串的首
指針來(lái)實(shí)現(xiàn)。
30.
intbits〃住*tit量隨計(jì)儀a
while(n/10)A0,若不為O.bits*1,4
*n*以10,域修判斷
I
bitsx;
n-n/10;
returnbits;【考點(diǎn)分析】主要考察考生對(duì)循環(huán)
跳出的條件的理解,以及理解取數(shù)字位數(shù)的方法?!窘忸}思路】通過(guò)
對(duì)指定的多位數(shù)每次除以10,去掉最后一位,直到為。結(jié)束,使用臨時(shí)
變量來(lái)統(tǒng)計(jì)一個(gè)多位數(shù)的位數(shù)。
31.(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ù)功能。
32.(1)錯(cuò)誤:printf("%4d"xx[ij]);正確:printf("%4d"xx[i][j]):(2)錯(cuò)誤:
printf('\n');正確:printr("\n");⑴錯(cuò)誤:printf('%4d',xx[ij]);正確:
printf('%4d',xx[i][j]):\r\n(2)錯(cuò)誤:printf(\'\\n\');正確:printr('Wn');解
析:錯(cuò)誤1:此處考查的是對(duì)二維數(shù)組的引用方法。錯(cuò)誤2:此處考查
的是輸出語(yǔ)句的語(yǔ)法,括號(hào)中應(yīng)該用雙引號(hào),而不是單引號(hào)。
33.(1)錯(cuò)誤:for(i=2;i<m;i++)正確:for(i=2;i<=m;i++)(2)錯(cuò)誤:y-
=l/(i*i);正確:y-=1.0/(i*i);⑴錯(cuò)誤:for(i=2;i<m;i++)正確:for(i=2;i
<=m;i++)\r\n(2)錯(cuò)誤:y-=l/(i*i);正確:y-=1.0/(i*i);解析:該題是
一道簡(jiǎn)單的計(jì)算題,循環(huán)條件for(i=2;i<m;i++)中忽略了i=
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 科技驅(qū)動(dòng)農(nóng)產(chǎn)品電商
- 科技農(nóng)業(yè)投資視角
- 專(zhuān)業(yè)房產(chǎn)經(jīng)紀(jì)服務(wù)協(xié)議2024版范本版
- 二零二四宇通客車(chē)零部件銷(xiāo)售代理及市場(chǎng)拓展合作協(xié)議3篇
- 2025年度電商新零售線(xiàn)下體驗(yàn)店合作合同3篇
- 專(zhuān)業(yè)銷(xiāo)售服務(wù)協(xié)議書(shū)2024年3篇
- 2025年度跨境電商物流中心場(chǎng)地承包經(jīng)營(yíng)合同4篇
- 2025年度航空航天復(fù)合材料加工技術(shù)合同4篇
- 2025年度茶樓裝修工程合同標(biāo)準(zhǔn)樣本8篇
- 2025年度教育機(jī)構(gòu)場(chǎng)地租賃保證金合同8篇
- 2024版塑料購(gòu)銷(xiāo)合同范本買(mǎi)賣(mài)
- 【高一上】【期末話(huà)收獲 家校話(huà)未來(lái)】期末家長(zhǎng)會(huì)
- JJF 2184-2025電子計(jì)價(jià)秤型式評(píng)價(jià)大綱(試行)
- GB/T 44890-2024行政許可工作規(guī)范
- 有毒有害氣體崗位操作規(guī)程(3篇)
- 二年級(jí)下冊(cè)加減混合豎式練習(xí)360題附答案
- 吞咽解剖和生理研究
- TSG11-2020 鍋爐安全技術(shù)規(guī)程
- 汽輪機(jī)盤(pán)車(chē)課件
- 異地就醫(yī)備案?jìng)€(gè)人承諾書(shū)
- 蘇教版五年級(jí)數(shù)學(xué)下冊(cè)解方程五種類(lèi)型50題
評(píng)論
0/150
提交評(píng)論