




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2022年安徽省合肥市全國計算機等級考試
C語言程序設(shè)計真題(含答案)
學(xué)校:班級:姓名:考號:
一、2.填空題(10題)
1.下列程序的輸出結(jié)果是_____O
main()
{inta=l,b=2,c=3,t-0;
if(a<B){t=a;a=b;b=t;}
if(a<C){t=a;a=c;c=t;}
printf("%d,%d,%d\n",a,b,C);
)
2.數(shù)據(jù)結(jié)構(gòu)分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),帶鏈的隊列屬于口。
3.常用的黑箱測試有等價分類法、【】、因果圖法和錯誤推測法4種。
4.下列程序的運行結(jié)果是____o
#include<stdio.h>
main()
{intfun();
fun();
)
fun()
{staticinta[4]={1,2,3,4};
inti;
for(i=0;i<4;i++)afi]+=a[i];
for(i=0;i<4;i++)printf("%d,",a[i]);
printf'\n");
)
5.有以下程序:
voidswapl(intc[])
{intt;
t=c[0];c[0]=c[l];c[l]=t;
)
voidswap2(intcO,intcl)
{intt;
t=cO;cO=cl;cl=t;
)
main()
{inta[2]={3,5},M2]={3,5};
swaplA);swap2(b[0],b[1]);
printf("%d,%d,%d,%d\n",a[0],a[l],b[0],b[l]);
)
其輸出結(jié)果是【】。
6.以下程序運行后的輸出結(jié)果是()。
main()
{inta=3,b=4,c=5,t=99;
if(b<a&&a<C)t=a;a=c;c=t;
if(a<c&&b<C)t=b;b=a;a=t;
printf("%d%d%d\n",a,b,A);
7.在scanf()函數(shù)調(diào)用語句中,可以在格式字符和%號之間加上一個星號,
它的作用是跳過對應(yīng)的輸入數(shù)據(jù);當(dāng)輸入以下數(shù)據(jù)時,100200300400
500〈回車〉,下面語句的執(zhí)行結(jié)果為【】。
main()
{inta,b,C;
scanf("%d%*d%d%d",&a,&b,&c);
printf("%d%d%d",a,b,c);}
8.已知字符A的ASCH碼為65,以下程序運行后的輸出結(jié)果是【】。
#include<stdio.h>
main()
{chara,b;
a='A'+'5'-,3,;b=a+6-2;
printf("%d%c\n",a,b);
)
9.下面程序的功能是輸出數(shù)組s中最大元素的下標,請?zhí)羁铡?/p>
#include<stdio.h>
main()
{intk,p,s[]={l,-9,7,2,-10,3);
for(p=0,k=p;p<6;p++)
if(s[p]>s[k])[]
printf("%d\n",k);
)
10.已定義charch="$";inti=l,j;執(zhí)行j=!ch&&i++以后,i的值為()。
二、單選題(10題)
11.以下敘述中錯誤的是()
A.在C程序中,APH和aph是兩個不同的變量
B.C程序中的變量,代表內(nèi)存中的一個存儲單元,它的值可以根據(jù)需要
隨時修改
C.在C程序中,無論是整數(shù)還是實數(shù),都能準確無誤地表示
D.在C程序中,一個正整數(shù)可以用十進制、八進制和十六進制的形式來
表示
12.若有定義floata[15],*p=a;,且數(shù)組a的首地址為300H,則p+13所
指向的數(shù)組元素的地址為()。
A.334HB.30DHC.352HD.31AH
13.若有定義"int*p⑶;",則以下敘述中正確的是()。
A.定義了一個基類型為int的指針變量p,該變量具有3個指針
B.定義了一個指針數(shù)組p,該數(shù)組含有3個元素,每個元素都是基類型
為int的指針
C.定義了一個名為*p的整型數(shù)組,該數(shù)組含有3個int類型元素
D.定義了一個可指向一維數(shù)組的指針變量p,所指一維數(shù)組應(yīng)具有3個
int類型元素
14.對長度為n的線性表排序,在最壞情況下,比較次數(shù)不是n(n-1)
/2的排序方法是()。
A.快速排序B.冒泡排序C.直接插入排序D.堆排序
15.軟件測試的目的是()。
A.評估軟件可靠性B.發(fā)現(xiàn)并改正程序中的錯誤C.改正程序中的錯誤
D.發(fā)現(xiàn)程序中的錯誤
(40)函數(shù)rewind(fp)的作用是(
A)使用指定的文件的位置指針重新定位到文件的開始位置
B)將fp指定的文件的位置指針指向文件中所要求的特定位置
o使m指定的文件的位置指針向文件的末尾
D)使fp指定的文件的位置指針自動移至下一個字符位置
17.定義結(jié)構(gòu)體數(shù)組:
structstu
{intnum;
charnameE20];
}X[5]={1,"LI",2,"ZHAO",3,"WANG",4,"ZHANG",5,
"LIU");
for(i=1;i<5;i++)
printf("%d%c",x[i].num,x[i].name[2]);
以上程序段的輸出結(jié)果為()。
A.2A3N4A5UB.112A3H4IC.1A2N3A4UD.2H3A4H5I
18.輸入序列為(A,B,C,D),不可能得到的輸出序列是____.
A.(A,B,C,D)B.(D,C,B,A)C.(A,C,D,B)D.(C,A,B,D)
19.有下列程序:
fun(intx,inty)
{staticintm=0,i=2;
i+=m+l;m=i+x+y;returnm;
)
main()
{intj=l,m=l,k;
k=fun(j,m);printS("%d,”,k);
k=fun(j,m);printf("%d\n",k);
)
執(zhí)行后的輸出結(jié)果是()。
A.5,5B.5,11C.ll,11D.ll,5
20.下面敘述正確的是o
A.算法的執(zhí)行效率與數(shù)據(jù)的存儲結(jié)構(gòu)無關(guān)
B.算法的空間復(fù)雜度是指算法程序中指令(或語句)的條數(shù)
C.算法的有窮性是指算法必須能在執(zhí)行有限個步驟之后終止
D.以上三種描述都不對
三、程序設(shè)計題(10題)
21.
請編寫函數(shù)proc(),其功能是:計算并輸出下列多項式值。S=(1+1
/2)+(1/3+1/4)+...+(1/(2nl)+1/2n)例如,若主函數(shù)從鍵
盤給n輸入100后,則輸出為s=5.87803lon的值要求大于1但不大
于100。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其
他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干
語句。試題程序:
HincludeVstdio.h>
doubleproc(intn)
voidmain()
(
intm
doublesum?
prinlf("\nlnputn:*>i
MrAnf("?&-n)t
mumproc(n)i
printf(*\ns=%f\n".sum)i
22.
請編寫一個函數(shù)intproc(int*s,intt,int*k),用來求出數(shù)組的最小元素
在數(shù)組中的下標并存放在k所指的存儲單元中。例如,輸入如下整數(shù):
27393445362489342111831527246貝IJ輸出結(jié)果為4,89o注意:部
分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,
僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
£mclvJrk>
=includeVCDVMOUIC>
9include<Mdio.h>
voidproc<i*i?W?M>Iuint?k)
roidmam()
miarrClO]*【Z73.934M53?H4?2?342dll
M.W.146)Ji
?ywtem(*CLS-)i
ptoc<<rr?IO?&-k)i
pnnt(<*!?d<Kd\a"?k?arr{k]>i
23.從鍵盤上輸出10個整數(shù)存入一維數(shù)組中,按由大到小的順序輸出。
24.實現(xiàn)字符串拷貝的函數(shù)strcpy為()。
25.
請編寫一個函數(shù)proc(),它的功能是:比較2個字符串的長度(不得
調(diào)用C語言中求字符串長度的函數(shù)),函數(shù)返回較長的字符串。若2個
字符串長度相等,則返回第1個字符串。例如,若輸入jiangxi<;Enter>;
beijing<;Enter>;則函數(shù)返回jiangxio注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的
花括號中填入所編寫的若干語句。試題程序:
0mcludeV,ulio.b>
rhar?proHchar???char?t)
voidmaiaC)
char>{20j?b[i0j<?p.?q*
prmtf(*InputIthMnngj-)>
?■”《■)I
prtnt((*Input2thtirtngi?
gtt?(b)i
pruitf<?%iT?proc?*.b),j
26.請編寫函數(shù)proc,該函數(shù)的功能是:將放在字符串?dāng)?shù)組中的M個字
符串(每串的長度
不超過N),按順序合并組成一個新的字符串。
例如,若字符串?dāng)?shù)組中的M個字符串為:
ABCD
BCDEFG
CDEFGHI
則合并后的字符串內(nèi)容應(yīng)該是ABCDBCDEFGCDEFGH1o
注意:部分源程序給出如下。
請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括
號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#include<conio.h>
#defineM3
#defineN20
voidproc(chararr[M][N],char*b)
)
voidmain
charstr[M][N]={"ABCD","BCDEFG","CDEFGH1"),i;
chararr[100]={"##################"};
printff'Thestrin9:kn");
for(i=0;i<M;i++)
puts(str[i]);
printf("\n");
proc(str,arr);
printf("TheAstring:\n");
printf("%S",arr);
printf("\n\n");
)
27.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方
案的項目中包含一個源程序文件progl.c。在此程序中,函數(shù)fmi()的功
能是將a、b中的兩個正整數(shù)合并成一個新的整數(shù)存放在c中。合并的
方式是將a中的十位和個位數(shù)依次放在變量c的十位和千位上,b中的
十位和個位數(shù)依次放在變量c的個位和百位上。例如,a=45,b=12,
調(diào)用該函數(shù)后,c=5241。
注意:部分源程序在文件progl.c中。請勿改動main。函數(shù)和其他函數(shù)
中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。
試題程序:
1linclude<stdio.h>
2voidfun(inta,intb,long*c)
富4)
6main()
7{inta,b;longc;voidNONO();
8printf(nInputa,b:n);
M
9scanf(,,%d%dr&a,&b);
10fun(a,b,&c);
11printf(°Theresultis:c);
HNONOO;
13)
14voidNONO()
15{/*本函數(shù)用于打開文件、輸入數(shù)據(jù)、調(diào)
用函數(shù)、輸出數(shù)據(jù)及關(guān)閉文件。*/
16FILE?rf,?wf;
17intiza,b;longc;
18rf工fopen(Min.datw,Mrw);
19wf=fopen("out"w");
for(i=0;i<10;i*+){
wM
21fscanf(rff%df%dr&b);
22fun(a,b,&c);
M
23fprintf(wfra=%d/b=%drc=%ld
\n",a,b,c);
噩}
25fclose(rf);
26fclose(wf);
27)
28.
N名學(xué)生的成績已在主函數(shù)中放入一個帶有頭結(jié)點的鏈表結(jié)構(gòu)中,h指
向鏈表的頭結(jié)點。請編寫函數(shù)fun(),其功能是:找出學(xué)生的最高分,
并由函數(shù)值返回。注意:部分源程序給出如下。請勿改動main()函
數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入所編寫
的若干語句。試題程序:
?iftchidr<Mdlikb>
<Min*N8
Mmct
<
dooWr??
structBUBK?MKII
h
typedeiMructslbtSTREl'i
double(wnCSTKIX*?b)
(
)
STRBl*?createdouble??>
(
STREC?b??p??q,
i?ti
h-p?<STREC。)iiuillor<MMo?STRIX))t
p—>■-Oi
wh?lr<YNI
〃產(chǎn)強8個靖立的?*.3分依存入?友中
j
qTSTRBC?)malk)c<tuM>{(STREIT)?
+,p->?TM1-q,
p-q?
}
p->?r?imNULLi
retiimhi/fiMM
)
voad0MlMii<STREC?b)
STREC”,
p-h?
printf<*heed>>i
<k>(
prwii(<*->>{2,Of>?)?
pwp^
)
〃■出3分數(shù)
wlitleCp->OTM1*-BNULL>?
voidmain()
doubk?[N]?(85?IOO?99.85?91.7??M.87
)?mesi
STREf…
hw€rtai<t)i
prwiilf*n?xmM6.If\ne?max)i
29.請編寫一個函數(shù)proc,它的功能是:求出1?m(含m)能被7或11
整除的所有整數(shù)放在數(shù)組a中,通過n返回這些數(shù)的個數(shù)。
例如,若傳給m的值為70,則程序輸出:
7111421222833354244495556636670
注意:部分源程序給出如下。
請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括
號中填人所編寫的若干語句。
試題程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#defineN100
voidproc(intm,int*a,int*n)
{
)
voidmain
(
intarr[N],n,k;
system("CLS");
proc(70,arr,&n);
for(k=0;k<n;k++)
if((k+l)%20==0)//每行輸出20個數(shù)
{printf("%4d",arr[k]);
printf("\n");
)
else
printf("%4d",arr[k]);
printf("\n");
)
30.假定輸入的字符串中只包含字母和*號。請編寫函數(shù)proc(),它的功
能是:將字符串尾部的*號全部刪除,前面和中間的*號不刪除。例如,
若字符串中的內(nèi)容為****a*bc*def*g。***,刪除后,字符串中的內(nèi)容則
應(yīng)當(dāng)是****a*bc*def*g°注意:部分源程序給出如下。請勿改動主函
數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填入所編
寫的若干語句。試題程序:
smcludc〈adg.hA
3include<como.
voidprocfchar*
void>
clwrJI
prmtfC-Enter?3ftM
proc<?)i
pnntf<*Thrafterddr?rdi\ne)t
pvtp<
四、2.程序修改題(10題)
31.下列給定程序中,函數(shù)fun()的功能是:在字符串的最前端加入n個
*號,形成新串,并且覆蓋原串。
注意:字符串的長度最長允許79。
請改正函數(shù)fun()中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序;
#include<stdio.h>
#include<strzng.h>
#include<conio.h>
/*****************found***************/
voidfun(chars[],intn)
chara[80],*p;
inti;
/*****************found***************/
s=p;
for(i=0;i<n;i++)a[i]=<*';
do
{a[i]=*p;
/*********不***不***found*不***不*********/
i++;
}while(*p);
a[i]=0;
strcpy(s,a);
)
main()
{intn;chars[80];
clrscr();
printf("\nEnterastring:");gets(s);
printf("\nThestring\%s\n",s);
printf("\nEntern(numberof*):");scanf("%d",&n);
fun(s,n);
printf("\nThestringafterinster:\%s\n",s);
32.下列給定程序中,函數(shù)fun()的功能是:用選擇法對數(shù)組中的n個元
素按從小到大的順序進行排序。
請改正程序中的錯誤,使它能得到正確結(jié)果。
[注意]不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
[試題源程序]
#include<stdio.h>
#defineN20
voidfun(inta[],intn)
inti,j,t,p;
for(j=0;j<n-1;j++){
/***********^Qund***********/
p=j
for(i=j;i<n;i++)
if(a[i]<a[p])
/***********^Qund***********/
p=j;
t=a[P];
a[p]=a[j];
a[j]=t;
msin()
inta[N]=(9,6,8,3,-1),i,m=5;
printf("排序前的數(shù)據(jù)
for(i=0;i<m;i++)
printf("%d",a[i]);
printf("\n");
fun(a,m);
printf("排序后的數(shù)據(jù)
for(i=0;i<m;i++)
printf("%d",a[i]);
printf("\n");
33.下列給定程序中,函數(shù)fun()的功能是:找出一個大于給定整數(shù)m且
緊隨m的素數(shù),并作為函數(shù)值返回。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).
試題程序:
#include<conio.h>
#include<stdio.h>
intfun(intm)
{inti,k;
for(i=m+l;;i++)
{for(k=2;k<i;k++)
/*************found**************/
if(i%k!=0)
break;
/*************found**************/
if(k<i)
retum(i);
)
main()
{intn;
clrscr();
printf("\nPleaseentern:");
scanf("%d",&n);
printf("%d\n",fun(n));
)
34.下列給定的程序中,函數(shù)fun()的功能是:計算并輸出k以內(nèi)最大
的6個能被7或11整除的自然數(shù)之和。K的值由主函數(shù)傳入,若k的
值為500,則函數(shù)的值為2925。
請改正程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<conio.h>
intfun(intk)
{
intm=0,mc=0,j;
/*************found*************/
while(k>=2)&&(mc<6)
(
/*************found*************/
if((k%7=0)||(k%ll=0))
{.......................................................
/*************found**************/
m=k;
mc++;
k--;
)
returnm;
main()
(
clrscr();
printf("%d\n",fun(500));
)
35.給定程序M0D11.C中fun函數(shù)的功能是:分別統(tǒng)計字符串中大寫
字母和小寫字母的個數(shù)。
例如,給字符串s輸入:AAaaBBbl23CCccccd,則應(yīng)輸出結(jié)果:upper=
6,lower=8。
請改正程序中的錯誤,使它能計算出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
1#include<stdio.h>
2/………?found………?/
3voidfun(char*srinta,intb)
4
5while(*s)
6{if(*s>-?A*&&*s<?'Z')
7/……?…found………■/
8?a?a+l;
9if(*s>?,a*&&*s<?'z?)
10/…?……found………?/
11
12s++;
13
14}
15main()
16{chars[100];intupper-Q,lower
?0;
17printf("\nPleaseastring:n);
gets(s);
18fun(sr&upper,slower);
19printf(H\nupper-%dlower■
w
%d\nrupperzlower);
20)
36.下列給定程序中fun()函數(shù)的功能是將n個無序整數(shù)從小到大排序。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意;不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
fun(intn,int*a)
{inti,j,p,t;
for(j=O;j<n-l;j++)
{p=j;
/***********不***found*不***不***不********不/
for(i=j+l;i<n-l;i++)
if(a[p]>a[i])
/***************found*******************/
t=i;
if(p!=j)
{t=a[j];a|j]=a[p];a[p]=t;}
)
)
putarr(ihtn,int*z)
{inti;
for(i=l;i<=n;i++,z++)
{printf("%4d",*z);
if(!(i%10))printf("\n");
}printf("\n");
)
main()
{intaa[20]={9,3,0,4,l,2,5,6,8,10,7},n=ll;
clrscr();
printf("\n\nBeforesorting%dnumbers:\n",n);putarr(n,aa);
fun(n,aa);
printf("\nAftersorting%dnumbers:\n",n);putarr(n,aa);
)
37.下列給定程序中,函數(shù)fun()的作用是:將字符串tt中的小寫字母都
改為對應(yīng)的大寫字母,其他字符不變。例如,若輸入“edS,dAd",則輸
出“EDS,DAD”。
請改正程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<string.h>
#include<conlo.h>
/*************found*************/
charfun(chartt[1)
inti;
for(i=0;tt[i];i++)
/*************found*************/
if((tt[i]>='A')&&(tt[i]<='2'))
tt[i]-=32;
retum(tt);
)
main()
inti;
chartt[81];
clrscr();
printf("\nPleaseenterastring:");
gets(tt);
printf("\nTheresultstringiS:/n%s",fun(tt));
38.給定程序M0D11.C中函數(shù)fun的功能是:求出以下分數(shù)序列的前
n項之和。和值通過函數(shù)值返回到main函數(shù)。
23581321
T2'3'5*T……
例如,若n=5,則應(yīng)輸出:8.39如67。
請改正程序中的錯誤,使它能計算出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
linclude<stdio.h>
2/*??*?*?***w*found***********?/
3voidfun(intn)
4(inta,brc,k;doubles;
5s?0.0;a?2;bw1;
6for(k-1;k<?n;k++){
7………?…found/
8s-s?(Double)a/b;
9c=a;a?ab;bwc;
10}
11returns;
12}
13main()
14(intn?5;
15printf(H\nThevalueoffunction
w
is:%lf\nrfun(n));
16
39.下列給定程序中,函數(shù)fun()的功能是:從N個字符串中找出最長的
那個中,并將其地址作為函數(shù)值返回。各字符串在主函數(shù)中輸入,并放
入一個字符串?dāng)?shù)組中。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<string.h>
#include<stdio.h>
#defineN5
#defineM81
/*************found**************/
fun(char(*sq)[N])
{inti;char*sp;
sp=sq[O];
for{i=0;i<N;i++)
if(strlen(sp)<strlen(sq[i]))
sp=sq[i];
/*************found**************/
returnsq;
)
main()
{charstr[N][M],*longest;inti;
printf("Enter%dlinesAn",N);
for(i=0;i<N;i++)gets(str[i]);
printf("\nThe%dstring:\n",N);
for(i=0;i<N;i++)puts(strfi]);
longest=fun(str);
printf("\nThelongeststring:\n");
puts(longest);
)
40.下列給定程序中函數(shù)fun()的功能是:將長整型數(shù)中每一位上為奇數(shù)
的數(shù)依次取出,構(gòu)成一個新數(shù)放在沖。高位仍在高位,低位仍在低位。
例如當(dāng)s中的數(shù)為87653142時,t中的數(shù)為753lo
請改正函數(shù)fun。中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<conlo.h>
voidfun(longs,long*t)
{intd;
longsl=l;
t=0;
while(s>0)
{d=s%10;
/*************found**************/
if(d%2==0)
{*t=d*sl+*t;
sl*=10;
)
s/=10;
)
}
main()
{longs,t;
clrscr();
printf("\nPleaseenters:");scanf("%ld",&s);
fun(s,&t);
printf("Theresultis:%ld\n",t);
}
五、程序改錯題(2題)
41.下列給定程序中函數(shù)fun的功能是:將注所指字符串中的小寫字母全
部改為對應(yīng)的大寫字母,其他字符不變。
例如,若輸入“Ab,cD”,則輸出“AB,CD”。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:部分源程序在文件MODH.C中,不得增行或刪行,也不得更改
程序的結(jié)構(gòu)!
tinclude<stdio.h>
tinclude<string,h>
char?fun(chartl[])
I
in!i;
for(i=0;tt[i]ji??)
/??????????found???????????/
if((,?><=tt[i])IKtt[i]<=V))
/found???????????/
ti[i]?=32;
retuni(tt);
I
tnain()
chartt[81];
printf(*\nP1easeenterastring;");
?);
printf("\nTheresultstringis:\n%a",fiin(tt));
42.下列給定程序中,函數(shù)proc()的功能是:將m(lWmglO)個字符串反
著連接起來,組成一個新串,放入pt所指字符串中,例如,把“ab、
cd、ef9"3個字符串反著串連起來,結(jié)果是efgcdab。
請修改程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main。函數(shù),不得增行或者刪行,也不得改變程序的
結(jié)構(gòu)!
試題程序:
£induceVzdlib.hA
SincitUcVconio.h>
9indirtk<?innc.
■indude<Mdto.h>
voidproc<c>Mirwtr[J[!0].mtm?clwif?pii
mi
lor《k■BHk>01h
q=strlesCstifk])i
j+-q5
,OT<l=0.yQii一?)
frt+—qi
pt[O]?O|
//????foynd????
void>
mtm?bi
charzr[lQ)[10].p[120].
w/ntvmC"CLS")i
*\nHe*K<tiicrma")<
9canl(*K<t*
plinth*\nPle*jbcenterSdMnnc(\t>s?m)i
(ordi-OtlKCmih^^)
cets<?lt(bj)i
proc<Mr?tn?p)i
ew
pirintfC\nThrremitu2%?\B.p)s
六、操作題(2題)
43.有以下程序,請在一處填寫正確語句。使程序可正常編譯運行。
#include
/
mairl();
{doublex,y,(*p)():
scanf("%If%IF',&x,&y);
P=avg;
printf("%f\rT,(*p)(x,y));
)
doubleavg(doublea,doubleb)
{retum((a十b/2):
44.以下程序的運行結(jié)果是【】。
#include<stdio.h>
longfib(intg)
{switch(g)
{case0:return0;
case1:
case2:return1;}
return(fib(g-l)+fib(g-2));}
main()
{longk;
k=fib(5);
printf("k=%51d\n",k);}
參考答案
1.3123,1,2解析:分析程序,第一個if語句,a=l,b=2,控制條件a<b
成立,則交換a、b的值,此時a=2,b=lo第二個if語句,a=2,c=3,
控制條件a<c成立,則交換a、c的值,此時a=3,c=2o
2.線性結(jié)構(gòu)線性結(jié)構(gòu)解析:與棧類似,隊列也是線性表,也町以采用鏈
式存儲結(jié)構(gòu)。
3.邊值分析法邊值分析法解析:本題考查了黑箱測試的方法。黑箱測試
方法完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征,而只是根據(jù)程序功能導(dǎo)出
測試用例。常用的黑箱測試有等價分類法、邊值分析法、因果圖法和錯
誤推測法。
4.24682,4,6,8解析:子函數(shù)fun()的功能是將數(shù)組a中的元素都自加一
遍,然后仍然將結(jié)果存在原數(shù)組中,其實就是將數(shù)組a的每個元素都變
為原來的2倍,然后輸出。在主程序中首先通過intfun。定義了子函數(shù)
fun(),然后再調(diào)用fun()o
5.53355335解析:函數(shù)swap1的形參是數(shù)組,故形參的改變能夠影
響實參,所以執(zhí)行完swapl(a)后,a[0]=5、a[l]=3;函數(shù)swap2的形參
是簡單變量,故形參的改變不能夠影響實參,所以執(zhí)行完swap2(b)后,
b[0]=3、b[l]=5;正確答案為5335。
6.45994599解析:a、b、c的初值為3、4、5,t的初值為99,if語句
的條件"b<a&&b<c”為假,不執(zhí)行廿a;",但緊隨其后的“a=c;c=t;"
與此if語句無關(guān),仍被執(zhí)行。此時a的值為5,b的值仍是4,c的值為
99。再執(zhí)行第二個if語句,由于此時“a<c&&b<c”為真,執(zhí)行“t=b;”,
緊隨其后的“b=a;a=t;”與此if語句無關(guān),也被執(zhí)行。此時a的值為4,
b的值是5,c的值為99°因此輸出結(jié)果是:4599。
7.100300400100300400解析:scanf的格式控制字符串中,“*”表示跳
過對應(yīng)的輸入數(shù)據(jù),所以第二個輸入數(shù)200被跳過去了,只有100,300,
400三個數(shù)被從鍵盤輸入了進來。
8.67G67G解析:由于\'5\'-\'3\'=2,所以a=\'A\'+\'5\'-\'3\'=\'C\',按%d格式
輸出\'CV的ASCII碼為67\'6\'-\'2\'=4,b=a+\'6\'-\,2\,=\'C\'+4=\'G\',
按‘%c格式輸出為VG\'。
9.k=p;k=p;解析:要找數(shù)組中最大元素的下標,首先預(yù)設(shè)數(shù)組首元素下
標為臨時最大元素的下標,從首元素開始順序向后繼元素逐一比較,當(dāng)
發(fā)現(xiàn)當(dāng)前元素比臨時最大元素更大時,就用當(dāng)前元素的下標更新臨時最
大元素下標,直至比較了數(shù)組的全部元素后,臨時最大元素下標就是數(shù)
組中最大元素的下標。程序中,變量k用于存儲臨時最大元素下標,變
量p控制順序比較的循環(huán)變量。當(dāng)發(fā)現(xiàn)當(dāng)前元素s[p]比臨時最大元素s[k]
更大時,用P更新匕所以在下劃線處應(yīng)填入代碼“k=p;”。
10.11解析:用“&&”連接兩個表達式時,若第1個表達式的值為"假”,
則運算結(jié)果與第2個表達式無關(guān),此時第2個表達式將不再進行計算。
本題中第1個表達式“j=!ch”值為0,所以第2個表達式i++將不再進行
計算,i的值為lo
11.C
12.C解析:解答本題,首先要明白在對指針進行加、減運算的時候,數(shù)
字“1”不是十進制的數(shù)“1”,而是指T個存儲單元長度,而1個存儲單元
長度占多少存儲空間,應(yīng)該視具體情況而定。如果基本類型是int型,
移動1個存儲單元的長度就是位移2個字節(jié),如果基本類型是float型,
移動1個存儲單元的長度就是位移4個字節(jié)。所以p+13所指向的數(shù)組
元素的地址:300H+(13*上標)4)H=352H。
13.B解析:指針數(shù)組也是一種數(shù)組,所有有關(guān)的概念都適用于它。但它
與普通的數(shù)組又有區(qū)別,它的數(shù)組元素是指針類型,只能用來存放地址。
其格式為:存儲類型數(shù)據(jù)類型*指針數(shù)組名[長度U,其含義為:定義了
一個長度1的數(shù)組,其中數(shù)組元素為相應(yīng)存儲類型的指針,對比定義可
知,選項A、C和D都不正確,所以,4個選項中選項B符合題意。
14.D
各種排序方法中最壞情況下需要比較的次數(shù)分別為眉泡排序n(n-
1)/2、快速排序n(n-1)/2、簡單插入排序n(n-l)/2>希爾排序0(nl.5)、
簡單選擇排序n(n-l)/2>堆排序O(nlog2n)
15.D軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程,測試要以查找錯誤為
中心,而不是為了演示軟件的正確功能,也不是為了評估軟件或改正錯
誤,因此本題答案為D)。
16.A
17.A
本題主要考查結(jié)構(gòu)體數(shù)組的使用。x[i].num為結(jié)構(gòu)體x[i]中的hum成
員,x[i].num⑵是結(jié)構(gòu)體x[i]中name成員的第3個元素。程序執(zhí)行循
環(huán)過程時:第1次循環(huán),i=l?輸出x[i].num,x[l].name[2]的值;
第2次循環(huán),i=2,輸出x[2].num,x[2].name⑵的值,即3N;第3
次循環(huán),i=3,輸出X[3].hum,x[3].name⑵的值,即4A;第4次
循環(huán),i=4,輸出x[4].num,x[4].name[2]的值,即5U。
18.D
19.B
子函數(shù)fun(intx,inty),將變量m和i聲明為局部靜態(tài)變量,因此第1
次調(diào)用主函數(shù)后,局部靜態(tài)變量m和i的值為5和3,第1次函數(shù)調(diào)用
結(jié)束時,它們的值不釋放保持不變,所以第2次調(diào)用時,局部靜態(tài)變
量m和i的初始值分別為5和3,即在執(zhí)行“i+=m+l”時,i的值為9,
因此最終m的值為11。
20.C解析:算法的執(zhí)行效率與數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)都有很緊密的
關(guān)系。算法的空間復(fù)雜度是指執(zhí)行該算法需要的內(nèi)存空間,并非算法程
序中指令的條數(shù)。算法一般應(yīng)該具有以下4個特征:可行性、確定性、
有窮性和擁有足夠情報。其中,有窮性是指算法必須能在執(zhí)行有限個步
驟之后終止,否則可能失去實際意義。
21.
【解析】首先定義一個變量來存放表達式的和.根據(jù)題目中提供的多項
式,通過n次循環(huán)來求出n項的和。最后把所求得的和返回到主函數(shù)當(dāng)
中。
22.
【解析】要求出數(shù)組中最小的數(shù),需要比較數(shù)組中的每一個元素。將最
小的元素的下標存放在變量k中,通過形參返回到主函數(shù)中。
23.\n#include'stdio.h'
\nmain
\n{inti,j,a[10];
\nfor(i=1;i<=10;i++)
\nscanf('%d',&a[i]);
\nfor(i=0;i<9=;i++)
\nfor(j=9;j>i;j—)
\nif(afj-l]{t=a[j-l];
\na[j-l]=a[j];
\na[j]=t;}
\nfor(i=0;i<10;i++)
\nprintf('%d',a[i]);
\n}
\n
24.
voidstrcpy(char*s,char*t)/*copyttos*/
{while((*s++=*t++)!='\0'))|
)
25.
【解析】題目中要求不能用C語言中提供的求字符串長度的函數(shù),可以
通過移動字符串指針來計算字符串的長度。定義2個變量分別存放2個
字符串的長度,最后比較2個字符串的長度,返回相對較長的那一個字
符串。
26.voidproc(chararr[M][N],char*b)
(
inti,j,k=0;
for(i=0;i++)//i表示其行下標
for(j=O;arr[i][j]!=\0;j++)//由于每行的個數(shù)不等,因此用a[i][j]!=
'。來作為循環(huán)結(jié)束
的條件
b[k++]=arr[i][j];//把二維數(shù)組中的元素放到b的一維數(shù)組中,
b[k]=\0;//最后把6賦\。作為字符串結(jié)束的標志
)
【解析】字符串?dāng)?shù)組中每一行都是一個一個完整的字符串,其結(jié)束標
志為\0。因此通過字符串的結(jié)束標志來判斷每一個字符串是否結(jié)
束,將字符串?dāng)?shù)組中的所有字符串均賦值新的一維數(shù)組b來完成字符
串的合并。
27.1voidfun(inta,intb,long*c)
2{,
3*c=(a%10)*1000+(b%I0)*100+(a/10)*10+(b/10);
4)
本題給出兩個兩位數(shù)的正整數(shù)。分別取出兩個數(shù)各位上的數(shù)字,再按
條件組成一個新數(shù)。取整數(shù)a十位數(shù)的方法為a/10,取整數(shù)a個位數(shù)
的方法為a%10o同理可取出整數(shù)b的個位數(shù)和十位數(shù)。
28.
【解析】本題考查的是結(jié)構(gòu)體類型、指針型變量、鏈表和if語句等知識
點。需要用for循環(huán)遍歷鏈表中的每一個結(jié)點,用判斷語句比較結(jié)點數(shù)
據(jù)域的大小??梢酝ㄟ^while循環(huán)實現(xiàn)對最大成績的查找,具體步驟為
遍歷鏈表遇到比max大的值(max<h->s)則賦值給max,max=h->so需要
注意的是,h是指向結(jié)構(gòu)體類型的指針變量,引用它指向的結(jié)構(gòu)體的成
員時,要用指向運算符"一>''。
29.\n\tvoidproc(intm,int*a,int*n)
\n{
\ninti,j=0;
\nfor(i=l;i<=m;i++)//進行m次循環(huán)
\nif(i%7==0||i%11==0)//能被7或11整除的所有整數(shù)
\na[j++]=i;//符合條件的數(shù)放在數(shù)組a中
\n*n=j;//返回這些數(shù)的個數(shù)
\n}
\n【解析】本題需要先判斷1?m每一個整數(shù)能否被7或11整除,然
后將符合條件的整數(shù)放在數(shù)組a中,最后將符合條件的數(shù)的個數(shù)通過
形參n返回主函數(shù)。\n
30.
【解析】要刪除字符串尾部的所有*,只要將尾部所有*中的第一個改為
字符串結(jié)束符即可。首先,將字符串指針移動到字符串最后一個位置,
檢查最后一個字符,是*則將指針前移,否則將指針后移一個位置賦值
作為結(jié)束符。
31.(1)錯誤:voidfun(chars[]intn)正確:voidfun(char*sintn)(2)錯誤:
s=p;正確:p=s;(3)錯誤:i++;正確:i++;p++;(4)錯誤:a[i]=0;
正確:a[i]='\0';⑴錯誤:voidfun(chars[],intn)正確:voidfun(char*s,
intn)\r\n⑵錯誤:s=p;正確:p=s;\r\n(3)錯誤:i++;正確:i++;p++;
\r\n(4)錯誤:a[i]=0;正確:a[i]='\\0';解析:在本題中,s是數(shù)組名,
代表數(shù)組首地址,在編譯時對s數(shù)組分配了一段內(nèi)存單元,因此在程序
運行期間s是一個常量,不能再被賦值。因此s=p是錯誤的,如果把“char
s[L”改成“char*s;”,則程序正確。此時s是指向字符數(shù)組的指針變量,
p=s是合法的,它將字符串的首地址賦給指針變量p,然后在printf函數(shù)
語句中輸出字符串s。因此,應(yīng)當(dāng)弄清楚字符數(shù)組與字符指針變量用法
的區(qū)別。
32.(1)錯誤:p=j正確:p=;⑵錯誤:p=j;正確:p=i;⑴錯誤:p=j\r\n正
確:p=;\r\n⑵錯誤:p=j;\r\n正確:p=i;解析:題中提到按“從小到大”
的順序排序,這類題目都可以用選擇排序法,即從后N個比較過程中,
選擇一個最小的與第一個元素交換,以此類推,即用第二個元素與后N-
1個進行比較,并進行交換。
錯誤1:此處錯誤比較明顯,p=j后面應(yīng)加分號。
錯誤2:根據(jù)選擇排序法的思路,此處應(yīng)將i賦給po
33.(1)錯誤:if(i%k!=O)正確:if(i%k=0)(2)錯誤:if(k<i)正確:if(k>=i)(l)
錯誤:if(i%k!=0)正確:if(i%k=0)\r\n⑵錯誤:if(k<i)正確:if(k>=i)解
析也許剛接觸C語言的學(xué)習(xí)者對素數(shù)的概念不清楚,在這里說明一下,
素數(shù)就是質(zhì)數(shù),本題的任務(wù)是隨便輸入一個整數(shù)m,然后在m的后面尋
找緊跟m的一個質(zhì)數(shù),作為函數(shù)值返回。
for(i=m+l;;i++){
是從m后面的一位開始循環(huán),將m后面一位的值賦予io然后;我們依
次判斷m后面的一位是否為素數(shù)。
for(k=2;k<i;k++)
if(i%k==0)
是一個簡單的數(shù)學(xué)判斷問題,判斷i被賦予的值與k的余數(shù)是否為零。
34.(1)錯誤?while(k>=2)&&(mc<6)正確:while((k>=2)&&(mc<6))(2)
錯誤:if((k%7=0)||(k%ll=0))正確:if((k%7==0)||(k%ll=0))(3)錯誤:
m=k正確:m=m+k;⑴錯誤:while(k>=2)&&(mc<6)正確:while((k
>=2)&&(mc<6))\r\n(2)錯誤:if((k%7=0)||(k%l1=0))正確:
if((k%7==0)||(k%l1=0))\r\n(3)錯誤:m=k
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 敏捷開發(fā)方法論2025年考試試題及答案
- 2025年軟考軟件設(shè)計師有效試題及答案匯編
- 法學(xué)概論從入門到精通的試題及答案
- 管理者的時間與精力分配計劃
- 會計軟件應(yīng)用能力提升計劃
- 積極心理與職業(yè)幸福感提升計劃
- 供應(yīng)鏈優(yōu)化計劃
- 城市交通需求管理重點基礎(chǔ)知識點
- 美術(shù)班級文化建設(shè)活動計劃
- 2024年陜西師范大學(xué)輔導(dǎo)員考試真題
- 新高考2025屆高考數(shù)學(xué)二輪復(fù)習(xí)專題突破精練第9講函數(shù)中的整數(shù)問題與零點相同問題學(xué)生版
- 中華民族共同體概論教案第九講-混一南北與中華民族大統(tǒng)合
- 旅游經(jīng)濟專業(yè)知識和實務(wù)經(jīng)濟師考試(中級)試卷及解答參考
- 企業(yè)間無償借款合同模板
- 財務(wù)管理實務(wù)(浙江廣廈建設(shè)職業(yè)技術(shù)大學(xué))知到智慧樹章節(jié)答案
- 2022-2023學(xué)年廣東省東莞市高一(下)期末地理試卷
- 酒店食品安全知識培訓(xùn)
- 生活水泵房管理制度
- 初三班級學(xué)生中考加油家長會課件
- 市人民法院公開招考審判輔助人員考試題及答案
- 幼兒園 中班語言繪本《章魚先生賣雨傘》
評論
0/150
提交評論