




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2023年廣東省深圳市全國計(jì)算機(jī)等級(jí)考試
C語言程序設(shè)計(jì)真題(含答案)
學(xué)校:班級(jí):姓名:考號(hào):
一、2.填空題(10題)
1.
在進(jìn)行模塊測試時(shí),要為每個(gè)被測試的模塊另外設(shè)計(jì)兩類模塊:驅(qū)動(dòng)
模塊和承接碟塊,其中的作用是將測試數(shù)據(jù)傳送給被測試的模
塊,并顯示被測試模塊所產(chǎn)生的結(jié)果。
2.下面程序的功能是將一個(gè)字符串str的內(nèi)容顛倒過來,請(qǐng)?zhí)羁铡?/p>
#include<string.h>
main()
{intij,【];charstr[]={"1234567");
for(i=0,j=strlen(str)[];i<j;i++,j-)
{k=str[i];str[i]=str[j];str[j]=k;}
printf("%s\n",str);)
3.設(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)<O)strcpy(t,s);
)
printf("%s\n",t);
)
程序運(yùn)行后,從鍵盤上輸入(<CR>代表回車符):CDEF<CR>BADEF
<CR>QTHRG<CR>,則程序的輸出結(jié)果是。
4.設(shè)有下列的程序段:
charstr[]="Hello";
char*ptr;
ptr=-str;
執(zhí)行上面的程序段后,*(ptr+5)的值為o
5.已知字符A的ASCII碼值為65,以下語句的輸出結(jié)果是【】。
charch='B';
printf("%c%d\n",ch,ch);
6.已知a=l,b=2,則表達(dá)式(a&B)&b||b的結(jié)果為()。
7.沒有char,a,b;,若要通過a&d運(yùn)算屏蔽掉a中的其他位,只保留第2
位和第8位(右起為第1位),則b的二進(jìn)制是【】。
8.以下程序運(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");
)
9.以下程序的輸出結(jié)果是【】。
voidfun()
{staticinta;
a+=2;
printf("%d",A);
)
main()
{intcc;
for(cc=1;cc<=4;cc++)fun();
printf("\n");
10.以下sstrcpyO函數(shù)實(shí)現(xiàn)字符串復(fù)制,即將t所指字符串復(fù)制到s所指
向內(nèi)存空間中,形成一個(gè)新的字符串s。請(qǐng)?zhí)羁铡?/p>
voidsstrcpy(char*s,char*t)
{while(*s++=);}
main()
{charstrl[100],str2[]="abcdefgh";
sstrcpy(strl,str2);
printf("%s\n",strl);
二、單選題(10題)
11.下面描述中,不屬于軟件危機(jī)表現(xiàn)的是()
A.軟件過程不規(guī)范B.軟件開發(fā)生產(chǎn)率低C.軟件質(zhì)量難以控制D.軟件
成本不斷提高
12.以下敘述中正確的是o
A.用C程序?qū)崿F(xiàn)的算法必須要有輸入和輸出操作
B.用C程序?qū)崿F(xiàn)的算法可以沒有輸出但必須要輸入
C.用C程序?qū)崿F(xiàn)的算法可以沒有輸入但必須要有輸出
D.用C程序?qū)崿F(xiàn)的算法可以既沒有輸入也沒有輸出
13.
(13)數(shù)字字符0的ASCII值為48,運(yùn)行下列程序的輸出結(jié)果是().
main()
{chara=T,b=2;
primR"%c,1bH);
printK"%d\n",b-a);
)
A)3,2B)50,2C)2,2D)2,50
14.已知字母A的ASCII碼為十進(jìn)制的65,下面程序main(){char
chl,ch2;chl='A'+'5'-'3';ch2='A'+'6'-'3';printf("%d,%c\n",chl,ch2);}
的輸出是_________o
A.67,DB.B,CC.C,DD.不確定的值
15.在黑盒測試方法中,設(shè)計(jì)測試用例的主要根據(jù)是
A.程序外部功能B.程序內(nèi)部邏輯C.程序數(shù)據(jù)結(jié)構(gòu)D.程序流程圖
16.
(31)以下有關(guān)宏的描述不正確的是().
A)宏定義不做語法檢查B)雙引號(hào)中出現(xiàn)的宏名不進(jìn)行替換
C)宏名無類型D)宏名必須用大寫字母表示
17.一個(gè)棧的初始狀態(tài)為空?,F(xiàn)將元素1、2、3、4、5、A、B、C、
D、E依次入棧,然后再依次出棧,則元素出棱的順序是()。
A.A.12345ABCDEB.EDCBA54321C.ABCDE12345D,54321EDCBA
18.以下程序的輸出結(jié)果是____o#include<stdio.h>main(){int
a=200;#definea100printf("%d",a);#undefaprintf("%d",a);}
A.200100B.100100C.100200D,200200
19.下面判斷正確的是
A.char*a="china";等價(jià)于char*a;*a="china";
B.charstr[5]={"china");等價(jià)于charstr[]={"china”};
C.char*s="china";等價(jià)于char*s;s="china";
D.charc[4]="abc",d[4]="abc";等價(jià)于charc[4]=d[4]="abc";
20.程序中若有如下說明和定義語句
charfun(char*);
main()
(
char*s="one",a[5]={0},(*fl)()=fun,ch;
以下選項(xiàng)中對(duì)函數(shù)Fun的正確調(diào)用語句是o
A.(*fl)(a);B.*fl(*s);C.fun(&a);D.ch=*fl(s);
三、程序設(shè)計(jì)題(10題)
21.規(guī)定輸入的字符串中只包含字母和*號(hào)。編寫函數(shù)fun,其功能是:
刪除字符串中所有的*號(hào)。編寫函數(shù)時(shí),不得使用C語言提供的字符串
函數(shù)。
例如,字符串中的內(nèi)容為“****A*BC*DEF*G****",刪除后,字符串
中的內(nèi)容應(yīng)當(dāng)是“ABCDEFG”。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)maini)函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)
中填入你編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
voidfun(chara)
(
voidmain
(
chars[81];
print{("Enterastring:\n");
gets(s):
fun(S);
printf("Thestringafterdeleted:\n");
puts(s);
)
22.請(qǐng)編寫一個(gè)函數(shù),用來刪除字符串中的所有空格。例如,輸入
abcdefgh,則輸出為abcdefgho注意:部分源程序給出如下。請(qǐng)勿改
動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)
中填入所編寫的若干語句。試題程序:
UVwtdtO.
3mrtudr<ctypc.
『snclixivVenicKh>
=r/irludrVwdhb.h;*
“”dprocXrhaf?z八
voidm*in4)
Huiratrftlji
?yutemC*CLS*)a
w
pritiifflnpyiA?tnngs?
fMitVxr》i
proc<ur)i
prifitf(*????lriXNn'.wr),
23.編寫函數(shù)fun,其功能是:根據(jù)以下公式求冗的值(要求精度0.0005,
即某項(xiàng)小于0.0005時(shí)停止迭代)。
n.I1x21x2x3Ix2x3x4Ix2x???xn
233x53x5x73x5x7x93x5x???x(2n+I)
程序運(yùn)行后,若輸入精度
0.0005,則程序應(yīng)輸出為3.14...
注意:部分源程序在文件PROG1.C中。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括
號(hào)中填入你編寫的若干語句。
Mittcludt*<sldi<?.h>
Mincludr<math,h>
doublefun(doublecps)
main()
dauhlex;voidNONO();
jirinlf("Input,件:;
^canf(*%IP,&x);printf(M\nepj?=%If.PI=%I八n".x,fun(x));
NONO();
voidNONO()
1/?本函數(shù)用『打開文件.輸入數(shù)據(jù),調(diào)用函數(shù)出數(shù)據(jù),關(guān)冏文件;?
FILE?fp.?wf;
inii;
diMiblcx;
fp=fopcn("in.dal*rw);
wfsfopcn(°out.daf*,**w*)?
!br(i=0;i<10;i^>)|
fncanfffp."%獷.&x);
fprintf(wf."%lf\n*.fun(x));
friose(fp);
fc|d6e(wfk;
24.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方
案的項(xiàng)目中包含一個(gè)源程序文件progl.c。在此程序中,定義了NxN的
二維數(shù)組,并在主函數(shù)中賦值。請(qǐng)編寫函數(shù)fun(),其功能是求出數(shù)組
周邊元素的平均值并將其作為函數(shù)值返回給主函數(shù)中的s。例如,若a
數(shù)組中的值為
01279
19745
23831
45682
59141
則返回主程序后s的值應(yīng)為3.375o
注意:部分源程序在文件progl.c中。
請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花
括號(hào)中填入你編寫的若干語句。
試題程序:
1#include<stdio.h>
2#include<conio.h>
3#include<stdlib.h>
4#defineN5
5doublefun(intw[][n])
6{
7
8}
9voidmain()
10{
11FILE*wf;
12inta[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,
13inti,j;
14doubles;
15system("CLS");
16printf("***Thearray***\n");
17for(i=0;i<N;i++)
18{for(j=0;j<N;j++)
19{printf("%4d",a[i][j]);}
20printf("\n");
21}
22s=fun(a);
23printf("***TheResult***\n");
24printf("Thesumis:%lf\n",s);
25/******************/
26wf=fopen("out.dat","w");
27fprintf(wf,"%if',s);
28fclose(wf);
29/******************/
30}
25.m個(gè)人的成績存放在score數(shù)組中,請(qǐng)編寫函數(shù)proc(),它的功
能是:將高于平均分的人數(shù)作為函數(shù)值返回,將高于平均分的分?jǐn)?shù)放
在up所指的數(shù)組中。例如,當(dāng)score數(shù)組中的數(shù)據(jù)為100,80,76,
60,59,48,43,35,59時(shí),函數(shù)返回的人數(shù)應(yīng)該是4,up中的數(shù)據(jù)
應(yīng)為100,80,76,95o注意:部分源程序給出如下。請(qǐng)勿改動(dòng)
main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)
中填入所編寫的若干語句。試題程序:
9include<COOKX.
SinHi>de<>tdao?
=indudcVNcn<.Ii>
impcocCiiM?cort{2?intm?int
〃?同高干不均分立人tt
vowaurniC)
iati?n?up(9j.
ini?core(9)—《IOO.8O.76.6O.59.
4S*43*3S?9S11
*01^*)t
proc(score*9.up)i
\niothe*Averagewcorrsfr:?ti)>
ioc(i?0N<ii.i++)
prmd??%d"?I<
26.編寫函數(shù)fun,其功能是:將s所指字符串中除了下標(biāo)為奇數(shù),同時(shí)
ASCH碼值也為奇數(shù)自q字符之外。
其余所有字符全部刪除,串中剩余字符所形成的一個(gè)新串放在所指的數(shù)
組中。
例如,若s所指字符串的內(nèi)容為“ABCDEFG12345",其中字符A的ASCII
碼值為奇數(shù),但所在元素的
下標(biāo)為偶數(shù),因此需要?jiǎng)h除;而字符1的ASCII碼值為奇數(shù),所在數(shù)組
中的下標(biāo)也為奇數(shù),因此不應(yīng)當(dāng)刪除,
其他依此類推。最后t所指數(shù)組中的內(nèi)容應(yīng)為“135”。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括
號(hào)中填入你編寫的若干語句。
試題程序:
#1ncltide<stdio.k>
#include<3tring.h>
voidfun(char*s,chart[D
I
)
main()*
(
chars(100],t[100];
printff'XnPIeaseenterstrings:n);
scanf("%s",§X
加n(s,0;
printf(n\n,nieresultid:%s\n,f4);
I
27.下列程序判斷字符串s是否對(duì)稱,對(duì)稱則返回1,否則返回0;如
f("abba")返回1,f("abab")返回0。
28.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方
案的項(xiàng)目中包含一個(gè)源程序文件progl.Co在此程序中,編寫函數(shù)fun(),
其功能是將s所指字符串中除了下標(biāo)為奇數(shù)同時(shí)ASCII值也為奇數(shù)的字
符之外的其余所有字符全部刪除,字符串中剩余字符所形成的一個(gè)新字
符串存放在t所指的數(shù)組中。
例如,若s所指字符串的內(nèi)容為“ABCDEFG12345",其中字符A的
ASCII值為奇數(shù),但所在元素的下標(biāo)為偶數(shù),因此需要?jiǎng)h除;而字符1
的ASCII值為奇數(shù),所在數(shù)組中的下標(biāo)也為奇數(shù),因此不應(yīng)當(dāng)刪除,
其他依此類推。最后t所指數(shù)組中的內(nèi)容應(yīng)為“135”。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花
括號(hào)中填入你編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
voidfun(char*s,chart[])
(
)
main()
(
chars[100],t[100];
printf("\nPleaseenterstrings:");
scanf("%s”,s);
fun(s,t);
printf("\nTheresultis:%s\n”,t);
29.請(qǐng)編寫函數(shù)proc(),其功能是:計(jì)算并輸出下列多項(xiàng)式值。S=(1+1
/2)+(1/3+1/4)+...+(1/(2n-l)+1/2n)例如,若輸入10,
則輸出為S=3.597740on的值要求大于1但不大于100。注意:部分
源程序給出如下。請(qǐng)勿改動(dòng)函數(shù)main()和其他函數(shù)中的任何內(nèi)容,
僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語句。試題程序:
sinciudch>
liotaMcproc<mtn)
voedVUIMI<)
itilm
double
printf<*\n1npuin.*)i
procin)i
pniMftSl\?**>><
30.編寫函數(shù)fun(),其功能是計(jì)算:
S作為函數(shù)值返回。
在C語言中可調(diào)用log(n)函數(shù)求ln(n)olog函數(shù)的引
用說明為:doublelog(doublex)。
例如,若m的值為20,則如n()函數(shù)值為6.506583。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括
號(hào)中填入你編寫的若干語句。
試題程序:
?include<川dhhh>
ftmdudcVconao.h>
3tncltidkVstdio,h>
9rndudr<atKh>
ifooblr(wfi<mtm>
voidnuiiti()
“,tern(-CLS*)i
prtfiif<sK(\fi"?fttM2。》)i
四、2.程序修改題(10題)
31.下列給定程序中函數(shù)fun()的功能是計(jì)算1/n!的值。
例如:給n輸入5,則輸出0.0083330
請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<conio.h>
/*********found*************/
intfun(intn)
{doubleresult=1.0;
if(n==0)
return1.0;
while(n>1&&n<170)
/**********^Qund************/
result*=n++;
result=l/result;
returnresult;
main()
intn;
printf("InputN:");
scanf("%d",&n);
printf("\nl/%d!=%If\n",n,fun(n));
32.下列給定程序中,函數(shù)fun()的功能是:根據(jù)整型形參n,計(jì)算如下
公式的值。
Al=l,A2=1/(1+A1),A3=l/(1+A2),An=(l/(1+A(n-1))
例如,若p=10,則應(yīng)輸出0.617977。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)mah函數(shù),不得增行或刪行,也不得更改程序的蛀構(gòu).
試題程序:
#include<conio.h>
#include<stdio.h>
/**************found********************/
ihtfun(ihtn)
{floatA=l;inti;
/**************foudn********************/
for(i=2;i<n;i++)
A=1.0/(i+A);
returnA;
main()
{intn;
clrscr();
printf("\nPleaseentern:");
$canf("%d",&n);
printf("A%d=%lf\n",n,fun(n));
33.下列給定程序中函數(shù)fun()的功能是;從低位開始取出長整型變量s
中奇數(shù)位上的數(shù),依次構(gòu)成一個(gè)新數(shù)放在t中。例如,當(dāng)s中的數(shù)為
4576235時(shí),t中的數(shù)為4725。
請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<conio.h>
/************found*************/
intfun(longS,long*t)
longsi=10;
*tiS%10;
while(s>0)
/*************found*************/
s=s%100;
*t=S%10*Sl+*t;
sl=sl*10;
main()
longS,t;
clrscr();
printf("\nPIeaseenterS:");
scanf("%ld”,&s);
fun(S,&t);
printff'Theresultis:%ld\n”,t);
)
34.下列給定程序中,函數(shù)fun()的功能是根據(jù)整型形參m,計(jì)算如下公
式的值。
y=1-1/(2X2)+1/(3X3)-1/(4x4)+...+(-l)(m+l)/(mxm)
例如:m中的值為5,則應(yīng)輸出0.838611o
請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
doublefun(intm)
{doubley=1.0;
/**********^Qund*************/
intj=l;
inti;
for(i=2;i<=m;i++)
y+=l/(i*i);
return(y);
}
main()
(
intn=5;
clrscr();
printf("\nTheresultis%lf\n",fun(n));
}
35.下列給定程序中,函數(shù)fun()的功能是:將m(lSmS10)個(gè)字符串連接
起來,組成一個(gè)新串,放入pt所指字符串中,例如:把3個(gè)串a(chǎn)bc,CD,
EF串聯(lián)起來,結(jié)果是abcCDEF。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<string.h>
#include<stdio.h>
/*************found**************/
intfun(charstr[][10],intm,char*pt)
{intk,q,i,j=O;
for(k=0;k<m;k++)
{q=strlen(str[k]);
j+=q;
for(i=0;i<q;i++)
pt[i]=str[k,i];
pt+=q;
pt[O]=0;
)
Pt-=j;
)
main()
{intm,h;
chars[10][10],p[120];
clrscr();
printf("\nPleaseenterm:");
scanf("%d",&m);gets(s[0]);
printf("\nPleaseenter%dstring:In",m);
for(h=0;h<m;h++)gets(s[h]);
fun(s,m,p);
printf("\nTheresultis:%s\n",p);
)
36.給定程序MOD11.C中函數(shù)fun的功能是:先從鍵盤上輸入一個(gè)3
行3列矩陣的各個(gè)元素的值,然后輸出主對(duì)角線元素之和。
請(qǐng)改正函數(shù)fun中的錯(cuò)誤或在橫線處填上適當(dāng)?shù)膬?nèi)容并把橫線刪除,使
它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
1?include<stdio.h>
2finclude<string.h>
3voidfun()
4(
5inta[3][3],sum;
6intirj;
7
8
9printf("Inputdata:");
10for(i-0;i<3;if>)
11{for(j-0;j<3;j++)
12/**w******found**********/
RR
13scanf(%d,a[i](j]);
14
15for(i-0;i<3;i++)
16sum=sum+a(i)[i];
ww
17printf(Sum?%d\nrsum);
18}
19main()
20
21fun();
22
37.給定程序M0D11.C中函數(shù)fun的功能是:應(yīng)用遞歸算法求形參a
的平方根。求平方根的迭代公式如下:
xl=-(x0+—)
2x0
例如,a為2時(shí),平方根值為:1.414214。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
1#include<stdio.h>
2#include<math.h>
3/****?*???*found*?***??***/
4doublefun(doublea,dounlexO)
5{doublexlry;
6xl?(x0>a/xO)/2.0;
7/**********found****??**??/
8if(fabs(xl-xo)>0.00001)
9y=fun(a,xl);
10elsey-xl;
11returny;
12}
13main()
14{doublex;
15printf("Enterx:*);scanf
16printf("Thesquarerootof%lf
w
is%lf\nrxrfun(xr1.0));
17
38.給定程序MOD11C中函數(shù)fun的功能是:對(duì)N名學(xué)生的學(xué)習(xí)成績,
按從高到低的順序找出前m(mS10)名學(xué)生來,并將這些學(xué)生數(shù)據(jù)存放在
一個(gè)動(dòng)態(tài)分配的連續(xù)存儲(chǔ)區(qū)中,此存儲(chǔ)區(qū)的首地址作為函數(shù)值返回。
請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
1tinclude<stdio.h>
2finclude<stdlib.h>
3#include<string.h>
4*defineN10
5typedefstructss
6{charnum[10];
7ints;
8}STU;
9STU?fun(STUa[],intm)
10(STUb[N],*t;
11int
12/**********found*?******?*/
13t-(STU*)calloc(sizeof(STU)rm)
14for(i-0;i<N;;
15for(k?0;k<m;
16{fori<N;i++)
17if(b[i].s>b(j].s)j-i;
18/**********found**********/
19t(k)-b(j);
20b(j].s-0;
21}
22returnt;
23)
24outresult(STUa[),FILE*pf)
25(inti;
26for(i?0;i<N;i++)
w
27fprintf(pfrNo-%sMark-%d\n"r
a[i].num,a[1].s);
28fprintf(pf,"\n\nw);
29)
30main()
31(STUa[N]-{LA01-,81},「A02”,89),
(”A03〃,66},「A04”,87},{“A05-,77),
(“A06”,90),「A07”,79},{“A08-,61},
ww
{A09r80L(*A10"r71));
32STU*pOrder;
33int1,m;
34printf(*?**?*TheOriginaldata
…**\n-);
35outresult(a,stdout);
36printf("\nGivethenumberofthe
studentswhohavebetterscore:");
n
37scant(%d"r&m);
38while(m>10)
39{printf("\nGivethenumberofthe
studentswhohavebetterscore:w);
40scanf("%d"r&m);
41
42pOrder?fun(a,m);
43printf(*????*?THERESULT?*?**
\nw);
44printf("Thetop:\n");
45for(i?0;i<m;i++)
46printf("%s%d\nw,pOrder[i].
num,pOrder[i].s);
47free(pOrder);
48
39.給定程序M0D11.C中函數(shù)fun的功能是:首先將大寫字母轉(zhuǎn)換為
對(duì)應(yīng)小寫字母;若小寫字母為a?u,則將其轉(zhuǎn)換為其后的第5個(gè)字母;
若小寫字母為v?z,使其值減21。轉(zhuǎn)換后的小寫字母作為函數(shù)值返回。
例如,若形參是字母A,則轉(zhuǎn)換為小寫字母f若形參是字母W,則轉(zhuǎn)換
為小寫字母b。
請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)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(O-^1&&c<?*uf)
8/???,???■?★???found***
9c-c-5;
10elseif(c>-'v*z?)
c?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.下列給定程序中函數(shù)fun()的功能是:將長整型數(shù)中每一位上為奇數(shù)
的數(shù)依次取出,構(gòu)成一個(gè)新數(shù)放在沖。高位仍在高位,低位仍在低位。
例如當(dāng)s中的數(shù)為87653142時(shí),t中的數(shù)為753lo
請(qǐng)改正函數(shù)fun()中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<conlo.h>
voidfun(longs,long*t)
{intd;
longsl=l;
/*************found**************/
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);
五、程序改錯(cuò)題(2題)
41.
下列給定的程序中,函數(shù)proc()的功能是:將str所指字符串中出現(xiàn)
的tl所指字符串全部替換成t2所指字符串,所形成的新的字符串放在
w所指的數(shù)組中。在此處,要求tl和t2所指字符串的長度相同。例如,
當(dāng)str所指字符串中所指的內(nèi)容為abcdabcdef9,tl所指字符串中的內(nèi)容
為be,t2所指字符串中的內(nèi)容為H時(shí),結(jié)果在w所指的數(shù)組中的內(nèi)容
應(yīng)為alldalldefg。請(qǐng)修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:
不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試
題程序:
*vfirliMivh
|lifirtwirVroaiackli
|lmcludth?
■tfirhidrVb>
//????lound????
?iipvoHrhar?wtiaclw?tl?HMT?Q?cfcar?9?
chut?????????
Mrrpy(w??tr)t
wliiW(?w>
??(0Md??
wlule(r
?p>(f
rl?ebreak:
wluIe(?r>I??
MCIHKt2>i
lviatA()
*y?Keni(eCLS*J?
.\9iPW*w■????999f
ACanf(?Ks*??tr>s
pnnd?*'nPleaxesirrMabBinogtl
pnml<.\OPIMMcm?r
|Mor(
pnittfC*\aThervwrft??
ebeRM”-Error.aafjM(2>\ae>t
42.下列給定程序中,函數(shù)proc()的功能是:給定n個(gè)實(shí)數(shù),輸出平均
值,并統(tǒng)計(jì)平均值以上(含平均值)的實(shí)數(shù)個(gè)數(shù)。
例如,n=8時(shí),輸入90.009,179.623,167.575,100.051,
6.092,154.986,12.432,45.765,所得平均值為94.566635,
在平均值以上的實(shí)數(shù)個(gè)數(shù)應(yīng)為4。
請(qǐng)修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main。函數(shù),不得增行或刪行,也不得更改程序的結(jié)
構(gòu)。
試題程序:
*includeVconao.
林mdudeVsldio.h>
ifitptori(kwit?]?intml
(//????found????
IRt€m0|ft<M9u-0.0B
(of
MM?■v£i]/ni
printfC'w'(\n-tsa)i
forjV.ij>?)
戶.?
rvturaci
voidmain(>
HottMif1003?(90.009?179.623?
】67?575.100.05U
6?092.154.”6.
12132.AS.7?5r
?yutEK'Clf》i
prioih
六、操作題(2題)
43.使用VC++打開考生文件夾下modil中的解決方案。此解決方案的項(xiàng)
目中包含一個(gè)源程序文件modil.c。在此程序中,函數(shù)fun()的功能是求
出S所指字符串中最后一次出現(xiàn)的t所指字符串的地址,并將此地址通
過函數(shù)值返回,在主函數(shù)中輸出從此地址開始的字符串;若未找到,則
函數(shù)值為NULLO
例如,當(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!”。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的
結(jié)果。
注意:不要改動(dòng)main。函數(shù),不得增行或刪行,也不得更改程序的結(jié)
構(gòu)!
試題程序:
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#include<string.h>
char*fun(char*s,char*t)
(
char*p,*r,*a;
/*********^Qund*********/
a=Null;
while(*s)
(
p=s;r=t;
while(*r)
/*********^Qund*********/
if(r==p)
{r++;p++;}
elsebreak;
if(*r=='\0')a=s;
S++;}
returna;
voidmain()
chars[100],t[100],*p;
system(“CLS”);
printf("\nPleaseenterstrings:");
scanf("%s”,s);
printf("\nPleaseentersubstringt:");
scanf("%s”,t);
p=fun(s,t);
if(P)
printf(tc\nTheresultis:%s\n”,p);
else
printf("WNotfoundin'');
44.以下程序運(yùn)行后的輸出結(jié)果是【】。
main()
{chara[]="Language",b[]="Pragrame";
char*pl,*p2;intk;
pl=a;p2=b;
for(k=0;k<=7;k++)
if(*(pl+k)==*(p2+k))
printf("%c",*(pl+k));
參考答案
1.
程序設(shè)計(jì)的任務(wù)是診斷和改正程序中的錯(cuò)誤。程序調(diào)試活動(dòng)由兩部分
組成,其一是根據(jù)錯(cuò)誤的跡象確定程序中錯(cuò)誤的確切性、原因和位
置;其二是對(duì)程序進(jìn)行修改,排除這個(gè)錯(cuò)誤。
\r\n
\r\n
2.k-lk,-l解析:顛倒一個(gè)字符串中的字符,就是首尾對(duì)應(yīng)的元素兩兩交
換。簡單地可用兩個(gè)游標(biāo)變量i和j,i是前端元素的下標(biāo),j是后端元素的
下標(biāo),交換以這兩個(gè)變量值為下標(biāo)的元素str國和str[j]o開始時(shí),i的值為
0,j的值為字符串末元素的下標(biāo)(字符串長度減l)o每次交換后,i增l,j減
lo繼續(xù)交換的條件是str[i]位于str[j]的前面,即i<j。字符串末元素的下
標(biāo)是它的長度減1,所以在第二個(gè)空框處應(yīng)填入-1。程序?yàn)榱私粨Qstr[i]和
strU],使用了變量k,該變量應(yīng)在程序的變量定義部分中一起定義,所以在
第一個(gè)空框處應(yīng)填入ko
3.QTHRGQTHRG解析:strcmp(t,s)函數(shù)用來比較t和s所指字符串的大
小,若t>s,則函數(shù)值大于0;若1=5,則函數(shù)值等于0:若t<s,則函
數(shù)值小于0。Strcpy(t,s)函數(shù)的功能是把字符數(shù)組s所指字符串的內(nèi)容復(fù)
制到字符數(shù)組t所指的存儲(chǔ)空間中。本題中,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所指的
存儲(chǔ)空間中,然后輸出字符數(shù)組t。
4.'\0"\\01解析本題涉及字符數(shù)組和指針的兩個(gè)知識(shí)點(diǎn):①在c語言中,
字符型數(shù)組在存放字符串時(shí)會(huì)自動(dòng)在末尾加上字符串結(jié)束標(biāo)識(shí)符")',
所以題中數(shù)組str有6個(gè)元素。②ptr指向數(shù)組s仕的首地址,ptr+5是指
向str[5],*(ptr+5)是引用str[5]的值,即'\\0'。
5.B66B66解析:字符B的ASCII碼值為66,因此,按%c形式輸出
B,按%d形式輸出66,輸出結(jié)果為:B66。
6.1
7.1000001010000010解析:運(yùn)算的規(guī)則是只有當(dāng)兩個(gè)相應(yīng)的二進(jìn)制
位都為1時(shí),該位的結(jié)果才為lo要保留第2、8位,只要將其與二進(jìn)制
數(shù)10000010相與。
8.1343113431解析:初始化時(shí),指針p指向m⑼的地址,指針q指向
m[4]的地址,p!=q滿足循環(huán)條件,執(zhí)行循環(huán)語句,得到m[0].k=l,
m[4].k=l,此時(shí)i=2,指針p指向m[l]的地址,指針q指向m[3]的地
址,p!=q滿足循環(huán)條件,執(zhí)行循環(huán)語句,得到m[l].k=3,k=3,此時(shí)
i=4,指針q指向m[2]的地址,p==q不滿足循環(huán)條件,則退出循環(huán),
m[2].k=4o所以最后輸出為13431O
9.2468
10.*t++或*(t++)*t++或*(t++)解析:主函數(shù)中定義了兩個(gè)字符型數(shù)組
stll和str2,并且給str2賦初值“abcdefgh”,接著調(diào)用函數(shù)sstrcpy(strl,str2),
將字符串str2的值賦給strl.在函數(shù)sstrcpy(*s,*t)中,用了一個(gè)while循
環(huán),每循環(huán)一次將形參指針t所指的字符賦給形參指針s所指向的存儲(chǔ)
空間,然后指針s和指針t都下移到下一個(gè)元素。所以空格處應(yīng)該填*t++
或*(t++)。
11.A
軟件危機(jī)主要表現(xiàn)在:軟件需求的增長得不到滿足;軟件開發(fā)成本和進(jìn)
度無法控制;軟件質(zhì)量難以保證;軟件不可維護(hù)或維護(hù)程度非常低;軟件
的成本不斷提高;軟件開發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和應(yīng)用需求
的增長。所以選擇A。
12.C
解析:算法的特性中包括“有零個(gè)或多個(gè)輸入”及“有一個(gè)或多個(gè)輸出”
這兩個(gè)特性。一個(gè)算法得到的結(jié)果就是算法的輸出,沒有輸出的算法
是沒有意義的,所以一千算法必須至少有一個(gè)輸出。
13.C
14.A解析:由于字符“5”和“3”的ASCII碼相差為2,所以chi經(jīng)過運(yùn)算
后的值應(yīng)為65+2=67;同理,ch2經(jīng)過運(yùn)算后的值應(yīng)為65+3=68,即是
字符“D”。
15.A
【答案】:A
【知識(shí)點(diǎn)】:黑盒測試
【解析】:黑盒測試也稱功能測試或數(shù)據(jù)驅(qū)動(dòng)測試,它完全不考慮程
序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特征,只著眼于程序的外部結(jié)構(gòu),主要用來
檢查程序功能是否按照需求規(guī)格說明書的規(guī)定正常使用。故選Ao
16.D
17.B
棧是先進(jìn)后出的原則組織數(shù)據(jù),所以人棧最早的最后出棧,所以選擇
Bo
18.C解析:#define宏名的有效范圍為定義命令之后到本源文件結(jié)束,
可以在程序中使用#undef命令終止宏定義的作用域。本題由于#undef的
作用,使a的作用范圍在#definea100至【J#undefa之間,故答案為Co
19.C解析:選項(xiàng)A)char*a;*a="china”應(yīng)改為a=china;,選項(xiàng)B)應(yīng)
該是charstr[6];D)項(xiàng)表述方法有錯(cuò)誤。
20.A
解析:題中將函數(shù)fun的入口地址賦給了指針變量fl,這時(shí)fl和fun
都指向函數(shù)的開頭,調(diào)用*fl就是調(diào)用函數(shù)fun。
21.voidfun(char*a)
(
inti,j=0;
for(i=0;a[i]!=\0;i++)
if(a[i]!=*)
a[j++]=a[i];//若不是要?jiǎng)h除的字符*則保留
a[j]=\O;//最后加上字符串結(jié)束符\0
)
【解析】此題是刪除字符串中的星號(hào)。思路是通過for循環(huán)完成對(duì)字
符串的遍歷,通過if判斷,找到不是“*”的字符,將其賦值到數(shù)組a中
星號(hào)前的位置,“if(a[i]!=*)”“a[i++]=a[i『,最后返回主函數(shù)將刪除*后
的字符串輸出即可。
22.
【解析】根據(jù)題目中要求刪除字符串中所有的空格,需要檢查字符串中
的每一個(gè)字符。將不是空格的字符放入原來的字符串中,形成新的字符
串。在新的字符串的末尾加上結(jié)束符。
23.
【考點(diǎn)分析】
本題考查:迭代法求給定多項(xiàng)式的值。迭代算法:讓計(jì)算機(jī)對(duì)一組指
令(或一定步驟)進(jìn)行重復(fù)執(zhí)行,在每次執(zhí)行這組指令(或這些步驟)時(shí),
都從變量的原值推出它的一個(gè)新值。需要注意變量的數(shù)據(jù)類型以及賦
初值操作。
【解題思路】
首先應(yīng)該定義double類型變量,并且賦初值,用來存放多項(xiàng)式的某一
項(xiàng)和最后的總和。從第2項(xiàng)開始以后的每一項(xiàng)都是其前面一項(xiàng)乘以n/
(2*n+l),程序中用si來表示每一項(xiàng),s表示求和后的結(jié)果。需注意si
和S的初值都為1.0,因?yàn)檠h(huán)變量從第二項(xiàng)開始累加。
24.1doublefun(intw[][n])
2{
3inti,j,k=O;
4doublesum=0.0;
5for(i=0;i
<n;i++)
6for(j=0;j</n;i++)
<n;i++)
<n;j++)
7if(i==O||i==N-l|J==O||j==N-l)/*只要下標(biāo)中有一個(gè)為0或N-1,則它一
定是周邊元素*/</n;j++)
</n;i++)
<n;i++)
<n;j++)
8{sum=sum+w[i]「];/*將周邊元素求和*/</n;j++)
</n;i++)
<n;i++)
<n;j++)
9k++;</n;j++)
</n;i++)
<n;i++)
<n;j++)
10)</n;j++)
</n;i++)
<n;i++)
<n;j++)
11returnsum/k;/*求周邊元素的平均值*/</n;j++)
</n;i++)
<n;i++)
<n;j++)
12)</n;j++)
</n;i++)
<n;i++)
<n;j++)
本題要求計(jì)算二維數(shù)組周邊元素的平均值,for循環(huán)語句控制循環(huán)過
程,if條件語句根據(jù)數(shù)組元素的下標(biāo)判斷該元素是否為二維數(shù)組的周
邊元素。本題采用逐一判斷的方式,周邊元素的規(guī)律為下標(biāo)中有一個(gè)
是。或N-1,所以只要下標(biāo)中有一個(gè)是0或N-1,那么它一定是周邊元
素。計(jì)算周邊元素個(gè)數(shù)的方式是當(dāng)給sum累加一個(gè)值時(shí),k也加1。
</n;j++)
</n;i++)
25.
皿proc(intscoreCj?intm?mt
(
mt
flcMtivaO.Oi
fortimOii<tnii++)
■v^av-^acorrtij/mi〃求平均值
,or《i-OiiVrnii++)
iU?corc[i]>av)//他?分平均分.■梅妣
分?jǐn)?shù)找人叩ftill中
l?p[j+?JnBTOfwCL,
rriurt>M,?網(wǎng)均分的人數(shù)
【解析】要找出低于平均分?jǐn)?shù)的學(xué)生記錄,首先應(yīng)該算出所有學(xué)生的
平均成績,然后將每一個(gè)學(xué)生的成績與平均成績相比較,將低于平均
成績的學(xué)生記錄放入數(shù)組below中,最后將低于平均分的人數(shù)返回給
主函數(shù)。
26.
I答案】
voidfun(ehar*s,chart[J)
I.
inti.j=0,n;
n=stricn(s);
fbr(iM);i<n;i++)
呻%2!以>&[%2]刈
(/*將下標(biāo)為奇數(shù)同時(shí)ASCII碼值為奇數(shù)的字符放人數(shù)組t中*/
j++;
)
產(chǎn)最后加上結(jié)束標(biāo)識(shí)符*/
)
【解析】
用循環(huán)遍歷字符串,通過if語句將下標(biāo)和ASCII碼都為奇數(shù)的字符保
存到數(shù)組中,在字符串末尾加上結(jié)束標(biāo)識(shí)符。
27.
intf(chars(1)
{inti=0,j=0;
while(s[j])(j-H-;);
for(j—;i<j&&s[i]=sCj];i++,j—);
return(i-j)
)
28.voidfun(char*s,chart[])
(
inti,j=0,n;
n=strlen(s);
for(i=0;i<=""p="">
if((i%2)&&(s[i]%2))
(
t[j++]=s[i];/*將下標(biāo)為奇數(shù)同時(shí)ASCII值為奇數(shù)的字符放入數(shù)組
t中*/
t[j]=,\(r;/*最后加上字符串結(jié)束標(biāo)志*/
)
本題要求保留下標(biāo)為奇數(shù)同時(shí)ASCII值也為奇數(shù)的字符,其余的所有字
符都刪除。將s字符串中,滿足條件的字符存放到字符串t中。if的條
件表達(dá)式為:if(i%2!=0&&s[i]%2!=0)o
29.
【解析】首先定義一個(gè)變量來存放表達(dá)式的和,根據(jù)題目中提供的多項(xiàng)
式,通過n次循環(huán)來求出n項(xiàng)的和。最后把所求得的和返回到主函數(shù)當(dāng)
中。
30.
【解析】題目要求寫出程序
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度月子中心產(chǎn)后恢復(fù)中心合作框架協(xié)議
- 中國廣電手機(jī)產(chǎn)品白皮書2025年版
- 2025年度儲(chǔ)能設(shè)備箱涵項(xiàng)目施工臨時(shí)照明勞務(wù)分包合同
- 2025年發(fā)酵類制品項(xiàng)目建議書
- 2025年鉆采裝備項(xiàng)目發(fā)展計(jì)劃
- 2025年青霉素類抗菌藥物合作協(xié)議書
- 如何將個(gè)人成長納入月度工作計(jì)劃
- 學(xué)生發(fā)展報(bào)告與個(gè)案分析計(jì)劃
- 如何開展班級(jí)傳統(tǒng)文化教育計(jì)劃
- 幼兒閱讀推廣計(jì)劃
- 住院精神疾病患者自殺風(fēng)險(xiǎn)護(hù)理
- 供應(yīng)室課件大全
- 浙江省大學(xué)生職業(yè)生涯規(guī)劃大賽賽前輔導(dǎo)課件
- 部編四下語文《口語交際:轉(zhuǎn)述》公開課教案教學(xué)設(shè)計(jì)【一等獎(jiǎng)】
- 倉庫每日巡查制度
- 學(xué)校教育數(shù)字化工作先進(jìn)個(gè)人事跡材料
- 動(dòng)物防疫服務(wù)投標(biāo)方案(技術(shù)方案)
- 2024年新課標(biāo)全國Ⅰ卷語文高考真題試卷(含答案)
- 2024中國AI應(yīng)用開發(fā)者生態(tài)調(diào)研報(bào)告-易觀分析
- -中國傳統(tǒng)節(jié)日之春節(jié)習(xí)俗介紹主題班會(huì)14
- 2024魯教版七年級(jí)下冊數(shù)學(xué)第七章綜合檢測試卷及答案
評(píng)論
0/150
提交評(píng)論