![2021年山西省運(yùn)城市全國計算機(jī)等級考試C語言程序設(shè)計真題(含答案)_第1頁](http://file4.renrendoc.com/view2/M03/34/3E/wKhkFmZQ81mAI1ypAAE2JQMKass646.jpg)
![2021年山西省運(yùn)城市全國計算機(jī)等級考試C語言程序設(shè)計真題(含答案)_第2頁](http://file4.renrendoc.com/view2/M03/34/3E/wKhkFmZQ81mAI1ypAAE2JQMKass6462.jpg)
![2021年山西省運(yùn)城市全國計算機(jī)等級考試C語言程序設(shè)計真題(含答案)_第3頁](http://file4.renrendoc.com/view2/M03/34/3E/wKhkFmZQ81mAI1ypAAE2JQMKass6463.jpg)
![2021年山西省運(yùn)城市全國計算機(jī)等級考試C語言程序設(shè)計真題(含答案)_第4頁](http://file4.renrendoc.com/view2/M03/34/3E/wKhkFmZQ81mAI1ypAAE2JQMKass6464.jpg)
![2021年山西省運(yùn)城市全國計算機(jī)等級考試C語言程序設(shè)計真題(含答案)_第5頁](http://file4.renrendoc.com/view2/M03/34/3E/wKhkFmZQ81mAI1ypAAE2JQMKass6465.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2021年山西省運(yùn)城市全國計算機(jī)等級考試
C語言程序設(shè)計真題(含答案)
學(xué)校:班級:姓名:考號:
一、2.填空題(10題)
1.以下程序的輸出結(jié)果是#include<stdio.h>structstiintx;int*y;}*p;
intdt[4]={10,20,30,40);structstaa[4]={50,&dt[0],60,&dt[0],
60,&it[0],60,&dt[0],);main(){p=aa;printf("%d\n",++(p->x));]
2.執(zhí)行下面程序后,輸出結(jié)果是【】。
main()
{chars[12]="verygood!";
printf("%d",strlen(s));
)
3.在Windows環(huán)境下,可以利用單擊、雙擊、拖動這三種鼠標(biāo)操作之
一的【】操作實(shí)現(xiàn)窗口的移動。
4.用以下語句調(diào)用庫函數(shù)malloc,使字符指針st指向具有H個字節(jié)的
動態(tài)存儲空間,請?zhí)羁铡t=(char*)[];
5.若有以下程序
main()
{chara;
a='H'-'A'+'0';
printf("%c\n",A)
執(zhí)行后輸出結(jié)果是【】。
6.若a=l,b=2,則表達(dá)式!(x=A)H(y=B)&&0的值是____。
7.面向?qū)ο蟮某绦蛟O(shè)計方法中涉及的對象是系統(tǒng)中用來描述客觀事物
的——個O
8.x和y都是double型變量,x的初值為4.0,y的初值為2.0,則表達(dá)
式pow(y,fabs(x))的值為。
9.以下程序調(diào)用函數(shù)swap將指針s和t所指單元(a和B)中的內(nèi)容交
換,請?zhí)羁?。main(){inta=10,b=20,*s,*t;s=&a;t=&b;()
printf("%d%d",a,B);}swap(int*ss,int*tt){intte;te=*ss;*ss=*tt;
*tt=te;}
10.當(dāng)所有結(jié)點(diǎn)的權(quán)值都相等時,用這些結(jié)點(diǎn)構(gòu)造的二叉排序樹是【】。
二、單選題(10題)
11.有以下程序:
#include<stdio.h>
voidmain()
{char*s="\ta\018bc”;
for(;*s!='\0';s++)
printf("*”);
printf("\n”);
}
程序運(yùn)行后的輸出結(jié)果是()O
******B*********c************
12.有以下程序段chareh;intk;ch='a';k=12;printf("%c,%d,
",ch,ch,k);printf("k=%d\n",k);已知字符a的ASCII碼值為97,
則執(zhí)行上述程序段后輸出結(jié)果是
A.因變量類型與格式描述符的類型不匹配輸出無定值
B.輸出項與格式描述符個數(shù)不符,輸出為零值或不定值
C.a,97,12k=12
D.a,97,k=12
(24)有以下程序:
/include<stdio.h>
tnain()
{intx;
scanf("%d",&x);
if(x<=0);else
if(x!=5)printf("%d\n",x);
}
程序運(yùn)行時,輸入的值在哪個范圍才會有輸出結(jié)果().
13.A)不等于5的整數(shù)B)大于()且不等5的整數(shù)
C)大于0或等于5的整數(shù)D)小于5的整數(shù)
14.結(jié)構(gòu)化分析方法是面向()的自頂向下、逐步求精進(jìn)行需求分析的
方法
A.對象B.數(shù)據(jù)結(jié)構(gòu)C.數(shù)據(jù)流D.目標(biāo)
15.若變量已正確定義,有下列程序段:
inta=3,b=5,c=7;
if(a>B)a=b;c=a;
if(c!=A)c=b;
printf("%d,%d,%d\n",a,b,C);
其輸出結(jié)果是()。
A.程序段有語法錯B.3,5,3C.3,5,5D.3,5,7
16.下列有關(guān)數(shù)據(jù)庫的描述,正確的是____o
A.數(shù)據(jù)庫是一個DBF文件B.數(shù)據(jù)庫是一個關(guān)系C.數(shù)據(jù)庫是一個結(jié)構(gòu)
化的數(shù)據(jù)集合D.數(shù)據(jù)庫是一組文件
(30)若輸入“abcdef"、“abdef",以下程序的輸出結(jié)果為().
^^include-stdio.h>
#includc<string.h>
main()
{intn;
charsl[20],s2[20],*pl/p2;
scanR”%s”,sl);
scanfl[u%s\s2);
pl=sl;
p2=s2;
n-strcmp(php2);
printf(M%d\nM,n);}
A)-1B)0C)MabcderD)”abdef'
18.有以下程序:#inchide
Main(){lntx=l,y=O;if(!x)y++;elseif(x==O)if(x)y+=2;Elsey+=3;print("%d\n",y);}程序運(yùn)行后的
輸出結(jié)果是()。A.2B.1C.0D.3
19.算法的時間復(fù)雜度是指
A.算法的執(zhí)行時間B.算法所處理的數(shù)據(jù)量C.算法程序中的語句或指
令條數(shù)D.算法在執(zhí)行過程中所需要的基本運(yùn)算次數(shù)
20.有以下程序:
#include<stdio.h>
main()
{charb[]="happynewyear”,k;
for(k=0;b[k];k++)
print/%c”,b[k]-'a'+'A');
)
程序運(yùn)行后的輸出結(jié)果是()O
A.hAppynewyeArB.HappynewyearC.HAPPYNEWYEAR
D.HaPPYNEWYEaR
三、程序設(shè)計題(10題)
21.
N名學(xué)生的成績已在主函數(shù)中放入一個帶有頭結(jié)點(diǎn)的鏈表結(jié)構(gòu)中,h指
向鏈表的頭結(jié)點(diǎn)。請編寫函數(shù)fun(),其功能是:找出學(xué)生的最高分,
并由函數(shù)值返回。注意:部分源程序給出如下。請勿改動main。函
數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入所編寫
的若干語句。試題程序:
?seller<*td>o.Ii>
■incItMir<Mdlikh>
,(MtiwN?
Mntet
<
dmiblr■I
?iruci*U?<?ATKII
)?
typedrlAirtirl?lmiSTREl'i
double{unCSTKfl'?h>
STREC*cre*t(double??>
C
STREC?b??p.?QI
iati-Oi
《STREC?)alkx(Mtto“§TRET))?
p—>?"Oi
wMZYN)
〃產(chǎn)牛8個41點(diǎn)的■*.看分At存入9我中
<
QTSTRET?)mallor?MMohSTREO)t
p-q?
J
p->BTM-NULI.I
rrtEhi//ftHttAKHitit
>
wedoudiM<STRE('?b)
<
STREC?p<
pf
prvnd("heed*>?
do(
prwitf<*—>XOf*.pr>?)?
p-R->MXt|
I
〃■出作分立
wiiikCp->??!!-NULL)?
pnati(*\ii\n*>i
>
voidmam()
t
doubks[N]-(B5?100.99.85.91.72.M?87
STREC?hr
h^creeKa)1
<wth?t(h>?
maLfg/hh
22.輸出1900?2000年中所有的閏年。每輸出3個年號換一行。(判斷閏
年的條件為下面二者之一:能被4整除,但不能被100整除?;蛘吣鼙?/p>
400整除。)
23.規(guī)定輸入的字符串中只包含字母和+號。編寫函數(shù)fun,其功能是:除了字符串前導(dǎo)和
尾部的母號外,將其他的*號全部刪除。形參h已指向字符串中第一個字母,形參P指向字
符串中最后一個字母。在編寫函數(shù)時,不得使用c語言提供的字符串函數(shù)。
例如,若字符串中的內(nèi)容為“****A*BC?DEF*G"*,****,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是
”…*ABCDEFG*
注意:部分源程序給出如下。
請勿改動主函敷main和算他函級中的任何內(nèi)容.僅在函數(shù)fiin的花括號中填入你編寫的若干語句。
試建程序:
#inrlude<atdio.h>
voi<lfun(char*a,char?h.char*p)
I
)
tnain(),
Ichar481
printf(MEnleraMringAn");
getafs);
whUe(*t)
t++:
J
I?
while(舞=")
l一~;
whi陽*f=1巧
f++;fun(sX0i
printf(,rThestringafterdeleted:』”);
pute(ft);
24.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方案
的項目中包含一個源程序文件progl.c。在此程序中,編寫函數(shù)fun(),
其功能是刪除一個字符串中指定下標(biāo)的字符。其中,a指向原字符串,
刪除指定字符后的字符串存放在b所指的數(shù)組中,n中存放指定的下標(biāo)。
例如,輸入一個字符串“World”,然后輸入3,則調(diào)用該函數(shù)后的結(jié)果
為“Word”。
注意:部分源程序給出如下。
請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花
括號中填入你編寫的若干語句。
試題程序:
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#defineLEN20
voidfun(chara[],charb[],intn)
(
)
voidmain()
(
charstr1[LEN],str2[LEN];
intn;
system(“CLS”);
printf("Enterthestring:\n");
gets(strl);
printf("Enterthepositionofthestringdeleted:^^);
scanf("%d",&n);fun(strl,str2,n);
printf("Thenewstringis:%s\n^^,str2);
)'一
25.請編寫函數(shù)proc(),它的功能是計算:s=(In(1)4-ln(2)+In(3)
4-...+ln(m))0.5在C語言中可調(diào)用log(n)函數(shù)求In(n)o例如,
若nl的值為30,則proc()函數(shù)值為8.640500。注意:部分源程序
給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函
數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
Uincludrh>
母include<cocuo.h>
9inrludeh>
&include<ZthatK
doublepcoc<tfMm)
vmdfnam<?
dS>g
pnm{(*XAn**proc(30>>i
)
26.程序定義了MxM的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函
數(shù)proc(inta口[M],intn),該函數(shù)的功能是使數(shù)組左下半三角元素中的
值加上n。例如,a數(shù)組中的值為:
1234g
(78910
??II12131415
1117III,20
21t22324ts
著n的值為2?0,”上■序網(wǎng)?■1?中的假力|
3234s
a?s9io
??1314IS14IS
IS19202120
123242526271
注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括
號中填入所編寫的若干語句。
試題程序:
StnclutieVtime.Ii>
SincludeVwtdao.h>
3inrludeVcoaio.h>
9inriiide<Ndl,hh>
9S
roidpfoc<mtU][M,?witn>
voidtBAin()
itif”,??Uji
mtarr[S](5■」?2.3?4?5?6?7?,?,.IQ?11J2?I3?
14U$.I€J7?18,2,23.24.2Slg
■yaE?yf》i
pnmf(*????Thearray????\w->?
pniwtf("n"K4d\fie?ci>i
proc(arr?n)i
t>nntf<*????THFRPilJI.T????\n*>■
fort1**0|i〈Mil++)
(or(j?0ij<?M(?)
*%4di
pctotfC*\o")i
27.請編一個函數(shù)voidproc(inttt[M][N],intpp[N]),tt指向一個M行N
列的二維數(shù)組,求出二維數(shù)組每行中最大元素,并依次放入pp所指的
一維數(shù)組中。二維數(shù)組中的數(shù)已在主函數(shù)中給出。
注意:部分源程序給出如下。
請勿改動main。函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括
號中填入所編寫的若干語句。
試題程序:
UmcludcVvtdxhhS>
UinrltMirVconio.h>
9includeVsldlibub>
sdefineM3
MdefineN4
voidpcoc(imtt[Mj[N'?mippfNj)
vmdmuni>
miI34?S4?84.7t1?
(n.B4.93.III.
IZ8,M.930i
mt|>[N].,.j?lu
prwilf("Theri*inaldata?.\■?九
loH件+)
for(j1O$jV、[j++)
pnntfC*KW*.ttr£iXjJ)e
printfC*\B*)I
proHz,.p)i
pru>tf(*\ftThereAuit
pnnif(*S4d*?K1*1)i
28.請編寫函數(shù)proc,其功能是:將str所指字符串中除下標(biāo)為偶數(shù)、同
時ASCII碼值為奇數(shù)的字符外,其余的字符都刪除,串中剩余字符所形
成的一個新串放在t所指的數(shù)組中。例如,若str所指字符串中的內(nèi)容為
ABCDEFG12345,其中字符B的ASCII碼值為偶數(shù),所在元素的下標(biāo)為
奇數(shù),因此必須刪除;而字符A的ASCII碼值為奇數(shù),所在數(shù)組中的下
標(biāo)為偶數(shù),因此不應(yīng)當(dāng)刪除。依此類推,最后t所指的數(shù)組中的內(nèi)容應(yīng)
是ACEGO
注意:部分源程序給出如下。
請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號
中填人所寫的若干語句。
試題程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
voidproc(char*str,chart[])
(
)
voidmain
(
charstr[100],t[100];
system("CLS");
printf("\nPleaseenterstringstr:");
scanf("%S",str);
proc(str,t);
printf("\nTheresultiS:%s\n",t);
29.下列程序判斷字符串s是否對稱,對稱則返回1,否則返回0;如
f("abba")返回1,ffabab")返回0。
30….請編寫函數(shù)。fun能是:判斷形參n中的正整數(shù)是幾位數(shù)(輸入數(shù)
據(jù)的位數(shù)不超過4位),并將結(jié)果通過函數(shù)值返回。例如:若輸入的數(shù)
據(jù)為123,則輸出結(jié)果為:輸入的數(shù)字是3位。注意:部分源程序存在
PROG1.C中,請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函
數(shù)fun的花括號中填入所縮寫的若干語句。試題程
?includeOtdio.h>
voidNONOO;
intfun(intn)
main()
{intn,place;
do(
printf(”請輸入一個4位以內(nèi)的正整數(shù):
scanf;
)while(n<0IIn>9999);
place-fun(n);
print--輸入的數(shù)字是位place);
NONO();
)
voidNONO()
</?本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用雨數(shù),輸出數(shù)據(jù),關(guān)閉文件.
FIL£?fp,?wf;
inti,n,place;
fp■fopen(Rc:\test\in.dat","r");
wf■fopen("c:\fcestk>ut.datWw");
for(i?0;i<10;i-H.)
(
fscanf(fp,",&n);
place-fun(n);
fprintf(wf/"%d\n"rplace);
)
fclose(fp);
fclose(wf);
序:)
四、2.程序修改題(10題)
31.以下程序可把輸入的十進(jìn)制數(shù)以十六進(jìn)制數(shù)的形式輸出。
請在橫線上填上適當(dāng)?shù)膬?nèi)容并把橫線刪除,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序;
main()
charb[17]={"0123456789ABCDEF"};
intc[64],d,i=0,base=16;
longn;
printf("Enteranumber:\n");
scanf("%ld",&n);
do{
/*****************^Qund*********:
c[i]=;i++;n=n/base;}
while(n!=0);
printf("Transmitenewbase:\n");
for(—i;i>=0;—i)
{d=c[i];printf("%c",b);}
printf("\n");
32.下列給定程序中,函數(shù)fun()的功能是:依次取出字符串中所有的數(shù)
字字符,形成新的字符串,并取代原字符串。
請改正函數(shù)fun。中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<conio.h>
voidfun(char*s)
{inti,j;
for(i=0,j=0;s[i]!='\0';i++)
if(s[i]>='0'&&s[i]<='9')
/*************found**************/
s[j]=s[i];
/*************found**************/
S[j]="\0";
main()
{charitem[80];
clrscr();
printf("\nEnterastring:");gets(item);
printf("\n\nThestringis:\%s\n",item);
fun(item);
printf("\n\nThestringofchangingis:
\%s\n",item);
33.給定程序M0D11C中函數(shù)fun的功能是輸出M行M列整數(shù)方陣,
然后求兩條對角線上各元素之和,返回此和數(shù)。
#inClude<coMo.h>
#inClude<stdio.h>
#dehneM5
/************fOUnd************/
intfun(intn,intxx[][])
{inti,j,sum=0;
printf("\nThe%dx%dmatrix:\n"M,M);
for(i=0;i<M;i++)
{for(j=0;j<M;j++)
/************found************/
printf("%f,xx[i][j]);
printf("\n");
for(i=0;i<n;i++)
sum+=xx[i][i]+XX[i][[n-i-1];
return(sum);
main()
{intaa[M][M]={{1,2,3,4,5),{4,3,2,1,0),
{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7));
clrscr();
printf("\nThesumOfallelementsOn2diagnalsis%d."fun(M,aa));
34.下列給定函數(shù)中,函數(shù)fun()的功能是:統(tǒng)計字符串中各元音字母(即
A,E,I,O,U)的個數(shù)。注意:字母不分大小寫。例如,輸入THIsis
aboot,則應(yīng)輸出是10220。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
/*************found**************/
fun(char*s,intnum[5])
{intk,i=5;
for(k=0;k<i;k++)
/*************found**************/
num[i]=0;
for{;*s;s++)
{i=-l;
/*************found**************/
switch(s)
{case'a':case'A':{i=0;break;}
case'e':case'E':{i=l;break;}
case'i':caseT:{i=2;break;}
case'o':case'0':{i=3;break;}
case'u':case'U':{i=4;break;}
)
if(i>=0)
num[i]++;
}
)
main()
{charsi[81];intnuml[5],i;
clrscr();
printf("\nPleaseenterastring:");
gets(si);
fun{sl,numl);
for(i=0;i<5;i++)printf("%d",numl[i]);
printf("\n");
)
35.下列給定程序中,函數(shù)fun()的功能是:利用插入排序法對字符串中
的字符按從大到小的順序進(jìn)行排序。插入法的基本方法是:先對字符串
中的頭兩個元素進(jìn)行排序,然后把第3個字符插入到前兩個字符中,插
入后前3個字符依然有序;再把第4個字符插入到前3個字符中,待排
序的字符串已在主函數(shù)中賦予。
請改正程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<string.h>
#include<stdio.h>
#defineN80
voidinsert(char*aa)
inti,j,n;charch;
n=strlen(aa);
for(i=1;i<n;i++)
ch=aa[i];
j=i-l;
/*************found*************/
while((j>=0)||(ch>aa[j]))
aa[j+l]=aa[j];
/*************found*************/
aa[j]=ch;
main()
chara[N]="JRTYDFKLIOPQWEGHMNBVCUASXZ";
inti;
printf("Theoriginalstring:%S\n",a);
insert(a);
printf("Thestringaftersorting:%S\n\n",a);
36.下列給定程序中,函數(shù)fun()的功能是:刪除字符串s中所有空白字
符(包括Tab字符、回車符及換行符)。輸入字符串時用‘#'結(jié)束輸入。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).
試題程序:
#include<string.h>
#include<stdio.h>
#include<ctype.h>
fun(char*p)
{int!i,t;charc[80];
for(i=0,t=0;p[i];i++)
if(!isspace(*(p+i)))c[t++]=p[i];
c[t]='\0';
strcpy(p,c);
)
main()
{charc,s[80];
inti=0;
printf("Inputastring:");
c=getchar();
while(c!='#')
(s[i]=c;i++;c=getchar();}
s[i]="\0";-
fun(s);
puts(s);
)
37.下列給定程序中,函數(shù)fun()的功能是:實(shí)現(xiàn)兩個整數(shù)的交換。例如
給a和b分別輸入60和65,輸出為:a=65b=60
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序;
#include<stdio.h>
#include<conio.h>
voidfun(inta,b)
{intt;
/*************found***********,
t=b;b=a;a=t;
}
main()
{inta,b;
clrscr();
printf("Entera,b:");scanf("%d%d",
&a,&b);
fun(&a,&b);
printf("a=%db=%d\n",a,b);
38.下列給定程序中,函數(shù)fun()的功能是:用遞歸算法計算斐波拉契級
數(shù)列中第n項的值。從第一項起,斐波'拉契級數(shù)序列為1,1,2,3,
5,8,13,21...........例如,若給n輸入7,
該項的斐波拉契級數(shù)值為13。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
longfun(intg)
switch(g);
{case0:return0;
switch(g)
case1;case2:retum1;
return(fun(g-l)+fun(g-2));
main()
longfib;intn;
printf("Inputn:");scanf("%d",&n);
printf("n-%d\n",n);
fib=fun(n);
printf("fib=%d\D\n",fib);
}
39.給定程序M0D11.C中函數(shù)fun的功能是:首先將大寫字母轉(zhuǎn)換為
對應(yīng)小寫字母;若小寫字母為a?u,則將其轉(zhuǎn)換為其后的第5個字母;
若小寫字母為v?z,使其值減21o轉(zhuǎn)換后的小寫字母作為函數(shù)值返回。
例如,若形參是字母A,則轉(zhuǎn)換為小寫字母f若形參是字母W,則轉(zhuǎn)換
為小寫字母b。
請改正函數(shù)fun中指定部位的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
1*include<stdio.h>
2*include<ctype.h>
3charfun(charc)
4(if(o-^1&&c<-Z)
5/found………….
6JC+32;
7if(c>-fa'&&c<?*uf)
8*************found*************
9c-c-5;
10elseif(c>-'v,z?)
11c?c-21;
12returnc;
13
14main()
15{charcl,c2;
16printf(H\nEnteraletter(A-Z):
;cl-getchar();
17if(isupper(cl))
18(c2?fun(cl);
19printf(w\n\nTheletter\,%c\1
changetocl,c2);
20;
21Jelseprintf(R\nEnter(A-Z)!\nw);
22!
40.給定程序M0D11.C中函數(shù)fun的功能是:找出100至n(不大于
1000)之間三位數(shù)字相等的所有整數(shù),把這些整數(shù)放在s所指數(shù)組中,個
數(shù)作為函數(shù)值返回。
請改正函數(shù)fun中指定部位的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
1;tinclude<stdio.h>
2!IdefineN100
3intfun(int*s,intn)
4{int
5j?0;
6for(i?100;i<n;i++){
7/found*************/
8k?n;
9a-k%10;k/-10;
10b?k%10;k/-10;
11/found?
12c-k%10
13if(a—b&&a?-c)s[
14}
15returnj;
16}
17main()
18{inta[N],n,num-0ri;
19do
20{printf(w\nEntern(<*1000):
www
);scanf(%dr&n);}
21while(n>1000);
22num-fun(a,n);
23printf(w\n\nTheresult:\n");
nw
24for(i?0;i<num;i++)printf(%5dr
a[i));
25printf(w\n\nw);
26
五、程序改錯題(2題)
41.
已知一個數(shù)列,從。項開始的前3項為0、0、1,以后的各項都是其相
鄰的前3項之和。下列給定的程序中,函數(shù)proc()的功能是:計算并
輸出該數(shù)列前n項的平方根之和sum。n的值通過形參傳入。例如,當(dāng)
n=ll時,程序的輸出結(jié)果應(yīng)為32.197745o請修改程序中的錯誤,使
它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪
行,也不得更改程序的結(jié)構(gòu)。試題程序:
Biiwlud*VsidLIx.h>
Rmrlu<i<Vcocis.h>
3KficlwirV、tdx>?
9includeVmath.b>
//????loufid????
proc(ini*>
doublexiE??0?<|?N??1iniki
*um01.Oi
ifwm-O.O.
w0w0,Oi,1?。?0|R,L。.
fotC-LhV)
??fO++Ni
num+.M)Ft(■)?
>0?。1i*l—W2I*2**I
//????(oumi????
rtiuni?um
voidrauiiti()
ratnt
?y?tem("CLS*>?
print!<*InputN-*)?
!?*,《?%d*?&■)!
fkfimfcetprorCa))<
42.下列給定程序中,函數(shù)proc的功能是:讀入一個字符串(長度
<20),將該字符串中的所有字符按ASCII碼升序排序后輸出。
例如,輸入opdye,則應(yīng)輸出deopy。
請修改程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)
構(gòu)。
試題程序:
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
//****found****
intproc(charstr[])
(
charc;
unsignedi,j;
for(i=0;i<strlen(str)-l;i++)
for(j=i+l;j<strlen(str);j++)
if(str[i]>str[j])
(
c=str[j]:
//****found****
str[j]=str[i++];
str[i]=c;
)
}
voidmain
(
charstr[81];
system("CLS");
printf("\nPleaseenteracharacter
string:");
gets(str);
printf("\n\nBeforesorting:\n%s”,str);
proc(str);
printf("\nAftersortingdecendingly:\n
%s",str);
)
六、操作題(2題)
43.有以下程序:
intfa(intx){returnx*x;}
intfb(intx){retumx*x*x;}
intf(int(*fl)(),int(*&)(),(intx)
{returnf2(x)-fl(x);}
main()
{inti;i=f(fa,fb,2);printf("%d\n",i);)
程序運(yùn)行后,輸出結(jié)果是【】。
44.請補(bǔ)充函數(shù)fun(),該函數(shù)的功能是:把一個字符串中的字符(字母)
按從小到大排序,并把這個全部由字母組成的字符串保存在原串中,函
數(shù)返回這個字符串的長度。例如;輸入“cixbr2.3",如果為bcirx,字符串
長度為5。
注意:部分源程序給出如下.
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的橫線
上填入所編寫的若干表達(dá)式或語句。
#include<stdio.h>
#defineN20
intfun(char*str)
inti=0,j=0,k=-0,m=0;
chart;
char*p=str;
while(*p)
(
if((*p>='A'&&*p<=Z)||(*p>='a'
&&*p<='z'))
[1
P++;
)
*(str+i)='\O';
[];
wh{ile(*(p+j))
k=j;
while(*(p+k))
(
if(*(p+k)<*(str+m)
(
t=*(str+m);
*(str+m)=*(p+k);
*(p+k)=t;
)
k++;
)
j++;
)
returni;}
main()
(
charstr[81];
ihtn;
clrscr();
printf("Inputtheoriginalstring");
gets(str);
printf("***TheOriginalstring***In");
puts(str);
printf("***Thenwestring***\n");
n=fun(str);
puts(str);
printf("***Thelengthofnewstringis:
%d***\n",n);"」
參考答案
l.C
2.1010解析:strlen(s)函數(shù)的返回值為字符串s包含的字符個數(shù)(不計
最后的'\\01)。
3.拖動拖動
4.malloc(ll)
malloc函數(shù)的格式是void*(或char*)malloc(size),size表示應(yīng)分配的存
儲區(qū),此題要分配11字節(jié)的單元,把11代入即可。
5.77解析:字符型數(shù)據(jù)可作為整型參加算術(shù)運(yùn)算,其值為其對應(yīng)的
ASCII碼。'H'-'A',的結(jié)果是7,加O后是7的ASCII碼,所以輸出的是
字符7。
6.00解析:根據(jù)運(yùn)算符的運(yùn)算順序可知,該表達(dá)式最后運(yùn)算的是與(&&)
運(yùn)算,而任何表達(dá)式與“0”進(jìn)行“與”運(yùn)算,結(jié)果都為0。
7.實(shí)體實(shí)體
8.1616解析:函數(shù)運(yùn)算不改變數(shù)據(jù)類型,所以結(jié)果也是double型,fabs(x)
是對x取絕對值,pow(y,fabs(x))是y的labs(x)次塞,即2.04。
0=16.000000(注意;結(jié)果為double型)。
9.swap(st);swap(s,t);解析:本題要在主函數(shù)中調(diào)用swap函數(shù)交換
a、b的值,實(shí)現(xiàn)數(shù)據(jù)交換需要進(jìn)行地址傳遞,所以函數(shù)的形參都應(yīng)該是
需要交換的數(shù)據(jù)的地址,程序中通過“s=&a;t=&b;”將指針變量s和t
指向變量a、b的地址,因此,引用時直接引用指針變量s和t即可。
10.右子樹(單支樹)右子樹(單支樹)解析:二叉排序樹對于任意新結(jié)點(diǎn),
若大于等于根結(jié)點(diǎn),則在右子樹上建立。
11.Amain函數(shù)中定義一個字符指針s,指向字符串“\\ta\\018bc"。for循
環(huán)遍歷s指向的字符串中的字符,然后輸出根據(jù)題意可以理解為:s指
向的字符串中有多少個字符,就輸出多少個s指向的字符串中字符分別
是\\t(轉(zhuǎn)義字符)、a、\\01(轉(zhuǎn)義字符)、8、b、c,總共6個。其中因為
8不屬于八進(jìn)制中的數(shù)字,所以“\\018”不是一個轉(zhuǎn)義字符,而“\\01”是轉(zhuǎn)
義字符。故本題答案為A選項。
12.D解析:輸出格式控制符%<:表示將變量以字符的形式輸出;輸出格
式控制符%<1表示將變量以帶符號的十進(jìn)制整型數(shù)輸出,所以第一個輸
出語句輸出的結(jié)果為a,97;第二個輸出語句輸出的結(jié)果為k=12o
13.B
14.C
Co【解析】結(jié)構(gòu)化分析方法是面向數(shù)據(jù)流進(jìn)行需求分析的方法,采用
自頂向下、逐層分解,建立系統(tǒng)的處理流程,以數(shù)據(jù)流圖和數(shù)據(jù)字典
為主要工具,建立系統(tǒng)的邏輯模型。
15.B
解析:本題考查的是程序結(jié)構(gòu)設(shè)計中if語句的應(yīng)用,當(dāng)if判斷條件成
立時就執(zhí)行其后的相關(guān)語句,否則不執(zhí)行,本題中第一個if條件不成
立,故不執(zhí)行“a=b”,接著執(zhí)行“c=a”,此時第二個if條件也不成立,
故不執(zhí)行其后語句,最終c的值為3。
16.C解析:數(shù)據(jù)庫(Database,簡稱DB)是數(shù)據(jù)的集合,它具有統(tǒng)一的
結(jié)構(gòu)形式并存放于統(tǒng)一的存儲介質(zhì)內(nèi),是多種應(yīng)用數(shù)據(jù)的集成,并可被
各個應(yīng)用程序所共享。數(shù)據(jù)庫中的數(shù)據(jù)具有“集成”、“共事”之特點(diǎn)。
17.A
18.C
在ifelse語句中else,總是與離它最近的配對。本題目中x勸1所以!x
為0,所以執(zhí)行else酷句中的內(nèi)容,判斷(x==0)是否成立,因為x
為1所以條件不成立,所以else部分的近.else語句不再執(zhí)行,所以y
的值還是初始值0。
19.D
Do【解析】算法的時間復(fù)雜度是指算法需要消耗的時間資源。一般來
說,計算機(jī)算法是問題規(guī)模。09函數(shù)fin),算法的時間復(fù)雜度也因此
記做T(n)=O(f(n))。因此,問題的規(guī)模n越大,算法執(zhí)行的時間的增長
率與f(n)的增長率正相關(guān),稱作漸進(jìn)時間復(fù)雜度(AsymptoticTime
Complexity)o簡單來說就是算法在執(zhí)行過程中所需要的基本運(yùn)算次
數(shù)。
20.C程序定義一個字符數(shù)組b,并使用字符串“happynewyeai”進(jìn)行初始
化。然后通過for循環(huán),遍歷字符數(shù)組b中的每個字符,再將b中的字
符元素修改為大寫字母。程序輸出:HAPPYNEWYEAR。故本題答案為
C選項。
21.
【解析】本題考查的是結(jié)構(gòu)體類型、指針型變量、鏈表和if語句等知識
點(diǎn)。需要用for循環(huán)遍歷鏈表中的每一個結(jié)點(diǎn),用判斷語句比較結(jié)點(diǎn)數(shù)
據(jù)域的大小。可以通過while循環(huán)實(shí)現(xiàn)對最大成績的查找,具體步驟為
遍歷鏈表遇到比max大的值(max<h->s)則賦值給max,max=h->so需要
注意的是,h是指向結(jié)構(gòu)體類型的指針變量,引用它指向的結(jié)構(gòu)體的成
員時,要用指向運(yùn)算符“一>”。
22.\n#include,,stdio.h"
\nmain
\n{intl,n;
\nfor(n=0,I=1900;I<=2000;I++)
\n{if(I%4==0I0!=0||I@0==0)
\n{printf("%d”,I);n++;}
\nif(n%3==0)
\nprintf("\\n");}}}
\n
23.
I答案】
voidfnn((;har*a,char*h,char*p)
fiiHi-0;
char*q=a;
wlnlc(q<h)
(
a「匕*q;Q++;i++;
)
while(q<p)(
(
加上*q;i++;
),
q++;
I
while(*q)
(*
MiK*q;i+.中+;
}
a[i]=W;
}
【解析】
h和p分別指向第一個和最后?個字母,先將前導(dǎo),號進(jìn)行保存.再保存中間的非*號字符.然后保存
尾*號,加上結(jié)束標(biāo)識符-
24.voidfun(chara[],charb[],intn)
(
inti,k=0;
for(i=0;a[i]!='\0,;i++)
if(i!=n)/*將不是指定下標(biāo)的字符存入數(shù)組b中*/
b[k++]=a[i];
b[k]=,\(r;/*在字符串最后加上字符串結(jié)束標(biāo)志*/
)
本題要求刪除字符串中指定下標(biāo)的字符,即把非指定下標(biāo)的字符保留。
所以if語句條件表達(dá)式為“i!=n"。字符串最后不要忘記加上字符串結(jié)
束標(biāo)志
25.
【解析】由題目中所給表達(dá)式可知,表達(dá)式的值為m項表達(dá)式的和然后
開平方??梢允紫韧ㄟ^m次循環(huán)求得m項表達(dá)式的和,然后將其和開
平方并返回到主函數(shù)當(dāng)中。
26.
【解析】使數(shù)組左下半三角元素中的值加上n,首先要找出數(shù)組中下半
三角元素。數(shù)組中下半三角元素的特點(diǎn)是,其列下標(biāo)小于等于行下
標(biāo)。根據(jù)這個特點(diǎn)找出所有的下半三角元素再加上n放在原來的位置
上。
27.
【解析】按照題目中要求,求出二維數(shù)組每行中最大元素,并依次放
入pp所指的一維數(shù)組中。首先比較二維數(shù)組中每一行的元素,然后找
出每一行中的最大元素,放入一維數(shù)組PP中,最后返回到主函數(shù)當(dāng)
中。
28.voidproc(char*strochart[3])
\n(
\ninti,j=0;
\nfor(i=0;str[i]!=\\0;i++)〃從數(shù)組的第一個元素開始,到其最后一個
\n{if(i%2==0str[i]%2l=o)〃下標(biāo)為偶數(shù)、同時ASCII碼值為奇數(shù)的字符
\nt[j++]=str[i];}//如果成立,則把它放到t數(shù)組中
\nt[i]=\\o;〃字符串結(jié)束標(biāo)志為\\0
\n}
\n【解析】題目中要求將字符串str中下標(biāo)為偶數(shù),同時ASCII碼值為奇
數(shù)的字符放在數(shù)組t中。首先,需要檢查字符串str中下標(biāo)為偶數(shù)的字符
其ASCII碼值是否為奇數(shù),將符合要求的字符放在數(shù)組t中。最后,為
新的字符串?dāng)?shù)組添加結(jié)束符。
\n
29.
intf(char)
{inti=0,j=0;
while(s[j])(j++;);
for(j—;i<j&&s[i]=s[j];i++,j—);
return(i-j)
}
30.
int修時史量統(tǒng)計位歙
while(n/10)0,若不為O.bits>>1.4
*n*以10.it修狗斯
(
bitsx;
n-n/10;
returnbits;【考點(diǎn)分析】主要考察考生對循環(huán)
跳出的條件的理解,以及理解取數(shù)字位數(shù)的方法?!窘忸}思路】通過
對指定的多位數(shù)每次除以10,去掉最后一位,直到為。結(jié)束,使用臨時
變量來統(tǒng)計一個多位數(shù)的位數(shù)。
31.(1)錯誤:缺少語句正確:應(yīng)填入n%base或%16(2)錯誤:缺少語句
正確:應(yīng)填入[d]⑴錯誤:缺少語句正確:應(yīng)填入n%base或%16"\11(2)
錯誤:缺少語句正確:應(yīng)填入⑷解析:在該程序中,字符數(shù)組b存儲
十六進(jìn)制的16個數(shù)字符,整型數(shù)組c存儲譯出的十六進(jìn)制數(shù)的各位數(shù)
值。從整數(shù)n譯出它的各位十六進(jìn)制數(shù)值,需采用除16取余的方法,
即求n除16的余,得到它的十六進(jìn)制的個位數(shù),接著將n除以16。在
n不等于0的情況下循環(huán),能順序求出n的十六進(jìn)制的個位數(shù)、十位數(shù)、
百位數(shù)等。程序中變量base已預(yù)置16,所以在第1個空框處可填代碼
n%base或n%16。當(dāng)n的十六進(jìn)制數(shù)的個位、十位、百位等依次存放于
數(shù)組c中后,就從最高位至最低位,參照數(shù)組c[i]的內(nèi)容d(以其內(nèi)容為
下標(biāo)),取十六進(jìn)制數(shù)字符表中的字符b[d]輸出。所以在第2個空框處可
填入代碼⑷。
32.(1)錯誤;s|j]=s[i];正確:s[j++]=s[i];(2)錯誤:s[j]="\O";正確:
s[j]='\O';⑴錯誤;s[j]=s[i];正確:s[j++]=s[i];\r\n(2)錯誤:s[j]='\\O';
正確:s[j]=\'\\O\';解析:有循環(huán)條件if(s[i]>=\'0\'&&s[i]<=V9V)以及
題目要求“依次取出字符串中所有的數(shù)字字符”可知,S[j]=s[i];表述錯誤。
sU]='\\O';中是一個常識性語法錯誤,學(xué)習(xí)者只要在平時訓(xùn)練的時候注意
一下就可以了。
33.intfun(intnintxx[][])改為intfun(intnintxx[][M))printf("%fxx[i][j]);
改為printf("%d"xx[i][j]);intfun(intn,intxx[][])改為intfun(intn,int
xx[][M))\r\nprintf('%f,xx[i][j]);改為printf('%d,'xx[i][j]);解析:二
維數(shù)組作為函數(shù)形參時,二維長度不可缺省,只能省略一維的長度。在
格式輸出函數(shù)中,血型數(shù)據(jù)輸出時對應(yīng)的控制符是%d.
34.(1)錯誤:fun(char*sintnum[5])正確:voidfun(char*sinthum[5])(2)
錯誤:num[i]=0;正確:num[k]=0;(3)錯誤:switch(s)正確:switch(*s)(l)
錯誤:fun(char*s,intnum[5])正確:voidfun(char*s,inthum[5])\r\n(2)錯
誤:num[i]=0;正確:num[k]=0;\r\n(3)錯誤:switch(s)正確:switches)解
析:switch語句說明:
(l)switch后的表達(dá)式,可以是整型或字符型,也可以是枚舉類型的。在
新的ANSIC標(biāo)準(zhǔn)中允許表達(dá)式的類型為任何類型。
⑵每個case后的常量表達(dá)式只能是常量組成的表達(dá)式,當(dāng)switch后的
表達(dá)式的值與某一個常量表達(dá)式的值一致時,程序就轉(zhuǎn)到此case后的
語句開始執(zhí)行。如果沒有一個常量表達(dá)式的值與s
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 施工工程運(yùn)輸合同范本
- 購買二手房買賣合同范本
- 2025cc直播平臺主播轉(zhuǎn)公會合同
- 二手商品房買賣合同
- 水泥銷售合同范本
- 石料買賣合同
- 2025續(xù)訂勞動合同通知書模板
- 2025建筑企業(yè)流動資金借款合同范本版
- 廣告發(fā)布投放合同
- 提升銷售談判能力的技能培訓(xùn)
- 支氣管鏡護(hù)理測試題
- 大連理工大學(xué)信封紙
- 圖形創(chuàng)意(高職藝術(shù)設(shè)計)PPT完整全套教學(xué)課件
- 北京版小學(xué)英語必背單詞
- NB-T 10609-2021 水電工程攔漂排設(shè)計規(guī)范
- 藝術(shù)課程標(biāo)準(zhǔn)(2022年版)
- 2023年全國4月高等教育自學(xué)考試管理學(xué)原理00054試題及答案新編
- 稀土配合物和量子點(diǎn)共摻雜構(gòu)筑發(fā)光軟材料及其熒光性能研究
- JJG 921-2021環(huán)境振動分析儀
- 中藥炮制學(xué)-第五、六章
- 中國風(fēng)軍令狀誓師大會PPT模板
評論
0/150
提交評論