版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2021年廣東省汕尾市全國計算機等級考試
C語言程序設(shè)計真題(含答案)
學(xué)校:班級:姓名:考號:
一、2.填空題(10題)
1.表示""整數(shù)x的絕對值大于5"“時值為"“真””的C語言表達(dá)式是【】。
2.對于軟件測試,從是否需要執(zhí)行被測軟件的角度,可以分為靜態(tài)測試
和動態(tài)測試。代碼檢查屬于測試。
3.以下函數(shù)fun的功能是返回str所指字符中中以形參c中字符開頭的
后續(xù)字符串的首地址,例如:str所指字符串為"Hello!”,c中的字符為
'e',則函數(shù)返回字符串“ello!”的首地址。若str所指字符串為空中或不包
含c中的字符,則函數(shù)返回NULL。請?zhí)羁铡?/p>
char*fun(char*str,charc)
{intn=0;char*p=str;
if(p!=NULL)
while(P[n]!=c&&p[n]!='\0')n++;
if(p[n]=='\O')retumNULL;
retum([]);
4.閱讀下面語句,則程序的執(zhí)行結(jié)果是【】。
#include"stdio.h"
main()
{inta=-l,b=l,k;
if((++a<0)&&!(b-<=0))
printf("%d,%d\",a,b);
elseprintf("%d,%d\n",b,a);}
5.下面程序是計算100以內(nèi)能被4整除且個位數(shù)為4的所有整數(shù),請
填空。
main()
{intm,n;
for(m=0;[];m++)
{n=m*10+4;
If([])continue;
printf("%d\n",n);}}
6.以下程序的運行結(jié)果為【】°
#defineFORMAT"%u,%u"
main()
{inta[3][4]={l,3,5,7,9,11,13,15,17,19,21,23};
printf("\n");
printf(FORMAT,**a,*a[0]);
printf(FORMAT,*(a[0]+l),*&a[0][l]);
printf(FORMAT,a[l][0],*(*(a+l)+0));
)
7.以下程序運行后的輸出結(jié)果是【】。
#include<stdio.h>
main()
{inti,m=0,n=0,k=0;
for(i=9;i<=1l;i++)
switch(i/10)
{case0:m++;n++;break;
case10:n++;break;
default:k++;n++;
)
printf("%d%d%d\n",m,n,k);
)
8.下面程序的功能是:計算1~10之間奇數(shù)和及偶數(shù)之和。
#include<stdio.h>
main()
{inta,b,c,i;
a=c=O;
for(i=O;i<=10;i+=2)
{a+=i;
【】;
c+=b;
)
printf("偶數(shù)之和=%d\n",a);
printf("奇數(shù)之和=%d\n",c-11);
)
9.x、y、x均為int型變量,描述“x、y和z中至少有兩個為正數(shù)”的表
達(dá)式是______O
10.以下程序運行后的輸出結(jié)果是【】。
main()
{charCl,c2;
for(cl='0"c2='9';cl<c2;cl++,c2-)printf("%c%c",cl,c2);
printf("\n");
)
二、單選題(10題)
29)以下不正確的定義語句是().
A)doublex[5]={1.0,2.0,30,4.0,5.0};B)inty[5]={0,1,2,3.4,5);
C)charcl[]={'!','2;'3','4','5'};D)charc2[)={'a',b,'c'};
12.視圖設(shè)計一般有3種設(shè)計次序,下列不屬于視圖設(shè)計次序的是()。
A.自頂而下B.由內(nèi)向外C.由外向內(nèi)D.自底向上
13.
(3)數(shù)據(jù)結(jié)構(gòu)中,與所使用的計算機無關(guān)的是數(shù)據(jù)的().
A)存儲結(jié)構(gòu)B)物理結(jié)構(gòu)C)邏輯結(jié)構(gòu)D)線性結(jié)構(gòu)
14.下列關(guān)于線性鏈表的敘述中,正確的是()
A.各數(shù)據(jù)結(jié)點的存儲空間可以不連續(xù),但它們的存儲順序與邏輯順序必
須一致
B.各數(shù)據(jù)結(jié)點的存儲順序與邏輯順序可以不一致,但它們的存儲空間必
須連續(xù)
C進(jìn)行出入與刪除時,不需要移動表中的元素
D.以上三種說法都不催
15.有以下程序:
#include
#definePT3.5;#defineS(x)PT*x*x;Main(){inta=l,b=2;printf("%4.1f\n",S(a+b));程序運行
后的輸出結(jié)果是()。A.7.5B.3L5C.程序有錯無輸出結(jié)果D.14.0
16.以下敘述中,不正確的是()。
A.使用staticfloata定義的外部變量存放在內(nèi)存中的靜態(tài)存儲區(qū)
B.使用floatb定義的外部變量存放在內(nèi)存中的動態(tài)存儲區(qū)
C.使用staticfloatc定義的內(nèi)部變量存放在內(nèi)存中的靜態(tài)存儲區(qū)
D.使用floatd定義的內(nèi)部變量存放在內(nèi)存中的動態(tài)存儲區(qū)
17.鏈表不具有的特點是
A.A.不必事先估計存儲空間
B.可隨機訪問任一元素
C.插入和刪除不需要移動元素
D.所需空間與線性表長度成正比
18.在一個元素個數(shù)為N的數(shù)組里,找到升序排在N/5位置的元素的最
優(yōu)算法時間復(fù)雜度是()
A.O(n)B.O(nlogn)C.O(n(logn)2)D.O(n3/2)
19.結(jié)構(gòu)化程序設(shè)計方法的3種基本控制結(jié)構(gòu)中不包括
A.循環(huán)結(jié)構(gòu)B.遞歸結(jié)構(gòu)C.順序結(jié)構(gòu)D.選擇結(jié)構(gòu)
20.
(35)C語言中,凡未指定存儲類別的局部變量的隱含存儲類別是().
A)自動(auto)B)靜態(tài)(static)C)外部(extern)D)寄存器(register)
三、程序設(shè)計題(10題)
21.
請編寫函數(shù)proc(),該函數(shù)的功能是:將放在字符串?dāng)?shù)組中的M個字
符串(每串的長度不超過N).按順序合并組成一個新的字符串。例如,
若字符串?dāng)?shù)組中的M個字符串為:ABCDBCDEFGCDEFGHI則合并
后的字符串內(nèi)容應(yīng)該是:ABCDBCDEFGCDEFGH1o注意:部分源程
序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在
函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
£todvdeh>
■isiclude<eoftao.h>
9defmeM3
0dcGtwrN20
aidproc<charirr[Mj[N.clur?b>
gtdnuim<)
charMr[M][Nj?(*A!KT)B.?K'DER;*.-
CKFCJHD.u
cUr■N£I8]I《?
■■■■??),
ptwt(<*TheNinn(ii\i>")?
(or<i",0iKMii4-,)
pot?<
praiiR*\n*>i
proc(?tr?arr>i
prwvft"TheA?tnng:\n*)?
prmtf(*Hs
pnmf("\n\n"><
22.學(xué)生的記錄由學(xué)號和成績組成,M名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入
結(jié)構(gòu)體數(shù)組stu中,請編寫函數(shù)proc(),該函數(shù)的功能是:把高于等于
平均分的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,高于等于平均分的學(xué)生人數(shù)通
過形參n傳回,平均分通過函數(shù)值返回。注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的
花括號中填入所編寫的若干語句。試題程序:
?KKiwIv<??4nll
■MwMI:
tyfMtMMmn
(charBM(IO]t
4twMt..
mUTo
double|^wr<XTKSX*?A?STWEL'.,■??)
*UMIL,)
NTRCTM】?I《eGAM#.Ml..
rGA02*.M>.feGA04e?M2.(*GAor.tll.
《'GA07■.m.GAM,M■LGWM,
<?GW?I?GA11..791?{?GA1.flI.
<"GAlo?g>i
STRGChCMJt
KM|?■,
dovbic
——proH?3?>.&?>.
pnnd<*ThtH4ttWHM4otawWii.
higher(KMIXT.
lor<i*OtY1
pnatf<eKaMi.n?ai*h£i].a>?
p>natf(
23.請編寫函數(shù)proc(),其功能是:計算并輸出下列多項式值。S=(1+1
/2)+(1/3+1/4)+...+(1/(2n-l)+1/2n)例如,若輸入10,
則輸出為S=3.597740on的值要求大于1但不大于100。注意:部分
源程序給出如下。請勿改動函數(shù)main()和其他函數(shù)中的任何內(nèi)容,
僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
sinciudch>
doubleproc<mtn)
v<oedBUIMI<)
Intm
double*
prtnlfi*\nlfiputna*)i
MAnf(*KdM?&-n>i
nwproc<n)i
pnMf(*\ik?wSf\t?
24.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方
案的項目中包含一個源程序文件progl.c。在此程序中,編寫函數(shù)
fun(),該函數(shù)的功能是統(tǒng)計一行字符串中單詞的個數(shù),并將其作為函
數(shù)值返回。字符串在主函數(shù)中輸入,規(guī)定所有單詞由小寫字母組成,
單詞之間由若干個空格隔開,一行的開始沒有空格。
注意:部分源程序在文件progl.c中。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括
號中填入你編寫的若干語句。
試題程序:
1#include<string.h>
2#include<stdio.h>
3#defineN80
4intfun(char*s)
5{
6
7)
8voidmain()
9{
10FILE*wf;
11charline[N];
12intnum=0;
13printf("Enterastring:\n");
14gets(line);
15num=fun(line);
16printf("Thenumberofwordsis:%d\n\n",num);
]7/*********found*********/
18wf=fopen("out.dat","w");
19fprintf(wf,"%d",fun("abigcar"));
20fclose(wf);
2]/*********found*********/
22)
25.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方
案的項目中包含一個源程序文件progl.c在此程序中,編寫函數(shù)
intfun(),其功能是求出小于或等于lim的所有素數(shù),將其存放在aa數(shù)
組中,并返回所求出的素數(shù)的個數(shù)。
注意:部分源程序在文件progl.c中。
請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花
括號中填入你編寫的若干語句。
試題程序:
1#include<conio.h>
2#include<stdio.h>
3#include<stdlib.h>
4#defineMAX100
5intfun(intlim,intaa[MAX])
6{
7
8)
9voidmain()
10{
11FILE*wf;
12intlimit,i,sum;
13intaa[MAX];
14system("CLS");
15printf("輸入一個整數(shù):");
16scanf("%d",&limit);
17sum=fun(limit,aa);
18for(i=0;i<sum;i++)
19{
20if(i%10==0&&i!=0)/*每行輸出10個數(shù)*/
21printf("\n");
22printf("%5d",aa[i]);
23)
24/******************/
25wf=fopen("out.dat","w");
26sum=fun(15,aa);
27for(i=0;i<sum;i++)
28{
29if(i%10==0&&i!=0)/*每行輸出10個數(shù)*/
30fprintf(wf,"\n");
31fprintf(wf,"%5d",aa[i]);
32)
33fclose(wf);
34/******************/
35)
26.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方
案的項目中包含一個源程序文件progl.c0在此程序中,編寫函數(shù)fun(),
其功能是將a、b兩個兩位正整數(shù)合并成一個新的整數(shù)放在c中。合并
的方式是將a中的十位數(shù)和個位數(shù)依次放在變量c的千位和十位上,b
中的十位數(shù)和個位數(shù)依次放在變量c的個位和百位上。
例如,當(dāng)a=45,b=12,調(diào)用該函數(shù)后c=4251。
注意:部分源程序給出如下。
請勿改動主函數(shù)main。和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花
括號中填入你編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
voidfun(inta,intb,long*c)
(,
)
main()
{
inta,b;
longc;
printff'Inputa,b:");
scanf("%d%d”,&a,&b);
fun(a,b,&c);
printf(t€Theresultis:%ld\n,,,c);
}
27.假定輸入的字符串中只包含字母和*號。請編寫函數(shù)proc(),它的功
能是:除了尾部的*號之外,將字符串中其他*號全部刪除。形參P已指
向字符串中最后一個字母。在編寫函數(shù)時,不得使用C語言的字符串函
數(shù)。例如,若字符串中的內(nèi)容為****a*bc*def*g****,刪除后,字符串
中的內(nèi)容應(yīng)當(dāng)是abcdefg****。注意:部分源程序給出如下。請勿改動
main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中
填人所編寫的若干語句。試題程序:
ncndudrVcomah>
smclude<Mdio.b>
voidpfor<cKar??lr?char?p>
voidmam(>
char?ii
pnfM((*Entera?tnngi\**>i
grt?(Mr)i
t*mri
wh?le<?i)
L,Bf簿ttQflt向字樣?艇■
whib(?i?-'?'>
t--i4?lti推網(wǎng)?后一個字耳
l>roc<Mr?Ot
prtnrfCwThr7nM“eMetedAn")?
put?(str)i
28.請編寫函數(shù)proc(),該函數(shù)的功能是:將M行N列的二維數(shù)組中的
字符數(shù)據(jù),按列的順序依次放到一個字符串中。例如,若二維數(shù)組中
的數(shù)據(jù)為:
WWW
SSS
HHH
III
則字符串中的內(nèi)容應(yīng)是WSHIWSHIWSHL
注意:部分源程序給出如下。
請勿改動main。函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括
號中填人所編寫的若干語句。
試題程序:
#tncludeVzdtd
林WineM4
8dtfitwN3
voidproc<ckmr<??>[N)?clur?b>
M>ldmatn(>
char41003?W[MXN]M(IW.W?W).
3'S\S\I.CH\*H\1H4.)?(T?'
r.THi
inii小
print"'The
(or(i-“yMX*4?)
<lor《?)
pnrn((aHlc*.w£iltj]h
peoc<w?a)i
prmtf<"TheA
pm*<a)s
pnnrf<<\n\n")i
29.
請編寫一個函數(shù)voidproc(intm,intk,intxxE3),該函數(shù)的功能是:
將大于整數(shù)m且緊靠m的k個素數(shù)存入所指的數(shù)組中。例如,若輸入
206,則應(yīng)輸出232931374143°注意:部分源程序給出如下。請勿
改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括
號中填入所編寫的若干語句。試題程序:
與includehj>
9includeVcooflo.h>
>include<stdiah>
vo?dprocimtmttnlk?mt
^oed)
mim?n?<rv{10001i
■Ee?n《*CLS*)?
pmtf("\nPlcaxrnicTtwointegersj*)t
-
proc(m?n?arr>t
Corg,<>g<fiiwi+))
pfiarf(e%d*.Arv(ai])i
pnnd<*\n*)t
30.學(xué)生的記錄由學(xué)號和成績組成,M名學(xué)生的數(shù)據(jù)已在主函數(shù)中放人
結(jié)構(gòu)體數(shù)組stu中。請編寫函數(shù)proc(),它的功能是:函數(shù)返回指定成
績的學(xué)生數(shù)據(jù),指定的成績在主函數(shù)中輸入。若沒找到指定的成績,在
結(jié)構(gòu)體變量中給學(xué)號置空串,給成績置-1,作為函數(shù)值返回。注意:部
分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,
僅在函數(shù)proc()的花括號中填人所編寫的若干語句。試題程序:
=include<stdio.h>
#indudeVstdlib.h>
*defineM16
lyjxrdcfMruct
(
charnum[10]i
intsi
(
STRE(?
STRECproc<STREC?a.intb)
s'oidmain()
STRECstu[M]={<"GA005-.76("GA003*.89)?
(“GA002-?64)?{"GA004*,75)?(HGA001-,88〉?
{“GA007".65}?{-GA008-,96).(”GA006-?69).
(“GAO15".85}?{”GAO13-,78)J”GAO12??62)?
(?GA014M>60}.("GA011*,73>?{?GAOl?",72!<
("GA018"?98>?<-GA016e,94)>?
STRECh:
in(mi
intit
printfC"Theoriginaldata:\nN)t
for(i=0ii<Mii4--t-)
{=0)
printfC"\n*)i
〃每行輸出[個學(xué)生記錄
printfC-%s%3d*,Muti].num?stu[i].s)i
}
pnntf("\n\nEnterthescores*)i
h=proc(Mu?m)t
printfC"Thedata:")?
printf(*\n%s%4d\n”.h?num.h.n>i
printf("\n")i
四、2.程序修改題(10題)
31.給定程序MOD11.C中函數(shù)fun的功能是:用下面的公式求兀的近
似值,直到最后一項的絕對值小于指定的數(shù)(參數(shù)num)為止:
K.111,
4357
例如,程序運行后,輸入0.0001,則程序輸出3.1414。
請改正程序中的錯誤,使它能輸出正確的結(jié)果。
注意:不要改動smain函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
;■include<math.h>
2!tinclude<stdio.h>
3?floatfun(floatnum)
4;{ints;
5!floatn,tfpi;
6
7I/*************found********?****/
8while(t>=num)
9(
10pi=pi*t;
11n,n+2;
12s
13/???found9
14t?s%n;
15}
16pi?pi*4;
17returnpi;
18}
19main(J
20{floatnl,n2;
21printf(wEnterafloatnumber:");
22scanf&nl);
23n2,fun(nl);
ww
24printf(%6.4f\nfn2);
25
32.下列給定程序中函數(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)
/&1&&&&&&0±/
/不不不不不不不不不不不不不Teiri不不不不不不不不不不不不小/
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);
)
33.給定程序M0D11C中函數(shù)fun的功能是根據(jù)形參m的值(2gmW9),
在m行m列的二維數(shù)組中存放如下所示規(guī)律的數(shù)據(jù),由main函數(shù)輸
出。
例如,若輸入2|若輸入4
則輸出:|則輸出:
12|1234
24|2468
|36912
|481216
請改正程序函數(shù)中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
*include<conio.h>
2*include<stdio.h>
3?defineM10
4inta(M)(M)■{0};
5
6voidfun(int**arintm)
7(intjrk;
8for(j-0;j<m;j++)
9for(k?0;k<m;
10???found**??<<*>?????/
11a[j](k)-k*j;
12)
13main()
14(int1,j,n;
15printf(MEntern:");scanf
Cd-,&n);
16fun(a,n);
17for(i?0;i<n;i++)
18{for(j-O;j<n;j++)
19printf("%4d"fa[i)(jj);
20printf(w\nw);
21
22
34.給定程序MODH.C中函數(shù)fun的功能是:將長整型數(shù)s中每一位
上為偶數(shù)的數(shù)依次取出,構(gòu)成一個新數(shù)放在t中。高位仍在高位,低位
仍在低位。
例如,當(dāng)s中的數(shù)為:87653142時,t中的數(shù)為:8642。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
1*include<stdio.h>
2voidfun(longs,long*t)
3{intd;
4longsl?l;
5?t-0;
6while(s>0)
7(d■s%10;
8/foundn
9if(d%2-0)
10{*t-d*sl+*t;
11si*?10;
12
13/**???*??????found**?**?***?**/
14s\=10;
15
16
17main()
18{longs,t;
19printf(R\nPleaseenters:0);
wR
scanf(%ldr&s);
20fun(s,6t);
nw
21printf(Theresultis:%ld\nrt);
22
35.下列給定程序中,函數(shù)fun()的功能是;計算函數(shù)F(x,y,z)=(x+y)/(x-
y)+(z+y)/(z-y)的值。其中x和y不相等,z和y不等。例如,當(dāng)x的值
為9,y的值為11,2的值為15時,函數(shù)值為-3.50。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<math,h>
/**************found
#defineFU(m,n)(m/n)
floatfun(floata,floatb,floatc)
{floatvalue;
value=FU(a+b,a-b)+FU(c+b,c-b);
/********不***不found****不***不*********/
return(Value);
)
main()
{floatx,y,z,sum;
printf("Inputxyz::");
scanf("%f%f%f,&x,&y,&z);
printf("x=%f,y=%f,z=%f\n",x,y,z);
if(x==y||y==z){printf("Dataerror!\n");
exit(0);}
sum=fun(x,y,z);
printf("Theresultis:%5.2f\n",sum);
)
36.下列給定程序中,函數(shù)fun()的功能是:根據(jù)整型形參n,計算如下
公式的值。
Al=l,A2=l/(5+Al),A3=l/(5+A2)........An=l/(5+A(n-l))
例如,若n=10,則應(yīng)輸出0.192582。
請改正程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
floatfun(intn)
{.....................................................
/***********found*************/
intA=l;
inti;
for(i=1;i<=n;i++)
A=1.0/(5+A);
returnA;
}
main()
(
intn;
clrscr();
printf("\nPleaseentern:");
scanf("%d",&n);
,,
printf("A%d=%mn1n,fun(n));
)
37.下列給定程序中,函數(shù)fun()的作用是,將字符串tt中的大寫字母都
改為對應(yīng)的小寫字母,其他字符不變。例如,若輸入"Ab,cD",則輸出
"ab,cd"o
請改正函數(shù)fun()中的錯誤,使它能得出正確的結(jié)果。
注童:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<string.h>
#include<conio.h>
char*fun(chartt[])
inti;
for(i=0;tt[i];i++)
/***********不**found**不***不***不***/
{if(('A,<=tt[i]||(tt[i]<='z'))
tt[i]+=32;}
return(tt);
}
main()
{inti;
chartt[81];
clrscr();
printf("\nPleaseenterastring:");
gets(tt);
printf("\nTheresultstringis:\n%s",fun(tt));
)
38.下列給定程序中,函數(shù)fun()的功能是:傳入一個整數(shù)m,計算如下
公式的值。
t=l/2-l/3-...-l/m
例如,若輸入5,則應(yīng)輸出-0.283333。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
doublefun(intm)
(
doublet=LO;
inti;
for(i=2;i<=m;i++)
/*************foun
t=1.0-l/i;
/*************found**************/
main()
{intm;
clrscr();
printf("\nPleaseenter1integernumbers
:In");
scanf("%d",&m);
printf("\n\nTheresultis
fun(m));
)
39.下列給定程序中,函數(shù)fun()的功能是:通過某種方式實現(xiàn)兩個變量
值的交換,規(guī)定不允許增加語句和表達(dá)式。例如變量a中的值原為8,
b中的值原為3,程序運行后a中的值為3,b中的值為8°
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
intfun(int*x,inty)
(
intt;
/***************found***************/
t=x;x=y;
/***************found***************/
return(y);
)
main()
{inta=3,b=8;
clrscr();
printf("%d%d\n",a,b);
b=fun(&a,b);
printf("%d%d\n",a,b);
)
40.下列給定程序中,函數(shù)fun()的功能是逐個比較a,b兩個字符串對
應(yīng)位置中的字符,把ASCII值小或相等的字符依次存放到c數(shù)組中,形
成一個新的字符串。
例如:a中的字符串為fshADfg,b中的字符串為sdAEdi,則c中的字
符串應(yīng)為fdAADfo
請改正程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<strinq.h>
voidfun(char*p,char*q,char*c)
{intk=0;
while(*p||*q)
/**********j^Qund**************/
{if(*p<=*q)
c[k]=*q;
elsec[k]:*p;
if(*p)p++;
if(*q)q++;
I**+**********^Qund**************/
k++
)
main()
{chara[10]="fshADfg",b[10]="sdAEdi",
c[80]={'\0');
fun(a,b,c);
printf("Thestringa:");puts(a);
printf("Thestringb:");puts(b);
printf("Theresult:");puts(c);
)
五、程序改錯題(2題)
41.下列給定程序的功能是:讀入一個整數(shù)n(2<=n<=5000),打印它的
所有為素數(shù)的因子。例如,若輸入整數(shù)1234,則應(yīng)輸出:2,617o
請修改程序中的錯誤,使程序能得出正確的結(jié)果。
注意:不要改動main函數(shù),不能增選或刪行,也不能匿改程序的結(jié)
構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
//******
Prime(intm);
intj,P;
p=l;
//****f^)und****
for(j=2;j<m;j++)
if!(m%j)
(
p=0;
break;
)
retum(p);
intn;
printf("\npleaseenteranintegernumberbetween2
and5000:");
scanf("%d",&n);
printf("\n\nTheprimefactor(s)of%dis(are):",n):
for(i=2;i<n;i4+)
if((!(n%i))&&(Prime(i)))
printf("%4d,",i);
printf("\n");
)
42.
以下程序可把輸入的十進(jìn)制數(shù)以十六進(jìn)制數(shù)的形式輸出。請在橫線上填
上適當(dāng)?shù)膬?nèi)容并把橫線刪除,使它能得出正確的結(jié)果。注意:不要改動
main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
二includeVsldio.h>
voidmain()
charb[17]?{-0123456789ABCDEF"h
intc(64],d.i=O.lwisc-16s
longmumt
Drintf(HEnteranumber:\n")iscanf("%Id*.
&num)i
du
(
//????found????
c[i]4ii++inum—num/basei)
while,num!■■0)?
prinif("TransmitcnewbaseAn")i
for(------iii>-0i"-i)
//????found**??
(d=c[i]iprinif("%c"?b>i)
printf(*\nH)t
六、操作題(2題)
43.當(dāng)m=l,n=2,a=3,b=2,c=4時,執(zhí)行d=(m=a!=B)&&(n=b>C)后,
m的值為()o
44.下列給定程序中,函數(shù)proc()的功能是:根據(jù)輸入的3個邊長(整
型值),判斷能否構(gòu)成三角形:若能構(gòu)成等邊三角形,則返回3;若是等
腰三角形,則返回2;若能構(gòu)成三角形則返回1;若不能,則返回0。例
如,輸入3個邊長為3,4,5,實際輸入時,數(shù)與數(shù)之間以Enter鍵分隔
而不是逗號。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:
不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試
題程序:
Wl*irlw<leVmdMXh'.'>
Wmclud*<RMHII.b>
mipror<mta?mib?mic)
M(??―b&Ab?■9)
//????IOMMI????
rrium11
?Ue"■<1
Euntli
//????IOUMI????
?larrrt?m3i
“JrrlumOi
voedmflm<)
mta?b?c?jilupei
pmf{(0\nlfipuie?b?ct
9canf(a,KdKdKda*?(>a?&b?&c)t
*\n?wKd?b-3d?c-%d\n"???}??)4
,hapc="ocl??b?c).
pnatlf"\n\aThcUuiprs%An*?shape)i
參考答案
1.x>5||x<-5x<-5或x<-5||x>5x>5||x<-5,x<-5或x<-5||x>5解析:
要使整數(shù)x的絕對值大于5,則x大于5或x小于5,用C語言表示即
為:x>5||x<-5或者x<-5||x>50故本題答案為;x>5||x<-5或者x<
-5||x>5o
2.靜態(tài)靜態(tài)解析:靜態(tài)測試包括代碼檢查、靜態(tài)結(jié)構(gòu)分析,代碼質(zhì)量度
量等。靜態(tài)測試不實際運行軟件。
3.str+n或p+nstr+n或p+n解析:此題主要是將形參c中的字符與str中
的字符相比較,返回以形參c中字符開頭的后續(xù)字符串,函數(shù)fun中的
變量n用于記錄形參c中字符在str字符串中的位置,故返回的結(jié)果用
str+n或p+n表示。
4.101,0解析:與運算兩邊的語句必須同時為真時,結(jié)果才為真。當(dāng)執(zhí)行
完if((++a<0)&&!(b—<=0))時,a,b的值已經(jīng)發(fā)生了變化。
5.m<10n%4!=0
6.113399
7.132132解析:在程序中,i從9開始循環(huán),當(dāng)i=9時,執(zhí)行case0
后的語句m++;n++;此時m=l,n=l,然后執(zhí)行break,跳出循環(huán);當(dāng)
i=10時,執(zhí)行detault后的語句k++;n++;此時k=l,n=2;當(dāng)i=l1時,
再執(zhí)行default后的語句,k=2,n=3o此時,m=l,n=3,k=2o輸出結(jié)果
為132。
8.b=i+l
9.((x>0)&&<y>0))II(x>0)&&(z>0)IIy>0)&&(z>0))((x>0)&&<y
>0))II(x>0)&&(z>0)IIy>0)&&(z>0))解析:題目要求“x、y和z中
至少有兩個為正數(shù)”,即x、y和x這3個數(shù)中必須有兩個是正數(shù),且這
3個數(shù)中的哪兩個數(shù)都有可能是正數(shù),所以它們之間是或的關(guān)系。
10.9.18274e+0089.18274e+008解析:本題考查的循環(huán)條件是cl<c2,當(dāng)
cl>=c2時,退出循環(huán)。所以,第一次循環(huán)輸出09,第二次循環(huán)輸出18,
如此循環(huán)直到輸出45,之后cl=5,c2=4,不滿足循環(huán)條件,退出循環(huán)。
U.B
12.C視圖設(shè)計的設(shè)計次序分3種:自頂向下、自底向上和由內(nèi)向外。它
們?yōu)橐晥D設(shè)計提供了具體的操作方法,設(shè)計者可根據(jù)實際情況靈活掌握。
13.C
14.C
試題2分析
結(jié)點的存儲順序和邏輯順序不一定一致,存儲空間也不一定連續(xù)。插
入和刪除元素的時候,不需要移動表中的元素。
試題2答案
C
15.C
宏定義不是C語句,末尾不需要有分號。所以語句Printf("%4.1Nn",,
S(a+b));展開后為printf("%4.1f\\n",3.5;*a+b*a+b;);所以程序會出現(xiàn)
語法錯誤。
16.B
17.B
鏈表是一種特殊的線性表,鏈表的存儲結(jié)構(gòu)與順序存儲結(jié)構(gòu)不同,它
的存儲區(qū)域可以是任意的存儲單元,對存儲系統(tǒng)中零碎的存儲部分具
有更好的應(yīng)用,在給其分配存儲單元時,不必事先估計整個存儲單元
的空間大??;由于鏈表的元素是通過指針域的指針相連的,用鏈表存
儲數(shù)據(jù)時,對其進(jìn)行插入和刪除操作時,不需要移動其他元素,只需
改變其直接前驅(qū)指針域,使其指向該結(jié)點,并將該結(jié)點的指針域修改
為指向其直接后繼結(jié)點即可。當(dāng)然,不管是鏈表還是順序存儲,所需
空間與線性表長度都成正比。在鏈?zhǔn)酱鎯Φ逆湵斫Y(jié)構(gòu)中,由于后一結(jié)
點數(shù)據(jù)被存儲在哪里,只有通過前一結(jié)點的指針域才知道,因此,訪
問時只能是逐個訪問,而不能實現(xiàn)隨機訪問。
18.A
19.B解析:本題考查了程序的基本結(jié)構(gòu)。程序由一些基本結(jié)構(gòu)組成。任
何一個大型的程序都由3種基本結(jié)構(gòu)組成,由這些基本結(jié)構(gòu)順序的構(gòu)成
了一個結(jié)構(gòu)化的程序。這3種基本結(jié)構(gòu)為:順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)
構(gòu)。
20.A
21.
【解析】字符串?dāng)?shù)組中每一行都是一個完整的字符串,其結(jié)束標(biāo)志為’
\0'。因此,通過字符串的結(jié)束標(biāo)志來判斷每一個字符串是否結(jié)束,將
字符串?dāng)?shù)組中的所有字符串均賦值給新的一維數(shù)組b來完成字符串的
合并。
22.
【解析】要得到成績高于等于平均分的學(xué)生數(shù)據(jù),首先要得到所有學(xué)生
的平均分,然后把每個學(xué)生的成績與平均分相比較。把符合條件的學(xué)生
數(shù)據(jù)放在數(shù)組b中,學(xué)生個數(shù)通過形參中的指針變量返回,平均分?jǐn)?shù)由
函數(shù)值返回。
23.
【解析】首先定義一個變量來存放表達(dá)式的和,根據(jù)題目中提供的多項
式,通過n次循環(huán)來求出n項的和。最后把所求得的和返回到主函數(shù)當(dāng)
中。
24.1ntfun(char*s)
(
Inti,j=O;
for(i=0;s[i]!=,\\o7i++)if(s[i]!=,,&&(s[i+i]=,,||s[i+l]='\\0'))
/*如果一個字母的下一個字符為空格或者結(jié)束標(biāo)記,則表示一個單詞
結(jié)束*/
J++;
_retumj;/*返回單詞個數(shù)*/
}
要判斷單詞的個數(shù),首先考慮怎樣識別一個單詞。如果一個字母的下
一個字符為空格或者字符串結(jié)束標(biāo)志,則表示一個單詞結(jié)束。因此程
序使用for循環(huán)語句遍歷整個字符串,用if條件語句判斷當(dāng)前字符是
否表示一個單詞的結(jié)束。如果當(dāng)前字符表示一個單詞結(jié)束,則存放單
詞個數(shù)的變量加1,最后返回單詞的個數(shù)。
25.1intfun(intlim,intaa[MAX])
2{
3inti,j,k=0;
4for(i=2;i<=lim;i++)/*求出小于或等于lim的全部素數(shù)*/
5{for(j=2;j<i;j++)
6if(i%j==0)break;
7if(j>=i)
8aa[k++]=i;/*將求出的素數(shù)放入數(shù)組aa中*/
9)
lOreturnk;/*返回所求出的素數(shù)的個數(shù)*/
H)
<i;jp++)<>如果一個數(shù)是合數(shù),那么它的最小質(zhì)因數(shù)肯定小于等于它的
平方根。本程序使用for循環(huán)語句查找小于lim的所有數(shù),使用內(nèi)嵌的
循環(huán)判斷語句判斷該數(shù)是否為素數(shù)。在做這道題時,需要重點掌握素
數(shù)的判定方法:fbr(j=2;j<sqrt(i);j++)if(i%j==0)break;...</i;jp++)o
26.voidfun(inta,intb,long*c){/*b%10獲取b的個位數(shù),a/10獲取a的
十位數(shù),a%10獲取a的個位數(shù),b/10獲取b的十位數(shù)*/
*c=b/l0+(a%10)*10+(b%10)*100+(a/l0)*1000;}本題主要考核如何取
出a和b的個位數(shù)和十位數(shù),取出后如何將其表示成c中相應(yīng)的位數(shù)。
由于a和b都是只有兩位的整數(shù),因此分別對它們除以10可得到它們
的十位數(shù),分別用10對它們求余可得到它們的個位數(shù)。將得到的數(shù)對
應(yīng)乘以1000、100、10、1,即可得到c的千位數(shù)、百位數(shù)、十位數(shù)、個
位數(shù)。注意使用c時要進(jìn)行指針運算。
27.
題目中要求除了尾部的*號之外,將字符串中其他*號全部刪除。首先將
所有不是*的字符放在字符串str中,然后將尾部的*接在字符的后面,
最后為字符串str加上結(jié)束符。
28.
(2)錯誤:if(*r==0)
正確:if(*r=='\0')
【解析】由于后面的語句控制變量r是指向字符串t的指針,而不是指
向字符串str的指針,因此,“r=p;”應(yīng)改為“Lt;while循環(huán)結(jié)束
后,如果r指向字符串t的結(jié)束符,證明字符串str中包含一個t字符
串,因此,“if(*r=O)”應(yīng)改為“if(*r='\0')"°
29.
【解析】要將大于整數(shù)m且緊靠m的k個素數(shù)存入所指的數(shù)組中,首
先應(yīng)該判斷大于整數(shù)m且緊靠m的整數(shù)是否為素數(shù)。將緊靠m且為素
數(shù)的k個整數(shù)放入數(shù)組xx中。
30.
【解析】要返回指定成績的學(xué)生數(shù)據(jù),首先應(yīng)該將所有學(xué)生的成績與指
定成績相比較。如果有學(xué)生的成績與指定成績相等,則將該學(xué)生的記錄
返回給主函數(shù),否則將學(xué)號置成空串,成績置一1返回給主函數(shù)。
31.(l)while(fabs(t)>=num)(2)t=s/n;(l)while(fabs(t)>=num)(2)t=s/n;
解析:本題中函數(shù)的功能是利用公式計算兀的近似值,直到最后一項的
絕對值小于指定的數(shù)。本題解題過程參照一般公式題型的求解過程。
32.(1)錯誤:if(d%2!=0)正確:if(d%2==0)(2)錯誤:t=d*sl+t;正確:
*t=d*sl+*t;⑴錯誤:if(d%2!=0)正確:if(d%2==0)\r\n(2)錯誤:t=d*sl+t;
正確:*t=d*sl+*t;解析:錯誤1:偶數(shù)是能被2整除,而奇數(shù)是不能被
2整除,題目要求找出偶數(shù)。錯誤2:t為指針類型,所以進(jìn)行運算時要
力口'*’號。
33.(l)voidfun(inta[][M]intm)(2)a[j][k]=(k+l)*(j+l);
(l)voidfun(inta[][M],intm)(2)a|j][k]=(k+l)*(j+l);解析:本題中函
數(shù)的功能是根據(jù)形參m的值(2gmS9),在m行m列的二維數(shù)組中存放
有規(guī)律的數(shù)據(jù),規(guī)律就是,i和j代表二維數(shù)組的行和列,則a啪[k]=
(k+l)*(j+l)。
34.(l)if(d%2==0)(2)s/=10;(l)if(d%2==0)(2)s/=10;解析:本
題中函數(shù)的功能是將長整型數(shù)s中每一位上為偶數(shù)的數(shù)依次取出,構(gòu)成
一個新數(shù)放在t中。首先在函數(shù)中對長整型數(shù)的每一位來進(jìn)行截取,然
后對其進(jìn)行判斷,最后根據(jù)判斷結(jié)果進(jìn)行操作。
35.(1)錯誤/defineFU(mn)(m/n)正確;#defineFU(mn)(m)/(n)⑵錯誤:
return(Value);正確:return(value);⑴錯誤;#defineFU(m,n)(m/n)正
確:#defineFU(m,n)(m)/(n)
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣州食品代加工合同范本
- 培訓(xùn)機構(gòu)招生代理合同范本
- 環(huán)境保護(hù)設(shè)備招標(biāo)合同三篇
- 引導(dǎo)學(xué)生培養(yǎng)良好的學(xué)習(xí)習(xí)慣計劃
- 川教版信息技術(shù)八年級下冊第2節(jié) 統(tǒng)計分析數(shù)據(jù)教案
- 保安工作在人身安全中的重要性計劃
- 全面企業(yè)績效管理(CPM)培訓(xùn)方案 相關(guān)兩份資料
- 江蘇省八年級歷史上冊 第7課 辛亥革命教案 岳麓版
- 七年級地理下冊 第七章 第三節(jié)《印度》說課稿 (新版)新人教版
- 九年級化學(xué)上冊 第四單元 我們周圍的空氣 第三節(jié) 氧氣教案 (新版)魯教版
- 醫(yī)療機構(gòu)校驗申請書
- 南網(wǎng)直流分流器國產(chǎn)化研究及應(yīng)用情況V2.0ppt課件
- 天津貴金屬交易所會員合規(guī)管理辦法
- 《汽車文化與發(fā)展》PPT課件.ppt
- 《北京市房屋重置成新價評估技術(shù)標(biāo)準(zhǔn)》(808號文)
- 律師從事IPO業(yè)務(wù)流程指引
- 專家驗收表格
- 附件一湖南省社會科學(xué)成果評審委員會課題申請書-編號
- 淺談?wù)Z文在物理教學(xué)中作用
- 小學(xué)美術(shù)課件-3.美妙多變的線條-嶺南版-(13張PPT)ppt課件
- 管道安裝技術(shù)交底
評論
0/150
提交評論