




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2021年廣東省佛山市全國計算機等級考試
C語言程序設(shè)計真題(含答案)
學(xué)校:________班級:姓各考號:
一、2.填空題(10題)
1.數(shù)據(jù)庫系統(tǒng)在其內(nèi)部分為三級模式,即概念模式、內(nèi)模式和外模式。
其中,【】給出了數(shù)據(jù)庫物理存儲結(jié)構(gòu)和物理存取方法。
2.已知字符A的ACSII碼值為65,以下語句的輸出結(jié)果是_____。
charch='B';
printf("%c%d\n",ch,ch);
3.下面fun函數(shù)的功能是將形參x的值轉(zhuǎn)換成二進制數(shù),所得二進制數(shù)
的每一位數(shù)放在數(shù)組中返回,二進制數(shù)的最低位放在下標(biāo)為。的元素中,
其他依此類推。請?zhí)羁铡?/p>
Fun(intx,intb[])
{intk=0,r;
do
{r=x%2;
()=r;
x/=2;
}while(x);
)
4.以下程序運行后的輸出結(jié)果是____o
fun(intx)
{if(x/2>0)fun(x/2);
printf("%d",x);
main()
{fun(6);)
5.以下程序段的輸出結(jié)果是【】。
main()
{inta=2,b=2,c=4;
a*=16+(b++)-(++C);
printf("%d",a);
)
6.已有定義:charc=〃;inta=l,b;(此處c的初值為空格字符),執(zhí)行b=!c&&a;
后b的值為【
7.數(shù)據(jù)庫管理系統(tǒng)是位于用戶與之間的軟件系統(tǒng)。
8.以下程序的輸出結(jié)果是【】。
#include<stdio.h>
#defineMAX(x,y)(x),(y)?(x):(y)
main()
{inta=5,b=2,c=3,d=3,t;
t=MAX(a+b,c+d)*10;
printf("%d\n",t);
)
9.下面程序的功能是:計算110之間的奇數(shù)之和與偶數(shù)之和,請?zhí)羁铡?/p>
#include<stdio.h>
main()
{inta,b,c,I;
a=c=O;
for(I=0;I<=10;I+=2)
{a+=I;
【】;
c+=b;}
printf("偶數(shù)之和二%d\n",a);
printf("奇數(shù)之和=%d\n",c-11);}
10.若a=l,b=2,則表達式!(x=A)II(y=B)&&0的值是
二、單選題(10題)
11.若變量a,b已正確定義,且b已正確賦值,則合法的語句是()。
A.b=double(b);B.(int)a=(int)b;C.a=a++=5;D.a=double(b);
12.有以下定義和語句
StructWorkers
{intnum;charname[20];charc;
struct
{intday;intmonth;intyear;)s;
);-
StructWorkersW,*pe;
PW=&W;
能給W中yeaR成員賦1980的語句是
A.*pW.yeaR=1980;
B.W.yeaR=1980;
C.pW->yeaR=1980;
D.W.s.yeaR=1980;
13.設(shè)一個廣義表中結(jié)點的個數(shù)為n,則求廣義表深度算法的時間復(fù)雜度
為O
A.O(1)B.O(n)C.O(n2)D.O(log2n)
14.在數(shù)據(jù)結(jié)構(gòu)中,從邏輯上可以把數(shù)據(jù)結(jié)構(gòu)分為()。
A.動態(tài)結(jié)構(gòu)和靜態(tài)結(jié)構(gòu)B.緊湊結(jié)構(gòu)和非緊湊結(jié)構(gòu)C.線性結(jié)構(gòu)和非線
性結(jié)構(gòu)D.內(nèi)部結(jié)構(gòu)和外部結(jié)構(gòu)
15.數(shù)據(jù)的存儲結(jié)構(gòu)是指()。
A.數(shù)據(jù)所占的存儲空間
B.數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機中的存放形式
C.數(shù)據(jù)在計算機中的順序存儲方式
D.存儲在計算機外存中的數(shù)據(jù)
16.若有說明:int*p,m=5,n,?以下正確的程序段是
A.p=&n;scanf("%d",&p);
B.p=&n;scanf("%d",*p)
C.scanf("%d",&n);*p=n;
D.p=&n;*p=m;
17.以下敘述中正確的是0
A.C程序由函數(shù)和過程組成B.C程序由主函數(shù)組成C.C程序由函數(shù)組
成D.C程序中,主函數(shù)必須放在其他函數(shù)之前
18.下列敘述中錯誤的是()。
A.用戶定義的函數(shù)中可以沒有return語句
B.用戶定義的函數(shù)中可以有多個return語句,以便調(diào)用一次返回多個函
數(shù)值
C.用戶定義的函數(shù)中若沒有return語句,則應(yīng)當(dāng)定義函數(shù)為void類型
D.函數(shù)的return語句中可以沒有表達式
19.有以下程序:
#include<stdio.h>
doublef(doublex);
main()
{doublea=0;inti;
for(i=0;i<30;i+=10)a+=f((double)i);
printf("%5.of\n",a);
)
doublef(doublex)
{returnx*x+l;}
程序運行后的輸出結(jié)果是()oA.503B.401C.500D.1404
20.下列算法中,()算法用來求圖中某頂點到其他頂點所有頂點之間的最
短路徑。
A.DijkstraB.FloyedC.PrimD.Kruskal
三、程序設(shè)計題(10題)
21.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方案
的項目中包含一個源程序文件progl.c。在此程序中,規(guī)定輸入的字符串
中只包含字母和*號。請編寫函數(shù)其功能是使字符串的前導(dǎo)*號不得多于
n個,若多于n個,則刪除多余的*號;若少于或等于n個,則不做處
理。字符串中間和尾部的*號不刪除。
例如,字符串中的內(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ù)中輸入。在編寫函數(shù)時,不得使用C語言提供的字符串函
數(shù)。
注意:部分源程序給出如下。
請勿改動主函數(shù)main。和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花
括號中填入你編寫的若干語句。
試題程序:
#include<stdio.h>
#include<conio.h>
voidfun(char*a,intn)
(
)
voidmain()
chars[81];intn;
printf("Enterastring:\n^^);
gets(s);
printf("Enter
scanf("%d”,&n);
fun(s,n);
printf(uThestringafterdeleted:\n,,);
puts(s);
22.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方
案的項目中包含一個源程序文件progl.c。在此程序中,請編寫函數(shù)其功
能是移動一維數(shù)組中的內(nèi)容,若數(shù)組中有n個整數(shù),要求把下標(biāo)為。?
P(含P,P小于等于n-1)的數(shù)組元素平移到數(shù)組的最后。
例如,一維數(shù)組中的原始內(nèi)容為1、2、3、4、5、6、7、8、9、10;P
的值為3。移動后,一維數(shù)組中的內(nèi)容應(yīng)為5、6、7、8、9、10、1、
2、3、4o
注意:部分源程序給出如下。
請勿改動主函數(shù)main。和其他函數(shù)中的內(nèi)容,僅在函數(shù)fun()的花括號
中填入你編寫的若干語句。
試題程序:
#include<stdio.h>
#defineN80
voidfun(int*w,intp,intn)
(
)
main()
{inta[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
inti,p,n=15;
printf(4tTheoriginaldata:\n,5);
for(i=0;i<=""p="">
printf(u%3d,,,a[i]);
printf(u\n\nEnterp:"j;
scanf("%d“,&p);
fun(a,p,n);
printf(4t\nThedataaftermoving:\n^^);
for(i=0;i<=""p="">
printf(u%3d,5,a[i]);
printf("\n\n");
23.規(guī)定輸入的字符串中只包含字母和+號。編寫函數(shù)fun,其功能是:除了字符串前導(dǎo)和
尾部的母號外,將其他的*號全部刪除。形參h已指向字符串中第一個字母,形參P指向字
符串中最后一個字母。在編寫函數(shù)時,不得使用c語言提供的字符串函數(shù)。
例如,若字符串中的內(nèi)容為,刷除后,字符串中的內(nèi)容應(yīng)當(dāng)是
“…,ABCDEFG
注意:部分源程序給出如下。
詁勿改動主函效main和其他晶數(shù)中的任何內(nèi)零.僅在函數(shù)firn的花括號中埴入你編將的若干語句。
試爆程序:
#inrlude<stdio.h>
voidfun(char*&char?h.char-p)
I
)
main。
{char48tkL'f;
printffTnteraMringzVi*');
?Ms>;'
while(*t)
t++:
I
whileet=e*)
t-;
while(*t==B)
l-;
whi陽*fsT*')
f++;fun(sJ,0i
printf(,rThestringafterdeleted"");
puts(R);
1“
24.請編寫一個函數(shù),用來刪除字符串中的所有空格。例如,輸入
abcdefgh,則輸出為abcdefgho注意:部分源程序給出如下。請勿改
動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號
中填入所編寫的若干語句。試題程序:
Uatcludrh>
3mdiMir<ctypr.h>
=itirludc<conio.h>
tticludr<
midpfocXrhar?Mr)
vmdmmvi<>
charNr[8l[i
'CLS">i
prtntk91npui?brings")i
Mr)?
putMMr)a
l>roe<Mr>s
prinif<????Mtri^s\n*?!rtr)i
25.輸出1—100之間不能被12整除的數(shù)。
26.程序定義了MxM的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函
數(shù)proc(inta口[M],intn),該函數(shù)的功能是使數(shù)組左下半三角元素中的
值加上n。例如,a數(shù)組中的值為:
苦n第假有1.0道帕士中的假力
3234s
I?8910
?-1314IS141$
!IS19202120
12324252627
注意:部分源程序給出如下。
請勿改動main。函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括
號中填入所編寫的若干語句。
試題程序:
Smclu3rVdmc.k>
giludeV,ub(Kb>
SindudeVcotsio.h>
Sinclude<zdlih
tfdrfineM5
voidproc<itMa[][M'?mt■>
roidm&m(>
(
tfMhji
Ml?rr[S][S],“.2?3?4?5?6?7?8?9.IOJi.l*」B?
HJS.H.l?aSJ9.204U22<23?t4.25ii
?yME「C1S)i
pfituK*????Thearray????\n*)i
%4d\fT.0》i
proHarr.n)i
DRIHIC*????THERESULT????\n>>t
fodi-0Bi<Mti++)
(
(or<j-,Oij<Mi)
pnnt(<■Kid")i
printfC
27.請編寫函數(shù)fun,其功能是:找出一維整型數(shù)組元素中最大的值所
在的下標(biāo),并通過形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。
主函數(shù)中x是數(shù)組名,n是x中的數(shù)據(jù)個數(shù),max存放最大值。index
存放最大值所在元素的下標(biāo)。
注意:部分源程序給出如下。
請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花
括號中填入你編寫的若干語句。
試題程序:
然includeVtimc.h>
aincludeV'tdlib.h>
Uinclude<stdio.h>
voidfunCintafj.int?max?int?d)
(
}
vnidmikin().
(
in<i,x[20].max.index,n10i
5r?nf((unsigned)lime(NULL))?
for(inOiiV=rui++)
(
x[i]=rnnd()%50i
printf(M^4dM.x[iJ)r〃輸出個的機數(shù)紙
)
prinlf(*\nw>?
fun(x.n.&max.&index)i
prinlf("Max=%5d.Index=%4d\n".max.in-
dex)?
28.n個人的成績存放在score數(shù)組中,請編寫函數(shù)proc(),它的功能是
將低于平均分的人數(shù)作為函數(shù)值返回,將低于平均分的分數(shù)放在down
所指的數(shù)組中。例如,當(dāng)score數(shù)組中的數(shù)據(jù)為{99,80,40,56,59,
84,60,76,100}時,函數(shù)返回的人數(shù)應(yīng)該是4,down中的數(shù)據(jù)應(yīng)為
40565960o注意:部分源程序給出如下。請勿改動main()函數(shù)和其
他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干
語句。試題程序:
岑includek>
9inriudeVcooio.h>
Sinclude<Ndxx
SincludeV,tr?ng.h>
uMproc(miscorrf;.mt???m4owrCl>
roidRMint)
inil?n?down[9]t
mi?corc(9]*
<0,7<.(00)1
?ywtem(*CLS*)?
fi*proHMXMVa9?dowit>|
pnntf(*\ndowntotbeaverage?corraret*)?
?<>r<i,Oiynii+?>
pnntf(*%d*?downf|]>i
print".\a*)i
29.
學(xué)生的記錄由學(xué)號和成績組成,M名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)
體數(shù)組stu中,請編寫函數(shù)proc(),它的功能是:把分數(shù)最低的學(xué)生數(shù)
據(jù)放在h所指的數(shù)組中。注意:分數(shù)低的學(xué)生可能不止一個。注意:
部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)
容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
includeVsidiah>
Sdrfif?rM
lypetlefMn*r1
charluiml*I。/
mt?|
STRBCi
mipror(STREC?■.STRIX*?b)
STRfT?<;A005*.KZLI?(iAOOS*.751.
?(;AOO2*.B51■1?GAOOV.7R
?GA0O1F5〉?也人007?.62
,;AOOIT?T?(eGA0O6\&5
?GA<H5,Z)?CGAoir.?i
?<;40ir.7H..(?GAOI4L97
?GAOir.to:?|,GAol7*?,5
*GAOIR*?M1
STRECMMli
mi!?m
nproc<iiuthli
pnf?4((*ThrSdlowmtucorttXn*?n)i
lor(l。,iV?$i,?)
pruitil*M*mam?MiJ.■),
。?出■修分?]的學(xué)弓加瞋?
30.從鍵盤上輸出10個整數(shù)存入一維數(shù)組中,按由大到小的順序輸出。
四、2.程序修改題(10題)
31.下列給定程序中,函數(shù)fun()的功能是求出數(shù)組中最小數(shù)和次最小數(shù),
并把最小數(shù)和a[0]中的數(shù)對調(diào),次最小數(shù)和a[l]中的數(shù)對調(diào)。
請改正程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
#defineN20
voidfun(int*a,intn)
(
inti,m,t,k;
/*************found**************/
for(i=O;i<n;i++)
(
m==i;
for(k=i;k<n;k++)
if(afk]<a[m])
/*************found**************/
k=m;
t=a[i];
a[i]=a[m];
a[m]=t;
)
)
main()
(
intx,b[N]={ll,5,12,0,3,6,9,7,10,8},
n=10,i;
clrscr();
for(i=0;i<n;i++)
printf("%d",b[i]);
printf("\n");
fun(b,n);
for(i=0;i<n;i++)
printf("%d",b[i]);
printf("\n");
}
32.下列給定程序中,函數(shù)fun()的功能是將字符串s中位于偶數(shù)位置的
字符或ASCII碼為奇數(shù)的字符放入字符串t中(規(guī)定第一個字符放在第0
位中)。
例如:字符串中的數(shù)據(jù)為ADFESHDI,則輸出應(yīng)當(dāng)是AFESDL
請改正程序中的錯誤,使它能得到正確結(jié)果。
注意,?不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<string,h>
#defineN80
/************found*************/
voidfun(chars,chartfl)
(
inti,j=0;
for(i=0;i<strlen(s);i++)
/*********found*+************/
if(i%2=0||s[i]%2!=0)
t[j++]=s[i];
tUl='\O';
)
main()
(
chars[N],t[N];
clrscr();
printf("\nPleaseenterstrings:");
gets(s);
fun(s,t);
printf("\nTheresultis:%s\n",t);
)
33.下列給定程序中,函數(shù)fun()的功能是:按順序給s所指數(shù)組中的元
素賦予從2開始的偶數(shù),然后再按順序?qū)γ?個元素求一個平均值,并
將這些值依次存放在w所指的數(shù)組中。若s所指數(shù)組中元素的個數(shù)不是
5的倍數(shù),多余部分忽略不計。例如,s所指數(shù)組有14個元素,則只對
前10個元素進行處理,不對最后的4個元素求平均值。
請改正函數(shù)fun()中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#defineSIZE20
fun(double*s,double*w)
{intk,i;doublesum;
for(k=2,i=0;i<SIZE;i++)
{s[i]=k;k+=2;}
sum=0.0;
for(k=0,i=0;i<SIZE;i++)
{sum+=s[i];
/*************found**************/
if(i+l%5==0)
{w[k]=sum/5;Sum=0;k++;}
)
returnk;
)
main()
{doublea[SIZEl,b[SIZE/5];
inti,k;
k=fun(a/b);
printf("Theoriginaldata:\n");
for(i=0;i<SIZE;i++)
(
if(i%5==0)printf("\n");
printf("%4.0f7a[i]);
)
printf{"\n\nTheresult:\n");
for(i=0;i<k;i++)printf("%6.2f",b[i]);
printf("\n\n");
)
34.下列給定的程序中,函數(shù)fun()的功能是:計算并輸出k以內(nèi)最大
的6個能被7或11整除的自然數(shù)之和。K的值由主函數(shù)傳入,若k的
值為500,則函數(shù)的值為2925。
請改正程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<conio.h>
intfun(intk)
(
intm=0,mc=0,j;
/*************found*************/
while(k>=2)&&(mc<6)
(
/*************found*************/
if((k%7=0)||(k%U=0))
{.......................................................
/*************found**************/
m=k;
mc++;
)
k~/
)
returnm;
}
main()
(
clrscr();
printf("%d\n",fun(500));
)
35.下列給定程序中函數(shù)fun()的功能是;從低位開始取出長整型變量s
中奇數(shù)位上的數(shù),依次構(gòu)成一個新數(shù)放在t中。例如,當(dāng)s中的數(shù)為
4576235時,t中的數(shù)為4725。
請改正程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動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);
,,
printff'Theresultis:%ld\nIt);
36.下列給定程序中,函數(shù)fun()的功能是:在字符串str中找出ASCII
碼值最小的字符,將其放在第一個位置上,并將該字符前的原字符向后
順序移動。例如,調(diào)用fun。函數(shù)之前給字符串輸入fagAgBDh,調(diào)用后
寧符串中的內(nèi)容為AfaggBDho
請改正程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
/*************found************/
voidfun(charp)
charmin,*q
inti=0;
min=p[i];
while(p[i]!=0)
if(min>p[i])
/*************found*************/
p=q+i;
min=p[i];
)
i++;
while(q>p)
{*q=*(q-l);
q-;
)
p[O]=min;
)
main()
(
charstr[80];
printf("Enterastring:");
gets(str);
printf("\nTheoriginalstring:");
puts(str);
fun(str);
printf("\nThestringaftermoving:");
puts(str);
printf("\n\n");
}
37.下列給定程序中函數(shù)fun()的功能是:將長整型數(shù)中每一位上為偶數(shù)
的數(shù)依次逆向取出,構(gòu)成一個新數(shù)放在t中。高位在低位,低位在高位。
例如當(dāng)s中的數(shù)為25846513時,t中的數(shù)為6482。請改正函數(shù)fun()
中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<conio.h>
voidfun(longS,long*t)
|
intd;
longsl=l,i=l;
*t=0;
while(s/i>0)
i=i*10;
i=i/10;
while(s>0)
d=s/i
/*************found*************/
if(d%2!=0)
/*************found*************/
t=d*sl+t;
sl*=10;
}
S=S%i;
i=i/10;
)
)
main()
|
longS,t;
clrscr();
printf("\nPleaseenterS:");
scanf("%ld",&s);
fun(S,&t);
printf("Theresultis:%ld\n",t);
)
38.給定程序M0D11.C中函數(shù)fun的功能是:將p所指字符串中的所
有字符復(fù)制到b中,要求每復(fù)制三個字符之后插入一個空格。
例如,在調(diào)用fun函數(shù)之前給a輸入字符串:ABCDEFGHIJK,調(diào)用函
數(shù)之后,字符數(shù)組b中的內(nèi)容則為:ABCDEFGHIJK。
請改正程序中的錯誤,使它能得出正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
1*include<stdio.h>
2voidfun(char.p,char*b)
3(inti,k-0;
4while(*p)
5(i-1;
6while(i<?3&&*p){
7/?????*****found**********/
8b[k]-p;
9p++;
10;}
11!if(*p)
12i(
13:/**********found*****?**?*/
14b[k++]
15
16J
17!
18I)
19main()
20{chara[80],b[80);
21printf("Enterastring:");gets(a);
22printf("Theoriginalstring:R);
puts(a);
23fun(a,b);
24printf(H\nThestringafterinsert
space:R);puts(b);printf(w\n\n");
25
39.下列給定程序中,函數(shù)fun()的功能是:給定n個實數(shù),輸出平均值,
并統(tǒng)計平均值以上(含平均值)的實數(shù)個數(shù)。例如,n=8時,輸入193.199,
195.673,195.757,196.051,196.092,196.596,196.579,196.763,所
得平均值為195.838745,在平均值以上的實數(shù)個數(shù)應(yīng)為5。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
intfun(floatx[],intn)
/***************found*******************/
ihtj,c=0;floatxa=0.0;
for(j=O;j<n;.j++)
xa+=x[j]/n;
printf("ave=%f\n",xa);
for(j=O;j<n;j++)
if(x[jl>=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));
)
40.給定程序MODI1.C中函數(shù)fun的功能是:首先將大寫字母轉(zhuǎn)換為
對應(yīng)小寫字母;若小寫字母為a?u,則將其轉(zhuǎn)換為其后的第5個字母;
若小寫字母為v?z,使其值減21。轉(zhuǎn)換后的小寫字母作為函數(shù)值返回。
例如,若形參是字母A,則轉(zhuǎn)換為小寫字母f若形參是字母W,則轉(zhuǎn)換
為小寫字母bo
請改正函數(shù)fun中指定部位的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
linclude<stdio.h>
2linclude<ctype.h>
3charfun(charc)
4(if(O-^1&&
5/……?……found…………?/
6JC+32;
7if(O-^1&&c<?,u,)
8????founcpf—m/
9c-c-5;
10elseif(c>m,v,z1)
11c-c-21;
12returnc;
13
14main()
15!{charcl,c2;
16printf(w\nEnteraletter(A-Z):
);cl-getchar();
17if(isupper(cl))
18(c2?fun(cl);
19printf(H\n\nTheletter\1%c\1
,tR
changeto\%c\\n/cl,c2);
20
21elseprintf(w\nEnter(A-Z)!\nR);
22
五、程序改錯題(2題)
41.下列給定程序中,函數(shù)proc的功能是找出100?m(m不大于1000)
之間百位數(shù)字加十位數(shù)字等于個位數(shù)字的所有整數(shù),把這些整數(shù)放在s
所指的數(shù)組中,個數(shù)作為函數(shù)值
返回。
請修改程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)
構(gòu)。
試題程序:
#include<stdio.h>
#defineM1000
intproc(int*S.intn)
(
inti,j,k,a,b,c;
j=0;
for(i=100;i<n;i++)
(
II****j^Qund****
k=n:
a=k%10;
k/=10;
b=k%10;
c=k/10;
if(a==b+c)
II****j^Qund****
s|j]=i:
}
returnj;
)
voidmain
(
inta[M],m,num=0,i;
do
(
printf("\nEnterm(<=1000):");
scanf("%d",&m);
while(m>1000);
num=proc(a,m);
printf("\n\nTheresult:\n");
for(i=0;i<num;i++)
printf("%5d",a[i]);
printf("\n\n");
}
42.下列給定程序中函數(shù)fun的功能是:將P所指字符串中的所有字符復(fù)
制到b中,要求每復(fù)制三個字符之后插入一個空格。
例如,若給a輸入字符串:ABCDEFGKHHK,調(diào)用函數(shù)后,字符數(shù)組b
中的內(nèi)容為:ABCDEFGHIJK。請改正程序中的錯誤,使它能得出正
確的結(jié)果。
注意:部分源程序在文件M0D11.C中,不得增行或刪行,也不得更改
程序的結(jié)構(gòu)。
findnde<sidio.h>
voidfun(char*p,char?b)
Iinti.k=0;
while(?p)
Ii=l;
while(i<=3&&ep)|
/??????????found??????????/
b(k]=p;
k**;p++;i++;
I
if(-p)
I
/found**????????/
b[k+?]=*w;
I
I
b[k]=3;
I
main()
Ichara[80]eb[80];
printf("Enterastring:");gets(a);
printf("Thcorigina]string:");puu(a);
firn(db);
printf("\nThestringafterinsertspace:");put"b);printf("\n\n")t
I
六、操作題(2題)
43.
請補充函數(shù)proc(),其功能是:計算并輸出給定10個數(shù)的方差。例
如,給定的10個數(shù)為12.0,9.0,26.0,5.0,6.0,31.0,9.0,
3.0,8.0,18.0,輸出為s=8.877500o注意:部分源程序給出如
下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc
()的橫線上填入所編寫的若干表達式或語句。試題程序:
0includeVfrtdio.
01rwlu4rVRMth.b>
dtMiblrpror<duubk?[10;)
beiit
doubleavg-Q.0.
double*wO.。,
double?t???0,0?
doublrMII
(0€(1*0|?<|0||>>)
IiJI
W=MMH/IOI
lor(i-lOii-f-?)
Pl?
T**?3ji
E&Exdl
widmam()
double**?4Kif£lOj-(12.0,9.0424.03.0?B.0?3L0.
9v0?3.0.t.0wit.01?
inih
(>rintf(a\nTheorigmaldau?i\na>i
(or(i?0.iV10gi++)
prmifc*Si,IC?
pcintfC*\?\n>>?
■*pfoctutr)i
prmt??,?i
44.設(shè)有如下宏定義
#defineMYSWAP(z,x,y){z=x;x=Y;Y=z;}
以下程序段通過宏調(diào)用實現(xiàn)變量a、b內(nèi)容的交換,請?zhí)羁铡?/p>
floata=5,b=16,c;
MYSWAP([],a,b);
參考答案
1.內(nèi)模式內(nèi)模式解析:內(nèi)模式又稱為物理模式,它給出了數(shù)據(jù)庫物理存
儲結(jié)構(gòu)與物理存取方法。
2.B66B66解析:printf函數(shù)的功能是按照指定的格式,在標(biāo)準(zhǔn)輸出設(shè)
備上輸出數(shù)據(jù),它有兩種參數(shù):格式控制參數(shù)和輸出項參數(shù)。本題中,
printf('%c%d\\n',ch,ch)表示以字符格式和十進制整數(shù)格式輸出ch,B的
ACSII碼值為66,即在計算機中B的十進制整數(shù)格式是66。所以,輸
出為B66。
3.b[k++]b[k++]解析:本題的考查點是do-while語句。形參x默認為十
進制,要想將一個十進制的數(shù)轉(zhuǎn)換成二進制,可以使用整除求余法,題
中的程序段也表明了將使用這種方法,將一個十進制的數(shù)轉(zhuǎn)換成二進制
要用這個十進制數(shù)不斷的整除2,將每次的余數(shù)記錄下來,直至無法再
除,此時,整除得到的第一個元素即為二進制數(shù)的最低位,其余依次類
推,所以在程序段中的橫線處,應(yīng)當(dāng)填寫“b[k++/。
4.136136解析本題考核的知識點是函數(shù)遞歸。主函數(shù)調(diào)用函數(shù)fun(6),
由于6/2>0為真遞歸調(diào)用fun(3),接著遞歸調(diào)用fun(l),輸出1,返回
上一層輸出3,在返回上一層輸出6。故空格處應(yīng)該填136。
5.2626解析:a*=16+(b++)-(++c)等價于a*=a*(16+(b++)-
(++c))=2*(16+(2-5)=26。b++是先使用b的值參加運算,再對b加1;
++c是先c加1,再使用c的值參加運算。
6.11解析字符空格的ASCII碼不為0,所以本題中表達式\ue008!c\ue009
的值為0,b=0&&l的結(jié)果顯然為0。
7.操作系統(tǒng)操作系統(tǒng)解析數(shù)據(jù)庫管理系統(tǒng)是幫助用戶創(chuàng)建和管理數(shù)據(jù)
庫的應(yīng)用程序的集合。因此,數(shù)據(jù)庫管理系統(tǒng)需要操作系統(tǒng)的支持,為
用戶提供服務(wù)。
8.77解析:本題綜合考查帶參數(shù)的宏以及三目運算符的計算方法。三目
運算符的一般形式是:<表達式1>?<表達式2>:<表達式3>?!??:”
運算符的含義是:先求表達式1的值,如果為真,則求表達式2的值,
并把它作為整個表達式的值;如果表達式1的值為假,則求表達式3的
值,并把它作為整個表達式的值。注意,在本題中宏替換時可采用逐步
求解,最終為7>6?7:6*10,即t=7>6?7:60,其值為t=7。
9.b=I+lb=I+l解析:本題考查了for循環(huán)語句的執(zhí)行過程。i+=2是修正
表達式,執(zhí)行一次循環(huán)體后i的值就增加2,i的初始值為0,每次加2后的
和累加至a,所以a的值就是110之間的偶數(shù)之和;b的值是111之間的
奇數(shù)和,但在輸出b值時,c去掉多加的11,即為110之間的奇數(shù)之和。
10.00解析根據(jù)運算符的運算順序可知,該表達式最后運算的是與(&&)
運算,而任何表達式與“0”進行“與”運算,結(jié)果都為0。
11.B
在C語名中規(guī)定進行強制類型轉(zhuǎn)換的格式是:(類型名)變量名;并且
給表達式賦值。
12.D
解析:結(jié)構(gòu)體structureworkers中的成員s是結(jié)構(gòu)體類型,給w中成員
year賦值的語句是w.s.year=1980,故選D。
13.D
14.C數(shù)據(jù)結(jié)構(gòu)與算法:數(shù)據(jù)結(jié)構(gòu)的基本概念[評析]邏輯結(jié)構(gòu)反映數(shù)據(jù)元
素之間的邏輯關(guān)系,線性結(jié)構(gòu)表示數(shù)據(jù)元素之間一對一的關(guān)系,非線性
結(jié)構(gòu)表示數(shù)據(jù)元素之間一對多或多對一的關(guān)系。線性結(jié)構(gòu)和非線性結(jié)構(gòu)
是根據(jù)數(shù)據(jù)元素之間關(guān)系的不同特性加以分類的,即是從邏輯上加以分
類的。
15.B解析:數(shù)據(jù)的存儲結(jié)構(gòu),又稱為數(shù)據(jù)的物理結(jié)構(gòu),是數(shù)據(jù)的邏輯
結(jié)構(gòu)在計算機中的存放形式,數(shù)據(jù)的存儲結(jié)構(gòu)有順序結(jié)構(gòu)、鏈?zhǔn)浇Y(jié)構(gòu)、
散列結(jié)構(gòu)和索引結(jié)構(gòu)等。
16.D解析:是求址運算符,“*”是指變量說明符。選項A)、B)應(yīng)改
為scanf('%d',p);選項C)中指針變量p未指向一確定的內(nèi)存單元,不
能為其賦值,并且這樣做很危險,建議不使用。
17.C
18.B函數(shù)的值只能通過return語句返回主調(diào)函數(shù)。函數(shù)中允許有多個
return語句,但每次只能調(diào)用一個return語句,因此只能返回一個函數(shù)
值。不返回函數(shù)值的函數(shù),可以明確定義為“空類型”,類型說明符為voido
故本題答案為B選項。
19.A
此題是一個簡單的函數(shù)調(diào)用,當(dāng)i=0并且i<30,執(zhí)行i+=10,并且調(diào)用
函數(shù)f,所以當(dāng)i=0時,結(jié)果為1,當(dāng)i=10時,結(jié)果為101,當(dāng)i=20
時,結(jié)果為401,所以a=l+101+401=503。
20.A
21.voidfun(char*a,intn)
(
inti=0,k=0;
char*p,*t;
p=t=a;/*開始時,p與t同時指向數(shù)組的首地址*/
while(*t=,*,)/*用k來統(tǒng)計前導(dǎo)星號的個數(shù)*/
{k++;t++;}
if(k>n)/*如果k大于n,則使p的前導(dǎo)保留n個星號,其后的字符
依次存入數(shù)組a中*/
{while(*p)
{a[i]=*(p+k-n);
i++;
p++;
}
a[i]=\(y;/*在字符串最后加上字符串結(jié)束標(biāo)志*/
)
}
字符串中前導(dǎo)*號不能多于n個,多余的應(yīng)刪除。首先需要通過while循
環(huán)統(tǒng)計字符串前導(dǎo)*號的個數(shù),然后通過if條件語句完成前導(dǎo)*號的個數(shù)
和n的比較,如果前導(dǎo)*號多于n個,則需要把n個*號和其余字符重新
保留。
22.voidfun(int*w,intp,intn)
{intX,j,ch;
for(x=0;x<=p;x++)
{ch=w[O];
for(j=l;j/*通過for循環(huán)語句,將p+1?n-1(含n-1)之間的數(shù)組
元素依次向前移動p+1個存儲單元*/
(
w[j-l]=w[j];
)
w[n-l]=ch;/*將下標(biāo)為。?p的數(shù)組元素逐一賦給數(shù)組w[n-l]*/
}
)
本題要求把下標(biāo)為。?p(含p,p小于等于n-1)的數(shù)組元素平移到數(shù)組的
最后??梢愿鶕?jù)輸入的P值,通過for循環(huán)語句,將p+1?n-1(含n-1)之
間的數(shù)組元素依次向前移動P+1個存儲單元,即w[j-l]=w[j];o同時將下
標(biāo)為0~p的數(shù)組元素逐一賦給數(shù)組w[n-l],也就是通過語句w[n-l]=ch;
來實現(xiàn)此操作。
23.
【答案】
voidfiinhJiar*a,char*h,char*p)
{iiiri=0;
char
while(q<h)
(
明=*q;q++:i++;
J
while(q<p){
(
心仁*q;i++:
).
q++;
I
while(*q)
(,
a[ij=*q;i++XJ+*;
I
a(W:
I
【解析】
h和p分別指向第一個和最后個字母,先將前導(dǎo),號進行保存?再保存中間的非*號字符,然后保存
尾?號,加上結(jié)束標(biāo)識符?
24.
【解析】根據(jù)題目中要求刪除字符串中所有的空格,需要檢查字符串中
的每一個字符。將不是空格的字符放入原來的字符串中,形成新的字符
串。在新的字符串的末尾加上結(jié)束符。
25.\n#include'stdio.h'
\nmain
\n{inti;
\nfor(i=1;i<=100;i++)
\n{if(i==0)
\ncontinue;
\nprintf('%d',i);
\n}
\n
26.
【解析】使數(shù)組左下半三角元素中的值加上n,首先要找出數(shù)組中下半
三角元素。數(shù)組中下半三角元素的特點是,其列下標(biāo)小于等于行下
標(biāo)。根據(jù)這個特點找出所有的下半三角元素再加上n放在原來的位置
±o
27.
【解析】本題考查的是for循環(huán)和指針變量。通過for循環(huán)實現(xiàn)對數(shù)組
的遍歷,形參iilax和d都是指針型變量,所以引用它們指向的變量時
要進行指針運算。先有*max=a[0],在遍歷中如果遇到比max大的元
素,則將a[i]賦值給max,下標(biāo)i賦值給*d。循環(huán)語句用來遍歷數(shù)組元
素,然后通過條件語句比較數(shù)組元素找到最大值。
28.
【解析】要找到所有學(xué)生中成績低于平均分數(shù)的人數(shù),首先需要算出所
有學(xué)生的平均成績。然后將所有學(xué)生的成績與平均成績相比較。將低于
平均分數(shù)學(xué)生的記錄存放在新的數(shù)組中,并將低于平均分數(shù)的學(xué)生數(shù)返
回給主函數(shù)。
29.
【解析】要返回分數(shù)最低的學(xué)生個數(shù),首先要找出學(xué)生中的最低分數(shù)。
然后將各個學(xué)生的成績與最低分數(shù)相比較,最后將分數(shù)最低的學(xué)生個數(shù)
返回給主函數(shù)。
3O.\n#include'stdio.h'
\nmain
\n{inti,j,a[10];
\nfor(i=l;i<=10;i++)
\nscanf('%d',&a[i]);
\nfor(i=0;i<9=;i++)
\nfor(j=9;j>i;j—)
\nif(a[j-l]{t=a|j-l];
\na[j-l]=a[j];
\na[j]=t;}
\nfor(i=0;i<10;i++)
\nprintf('%d',a[i]);
\n}
\n
31.(1)錯誤:for(i=0;i<n;i++)正確:for(i=0;i<2;i++)(2)錯誤:
k=m;正確:m=k;(1)錯誤:for(i=0;i<n;i++)正確:for(i=0;i<
2;i++)\r\n(2)錯誤:k=m;正確:m=k;解析:錯誤1:由于題目要
求將最小數(shù)和次最小數(shù)分別與a[0]和a[l]中的數(shù)對調(diào),因此這層循環(huán)只
需循環(huán)兩次。錯誤2:賦值語句的執(zhí)行方向是從右向左,即把右邊的值
賦給左邊的變量。
32.(1)錯誤:voidfun(charschart[])正確:voidfun(char*schart[])(2)錯
誤5f(i%2=0||s[i]%2!=0)正確if(i%2=0||s[i]%2!=0)⑴錯誤Voidfun(char
s,chart[])正確:voidfun(char*s,chart口)\r\n⑵錯誤if(i%2=0||s[i]%2!=0)
正確:if(i%2=0||s[i]%2!=0)解析:錯誤1:由于本題中函數(shù)的功能是對
字符串進行處理,而不是對單個字符進行處理,因此,函數(shù)的參數(shù)應(yīng)為
字符串指針。錯誤2:if語句中要用關(guān)系運算符,而不是賦值運算符。
33.錯誤:if(i+l%5==0)正確:if((i+l)%5==0)錯誤:if(i+l%5==0)正確:
if((i+D%5==0)解析:本題除了考查循環(huán)語句以外,其實就是一道簡單
的數(shù)學(xué)題,循環(huán)條件if(i+l%5==0)是一個標(biāo)準(zhǔn)的語法錯誤,這跟題目考
查的知識點毫無關(guān)系,也就是說,做這樣的題,只要讀懂了題干意思,
問題便可迎刃而解。
34.(1)錯誤:while(k>=2)&&(mc<6)正確:while((k>=2)&&(mc<6))(2)
錯誤:if((k%7=0)||(k%ll=0))正確:if((k%7==0)||(k%ll=0))(3)錯誤:
m=k正確:m=m+k;⑴錯誤:while(k>=2)&&(mc<6)正確:while((k
>=2)&&(mc<6))\r\n(2)錯誤:if((k%7=0)||(k%l1=0))正確:
if((k%7==0)||(k%l1=0))\r\n(3)錯誤:m
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 重慶市第一中學(xué)2024-2025學(xué)年高三下學(xué)期2月開學(xué)考試 地理
- 2025至2030年壁飾玻璃項目投資價值分析報告
- 2025至2030年圓筒蒸布機項目投資價值分析報告
- Unit3 Animal World(教學(xué)設(shè)計)2024-2025學(xué)年人教新起點版英語六年級上冊
- 2025年醇溶柔版塑料油墨項目投資可行性研究分析報告
- 2025至2030年中國鉛護腳數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國裱畫板數(shù)據(jù)監(jiān)測研究報告
- 2025年甲狀腺激素項目建議書
- 文山2025年云南文山麻栗坡縣城鎮(zhèn)公益性崗位招聘筆試歷年參考題庫附帶答案詳解
- 作品運輸合同范本
- 《數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)導(dǎo)論》完整版課件(全)
- 智慧教育 云平臺建設(shè)方案
- 精雕JDPaint快捷鍵大全
- 燈泡貫流式機組基本知識培訓(xùn)ppt課件
- 小學(xué)數(shù)學(xué)四年級下冊培優(yōu)補差記錄
- 人教版三年級下冊體育與健康教案(全冊教學(xué)設(shè)計)
- DB61∕T 5006-2021 人民防空工程標(biāo)識標(biāo)準(zhǔn)
- 土壤學(xué)習(xí)題與答案
- 產(chǎn)品結(jié)構(gòu)設(shè)計(課堂PPT)
- 第九課_靜止的生命
- 尖尖的東西我不碰(課堂PPT)
評論
0/150
提交評論