![2022年甘肅省金昌市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第1頁](http://file4.renrendoc.com/view/d3bdfcebd0fe2b1cd9b16f66b358858e/d3bdfcebd0fe2b1cd9b16f66b358858e1.gif)
![2022年甘肅省金昌市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第2頁](http://file4.renrendoc.com/view/d3bdfcebd0fe2b1cd9b16f66b358858e/d3bdfcebd0fe2b1cd9b16f66b358858e2.gif)
![2022年甘肅省金昌市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第3頁](http://file4.renrendoc.com/view/d3bdfcebd0fe2b1cd9b16f66b358858e/d3bdfcebd0fe2b1cd9b16f66b358858e3.gif)
![2022年甘肅省金昌市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第4頁](http://file4.renrendoc.com/view/d3bdfcebd0fe2b1cd9b16f66b358858e/d3bdfcebd0fe2b1cd9b16f66b358858e4.gif)
![2022年甘肅省金昌市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第5頁](http://file4.renrendoc.com/view/d3bdfcebd0fe2b1cd9b16f66b358858e/d3bdfcebd0fe2b1cd9b16f66b358858e5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2022年甘肅省金昌市全國計算機(jī)等級考試
C語言程序設(shè)計模擬考試(含答案)
學(xué)校:班級:姓名:考號:
一、2.填空題(10題)
1.自動批處理文件名必須是【】。
2.設(shè)有下列程序:
#include<stdio.h>
#include<string.h>
main()
{inti;
chars[10],t[10];
gets(t);
for(i=0;i<2;i++)
{gets(s);
if(strcmp(t,s)<0)strcpy(t,s);
)
printf("%s\n",t);
)
程序運(yùn)行后,從鍵盤上輸入(<CR>代表回車符):CDEF<CR>BADEF
<CR>QTHRG<CR>,貝U程序的輸出結(jié)果是。
3.若有如下程序:
voidsub()
{staticintx=6;
x/=2;printf("%d",x);}
main()
{intm;
for(m=0;m<=2;m++)sub();}
則程序運(yùn)行后的輸出結(jié)果是【】。
4.若有以下定義,則不移動指針p,且通過指針p弓I用值為98的數(shù)組
元素的表達(dá)式是O
intW[10]={23,54,10,33,47,98,72,80,61),*p=w;
5.以下程序通過函數(shù)指針p調(diào)用函數(shù)fun,請在填空欄內(nèi)寫出定義變量
P的語句。
voidfun(int*x,int*y)
{……}
main()
{inta=10,b=20;
【】:
p=fun;p(&a,&b);
6.關(guān)系操作的特點是____操作。
7.以下程序運(yùn)行后的輸出結(jié)果是【】。
structNODE
{intk;
structNODE*link;
);
main()
{structNODEm[5],*p=m,*q=m+4;
inti=0;
while(p!=q){
p->k=++i;p++;
q->k=i++;q--;
)
q->k=i;
for(i=0;i<5;i++)printf("%d",m[i].k);
printf("\n");
)
8.為了便于對照檢查,測試用例應(yīng)由輸入數(shù)據(jù)和預(yù)期的【】兩部分組
成。
9.以下程序運(yùn)行后輸入3,abcde〈回車〉,則輸出結(jié)果是【】。
#include<string.h>
move(char*str,intn)
{chartemp;inti;
temp=str[n-l];
for(i=n-l;i>0;i-)str[i]=str[i-l];
str[0]=temp;
main()
{chars[50];intn,i,z;
scanf("%d,%s",&n,s);
z=strlen(S);
for(i=l;i<=n;i++)move(s,z);
printf("%s\n",s);
)
10.下面程序的功能是:計算1~20之間的奇數(shù)之和與偶數(shù)之和,請?zhí)?/p>
空使程序功能完整。
#include<stdio.h>
main()
{inta=0,b=0,c=0,i;
for(i=0;i<=20;i+=2)
{a+=i;
();
c+=b;
)
printf("偶數(shù)之和=%d\n",A);
printf("奇數(shù)之和=%d\n",c-21);
)
二、單選題(10題)
11.對于線性表(7,34,55,25,64,46,20,1于進(jìn)行散列存儲時,若選
用H(K)=K%9作為散列函數(shù),則散列地址為1的元素有()個。
A.lB.2C.3D.4
12.以下選項中非法的表達(dá)式是()。
A.0<=x<100B.i=j==0C.(char)(65+3)D.x+l=x+l
13.有下列程序:
#include<stdio.h>
intf(intx)
I
if(x<2)
return1;
returnx?f(x-1)+(x-1)*f(x-2);
I
main()
I
inty;
y=f(4);
printf("%d\n",y);
I
程序執(zhí)行后的輸出結(jié)果是0。
A.llB.43C.57D.53
14.有以下程序:
#include<stdio.h>
#include<string.h>
main()
{charstr[][10]={“One”,“Three",“Five"},*p=str[0];
printf("%s,”,p+10);
printfV'%d\n”,strlen(p+=10));
)
程序運(yùn)行后的輸出結(jié)果是()o
A.Three,4B.出錯C.Three,5D.Five,5
15.以下程序的輸出結(jié)果是______omain(){inti,a[10];for(i=9;i>
=0;i-)a[i]=10-i;print("%d%d%d,a[2],a[5],a[8]);}
A.258B.741C.852D.369
16.下列關(guān)于字符串的說法中錯誤的是
A.在C語言中,字符串是借助于字符型一維數(shù)組來存放的,并規(guī)定以字
符,\(y作為字符串結(jié)束標(biāo)志
B.VT作為標(biāo)志占用存儲空間,計入串的實際長度
C.在表示字符串常量的時候不需要人為在其末尾加入,\0'
D.在C語言中,字符串常量隱含處理成以結(jié)尾
17.在n個結(jié)點的順序表中,算法的時間復(fù)雜度是0(1)的操作是0。
A.訪問第i個結(jié)點(l<=i<=n)和求第i個結(jié)點的直接前驅(qū)(2<=i<=n)
B.在第i個結(jié)點之后插入一個新結(jié)點(l<=i<=n)
C.刪除第i個結(jié)點(l<=i<=n)
D.將n個結(jié)點從小到大排序
18.在單鏈表中,增加頭結(jié)點的目的是_____o
A.方便運(yùn)算的實現(xiàn)B.使單鏈表至少有一個結(jié)點C.標(biāo)識表結(jié)點中首結(jié)
點的位置D.說明單鏈表是線性表的鏈?zhǔn)酱鎯崿F(xiàn)
19.以下編碼方法中,()屬于烙編碼。
A.哈夫曼編碼B.小波變換編碼C.線性預(yù)測編碼D.形成編碼
20.數(shù)據(jù)結(jié)構(gòu)在計算機(jī)內(nèi)存中的表示是指()。
A.數(shù)據(jù)的存儲結(jié)構(gòu)B.數(shù)據(jù)結(jié)構(gòu)C.數(shù)據(jù)的邏輯結(jié)構(gòu)D.數(shù)據(jù)元素之間的
關(guān)系
三、程序設(shè)計題(10題)
21.有N個學(xué)生,每個學(xué)生的信息包括學(xué)號、性別、姓名、四門課的成
績,從鍵盤上輸入N個學(xué)生的信息,要求輸出總平均成績最高的學(xué)生信
息,包括學(xué)號、性別、姓名和平均成績。
22.
數(shù)組point中存放著m個人的成績,請編寫函數(shù)fun().它的功能是:
返回高于平均分的人數(shù),并將高于平均分的分?jǐn)?shù)放在high所指的數(shù)組
中。例如,當(dāng)point數(shù)組中的數(shù)據(jù)為50,60,65,70.75,80.88,90,
95時,函數(shù)返回的人數(shù)應(yīng)該是5,high中的數(shù)據(jù)應(yīng)為75,80,88,90,
95o請勿改動main()函數(shù)與其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()
的花括號中填入所編寫的若干語句。注意:部分源程序給出如下。試
題程序:
>includedconio.h>
#includedstdio.h>
Hincludedstring.h>
int(un(intpoint[]?intn.imhighC])
(
main()
intj.m?high[9]i
mtpoint[9j=<50.60.65.70,75.80.88.90.95>i
m-(un(point?9.high)t
prinif(*\np<.,r5onNum:%d".m)i
printft*\nHightheaveragepointare:*>i
for(j=a0ij<m:j4-+)
printfC-**high£jj)?
)
prinif("\n*)i
23.請編寫函數(shù)proc(),該函數(shù)的功能是:將str所指字符串中ASCH
值為偶數(shù)的字符刪除,串中剩余字符形成一個新串放在t所指的數(shù)組中。
例如,若str所指字符串中的內(nèi)容為aBcdef9789,其中字符8的ASCII
碼值為偶數(shù)……字符8的ASCH碼值為偶數(shù)……都應(yīng)當(dāng)刪除,其他依此
類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是ace979o注意:部分源程序給出
如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc
()的花括號中填入所編寫的若干語句。試題程序:
「include<Cstdlib.h>
Sinclude<stdio.h>
sinclude<string.h>
5includeVconio.h>
voidproc(char?str.chart[]>
(
}
voidmain《)
(
charMr{lOO]?t[lOO]j
s
prinifC*\nPlcascenterstringS:")i
scanf(*%s".Mr)t
proc(str?t)i
prinif(*\nThcresultis:%s\n"?t>?
]
24.請編寫函數(shù)proc(),對長度為9個字符的字符串,除首、尾字符外,
將其余7個字符按ASCH碼值降序排列。例如,原來的字符串為
HabedefA,則排序后輸出為HfedcbaA0注意:部分源程序給出如下。
請勿改動main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()中填入
所編寫的若干語句。試題程序:
Wisiclud*Vwtrifb>
與includeVMdhbub>
8IACIINWVMdio.b>
NmcludrVdype.b>
9include<como.k>
voidproc<eiuir?m*bumam)
void)
rhar
?ywtciaC*CLS*)i
priiu”??人9個字押的字第mJ)i
proc(t?9)t
pnirt"*\n%a。?Q)?
25.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方
案的項目中包含一個源程序文件progl.c。在此程序中,學(xué)生的記錄由學(xué)
號和成績組成,N名學(xué)生的記錄已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請
編寫函數(shù)fun(),其功能是把低于平均分的學(xué)生記錄放入b所指的數(shù)組
中,低于平均分的學(xué)生人數(shù)通過形參n返回,平均分通過函數(shù)值返回。
注意:部分源程序給出如下。
請勿改動主函數(shù)main。和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花
括號中填入你編寫的若干語句。
試題程序:
#include<stdio.h>
#defineN8
typedefstruct
(
charnum[10];
doubles;
}STREC;
doublefun(STREC*a,STREC*b,int*n)
voidmain()
(
STRECs[N]={{"GA05”,85},{“GA03”,76},{“GA02”,69},{“GA04”,
85},{"GAOr\91},{“GA07”,72},彳“GA08”,64},j“GA06”,87b;
STRECh[N];
inti,n;
doubleave;
ave=fun(s,h,&n);
,,
printff'The%dstudentdatawhichislowerthan%7.3f:\n?n,ave);
for(i=0;i<n;i++)<p=""x/n;i++)<>
/*輸出成績低于平均分的學(xué)生記錄*/
printf(u%s%4.1f\n,\h[i].num,h[i].s);
printfC^\n^^);
)
26.
請編寫一個函數(shù)proc(),它的功能是:求出一個4xN整型二維數(shù)組中
最大元素的值,并將此值返回調(diào)用函數(shù)。注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花
括號中填入所編寫的若干語句。試題程序:
=defineN4
smdudr<?tdio.Ii>
miproc(ini
voidnubinC>
8l?-33?3.“?2L63?-9h
pnmfC,小tf.prorCafr)).
27.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方
案的項目中包含一個源程序文件progl.c。在此程序中,規(guī)定輸入的字符
串中只包含字母和*號。編寫函數(shù)fun(),其功能是除了字符串前導(dǎo)和尾
部的*號外,將字符串中其他的*號全部刪除。形參h指向字符串中第一
個字母,形參P指向字符串中最后一個字母。在編寫函數(shù)時,不得使用
C語言提供的字符串函數(shù)。
例如,若字符串中的內(nèi)容為“****A*BC*DEF*G********”,刪除
后,字符串中的內(nèi)容應(yīng)當(dāng)是“****ABCDEFG*********。
注意:部分源程序給出如下。
請勿改動主函數(shù)main。和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花
括號中填入你編寫的若干語句。
試題程序:
#include<stdio.h>
#include<conio.h>
#include<string.h>
voidfun(char*a,char*h,char*p)
(
)
main()
(
chars[81],*t,*f;
printf("Enterastring:\rT);
gets(s);
t=f=s;
while(*t)
t++;
t--;
while(*t='*')
while(*
f++;
fun(s,f,t);
printf("Thestringafterdeleted:\n^^);
puts(s);
28.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方
案的項目中包含一個源程序文件progl.c。在此程序中,請編寫函數(shù)其功
能是移動一維數(shù)組中的內(nèi)容,若數(shù)組中有n個整數(shù),要求把下標(biāo)為0~
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("Theoriginaldata
for(i=0;i<=""p="">
printf("%3d”,a[i]);
printf("\n\nEnterp:
scanf("%d",&p);
fun(a,p,n);
printf("\nThedataaftermoving:\n^^);
for(i=0;i<=""p="">
printf("%3d”,a[i]);
printf(tt\n\n^^);
)
29.請編寫fun函數(shù),其功能是:計算并輸出3?m所有素數(shù)的平方根
之和。
例如,若主函數(shù)從鍵盤給m輸入50后,則輸出為s=68.665791o
請勿改動main函數(shù)與其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號
中填入所編寫的若干語句。
注意:m的值要大于2但不大于100。部分源程序給出如下。
試題程序:
#include<math.h>
#include<stdio.h>
doublefun(intm)
(
)
voidmain
{
intm;
doubles;
FILE*out:
printf("\n\nlnputm:");
scanf("%d",&m);
s=fun(m);
printf("\n\ns=%f\n\n",s);
ut=fopen("outfile.dat","w");
for(m=0;m<10;m++)
fprintf(out,"%f\n",fun(m+80));
felose(out);
)
30.
下列程序定義了MXM的二維數(shù)組,并在主函數(shù)中賦值。請編寫函數(shù)proc
0,函數(shù)的功能是:求出數(shù)組周邊元素的平均值并作為函數(shù)值返回給
主函數(shù)中的s。例如,若a數(shù)組中的值為:
I1234
59745
43836
1&Aft7
21098則返回主程序后,s的值為3.750000o注意:部分源程序給出
如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc
()的花括號中填入所編寫的若干語句。試題程序:
tficlutirh>
=mcltMie<conxxh>
■mcludch>
£defineM5
doubleproHm?w{J^Mj)
vntdmnm()
inta[M][M]-(0.i
3.6?3?6?3?5?,?8?九2?1?0.9?川|
i?Ji
do?Hc?i
>y?tefn<>i
pnitifC*????Thtarray????\R*)?
for<i-Oti*<Mtf+)
for?)
{printfC*K4d
pnntf("\n<><
??proc<A)?
pnntfi*????THERESULT????\?
prwt?*Thestami?tKlf\nW?B>B
四、2.程序修改題(10題)
31.下列給定程序中,函數(shù)fun()的功能是計算并輸出high以內(nèi)的素數(shù)
之和。high由主函數(shù)傳給fun()函數(shù)。若high的值為100,則函數(shù)的值
為1060o
請改正程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<math.h>
intfun(inthigh)
(
intsum=O,n=0,j,yes;
while(high>=2)
(
yes=l;
for(j=2;j<=high/2;j++)
/*************f^ound**************/
ifhigh%j==O
yes=O;
break;
/*************'found**************/
if(yes==O)
sum+=high;
n++;
)
high-;
)
returnsum;
)
main()
(
clrscr();
printf("%d\n",fund00));
)
32.下列給定程序中,函數(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);
33.給定程序MODH.C中函數(shù)fun的功能是:根據(jù)整型形參m,計算
如下公式的值。
例如,若m中的值為:5,則應(yīng)輸出:1.46361lo
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
tinclude<stdio.h>
2doublefun(intm)
3{doubley-1.0;
4inti;
5/……??★★?★★found…iff/
6for(i-2;i<m;i++)
7/…………Found?…………/
8y1/(i*i);
9return(y);
10}
11main()
12{intn-5;
HH
13printf(\nTheresultis%lf\nr
fun(n));
14
34.以下程序可把輸入的十進(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{
/*********不***不***f^ound*不**************/
c[i]=;i++;n=n/base;}
while(n!=0);
printf("Transmitenewbase:\n");
for(—i;i>=0;--i)
/不******不不**不不**found*不不**不********不不不**I
{d=c[i];printf("%c",b);}
printf("\n");
)
35.下列給定程序中,函數(shù)fun()的功能是:輸出M行N列整數(shù)方陣,
然后求兩條對角線上的各元素之和,返回此和數(shù)。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).
試題程序:
#include<conio.h>
#include<stdio.h>
#defineM5
ihtfun(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++)
printf("%4f",xx[i][j]);
printf("\n");
for(i=0;i<n;i++)
sum+=xx[i][i]+xx[i][n-i-l];
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("\nThesumofallelementson2
diagnalsis%d",fun(M,aa));
36.給定程序M0D11.C中函數(shù)fun的功能是:輸出M行M列整數(shù)方
陣,然后求兩條對角線上元素之和,返回此和數(shù)。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
tinclude<stdio.h>
2*defineM5
3found*,?…
4intfun(intn,intxx[][])
5{inti,j9sum?0;
Hw
6printf(\nThe%dx%dmatrix:\nr
M,M);
7for(i-0;i<M;i++)
8{for(j-0;j<M;j++)
9/…………found…………/
10printf("%f,,xx[i][j]);
11printf(w\nR);
12}
13for(i-0;i<n;i++)
14sum+-xx[i][i]>xx[i](n-i-lj;
15return(sum);
16)
17main()
18{intaa[M]
[4,3,2,1,0},{6,7,8,9,0},{9,8,7,6,5),
{3,4,5,6,7}};
19printf(n\nThesumofallelements
on2diagnalsis%d.fun(Mraa));
20
37.下列給定程序中,函數(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)
{ihti,j,n;charch;
n=strlen(aa);
for(i=l;i<n;i++)
{c=aa[i];
while((j>=0)&&(ch<aa[j]))
{aa[j+l]=aa[j];
j-;
}
aafj+l]=ch;
)
)
main()
{chara[N]="QWERTYUIOPASDFGHJKIMNBVCXZ";
inti;
printf("Theoriginalstring:%s\n",a);
insert(a);
printf("Thestringaftersorting:
%s\n\n",a);
)
38.下列給定程序中,fun()函數(shù)的功能是:根據(jù)形參m,計算下列公式
的值。
t=-l+l/2+l/3+l/4+...+l/m
例如,若輸入5,則應(yīng)輸出2.283333。
請改正程序中的錯誤,使它能計算出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
doublefun(intm)
(
doublet=1.0;
inti;
for(i=2;i<=m;i++)
/*************j^Qund**************/
t+=l.O/k;
/*************^Qund**************/
returni;
)
main()
{intm;
clrscr();
printf("\nPleaseenterlintegernumber:");
scanf("%d",&m);
printf("\nTheresultis%lf\n",fun(m));
)
39.給定程序中,函數(shù)fun()的功能是:使數(shù)組中的元素的值增加10倍。
改正其中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).
試題程序:
#include<stdio.h>
#include<conio.h>
ihtm[10];
voidfun(void)
(
intj;
printf("Insubfuncaftercalling\n");
for(j=0;j<10;j++)
(
/********不不不不*不不不*不不不不*********不不**I
printf("%3d",m[j]*10);
)
)
main()
{inti;
printf("Inmainbeforecalling\n");
for(i=0;i<10;i++)
(
printf("%3d",m[i]);
)
fun();
printf("\nlnmainaftercalling\n");
for(i=0;i<10;i++)
printf("%3d",m[i]);
getch();
)
40.假如整數(shù)數(shù)列中的數(shù)不重復(fù),并存放在數(shù)組中。下列給定的程序中,
函數(shù)fun()的功能是:刪除數(shù)列中值為X的元素。N中存放的是數(shù)列中
元素的個數(shù)。
請改正程序中的錯誤,使它能夠得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#defineN20
fun(int*a,intn,intx)
{intp=0,i;
a[n]=x;
while(x!=a[p])
p=p+l;
if(p==n)return-1;
else
{for(i=p;i<n;i++)
/*************^^und**************/
a[i+l]=a[i];
returnn-1;
)
)
main()
{intw[N]={-3,0,1,5,7,99,10/5,30,90},
x,n,i;
n=10;
printf("Theoriginaldata:\n");
for(i=0;i<n;i++)printf("%5d",w[i]);
printf("\nlnputx(todelete):");
scanf("%d",&x);
printf("Delete:%d\n",x);
n=fun(w,n,x);
if(n==-l)printf("***Nobefound!
***\n\n");
else
{printf("Thedataafterdeleted:\n");
for(i=0;i<n;i++)printf("%5d",
w[i]);printf("\n\n");
)
五、程序改錯題(2題)
41.
下列給定程序中,proc()函數(shù)的功能是:根據(jù)形參m,計算下列公式
的值。t=l+l/2+1/3+1/4+...+1/m例如,若輸入10,則應(yīng)輸出
2.928968。請修改程序中的錯誤,使它能計算出正確的結(jié)果。注意:
不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試
題程序:
4include<stdlib.h>
二include<conio.h>
5includeVsidio.h>
doubleproc<intm)
(
doublet=1.Oj
intit
for(i=2?i<=m?i4-+)
//<???found????
1+=L0/k;
//#???found????
returnii
)
voidmain()
{inimj
sy5tvrn(;
printft*\nPlc>5eenterintegernumber:*>i
:s
print((*\nTheresultis%lf\n".proc(m))i
42.下列給定程序中,函數(shù)fun的功能是:從低位開始依次取出長整型變
量s中奇數(shù)位上的數(shù),構(gòu)成一個新數(shù)存放在t中。高位仍在高位,低位
仍在低位。
例如,當(dāng)s中的數(shù)為7654321時,t中的數(shù)為753lo請改正程序中的錯
誤,使它能得出正確的結(jié)果。
注意:部分源程序在文件M0D11.C中,不得增行或刪行,也不得更改
程序的結(jié)構(gòu)!
#include<;stdiO.h>;
/????????????found????????????/
voidIQM,,longt)
Ilo?(?d=IO;
?t=?%10;
whik(t>0)
{?=SOO;
?t=6%10?2??t;
/found
d=d?100;
main()
IM*.I;
printf("\nPlea?eenter■:");scanf("%Id",&s);
fun(s.At);
printf("Theresultif:%ld\nH,t);
六、操作題(2題)
43.設(shè)有下列程序:
#include<stdio.h>
#include<string.h>
main()
{inti;
chars[10],t[W];
gets(t);
for(i=0;i<2;i++)
{gets(s);
if(strcmp(t,s)<O)strcpy(t,s);
printf("%s\n",t);
程序運(yùn)行后,從鍵盤上輸入(<CR>代表回車符):DEF<CR>BADEP
<CR>QTHRG<CR>,則程序的輸出結(jié)果是______。
44.下列給定程序的功能是:讀入一個整數(shù)n(2<=n<=5000),打印
它的所有為素數(shù)的因子。例如,若輸入整數(shù)1234,則應(yīng)輸出:2,
617。
請修改程序中的錯誤,使程序能得出正確的結(jié)果。
注意:不要改動main函數(shù),不能增選或刪行,也不能匿改程序的結(jié)
構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
〃****f^ound****
Prime(intm);
(
intj,P;
P=l;
//****^Qund****
for(j=2;j<m;j++)
if!(m%j)
(
p=0;
break;
)
return(p);
inti,n;
printf("\npleaseenteranintegernumberbetween!
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");
參考答案
1.AUTOEXEC.BAT
2.QTHRGQTHRG解析:strcmp(t,s)函數(shù)用來比較t和s所指字符串的大
小,若t>s,則函數(shù)值大于0;若1=5,則函數(shù)值等于0:若t<s,則函
數(shù)值小于0。strcpy(Ls)函數(shù)的功能是把字符數(shù)組s所指字符串的內(nèi)容復(fù)
制到字符數(shù)組t所指的存儲空間中。本題中,t[10]=CDEF°第一次循環(huán),
s[10尸BADEF,if語句的控制條件strcmp(t,s)<0不成立,接著執(zhí)行第
二次循環(huán).s='QTHRG',if語句的控制條件strcmp(t,s)<0成立,執(zhí)行
下列的語句,將字符數(shù)組s所指字符串的內(nèi)容復(fù)制到字符數(shù)組t所指的
存儲空間中,然后輸出字符數(shù)組L
3.310
4.*(p+5)或p[5]*(p+5)或p[5]
5.void(*p)();void(*p)();解析:要定義p為指向函數(shù)的指針變量,需寫
成void(*p)();,注意*P兩側(cè)的括弧不可以省略,表示P先與*結(jié)合,是
指針變量,再與后面的。結(jié)合,表示此指針變量指向函數(shù),這個函數(shù)無
返回值(同fun()函數(shù))。
6.集合集合
7.1343113431解析:初始化時,指針p指向m⑼的地址,指針q指向
m[4]的地址,p!=q滿足循環(huán)條件,執(zhí)行循環(huán)語句,得到m[0].k=l,
m[4].k=l,此時i=2,指針p指向m[l]的地址,指針q指向m⑶的地
址,p!=q滿足循環(huán)條件,執(zhí)行循環(huán)語句,得到m[l].k=3,k=3,此時
i=4,指針q指向m[2]的地址,p==q不滿足循環(huán)條件,則退出循環(huán),
m[2].k=4o所以最后輸出為13431o
8.輸出結(jié)果輸出結(jié)果解析:注意:測試的基本方法和步驟。
9.cdeabcdeab解析:本題move。函數(shù)的作用,是將形參s仕所指地址的
連續(xù)n位循環(huán)右移1位,即讓str[n-l]=str[n-2],str[n-2]=str[n-3],…,
str[l]=str[O],str[O]=str[n-l](原)。主函數(shù)中用了一個for循環(huán)調(diào)用move。
函數(shù),共循環(huán)3次,所以數(shù)組s被循環(huán)右移了3位,故最后輸出的值為
cdeabo
10.b=i+lb=i+l解析:分析for循環(huán)條件,i=0說明循環(huán)從0開始判斷,
i+=2是間隔為2的數(shù),i<=20就是控制數(shù)是20之內(nèi)的a+=i,就是所有
偶數(shù)的和,如果從1開始(b=i+l)間隔為2的數(shù)(1,3,5,7,9,11,13,15,17,19)
相加就是所有奇數(shù)的和。
11.D
12.D解析:選項A)在C語言中是一個合法的關(guān)系表達(dá)式,但它并不代
表數(shù)學(xué)式。<=x<100。計算0<=x<100時,從左到右結(jié)合,先計算0
<=X,其結(jié)果只能是。或1,然后再比較0<100或1<100。根據(jù)運(yùn)算
符的優(yōu)先級,選項B)先判斷j==0是否成立,其結(jié)果只能是?;?,然
后再將。或1賦給i。選項C)中,(char)(65+3)為類型強(qiáng)制轉(zhuǎn)換,將整數(shù)
型數(shù)據(jù)轉(zhuǎn)換為字符型。選項D)是將一個數(shù)據(jù)賦給一個表達(dá)式,等號左邊
不合要求,所以錯誤。
13.D
函數(shù)f是一個遞歸函數(shù)。當(dāng)x>=2時,遞歸調(diào)用自身,返回值為x*f(x-
l)+(x-l)*f(x-2);3x<2時,返回值為1。main函數(shù)中,調(diào)用函數(shù)f傳入
4,所以y的值是f(4)。f(4)等價于4*f(3)+3*f(2);f(3)等價于
3*f(2)+2*f(l);f(2)等價于2*f(l)+l*f(0);f(0)、f⑴等價于1。綜上:f(2)等
于3,f(3)等于11,f(4)等于53。本題答案為D選項。
14.Cmain函數(shù)定義一個二維字符數(shù)組str,它包含3個字符串,每個字
符串存放在一個長度為10的一維數(shù)組中。指針變量P指向str[0],即第
1個字符串“One”。由于“One”存放在長度為10的一維數(shù)組中,因此P+10
指向下一個字符串“Three”,長度為5。故本題答案為C選項。
15.C解析:在本題運(yùn)行時主要注意的是當(dāng)i=9時,a[i]=10-9=1:i=8時,
a[i]=10-8=2;i=7時,a[i]=10-7=3;……依此類推,直至Ui=0時,a[i]=10-
0=10:此時,i的值已變?yōu)?1,判斷for的循環(huán)條件,不成立,然后輸出
a[2],a[5],a[8]分別為8,5,2O
16.B解析:NO作為標(biāo)志占用存儲空間,但是不計入串的實際長度。當(dāng)
給一個字符型指針賦值時,賦給這個指針的是這個字符串的地址。
17.A
18.A\nA。【解析】頭結(jié)點不僅標(biāo)識了表中首結(jié)點的位置,而且根據(jù)單鏈
表(包含頭結(jié)點)的結(jié)構(gòu),只要掌握了表頭,就能夠訪問整個鏈表,因此
增加頭結(jié)點的目的是為了便于運(yùn)算的實現(xiàn)。
\n
19.A
20.A數(shù)據(jù)結(jié)構(gòu)在計算機(jī)內(nèi)存中的表示指的是數(shù)據(jù)的存儲結(jié)構(gòu)。數(shù)據(jù)的存
儲結(jié)構(gòu)是指數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機(jī)中的表示。數(shù)據(jù)元素之間的關(guān)系有
兩種不同的表示方法:順序映象和非順序映象,并由此得到兩種不同的
存儲結(jié)構(gòu):順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)。
21.\n#include'stdio.h'
\n#defineN3
\nstructstudent
\n{longstu_num;charsex;
\ncharname[15];intscore[4];
\nfloataverage;};
\nmain
\n{inti,j,index;floatsum,max;
\nstructstudentstuarr[N];
\nfor(I=0;I{printf('pleaseinput%dstudentinformation:\\n',I+1);
\nscanf('%ld,%c,%s',&stuarr[I].stu_num,&stuarr[I].sex,stuarr[I].name);
\nfor(j=0;j<4;j++)
\nscanf('%d',&stuarr[I].scorefj]);}
\nfor(I=0;I{sum=0.0;
\nfor(j=0;j<4;j++)
\nsum+=stuarr[I].score[j];
\nstuarr[I].average=sum/4.0;}
\nmax=stuarr[0].average;
\nindex=0;
\nfor(I=l;Iif(stuarr[I].average>max)
\n{max=stuarr[I].average;
\nindex=I;}
\nprintf(,總平均成績最高的學(xué)生信息是學(xué)號=%ld,性別=%c,姓名=%s,平
均成績
=%4.lf\\n',stuarr[index].stu_num,stuarr[index].sex,stuarr[index].nam
e,stuarr[index].average);
\n}\n
22.
【解析】(D該程序功能是返回高于平均分的人數(shù)。它的解題思路可以分
解為以下幾步:求總分一求平均分一元素逐個與平均分比較一統(tǒng)計高于
平均分的人數(shù)。
(2)從已給部分源程序的main。函數(shù)開始入手,核心函數(shù)fun(point,9,
high)中的參數(shù)由題目可知,point存放著m個人的成績,high存放著高
于平均分的分?jǐn)?shù)。另外,根據(jù)point的定義,可知9為point數(shù)組中元素
的個數(shù),傳給函數(shù)funee的參數(shù)n0
23.
【解析】要把字符串str中ASCH碼值為偶數(shù)的字符刪除,需要判斷字
符串str中每一個字符的ASCIH1,將ASCII碼值為奇數(shù)的字符放入字
符串t中,ASCH碼值為偶數(shù)的字符不予處理。最后為新的字符串t加
上結(jié)束符。
24.
【解析】按照題目中要求,求除首、尾字符外,將其余7個字符按ASCH
碼值降序排列。首先需要判斷除首、尾字符之外,其余7個字符ASCH
碼值的大小,將不符合順序要求的字符互換。
25.doublefun(STREC*a,STREC*b,int*n)
(
inti,j=0;
doubleav=0.0;
for(i=0;i<=""p="">
av=av+a[i].s;
av=av/N;/*求平均分*/
for(i=0;i<=""p="">
if(a[i].s<av)<p=""x/av)<>
bU++]=a[i];
/*將低于平均分的學(xué)生記錄存入結(jié)構(gòu)體數(shù)組b中*/
*n=j;
/*傳回低于平均分的學(xué)生人數(shù)*/
returnav;
/*返回平均分*/
)
本題使用循環(huán)語句和條件判斷語句來實現(xiàn)題目要求。第1個循環(huán)語句的
作用是求出總分,然后求出平均分av。第2個循環(huán)語句的作用是將分?jǐn)?shù)
低于平均分的學(xué)生記錄存入結(jié)構(gòu)體數(shù)組b中。
26.
【解析】要求出二維數(shù)組中最大元素的值,需要比較二維數(shù)組中每一個
元素的值。首先,定義變量max用來存放最大元素的值,將其初始化為
二維數(shù)組中第一個元素的值。然后將其與后面的每一個元素進(jìn)行比較,
將二維數(shù)組中最大元素的值放到變量max當(dāng)中,并將其返回給主函數(shù)。
27.voidfun(char*a,char*h,char*p)
(
inti=0;
char*q=a;
/*將前導(dǎo)*號保存到a中*/
while(q<h)<p=""x/h)<>
(
a[i]=*q;q++;i++;
)
/*繼續(xù)遍歷數(shù)組*/
while(q<=""p="">
if(*q!='*')
(
/*如果不是*則保存到a中*/
a[i]=*q;i++;
)
q++;
)
/*將末尾*號保存到a中*/
while(*q)
(
a[i]=*q;i++;q++;
)
a[i]='\0';
)
本題的重點是選擇好判斷條件。首先需要判斷前導(dǎo)*號的結(jié)束,然后判
斷是否指向最后一個字母,最后補(bǔ)充尾部*號,只要思路對了即可正確
解答。
28.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)為0~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)為。?P的數(shù)組元素逐一賦給數(shù)組w[n-l],也就是通過語句w[n-l]=ch;
來實現(xiàn)此操作。
29.\r\n\tintn,k,i;
doublesum=0.0;
for(n=3;n<=m;n++)//判斷n是否為素數(shù)
(
k=sqrt(n);//求n平方根
for(i=2;i<=k:i++)
if(n%i==0)break;//如果n不是素數(shù),跳出
if(i>=k+l)
sum+=sqrt(n);//求平方根的和
returnsum;
【解析】首先判斷循環(huán)中n是否為素數(shù),如果不是素數(shù),求其平方根
的累加和,并返回計算結(jié)果,否則跳出判斷循環(huán)。其中,對于平方根
的求解可以使用C語句中的sqrt函數(shù)。
30.
【解析】要求出數(shù)組周邊元素的平均值,首先要求出周邊元素的和,周
邊元素的特點為行或列下標(biāo)為0,或為N—1,根據(jù)其特點求出所有周
邊元素的和,再求出其平均值,并返回給主函數(shù)。
31.(1)錯誤:ifhigh%j=0正確:if(high%j==0)(2)錯誤:if(yes==0)正確:
if(yes)⑴錯誤:ifhigh%j=0正確:if(high%j==0)\r\n(2)錯誤:if(yes==0)
正確:if(yes)解析:錯誤1:if語句的兩側(cè)要加括號。錯誤2:yes為1
時,說明被判斷的數(shù)為素數(shù),要加入總和。
32.(1)錯誤/defineFU(mn)(m/n)正確升defineFU(mn)(m)/(n)⑵錯誤:
return(Value);正確:return(value);(l)錯誤;#defineFU(m,n)(m/n)正
確:#defineFU(m,n)(m)/(n)\r\n(2)錯誤:return(Value);正確:return
(value);解析:如果從數(shù)學(xué)思想來說,這是一道簡單的小學(xué)數(shù)學(xué)題,當(dāng)
然,用C語言的別的辦法實現(xiàn)的話,也用不了三兩句的程序,但是,這
道題的考查點在C語言的宏定義上(這樣的問題比較隱蔽),它的格式為
#define標(biāo)識符字符串,中間要用空格分開,在該題中,標(biāo)識符為FU
(m,n),而字符串則是(m/n),由題干信息易知,應(yīng)該是#defineFU(m,n)
(m)/(n)o
33.⑴for(i=2;i<=m;i++)(2)y+=l.O/(i*i);(l)for(i=2;i<=m;
i++)(2)y+=lQ/(i*i);解析:該題中函數(shù)功能是計算公式的值。其中,
公式中涉及在循環(huán)中對各項的計算及累加求和。從已給定源程序的main
主函數(shù)開始入手,“printf(''WnTheresultis%1f\\nz,,fun(n));“語句中調(diào)用
fun函數(shù),計算公式的值。
34.(1)錯誤:缺少語句正確:應(yīng)填入11%6256或%16⑵錯誤:缺少語句
正確:應(yīng)填入[d]⑴錯誤:缺少語句正確:應(yīng)填入n%base
錯誤:缺少語句正確:應(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個空框處可
填入代碼[d]°
35.(1)錯誤:intfun(ihtnintxx[][])正確:intltm(ihtmintr.x口[M])⑵錯誤:
printf("%4ffxx[i]fj]);正確:printf("%4d"xx[i][jD;⑴錯誤:intfun(iht
n,intxx[][])正確:intltm(ihtmintr.x[][M])\r\n(2)錯誤:
printf('%4f,f\',xx[i]fj]);正確:printf(%4d,xx[i][j]);解析:該題錯誤比較隱
蔽,一般的c語言上機(jī)考試很少涉及printf順數(shù)中的錯誤,在這里,我
們只要明白“d”和“『的區(qū)別就0K了。格式字符d表示:以帶符號的十
進(jìn)制形式輸出整數(shù)(正整數(shù)不輸出符號);格
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度民間借款合同法律援助服務(wù)協(xié)議
- 品牌獨家經(jīng)銷合同范本
- 出碴運(yùn)輸合同范例
- 中介和院校合作合同范本
- 四川食堂承包合同范本
- 加工定做補(bǔ)充合同范例
- 農(nóng)村山地建房合同范例
- 農(nóng)業(yè)項目戰(zhàn)略合同范例
- 代理型合同范本
- 員工生產(chǎn)合同范本
- 2025高考數(shù)學(xué)專項復(fù)習(xí):概率與統(tǒng)計的綜合應(yīng)用(十八大題型)含答案
- 2024-2030年中國紫蘇市場深度局勢分析及未來5發(fā)展趨勢報告
- 銷售人員課件教學(xué)課件
- LED大屏技術(shù)方案(適用于簡單的項目)
- Lesson 6 What colour is it(教學(xué)設(shè)計)-2023-2024學(xué)年接力版英語三年級下冊
- 歷年國家二級(Python)機(jī)試真題匯編(含答案)
- GB/T 4706.10-2024家用和類似用途電器的安全第10部分:按摩器具的特殊要求
- NB/T 11446-2023煤礦連采連充技術(shù)要求
- 2024年江蘇省蘇州市中考英語試題卷(含標(biāo)準(zhǔn)答案及解析)
- 第五單元任務(wù)二《準(zhǔn)備與排練》教學(xué)設(shè)計 統(tǒng)編版語文九年級下冊
- 設(shè)計質(zhì)量、進(jìn)度、服務(wù)保證措施
評論
0/150
提交評論