版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2022年遼寧省營口市全國計(jì)算機(jī)等級考試
C語言程序設(shè)計(jì)真題(含答案)
學(xué)校:班級:姓名:考號:
一、2.填空題(10題)
1.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲結(jié)構(gòu),線性鏈表屬于[】。
2.數(shù)據(jù)字典是各類數(shù)據(jù)描述的集合,它通常包括5個部分,即數(shù)據(jù)項(xiàng)、
數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、和處理過程。
3.函數(shù)check用來判斷字符串s是否是“回文”(順讀和倒讀都一樣的字
符串為“回文”,如abeba)。是則函數(shù)返回值1,否則返回值0,請?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ù)庫系統(tǒng)中實(shí)現(xiàn)各種數(shù)據(jù)管理功能的核心軟件稱為【】。
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è)一棵二叉樹的中序遍歷結(jié)果為DBEAFC,前序遍歷結(jié)果為
ABDECF,則后序遍歷結(jié)果為【】。
10.mystrlen函數(shù)的功能是計(jì)算str所指字符串的長度,并作為函數(shù)值返
回。請?zhí)羁铡?/p>
intmystrlen(char*str)
{intI;
for(I=0;[]!='\n';I++);
return(I);}
二、單選題(10題)
ll.設(shè)有定義'Charp口={T,2,3},*q=p;",以下不能計(jì)算出一個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ì)語言的先進(jìn)性D.程序的易讀
性
16.
(1)算法的空間復(fù)雜度是指()。
A)算法程序的長度B)算法程序中的指令條數(shù)
C)算法程序所占的存儲空間D)律法執(zhí)行過程中所需要的存儲空間
17.C語言中char類型數(shù)據(jù)占字節(jié)數(shù)為()。
A.3B.4C.1D.2
18.要聲明一個有10個int型元素的數(shù)組,正確的語句是()。
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.無確定值
20.以下描述中正確的是
A.由于do-while循環(huán)中循環(huán)體語句只能是一條可執(zhí)行語句,所以循環(huán)體
內(nèi)不能使用復(fù)合語句
B.do-while循環(huán)由d。開始,用while結(jié)束,在while(表達(dá)式)后面不能寫
分號
C.在do-while循環(huán)體中,是先執(zhí)行一次循環(huán),再進(jìn)行判斷
D.do-while循環(huán)中,根據(jù)情況可以省略while
三、程序設(shè)計(jì)題(10題)
21.請編寫函數(shù)proc(),該函數(shù)的功能是:移動一維數(shù)組中的內(nèi)容,若
數(shù)組中有n個整數(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。移動后,一維數(shù)組中的內(nèi)容應(yīng)
為5,6,7,8,9,10.11,12,13,14,1,2,3,4O注意:部分源
程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅
在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
/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.請編一個函數(shù)intfun(inta),它的功能是:判斷a是否是素?cái)?shù),若a是
素?cái)?shù),返回1;若不是素?cái)?shù),返回0。A的值由主函數(shù)從鍵盤讀入。
23.下列程序定義了MM的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫
函數(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
注意:部分源程序給出如下。
請勿改動main。函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括
號中填入所編寫的若干語句。
試題程序:
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)生一個隨機(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.請編寫函數(shù)proc(),該函數(shù)的功能是:將兩個兩位數(shù)的正整數(shù)
numl,num2合并形成一個整數(shù)放在num中。合并的方式是:將numl
數(shù)的十位和個位數(shù)依次放在num數(shù)的十位和千位上,num2數(shù)的十位
和個位數(shù)依次放在c數(shù)的百位和個位上。
例如,當(dāng)num1=64,num2=18時,調(diào)用到該函數(shù)后,num=4168o
注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括
號中填入所編寫的若干語句。
試題程序:
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.編寫函數(shù)fun,其功能是:求ss所指字符串中指定字符的個數(shù),并返
回此值。
例如,若輸入字符串123412132,輸入字符為1,則輸出3。
注意:部分源程序在文件PR0G1.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括
號中填入你編寫的若干語句。
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ù)用于打開文件.輸入測試數(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.
請編寫函數(shù)proc(),它的功能是計(jì)算:s=(1-ln(1)-In(2)-In(3)
-...-In(m))2s作為函數(shù)值返回。在C語言中可調(diào)用log(n)函數(shù)求
In(n)olog函數(shù)的引用說明是doublelog(doublex)o例如,若m的
值為10,則proc()函數(shù)值為198.934454O注意:部分源程序給出如
下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc
()的花括號中填入所編寫的若干語句。試題程序:
sindudeVCCMIIQ.
Sincludeb>
¥indudeh>
doublepVQr(mim)
mHMuUfH)
?y?tctn(*CLS*)i
prifitit*Kf\n**proc(10))i
27.
請編寫一個函數(shù)proc(),它的功能是:根據(jù)以下公式求7c的值(要求
滿足精度。.。。。5,即某項(xiàng)小于。.。05時停止迭代)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注意:
部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)
容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
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ī)定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,其功能是:
除了字符串前導(dǎo)的*號之外,將串中其他*號全部刪除。在編寫函數(shù)時,
不得使用c語言提供的字符串函數(shù)。
例如,字符串中的內(nèi)容為:****A*BC*DEF*G*******,刪除后,字符
串中的內(nèi)容應(yīng)當(dāng)是:
****ABCDEFG。
注意:部分源程序在文件PR0G1.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括
號中填入你編寫的若干語句。
#include<stdin,h>
voidfun(rhar?■)
main()
chars[81];voidNONO();
printf(*Enterastring:\nN);geu(B);
fun(、):
|irintf("Thestringafterdeleted:\n");puts(?);
NONO():
voidNONO()
!/?本南數(shù)用于打開文件.輸入數(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.
假定輸入的字符串中只包含字母和*號。請編寫函數(shù)proc(),它的功能
是:使字符串中前部的*號不得多余m個;若多余m個,則刪除多余的
*號;若少于或等于m個,則什么也不做,字符串中間和尾部的*號不刪
除。例如,字符串中的內(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ù)中輸
入。在編寫函數(shù)時,不得使用c語言提供的字符串函數(shù)。注意:部分源
程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅
在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
/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….請編寫函數(shù)。fun能是:判斷形參n中的正整數(shù)是幾位數(shù)(輸入數(shù)
據(jù)的位數(shù)不超過4位),并將結(jié)果通過函數(shù)值返回。例如:若輸入的數(shù)
據(jù)為123,則輸出結(jié)果為:輸入的數(shù)字是3位。注意:部分源程序存在
PR0G1.C中,請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函
數(shù)fun的花括號中填入所縮寫的若干語句。試題程
iinclude<stdio.h>
voidNONOO;
intfun(intn)
main()
{intn,place;
do{
printf請輸入一個4位以內(nèi)的正整數(shù):?);
scanf;
)while(n<0IIn>9999);
place-fun(n);
printf("IS人的數(shù)字是%d位\n**,place);
NONO();
)
voidNONO()
{/?本函數(shù)用于打開文件,輸入數(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個
數(shù),最大的放在a中,最小的放在c中,中間的放在b中。
例如,輸入的數(shù)為:551234,輸出結(jié)果應(yīng)當(dāng)是:a=55.0,b=34.0,
c=12.0o
請改正程序中的錯誤,使它能得出正確結(jié)果。
注意:不要改動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ù)方陣,
然后求兩條對角線上的各元素的平方和,返回此和數(shù)。
請改正程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動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)
請改正函數(shù)fun()中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動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,.......
和值通過函數(shù)值返回main()函數(shù)。例如,若輸入n=5,則應(yīng)輸出8.391667O
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動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ì)算并輸出下列級數(shù)的的
N項(xiàng)之和SN,直到SN+1大于q為止,q的值通過形參傳入。
SN=2/1+3/2+4/3+(N+1)/N
例如,若q的值為50.0,則函數(shù)值為49.394948。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意,?不要改動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的階乘。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動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
請改正fun函數(shù)中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動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ù)值返回。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動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所指字符串的長度相同。例如:當(dāng)
s所指字符串中所指的內(nèi)容為abcdabfab,tl所指字符串中的內(nèi)容為ab,
t2所指字符串中的內(nèi)容為99時,結(jié)果在w所指的數(shù)組中的內(nèi)容應(yīng)為
99cd99f99。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動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個實(shí)數(shù),輸出平均值,
并統(tǒng)計(jì)平均值以上(含平均值)的實(shí)數(shù)個數(shù)。例如,n=8時,輸入193.199,
195,673,195,757,196,051,196.092,196,596,196,579,196.763,所
得平均值為195.838745,在平均值以上的實(shí)數(shù)個數(shù)應(yīng)為5。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動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));
)
五、程序改錯題(2題)
41.下列給定的程序中,函數(shù)proc()的功能是:計(jì)算并輸出k以內(nèi)最大
的10個能被15或18整除的自然數(shù)之和,k的值由主函數(shù)傳人。若k
的值為800,則函數(shù)的值為7605。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動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時,t=0.488203。請修改函數(shù)proc()中的錯誤,使它能得出正
確的結(jié)果。注意:不要改動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個字符開始的n
個字符,請?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.請編一個函數(shù)voidproc(intttEM][N],intpp[N]),tt指向一個M行
N列的二維數(shù)組,求出二維數(shù)組每行中最大元素,并依次放入pp所指
的一維數(shù)組中。二維數(shù)組中的數(shù)已在主函數(shù)中給出。
注意:部分源程序給出如下。
請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括
號中填入所編寫的若干語句。
試題程序:
#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.存儲結(jié)構(gòu)
2.數(shù)據(jù)存儲數(shù)據(jù)存儲
3.s+n-lpl<p2s+n-l\r\npl<p2解析:判斷是否“回文”字符串,應(yīng)該使用
兩個字符型指針,一個從前往后遍歷字符串,另一個從后往前遍歷字符
串,直到它們中途相遇,如果每次兩個指針?biāo)傅淖址枷嗤瑒t為“回
文”字符串。程序中已經(jīng)使pl=s,即指向字符串的第一個字符了,所以
p2應(yīng)該指向s的最后一個字符,故第一空應(yīng)填s+n-1。比較兩個指針時,
如果有一次不相同,則跳出循環(huán),因?yàn)榇藭r已可肯定不是“回文”字符串。
如果是while循環(huán)的條件pl<p2不滿足時自然結(jié)束的循環(huán),則每次比
較都是相同的,兩個指針是中途相遇了才結(jié)束比較。兩種情況的區(qū)別就
是pl<p2是否成立。故第二空應(yīng)該填pl<p2。
4.BCDCDDBCD\r\nCD\r\nD解析:本題考查指向字符串的指針的運(yùn)算
方法。指針變量P首先指向字符串中的第一個字符A,執(zhí)行p=s+l后,p指
向字符串中的第二個字符B,然后輸出值記CD并換行,依次執(zhí)行循環(huán)語句。
5.59
6.HowdoessheHowdoesshe解析:strcpy(strl,si);字符串拷貝函數(shù),
作用是將字符串si拷貝到字符數(shù)組strl中去。strlen(str):測試字符串str
的長度,函數(shù)的值為字符串中實(shí)際長度,不包括\'\\ov在內(nèi)。本題中
strlen(strl)的值為13,貝strcpy(strl+strlen(strl)/2,'esshe');相當(dāng)于
strcpy(strl+6,'esshe');,因此可得答案為Howdoesshe
7.數(shù)據(jù)庫管理系統(tǒng)
數(shù)據(jù)庫管理系統(tǒng)(DBMS)
8.33解析:C語言的語法規(guī)定:else子句總是與前面最近的不帶else的
if相結(jié)合。因?yàn)閤不大于y,所以執(zhí)行printf(%d\\n;z);語句。
9.DEBFCA
10.*(str+I)或str[I]*(str+I)或str[I]解析:str是指針變量,它指向字符型數(shù)
據(jù),在循環(huán)過程中,可以用*(str+I)來訪問字符串中的第I個元素,判斷是
否為結(jié)束標(biāo)志,如果不是,1=1+1,繼續(xù)取下一個元素進(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)存空間,一個結(jié)構(gòu)所占內(nèi)存空間的大小是結(jié)構(gòu)
中每個成員所占內(nèi)存空間大小的總和,結(jié)構(gòu)中每個成員相互獨(dú)立;聯(lián)合
所占用的內(nèi)存空間為最長的成員所占用的空間。
15.D解析:程序不僅是編寫完就結(jié)束了,為了測試和維護(hù)程序,往往還
有其他人閱讀和跟蹤程序,因此程序設(shè)計(jì)的風(fēng)格應(yīng)該強(qiáng)調(diào)簡單和清晰,
即程序的易讀性,“清晰第一,效率第二”。
16.D
17.C
Char類型數(shù)據(jù)占1個字節(jié)。
18.A
19.A解析:本題定義了一個指向由3個元素組成的一維數(shù)組的指針變
量pa,通過賦值讓它指向具有2行3列的數(shù)組a,此時用指針變量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語句輸入的值
為2+4+1=7。所以,A選項(xiàng)為所選。
20.C解析:do-while語句的一般形式為:do循環(huán)體語句while(表達(dá)式);,
其中循環(huán)體語句可以是復(fù)合型語句,但必須用花括號括起來。while后
必須要有分號作為語句的結(jié)束,在do-while循環(huán)中,不可以省略while。
21.
【解析】題目中要求把下標(biāo)從p到n-1的數(shù)組元素平移到數(shù)組的前面,
可以通過每一次循環(huán)將最后一個元素放在第一個位置上,使其成為第一
個元素,其余元素后移一個位置。通過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ù)這個特點(diǎn),將二維數(shù)組的下半三
角元素都賦值為0。
24.
【解析】要算出變量num的值,首先需要得到變量numl和hum2個
位和十位上的數(shù)字。然后將在千位上的數(shù)字乘以1000,百位上的數(shù)字
乘以100,十位上的數(shù)字乘以10,各位上的數(shù)字乘以1,就能得到要求
的hum。
25.
【考點(diǎn)分析】
本題考查:for循環(huán)語句遍歷字符串,并通過if條件語句,判斷字符串
是否結(jié)束。
【解題思路】
從字符串中查找指定字符,需要使用循環(huán)判斷結(jié)構(gòu),循環(huán)語句用來遍
歷字符串,循環(huán)條件為字符串沒有結(jié)束,即當(dāng)前字符不是'\0',判斷
語句用來判斷當(dāng)前字符是否為指定字符。最后返回指定字符的個數(shù)。
26.
【解析】首先我們應(yīng)定義一個變量來表示其和,另一個來表示其項(xiàng)數(shù),
然后通過循環(huán),求得其差值,最后把和的平方返回到主函數(shù)中。
27.
【解析】我們應(yīng)定義一個變量表示其和,一個變量表示其分?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)語句;if語句條件表達(dá)式;字
符串結(jié)束標(biāo)識、(T。
【解題思路】
函數(shù)fun的功能:除了字符串前導(dǎo)的*號之外,將串中其他。號全部刪
除。解答本題,(1)定義一個臨時指針P,初始指向原串首地址;(2)利
用循環(huán)語句把字符串前導(dǎo)*號拷貝到原串;(3)繼續(xù)移動指針,把串中和
串尾的非*號字符拷貝到原串;(4)為修改后的字符串賦結(jié)束字符
【解題寶典】
要刪除字符串中的指定字符,通常采用保留非指定字符的方法??梢?/p>
將非指定字符保留在原串,即將需要保留的字符從原串的起始位置重
新賦值;也可以保留到新串,即新建一個字符串,存放要保留的字
符。
29.
【解析】題目中要求字符串前部的*不得多于m,首先要計(jì)算出字符串
前部的*號的個數(shù),與變量m進(jìn)行比較。當(dāng)字符串前部的*多于m個時,
刪除多余的*。規(guī)定不能用字符串函數(shù)處理,可以通過移動字符串的首
指針來實(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)分析】主要考察考生對循環(huán)
跳出的條件的理解,以及理解取數(shù)字位數(shù)的方法?!窘忸}思路】通過
對指定的多位數(shù)每次除以10,去掉最后一位,直到為。結(jié)束,使用臨時
變量來統(tǒng)計(jì)一個多位數(shù)的位數(shù)。
31.(l)floatk;(2)if(*a<*c)(l)floatk;(2)if(*a<*c)解析:本題中函數(shù)
的功能是把主函數(shù)中輸入的3個數(shù),最大的放在a中,最小的放在c中。
對三個數(shù)進(jìn)行兩兩比較,實(shí)現(xiàn)函數(shù)功能。
32.(1)錯誤:printf("%4d"xx[ij]);正確:printf("%4d"xx[i][j]):(2)錯誤:
printf('\n');正確:printr("\n");⑴錯誤:printf('%4d',xx[ij]);正確:
printf('%4d',xx[i][j]):\r\n(2)錯誤:printf(\'\\n\');正確:printr('Wn');解
析:錯誤1:此處考查的是對二維數(shù)組的引用方法。錯誤2:此處考查
的是輸出語句的語法,括號中應(yīng)該用雙引號,而不是單引號。
33.(1)錯誤:for(i=2;i<m;i++)正確:for(i=2;i<=m;i++)(2)錯誤:y-
=l/(i*i);正確:y-=1.0/(i*i);⑴錯誤:for(i=2;i<m;i++)正確:for(i=2;i
<=m;i++)\r\n(2)錯誤:y-=l/(i*i);正確:y-=1.0/(i*i);解析:該題是
一道簡單的計(jì)算題,循環(huán)條件for(i=2;i<m;i++)中忽略了i=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2(2024版)全球教育服務(wù)輸出合同
- 2024年工程設(shè)計(jì)合同范本
- 2024年地產(chǎn)開發(fā)投資網(wǎng)絡(luò)安全保障合同
- 2024加工承攬合同的風(fēng)險(xiǎn)與管理
- 航空產(chǎn)業(yè)園行業(yè)相關(guān)投資計(jì)劃提議
- 青少年自行車課程設(shè)計(jì)
- 射頻同軸電纜組件相關(guān)項(xiàng)目投資計(jì)劃書
- 八氟戊醇相關(guān)項(xiàng)目投資計(jì)劃書
- racemic-Naproxen-Standard-生命科學(xué)試劑-MCE
- 2024年代運(yùn)營協(xié)作協(xié)議模板
- 【8道期中】安徽省滁州市全椒縣2023-2024學(xué)年八年級上學(xué)期11月期中道德與法治試題
- 2024至2030年中國泰妙菌素行業(yè)投資前景及策略咨詢研究報(bào)告
- 2024-2030年中國航空噪聲與振動主動控制系統(tǒng)行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報(bào)告
- 20起典型火災(zāi)事故案例合集-2024年消防月專題培訓(xùn)
- 大藥房《質(zhì)量管理體系文件》-管理制度
- 集團(tuán)內(nèi)部資金調(diào)撥管理辦法
- 期刊編輯的學(xué)術(shù)期刊內(nèi)容營銷策略考核試卷
- 黑臭河道整治工程施工組織設(shè)計(jì)
- 《地名、人名的拼寫》教學(xué)設(shè)計(jì)
- 貿(mào)易居間費(fèi)合同范本
- 五年級上冊道德與法治第7課《中華民族一家親》第2課時說課稿
評論
0/150
提交評論