版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2021年甘肅省金昌市全國計(jì)算機(jī)等級考試
C語言程序設(shè)計(jì)真題(含答案)
學(xué)校:班級:姓名:考號:
一、2.填空題(10題)
1.以下函數(shù)的功能是【】。
floatav(a,n)
floata[];
intn;
{inti;floats;
for(i=0,s=0;i<n;i++)s=s+a[i];
returns/n;}
2.以下程序運(yùn)行后的輸出結(jié)果是【】。
mainQ
{intp=30;
printf("%dkn",(p/3>0?p/10:p%3));
)
3.成本估算模型中,Putnam估算模型是一種【】模型。
4.如下程序片段:
ina,b,c;
printf("inputa,b,c:");
scanf("a=%d,b=%d,c=%d",&a,&b,&c);
欲使輸出結(jié)果為1、2、3(分別對應(yīng)于a、b、c),輸入數(shù)據(jù)的正確形式為
[lo
5.在C語言中,可以利用【】,將一個(gè)表達(dá)式的值轉(zhuǎn)換成指定的類型。
6.隊(duì)列是限定在表的一端進(jìn)行插入和在另一端進(jìn)行刪除操作的線性表。
允許插入的一端稱作0
10
7.以下程序通過函數(shù)SunFun求這里f(x)=x2+l,由F函數(shù)實(shí)現(xiàn)。
請?zhí)羁铡?/p>
main()
{printf("Thesum=%d\n",SunFun(10));}
SunFun(intn)
{intx,s=0;
for(x=0;x<=n;x++)s+=F([]);
returns;
)
F(intx)
{return([]);)
8.數(shù)據(jù)流圖的類型有【】和事務(wù)型。
9.以下程序的輸出結(jié)果是【】。
#include<stdio.h>
voidswap(int*a,int*b)
{int*t;
t=a;a=b;b=t;
)
main()
{inti=3,j=5,*p=&i,*q=&j;
swap(p,q);printf("%d%d\N,*p,*q))
)
10.下面程序把從終端讀入的10個(gè)整數(shù)以二進(jìn)制的方式寫到一個(gè)名為
bi.dat的新文件中。請?zhí)羁铡?/p>
#include<stdio.h>
FILE*fp;
main()
{inti,j;
if((fp=fopen([],"wb"));=NULL)exit(O);
for(i=0;i<10;i++)
{scanf("%d",&j);
fwrite(&j,sizeof(int),1,[]);
)
fclose(fp);
)
二、單選題(10題)
11.對于循環(huán)隊(duì)列,下列敘述中正確的是()o
A.隊(duì)頭指針是固定不變的
B.隊(duì)頭指針一定大于隊(duì)尾指針
C.隊(duì)頭指針一定小于隊(duì)尾指針
D.隊(duì)頭指針可以大于隊(duì)尾指針,也可以小于隊(duì)尾指針
12.下列方法中,屬于白盒法設(shè)計(jì)測試用例的方法的是()o
A.錯(cuò)誤推測B.因果圖C.基本路徑測試D.邊界值分析
13.作為信息處理熱點(diǎn)技術(shù)之一的“多媒體技術(shù)”中的媒體,強(qiáng)調(diào)的是()。
A.存儲媒體B.表現(xiàn)媒體C.傳輸媒體D.感覺媒體
14.若有下列定義,則對a數(shù)組元素地址的正確引用是()。inta[5],*p=a;
A.p+5B.*a+1C.&a+lD.&a[O]
15.在inta=3,int*p=&a;中,*p的值是()
A.變量a的地址值B.無意義C.變量p的地址值D.3
16.以下敘述正確的是
A.continue語句的作用是結(jié)束整個(gè)循環(huán)的執(zhí)行
B.只能在循環(huán)體內(nèi)和swish語句體內(nèi)使用break語句
C.在循環(huán)體內(nèi)使用break語句或continue語句的作用相同
D.從多層循環(huán)嵌套中退出時(shí),只能使用got。語句
17.以下敘述中正確的是()。
A.用C語言編寫的程序只能放在一個(gè)程序文件中
B.C語言程序書寫格式嚴(yán)格,要求一行內(nèi)只能寫一個(gè)語句
C.C語言程序中的注釋只能出現(xiàn)在程序的開始位置和語句的后面
D.C語言程序書寫格式自由,一個(gè)語句可以寫在多行上
18.以下是正確的C語言實(shí)型常量的是()。
A?.8e+8.B.e+8C.+8e.8D.+8.8e+8
19.以下程序的輸出結(jié)果是____。#defineM(x,y,z)x*y+zmain(){int
a=l,b=2,c=3;printf("%d\n",M(a+b,b+c,c+a));}
A.19B.17C.15D.12
20.有如下程序段
#include"stdio.h"
#include"string.h"
#defineN10
#defineM10
char*find(char(*a)[M],intn)
{char*q;inti;
q=a[0];
for(i=0;i<n;i++)
if(strcmp(a[i],q)<0)q=a[i];
returnq;}
main()
{chars[N][M]={"tomeetme","you","and","he","china");
char*p;
intn=5;
p=find(s,n);
puts(p);}
則執(zhí)行后輸出的結(jié)果為
A.A.heB.andC.youD.tomeetme
三、程序設(shè)計(jì)題(10題)
21.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方
案的項(xiàng)目中包含一個(gè)源程序文件progl.Co程序中將m個(gè)人的成績存放
在score數(shù)組中,請編寫函數(shù)fun(),它的功能是將低于平均分的人數(shù)
作為函數(shù)值返回,將低于平均分的分?jǐn)?shù)放在below所指的數(shù)組中。
例如,當(dāng)score數(shù)組中的數(shù)據(jù)為10、20、30、40、50、60、70、80、
90時(shí),函數(shù)返回的人數(shù)應(yīng)該是4,below中的數(shù)據(jù)應(yīng)為10、20、30、
40o注意:部分源程序在文件progl.c中。
請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花
括號中填入你編寫的若干語句。
試題程序:
1#include<conio.h>
2tinclude<stdio.h>
3#include<string.h>
4iinclude<stdlib.h>
5intfun(intscore[],intm,int
%below[])
6{
7
8)
9voidmain()
W(
11FILE?wf;
12inti,n,below[9];
13intscore[9]={10,20,30,40,
50,60,70,80,90};
14system("CLS");
15n?fun(score,9,below);
16printf(M\nBelowtheaverage
scoreare:w);
17for(i=0;i<n;i-?-+)
18printf(M%dbelow[i]);
19/*****************/
20wf=fopen("out?dat","w");
21for(i=0;i<n;i+??-)
nn
22fprintf(wf,%d/below[i]);
23fclose(wf);
24/*****************/
25)
22.請編寫函數(shù)fun,其功能是:找出2XM整型二維數(shù)組中最大元素的
值,并將此值返回調(diào)用函數(shù)。
注意:部分源程序在文件PROG1.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括
號中填入你編寫的若干語句。
^include<<udio.h>
WdrlinrM4
intfun(int]M])
!nain()
intarr;2][M]=15.8.3.45.76.T.12,82:void\0N0();
printf(*max=%d\n*'.fun(arr));
N()NO();
voidN()NO()
”?本函數(shù)用于打開文件,輸入數(shù)據(jù),謝用闕數(shù),輸出數(shù)據(jù),關(guān)團(tuán)文件。?/
FILE?wf;
iniarr[][M]s15.8,3.90.76.-4,12,82]:
wf—fopen("out.dat","w*);
fprintf(wf.Mmax=%d\nw,fun(arr));
fraloM?(wf);
23.
N名學(xué)生的成績已在主函數(shù)中放入一個(gè)帶有頭結(jié)點(diǎn)的鏈表結(jié)構(gòu)中,h指
向鏈表的頭結(jié)點(diǎn)。請編寫函數(shù)fun(),其功能是:找出學(xué)生的最高分,
并由函數(shù)值返回。注意:部分源程序給出如下。請勿改動main()函
數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入所編寫
的若干語句。試題程序:
“Q》F,、2
?(?>】?9」>iq
,M?MUS
item*/
?%)-[N]?*|qnop
()E2押a
U.u\u\”iBMd
?《'nnN-K3V-dPI?W
?4%第?,/
<
■H"V-d.d
t("〈一”?KTZ%<-e>J?i>u<l
l°P
??.mj3d
Y?13M1S
I
CM-13Mls八"。P?*
(
BWMWVBH*//叫。za
1TlTIN-nV-d
(
ib?4
??-nc?<<h.+I?u>.?v-d
1JJ3>LLSH<^P<m2(?J3KLS~b
I
小?UY力?/號’9%,〃
(NAHU
,0.?<-.<1
?“MAS>F?*?,》?"■<?.13>11517
fMl
他…?7?J3M1S
I
<??"f"2?MUS
<Q?J3IU”叫邛F呻
gMlSB=UM?PP*1X|
?(
l|*4V?l?vpiBJVUBV
…Nf
>
l?i|?
?NiFP,
<MTIP??>Kw9
<H?pH>gMq
24.
編寫函數(shù)proc(),它的功能是:根據(jù)公式求p的值,結(jié)果由函數(shù)值帶
回。m與n為兩個(gè)正數(shù)且要求m>;n。p=m!/(n!(m-n)!),例如,
m=20,n=10時(shí),運(yùn)行結(jié)果為184756.000000。注意:部分源程序給出
如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc
()的花括號中填入所編寫的若干語句。試題程序:
sVcoeiouh>
£include4bo.h>
9mcideOtdbb.
fk>eiprocCmim.ima
voidmaiti<)
*ClwS")i
pnntf<*p*Kf\n*?proc<2l0?10))i
25.編寫函數(shù)fun,其功能是:求ss所指字符串中指定字符的個(gè)數(shù),并返
回此值。例如,若輸入字符串123412132,輸入字符為1,則輸出3。
注意:部分源程序在文件PRO。.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括
號中填人你編寫的若干語句。
tinclude<就dio.h>
命include<string,h>
IMefincM81
intfun(char?ss,charc)
main()
Ichara[M]fch;
voidNONO();
printf("\nPleaseenteraairing:");ge<s(a);
printf(*\nPle?3eenterachar:”);chwgelchar();
printf(*\nThenumberofthecharin:%d\nw,fun(a,ch));
NONO()5
voidNONO()
)/?本函數(shù)用于打開文件,幢人酒試數(shù)據(jù),利用fun函數(shù),輸出數(shù)據(jù).關(guān)閉文件。?/
imi;
RLE?rf,?wf;
chara[M],b[M],ch;
rf=fbpen(Hin.dat\Hr*);
wfwfopen("out.dat",*w");
fbr(ic05i<lO;i++)
I
fiM^uif(rf,"%.a);
fscafif(rf,"%8W,b);
chs?b;
fprintf(wf.w%c■%d\n*.ch.fun(a,ch));
I
rf);
fcloee(wf):
26.某學(xué)生的記錄由學(xué)號、8門課程成績和平均分組成,學(xué)號和8門課程
的成績已在主函數(shù)中給出,請編寫函數(shù)fun,其功能是:求出該學(xué)生的
平均分,并放人記錄的ave成員中。
例如,學(xué)生的成績是:85.5,76,69.5,85,91,72,64.5,87.5,
則他的平均分應(yīng)為78.875。注意:部分源程序在文件PR0G1.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun部位中
填入你編寫的若干語句。
tfincludr<stdio.h>
?defineN8
typedrfMmrt
Icharnum;10];
double?[N]s
doubleavr;
ISTREX;
voidfun(STREC?a)
niain()
STRECs=|-GA005”.85.5,76,69.5,85.91.72.64.5.87.51;
inti;
voidNONO():
fun(&s);
l)rinif(**TheMuckmidhte:\n*,■?num);
for(i=0;i<N;i??)
printf(H%4.
printf("\nasu=%7.3An*.w.avtt);
NONO()t
voidNONO()
!/?本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函畋.輸出數(shù)據(jù).關(guān)閉文件。?/
FILE?outj
inti.j;STREC?[10]?|
IwGA005",85.5.76.69.5.85.91.72.64.5.87,51.
I-CA001-,82.5.66.76.5,76.89.76.46.5.78.51.
I*GA002-.72.5.56.66.5.66.79,68,46.5.58.5:,
|-GA003",92.5.76.86.5.86.99,86.56,5.88.5I,
I"GA004-.82.66.5.46.5.56.76.75.76.5.63.5i.
nM
|GA006,75.5.74.71.5.85.81.79,64.5t7l.51.
|?GA007-,92.5.61.72.5.84.79,75,66,5.72.51.
I?GA008*.72.5,86.73.5.80,69,63,76,5.51.5!.
!"GA009”,6657l.74.5.70.6l.82.86,5.58,5二
,GAOIO",76.66.5.75.5,60.76.71.96.5.93.51.
I;
oul-fopcn(*out.<urww);
(br(is0;i<10;i+4-)1
run(4?|i]):
fprintf(out."%7,3f\n*.?[i].ave);
fdow((Mil)?
27.
請編寫函數(shù)proc(),其功能是:將str所指字符串中除了下標(biāo)為奇數(shù)、
同時(shí)ASCH值為偶數(shù)的字符外,其余的全部刪除,串中剩余字符所形成
的一個(gè)新串放在t所指的數(shù)組中。例如,若str所指字符串中的內(nèi)容為
edB2A4Dsdg,其中字符A的ASCII碼值為奇數(shù),因此應(yīng)當(dāng)刪除;其中
字符B的ASCH碼值為偶數(shù),但在數(shù)組中的下標(biāo)為偶數(shù),因此也應(yīng)當(dāng)
刪除;而字符2的ASCII碼值為偶數(shù),所在數(shù)組中的下標(biāo)為奇數(shù),因此
不應(yīng)當(dāng)刪除。依此類推,最后t所指的數(shù)組中的內(nèi)容應(yīng)是d24。注意:
部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)
容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
Utnclvde
二includeVcomo.h>
■include<ttdicub>
9mdude<Hnng.
voidpror<char?Mr.rh?r
voidMm(>
(
charstr[100]?t[100jg
pnntflentervirtng
proeC0r?Oi
pt*\nThctsi
28.
編寫函數(shù)fun,其功能是:從字符串中刪除指定的字符,同字母的大、小寫按不同字符處理,
例如,若程序執(zhí)行時(shí)輸入字符串為:
Uiurborandbniiand"+’
從鍵盤上輸入字符n,則輸出為:
uturbocadIx/rladC++”
如果幡入的字符在字符串中不存在,則字符串照原樣輸毋,
注意:部分源程序給出如下,
請勿改動主晶數(shù)mam和其也函數(shù)中的任何內(nèi)容,僅在函數(shù)0n的花括號中填入你編寫的若干精句
試題程序:
#indude<sldioJi>
voidfun(chars[]Jntc)
f
}.
main()
|staticcharstrf卜"turhocandborhrulo++”;
charrh:
charch:
print。"原始字符串:%s\nv.str);
prinrf(u輸入一個(gè)字符An”);
seanff"%c":&ch);
printf(hstr{]=%s\n"str):
fitrepy(str/turbocandBorland(:++”);
fun(str/a'):
29.編程計(jì)算下列表達(dá)式:s=n!(n從鍵盤上輸入)
30.
M名學(xué)生的成績已在主函數(shù)中放入一個(gè)帶頭結(jié)點(diǎn)的鏈表結(jié)構(gòu)中,h指向
鏈表的帶頭結(jié)點(diǎn)。請編寫函數(shù)proc(),它的功能是:找出學(xué)生的最高
分,由函數(shù)值返回。注意:部分源程序給出如下。請勿改動main()
函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編
寫的若干語句。試題程序:
UtfKludt<Mdio.h>
保tnclude<sidbl>.h>
9defineM8
mmctHIMI
Idoubleg|
nrwiUMI?nc&ii
h
lypedrf?trucldhtSTRDI,i
&,HCB?STREC>h)
STREH"?cmi(dottbk?B)
(
STREC?b??p??q?
inti-Oi
h=p*(STREl*?)maUoc<smof(STREC>)i
Oi
wkile(i<M)
〃產(chǎn)中8個(gè)靖女班的宣.善分依存入f#女中
I
Q—STREX、)mallociMMOKSTREC))i
p->?-<1]?]??tp->nrifqiP-RI
I
p->?rxi-NULI.i
rriumha
)
voidouth?t<STRDl*?h>
(
STKEV?p,
pRbi
>i
do
IpnitfK*—>HZ.0<*<p->t)ipwp-
/?出各分?jǐn)?shù)
whfle<p—>?cxt??NULDi
pcinifC*\n\n*)i
>
void)
(
doublezu[M-]S6?89?76?95,91?“.7S?
S5)?maxi
STREC?hi
h-rre?i<Mw)i
o?thnl(h)a
m*K^pror(h)i
pnntf(eiBA?MKi.I(\n..a'h
四、2.程序修改題(10題)
31.下列給定程序中,函數(shù)fun()的作用是,將字符串tt中的大寫字母都
改為對應(yīng)的小寫字母,其他字符不變。例如,若輸入"Ab,cD",則輸出
"ab,cd"o
請改正函數(shù)fun()中的錯(cuò)誤,使它能得出正確的結(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));
)
32.下列給定程序中,函數(shù)fun()的功能是:實(shí)現(xiàn)兩個(gè)整數(shù)的交換。例如
給a和b分別輸入60和65,輸出為:a=65b=60
請改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序;
#include<stdio.h>
#include<conio.h>
/*************found**************/
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);
)
33.給定程序MODH.C中函數(shù)fun的功能是:根據(jù)整型形參m的值,
計(jì)算如下公式的值。
例如,若m中的值為:5,則應(yīng)輸出:0.536389o
請改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
1?include<stdio.h>
2doublefun(intm)
3(doubley?1.0;
4inti;
5/■????????????found*,,,*,*,*,***/
6for(i-2;i<m;i++)
7/……??…??found……?……/
8y-?1/(i?i);
9return(y);
10)
11main()
12{intn?5;
wn
13printf(\nTheresultis%lf\nr
fun(n));
14
34.下列給定程序中函數(shù)fun()的功能是:求出字符串中最后一次出現(xiàn)的
子字符串的地址,通過函數(shù)值返回,在主函數(shù)中輸出從此地址開始的字
符串;若未找到,則函數(shù)值為NULL。例如,當(dāng)字符串中的內(nèi)容為
abcdabfabcdx,t中的內(nèi)容為ab時(shí),輸出結(jié)果應(yīng)是abcdx。當(dāng)字符串中的
內(nèi)容為abcdabfabcdx,t中的內(nèi)容為abd時(shí),則程序輸出未找到的信息:
Notfound!
請改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意;不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<conio.h>
#include<string.h>
char*fun(char*s,char*t)
char*p,*r,*a;
/*************found**************/
a=Null;
while(*s)
{p=s;r=t;
while(*r)
/*************found**************/
if(r==p){r++;p++;}
elsebreak;
if(*r=='\0')a=s;
s++;
)
returna;
)
main()
{chars[100],t[100],,*p;
clrscr();
printf("\nPleaseenterstringS:");
scanf("%s",s);
printf("\nPleaseentersubstringt:");
scanf("%s",t);
p=fun(S,t);
if(p)printf("\nTheresultis:%s\n",p);
elseprintf("\nNotfound!\n");
)
35.給定程序M0D11.C中函數(shù)fun的功能是:讀入一個(gè)字符串(長度<
20),將該字符串中的所有字符按ASCII碼升序排序后輸出。
例如,若輸入:edcba,則應(yīng)輸出:abcde0
請改正程序中的錯(cuò)誤,使它能統(tǒng)計(jì)出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
1?include<stdio.h>
2*include<string.h>
3voidfun(chart[])
4(
5charc;
6inti,j;
7******/
8for(i■strlen(t);i;i--)
9for(j?0;j<i;j++)
10/*********wfound***********/
11if(t[j]<t[j.1])
12(
13c-t[j];
14t(j)-t[j?11;
15t[j*11-c;
16)
17}
18main()
19
20chars[81];
21printf(w\nPleaseenteracharacter
string:R);
22gets(s);
23printf("\n\nBeforesorting:\n
\w%s\ww,s);
24fun(s);
25printf(w\nAftersortingdecendingly:
\n\W,s);
26
36.下列給定程序中,函數(shù)fun()的功能是:從n個(gè)學(xué)生的成績中統(tǒng)計(jì)出
高于平均分的學(xué)生人數(shù),人數(shù)由函數(shù)值返回,平均分存放在形參aver所
指的存儲單元中。例如輸入8名學(xué)生的成績:
8565.56995.5875562.575
則高于平均分的學(xué)生人數(shù)為4(平均分為74.312500)o
請改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<conio.h>
#defineN20
intfun(float*S,intn,float*aver)
/*************found*************/
intave,t=0;
intcount=0,k,i;
for(k=0;k<n;k++)
t+=s[k];
ave=t/n;
for(i=0;i<n;i++)
/*********不*不*found***不*不*不*不*不***/
if(s[i]<ave)
count++;
/*************found*************/
aver=ave;
returncount;
)
main()
(
floatS[30],aver;
intm,i;
clrscr();
printf("\nPleaseenterm:");
scanf("%d",&m);
printf("\nPleaseenter%dmark:\n",m);
for(i=0;i<m;i++)
scanf("%f",s+i);
printf("\nThenumberofstudents:%d\n",
fun(S,m,&aver));
print/'AVb=%f\n”,aver);
)
37.下列給定程序中,函數(shù)fun()的功能是:從n個(gè)學(xué)生的成績中統(tǒng)計(jì)出
低于平均分的學(xué)生人數(shù),此人數(shù)由函數(shù)值返回,平均分存放在形參aver
所指的存儲單元中。例如輸入8名學(xué)生的成績:
80.5607290.59851.58864
則低于平均分的學(xué)生人數(shù)為4(平均分為75.5625)。
請改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<conio.h>
#defineN20
intfun(float*s,ihtn,float*aver)
{floatave,t=0.0;
intcount=0,k,i;
for(k=0;k<n;k++)
/*************found**************/
t=s[k];
ave=t/n;
for(i=0;i<n;i++)
if(s[i]<ave)count++;
/*************found**************/
*aver=&ave;
returncount;
)
main()
{floats[30],aver;
intm,i;
clrscr();
printf("\nPleaseenterm:");scanf
("%d",&m);
printf("\nPleaseenter%dmark:\n",m);
for(i=0;iprintf("\nThenumberofstudents:
%d\n",fun(s,m,&aver));
printf("Ave=%f\n",aver);
)
38.給定程序中函數(shù)fun的功能是:將一個(gè)由八進(jìn)制數(shù)字字符組成的字
符串轉(zhuǎn)換為與其值相等的十進(jìn)制整數(shù)。規(guī)定輸入的字符串最多只能包含
5位八進(jìn)制數(shù)字字符。
例如,若輸入:77777,則輸出將是:32767。
請改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。
[注意]不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
[試題源程序]
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
intfun(char*p)
intn;
/**********found**********/
n=*p」o';
P++;
while(*p!=0){
/**********^Qund**********/
n=n*8+*p-'o';
p++;
)
returnn;
)
main()
chars[6];inti;intn;
printf("Enterastring(Ocataldigits):");
gets(s);
if(strlen(s)>5)
printf("Error:Stringtoolonger!\n\n");
exit(O);
)
for(i=0;s[i];i++)
if(s[i]<'O'||s[i]>'7')
{
printf("Error:%cnotisocataldigits!\n\n",s[i]);
exit(O);
)
printf("Theoriginalstring:");
puts(s);
n=fun(s);
printf("\n%siSconveredtointegernumber:%d\n\n",s,n);
39.給定程序M0D11.C中函數(shù)fun的功能是:判斷一個(gè)整數(shù)是否是素
數(shù),若是返回1,否則返回0。
在mai()函數(shù)中,若fun返回1輸出YES,若fun返回。輸出NO!。
請改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù)。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
1*include<stdio.h>
2intfun(intm)
3{intk-2;
4while(k<?m&&(m%k))
5/…………"und…………/
6
7/…………found
8if(m-k)
9return1;
10elsereturn0;
11}
12main()
13{intn;
14printf(w\nPleaseentern:"
ww
scanf(%dr&n);
15if(fun(n))printf(MYES\nw);
16elseprintf(nNO!\nR);
17
40.給定程序MODU.C中函數(shù)fun的功能是:計(jì)算小于形參k的最大
的10個(gè)能被13或17整除的自然數(shù)之和。k的值由主函數(shù)傳入,若k的
值為500,則函數(shù)值為4622°
請改正程序中的錯(cuò)誤,使程序能輸出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
1tinclude<stdio.h>
2intfun(intk)
3{intm-Ormc-0;
4while((k>-2)&&(me<10))
6/…?一??…?found
7if((k%13-0)||(k%17-0))
8{m■k;mc+>;>
9k一;
10>
11returnm;
12/…………found…………/
13
14main()
15(
16printf("%d\nw,fun(500));
17
五、程序改錯(cuò)題(2題)
41.下列給定程序中,函數(shù)ptoc的功能是:利用插入排序法對字符串
中的字符按從小到大的順序進(jìn)行排序。插入法的基本方法是:先對字
符串中的頭兩個(gè)元素進(jìn)行排序,然后把第3個(gè)字符插入前兩個(gè)字符
中,插入后前3個(gè)字符依然有序;再把第4個(gè)字符插入前三個(gè)字符
中,待排序的字符串已
在主函數(shù)中賦予。
請修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)
構(gòu)。
試題程序:
#include<strin9.h>
#include<stdiO.h>
#defineM80
voidproc(char*arr)
{inti,j,n;charch;
n=strlen(arr):
for(i=1;i<n;i++)
〃****^Qurid****
{c=arr[i];
j=i-l;
while((j〉=o)&&(ch<arr[jl))
(
arr[j+l]=arr[j];
j-;
)
arr[j+l]=ch;
)
)
voidmain
(
chara[M]="QWERTYUIOPASDFGHJKLMNBVCXZ";
printf("Theoriginalstring:%s\n",a);
proc(a);
printf("Thestringaftersortin9:
%s\n\n",a);
42.下列給定程序中,函數(shù)proc()的功能是:將m(lgmWlO)個(gè)字符串反
著連接起來,組成一個(gè)新串,放入pt所指字符串中,例如,把“ab、
cd、ef?"3個(gè)字符串反著串連起來,結(jié)果是efgcdab。
請修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動main。函數(shù),不得增行或者刪行,也不得改變程序的
結(jié)構(gòu)!
試題程序:
=induceVcondh>
9include<?tnnc
SificiudeVnfdto.h>
votdproc<charMr{tn?clwir?pii
ini
//????IOUMI????
lorC■皿->
q=strlesCstifk])i
j+-q5
,OT<l=0.yQii一?)
frt+—qi
pt[O]*O|
//????fcnand????
void>
mtm?bi
charNr[lO)[1Oj.pl120]i
)i
*\nHe*K<tiicrma")<
9canl(*K<t*
plinth*\nPle*jbcenterSdMnnc(\t>s?m)i
1or(h-0Blt<inab++)
cets<?lt{bj)i
proc<Mr?tn?p)i
ew
pirintfC\nThrremitu2%?\B.p)s
六、操作題(2題)
43.若有以下程序:
main()
{int,p,a=5;
if(P=a!=0)
printf("%d\n",p);
else
printf("%d\n",p+2);
)
執(zhí)行后輸出結(jié)果是【】。
44.有以下程序:
intfa(intx){returnx*x;}
intfb(intx){returnx*x*x;}
intf(int(*fl)(),int(*f2)(),(intx)
{returnf2(x)-fl(x);}
main()
{inti;i=f(fa,fb,2);printf("%d\n",i);}
程序運(yùn)行后,輸出結(jié)果是【】。
參考答案
1.求出數(shù)組元素平均值求出數(shù)組元素平均值解析:函數(shù)有一個(gè)數(shù)組形參
a和一個(gè)整型形參n。函數(shù)首先用循環(huán)求數(shù)組a的前n個(gè)元素和,然后
將和除以n°即求數(shù)組元素的平均值。
2.3
3
本試題中,先判斷表達(dá)式p/3>0,該值為真,所以此表達(dá)式等于p/
10的值3,故最后輸出的值為3。
3.動態(tài)多變量動態(tài)多變量
4.a=lb=2c=3a=l,b=2,c=3解析:此題考查了scanf函數(shù)的輸入格式。
scanf函數(shù)的輸入格式規(guī)定如果兩個(gè)格式說明項(xiàng)間有一個(gè)或多個(gè)普通字
符,那么在輸入數(shù)據(jù)時(shí),在兩個(gè)數(shù)據(jù)之間也必須以這一個(gè)或多個(gè)字符作
為分隔符。
5.強(qiáng)制類型轉(zhuǎn)換強(qiáng)制類型轉(zhuǎn)換
6.隊(duì)尾隊(duì)尾解析:在隊(duì)列中,允許插入的一端叫做“隊(duì)尾”,允許刪除的
一端叫做“隊(duì)頭”。
7.xx*x+l或l+x*xx\r\nx*x+l或l+x*x解析:題目中要求從x=0開始
將f(x)的值累加起來,直到x=10。在SunFun()函數(shù)中用了一個(gè)for循環(huán),
每循環(huán)一次將f(x)累加到s中,所以在本題的第一個(gè)空格處我們應(yīng)該填
X,然后x+1,共循環(huán)10次。F()函數(shù)的功能應(yīng)該是求數(shù)學(xué)表達(dá)式f(x)的
值,所以其返回值應(yīng)該為x*x+l。
8.變換型典型的數(shù)據(jù)流類型有兩種:變換型和事務(wù)型。變換型是指信息
沿輸入通路進(jìn)入系統(tǒng),同時(shí)由外部形式變換成內(nèi)部形式,進(jìn)入系統(tǒng)的信
息通過變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式離開軟
件系統(tǒng);在很多軟件應(yīng)用中,存在某種作業(yè)數(shù)據(jù)流,它可以引發(fā)一個(gè)或
多個(gè)處理,這些處理能夠完成該作業(yè)要求的功能,這種數(shù)據(jù)流就叫做事
務(wù)。
9.3535解析:函數(shù)swap(int*a,int*b)的功能是實(shí)現(xiàn)*a和*b中兩個(gè)數(shù)據(jù)
的交換,在主函數(shù)中調(diào)用swap(p,q)后,形參指針變量a和b分別指向i和
j,在swap(int*a,int*b)執(zhí)行完后,指針變量a和b分別指向j和i,而指針變
量P,q所指向變量的值沒有發(fā)生變化,所以輸出結(jié)果為35o
10."bi.dat"fp
H.D循環(huán)隊(duì)列的隊(duì)頭指針與隊(duì)尾指針都不是固定的,隨著入隊(duì)與出隊(duì)操
作要進(jìn)行變化。因?yàn)槭茄h(huán)利用的隊(duì)列結(jié)構(gòu),所以隊(duì)頭指針有時(shí)可能大
于隊(duì)尾指針,有時(shí)也可能小于隊(duì)尾指針。
12.C
C)【解析】白盒測試方法也稱為結(jié)構(gòu)測試或邏輯測試,主要方法有邏
輯覆蓋測試、基本路徑測試等。
13.D媒體分為感覺媒體、表示媒體、存儲媒體、傳輸媒體和表現(xiàn)媒體五
種,“多媒體技術(shù)”中的媒體強(qiáng)調(diào)的是感覺媒體。
14.D本題考查數(shù)組元素的地址的引用。A中,p+5引用的是a⑶的地址,
而數(shù)組a只有5個(gè)元素,即a[0]、a[l]xa[2]、a[3]、a[4],所以引用錯(cuò)
誤C主:數(shù)組元素下標(biāo)從0開始);B中,*a+l指的是將數(shù)組a的第一個(gè)
元素加1;選項(xiàng)C中,不存在這種引用方式;D中,&a[0]引用的是數(shù)
組的首地址。
15.D
16.B
17.D用C語言編寫的程序可以放置于多個(gè)程序文件中,所以A選項(xiàng)錯(cuò)
誤。C語言程序中的一行可以有多條語句,所以B選項(xiàng)錯(cuò)誤。C語言
中的注釋語句可以與原語句放在一行,也可以不放在一行,所以C選
項(xiàng)錯(cuò)誤。故本題答案為D選項(xiàng)。
18.DC語言中,實(shí)型常量有兩種表示形式:小數(shù)形式和指數(shù)形式。其
中指數(shù)形式的一般形式為:尾數(shù)E(或e)整型指數(shù)。C語言規(guī)定,字
母E或e之前必須要有數(shù)字,且E或e后面的指數(shù)必須是整數(shù),所以
選項(xiàng)A、B、C錯(cuò)誤,選項(xiàng)D正確。故本題答案為D選項(xiàng)。
19.D解析:C語言的宏定義包括不帶參數(shù)的宏定義與帶參數(shù)的宏定
義。本題為帶參數(shù)的宏定義,其形式為:
#define宏名(形參表)字符串
本題的M(a+b,b+c,c+a)被字符串a(chǎn)+b*b+c+c+a代替。
20.B
在本題中,首先定義了兩個(gè)宏N和M,大小都為10,然后定義了一個(gè)
返回指針的函數(shù)find,該函數(shù)帶有兩個(gè)形參,第一個(gè)為字符型的指針
數(shù)組,第二個(gè)為整型變量,在函數(shù)體中,首先定義了一個(gè)指針變量q,
并將形參中指針數(shù)組的第一個(gè)元素賦值給q,然后執(zhí)行for循環(huán),在循
環(huán)體中,首先執(zhí)行條件判斷語句,其條件為strcmp(a[i],q)<0
(strcmp函數(shù)的作用是比較兩字符串的大小,如果相等,則返回0
值,如果參數(shù)中的第一個(gè)字符串大,則返回正值,否則返回負(fù)值),
如果結(jié)果為真,說明指針數(shù)組當(dāng)前元素所指向的字符串比q所指向的
字符串小,此時(shí),程序執(zhí)行將當(dāng)前指針數(shù)組元素賦值給p,最后返回
P,通過上面的分析我們可以看出,find函數(shù)的作用是找出指針數(shù)組中
各元素所指向字符串的最小字符串。
在主函數(shù)中,定義了一個(gè)二維數(shù)組s,并賦了初值,然后定義一個(gè)指針
變量P,用來存放函數(shù)find的返回值。調(diào)用函數(shù)find的參數(shù)分別為s
和5,結(jié)合形參看find函數(shù),不難知道調(diào)用find函數(shù)就是找出二維數(shù)
組s中各字符串中最小的字符串,那么應(yīng)該為and。此時(shí),指針變量p
指向字符串“and”的首地址,然后執(zhí)行puts(p),完成該字符串的輸出。
因此,本題正確的答案是B。
21.1intfun(intscore[],intm,intbe-low[])
2{
3inti,j=O;
4floatav=0.0;
5for(i=0;i
<m;i++)
6av=av+score[i]/m;/*求平均值*/</m;i++)
<m;i++)
7for(i=0;i<m;i++)
gif(score[i]</m;i++)
</m;i++)
<m;i++)
<m;i++)
<av)p*如果分?jǐn)?shù)<〉8低于平均分,則將此分?jǐn)?shù)放入below數(shù)::組中
*/</av)p*如果分?jǐn)?shù)<〉</m;i++)
</m;i++)
<m;i++)
<m;i++)
<av)p*如果分?jǐn)?shù)<〉9below[j++]=score[i];</av)p*如果分?jǐn)?shù)<〉</m;i++)
</m;i++)
<m;i++)
<m;i++)
<av)p*如果分?jǐn)?shù)<〉10returnj;/*</av)p*如果分?jǐn)?shù)<〉</m;i++)
</m;i++)
<m;i++)
<m;i++)
<av)p*如果分?jǐn)?shù)<>返回低于平均分的人數(shù)*/U}要計(jì)算低于平均分的人
數(shù),首先應(yīng)該求出數(shù)組score中各元素的平均值。然后通過for循環(huán)語
句和if條件語句找出低于平均值的分?jǐn)?shù)。該題第1個(gè)循環(huán)的作用是求
出平均值av,第2個(gè)循環(huán)的作用是找出數(shù)組score中低于平均值的成
績記錄并存入below數(shù)組中。</av)p*如果分?jǐn)?shù)<></m;i++)
</m;i++)
22.
【考點(diǎn)分析】
本題考查:求數(shù)組的最大值,需要運(yùn)用循環(huán)語句,因?yàn)閿?shù)組是二維數(shù)
組,所以應(yīng)使用二層for循環(huán)嵌套。使用for循環(huán)語句時(shí)需要注意循環(huán)
變量的取值范圍。
【解題思路】
此類求最大值或最小值的問題,我們可以采用逐個(gè)比較的方式,要求
對數(shù)組中所有元素遍歷一遍,并且從中找出數(shù)組最大值或最小值。首
先定義變量max存放數(shù)組中的第一個(gè)元素的值,然后利用for循環(huán)逐
個(gè)找出數(shù)組中的元素,并與max比較,如果元素值大于max,則將該
值賦予max,循環(huán)結(jié)束后max的值即為數(shù)組最大值,最后將該值返
回。
【解題寶典】
該類題目考查較多,要掌握逐行比較的方法。對于m*n二維數(shù)組,如
采用逐行查找方法,代碼實(shí)現(xiàn)為:
23.
【解析】本題考查的是結(jié)構(gòu)體類型、指針型變量、鏈表和if語句等知識
點(diǎn)。需要用for循環(huán)遍歷鏈表中的每一個(gè)結(jié)點(diǎn),用判斷語句比較結(jié)點(diǎn)數(shù)
據(jù)域的大小??梢酝ㄟ^while循環(huán)實(shí)現(xiàn)對最大成績的查找,具體步驟為
遍歷鏈表遇到比max大的值(max<h-對則賦值給max,max=h->so需要
注意的是,h是指向結(jié)構(gòu)體類型的指針變量,引用它指向的結(jié)構(gòu)體的成
員時(shí),要用指向運(yùn)算符“一
24.
【解析】由題目中所給公式,首先求出整數(shù)m的階乘,然后求出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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年大學(xué)免疫學(xué)(免疫學(xué)應(yīng)用)試題及答案
- 2025年大學(xué)本科(醫(yī)學(xué)檢驗(yàn)技術(shù))臨床檢驗(yàn)基礎(chǔ)試題及答案
- 2025年大學(xué)本科三年級(針灸推拿學(xué))推拿治療學(xué)測試題及答案
- 2025年大學(xué)服裝設(shè)計(jì)(服裝史論)試題及答案
- 禁毒技術(shù)的推廣與應(yīng)用
- 2025年第三季度中國大陸勞動法指南報(bào)告
- 核化工與核燃料就業(yè)前景
- 慢性氣道疾病康復(fù)基層指南2026
- 2025大學(xué)專業(yè)就業(yè)指南
- 2026年福建莆田礪志高級中學(xué)多學(xué)科教師招聘若干人備考題庫及答案詳解一套
- 工程車輛銷售合同范本
- 新人抖音直播獎(jiǎng)勵(lì)制度規(guī)范
- 2026年消防安全評估協(xié)議
- 【小學(xué)】【期末】家長會:孩子在學(xué)校的底氣【課件】
- 鋼結(jié)構(gòu)防腐涂裝工藝方案
- 云上(貴州)數(shù)據(jù)開發(fā)有限公司招聘筆試題庫2026
- 書法美育課件
- 睡眠監(jiān)測基礎(chǔ)知識
- 2025寧德時(shí)代新能源科技股份有限公司招聘備考題庫及答案詳解(新)
- 2025-2026學(xué)年統(tǒng)編版三年級語文上冊全冊及各單元知識點(diǎn)歸納
- GB/T 31897.1-2025燈具性能第1部分:一般要求
評論
0/150
提交評論