版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2023年广东省深圳市全国计算机等级考试
C语言程序设计真题(含答案)
学校:班级:姓名:考号:
一、2.填空题(10题)
1.
在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动
模块和承接碟块,其中的作用是将测试数据传送给被测试的模
块,并显示被测试模块所产生的结果。
2.下面程序的功能是将一个字符串str的内容颠倒过来,请填空。
#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.设有下列程序:
#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);
)
程序运行后,从键盘上输入(<CR>代表回车符):CDEF<CR>BADEF
<CR>QTHRG<CR>,则程序的输出结果是。
4.设有下列的程序段:
charstr[]="Hello";
char*ptr;
ptr=-str;
执行上面的程序段后,*(ptr+5)的值为o
5.已知字符A的ASCII码值为65,以下语句的输出结果是【】。
charch='B';
printf("%c%d\n",ch,ch);
6.已知a=l,b=2,则表达式(a&B)&b||b的结果为()。
7.没有char,a,b;,若要通过a&d运算屏蔽掉a中的其他位,只保留第2
位和第8位(右起为第1位),则b的二进制是【】。
8.以下程序运行后的输出结果是【】。
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.以下程序的输出结果是【】。
voidfun()
{staticinta;
a+=2;
printf("%d",A);
)
main()
{intcc;
for(cc=1;cc<=4;cc++)fun();
printf("\n");
10.以下sstrcpyO函数实现字符串复制,即将t所指字符串复制到s所指
向内存空间中,形成一个新的字符串s。请填空。
voidsstrcpy(char*s,char*t)
{while(*s++=);}
main()
{charstrl[100],str2[]="abcdefgh";
sstrcpy(strl,str2);
printf("%s\n",strl);
二、单选题(10题)
11.下面描述中,不属于软件危机表现的是()
A.软件过程不规范B.软件开发生产率低C.软件质量难以控制D.软件
成本不断提高
12.以下叙述中正确的是o
A.用C程序实现的算法必须要有输入和输出操作
B.用C程序实现的算法可以没有输出但必须要输入
C.用C程序实现的算法可以没有输入但必须要有输出
D.用C程序实现的算法可以既没有输入也没有输出
13.
(13)数字字符0的ASCII值为48,运行下列程序的输出结果是().
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码为十进制的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.在黑盒测试方法中,设计测试用例的主要根据是
A.程序外部功能B.程序内部逻辑C.程序数据结构D.程序流程图
16.
(31)以下有关宏的描述不正确的是().
A)宏定义不做语法检查B)双引号中出现的宏名不进行替换
C)宏名无类型D)宏名必须用大写字母表示
17.一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、
D、E依次入栈,然后再依次出栈,则元素出棱的顺序是()。
A.A.12345ABCDEB.EDCBA54321C.ABCDE12345D,54321EDCBA
18.以下程序的输出结果是____o#include<stdio.h>main(){int
a=200;#definea100printf("%d",a);#undefaprintf("%d",a);}
A.200100B.100100C.100200D,200200
19.下面判断正确的是
A.char*a="china";等价于char*a;*a="china";
B.charstr[5]={"china");等价于charstr[]={"china”};
C.char*s="china";等价于char*s;s="china";
D.charc[4]="abc",d[4]="abc";等价于charc[4]=d[4]="abc";
20.程序中若有如下说明和定义语句
charfun(char*);
main()
(
char*s="one",a[5]={0},(*fl)()=fun,ch;
以下选项中对函数Fun的正确调用语句是o
A.(*fl)(a);B.*fl(*s);C.fun(&a);D.ch=*fl(s);
三、程序设计题(10题)
21.规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:
删除字符串中所有的*号。编写函数时,不得使用C语言提供的字符串
函数。
例如,字符串中的内容为“****A*BC*DEF*G****",删除后,字符串
中的内容应当是“ABCDEFG”。
注意:部分源程序给出如下。
请勿改动maini)函数和其他函数中的任何内容,仅在函数fun的花括号
中填入你编写的若干语句。
试题程序:
#include<conio.h>
#include<stdio.h>
voidfun(chara)
(
voidmain
(
chars[81];
print{("Enterastring:\n");
gets(s):
fun(S);
printf("Thestringafterdeleted:\n");
puts(s);
)
22.请编写一个函数,用来删除字符串中的所有空格。例如,输入
abcdefgh,则输出为abcdefgho注意:部分源程序给出如下。请勿改
动main()函数和其他函数中的任何内容,仅在函数proc()的花括号
中填入所编写的若干语句。试题程序:
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.编写函数fun,其功能是:根据以下公式求冗的值(要求精度0.0005,
即某项小于0.0005时停止迭代)。
n.I1x21x2x3Ix2x3x4Ix2x•••xn
233x53x5x73x5x7x93x5x•••x(2n+I)
程序运行后,若输入精度
0.0005,则程序应输出为3.14...
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括
号中填入你编写的若干语句。
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/•本函数用『打开文件.输入数据,调用函数出数据,关冏文件;•
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中的解决方案。此解决方
案的项目中包含一个源程序文件progl.c。在此程序中,定义了NxN的
二维数组,并在主函数中赋值。请编写函数fun(),其功能是求出数组
周边元素的平均值并将其作为函数值返回给主函数中的s。例如,若a
数组中的值为
01279
19745
23831
45682
59141
则返回主程序后s的值应为3.375o
注意:部分源程序在文件progl.c中。
请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花
括号中填入你编写的若干语句。
试题程序:
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个人的成绩存放在score数组中,请编写函数proc(),它的功
能是:将高于平均分的人数作为函数值返回,将高于平均分的分数放
在up所指的数组中。例如,当score数组中的数据为100,80,76,
60,59,48,43,35,59时,函数返回的人数应该是4,up中的数据
应为100,80,76,95o注意:部分源程序给出如下。请勿改动
main()函数和其他函数中的任何内容,仅在函数proc()的花括号
中填入所编写的若干语句。试题程序:
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.编写函数fun,其功能是:将s所指字符串中除了下标为奇数,同时
ASCH码值也为奇数自q字符之外。
其余所有字符全部删除,串中剩余字符所形成的一个新串放在所指的数
组中。
例如,若s所指字符串的内容为“ABCDEFG12345",其中字符A的ASCII
码值为奇数,但所在元素的
下标为偶数,因此需要删除;而字符1的ASCII码值为奇数,所在数组
中的下标也为奇数,因此不应当删除,
其他依此类推。最后t所指数组中的内容应为“135”。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括
号中填入你编写的若干语句。
试题程序:
#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是否对称,对称则返回1,否则返回0;如
f("abba")返回1,f("abab")返回0。
28.使用VC++2010打开考生文件夹下progl中的解决方案。此解决方
案的项目中包含一个源程序文件progl.Co在此程序中,编写函数fun(),
其功能是将s所指字符串中除了下标为奇数同时ASCII值也为奇数的字
符之外的其余所有字符全部删除,字符串中剩余字符所形成的一个新字
符串存放在t所指的数组中。
例如,若s所指字符串的内容为“ABCDEFG12345",其中字符A的
ASCII值为奇数,但所在元素的下标为偶数,因此需要删除;而字符1
的ASCII值为奇数,所在数组中的下标也为奇数,因此不应当删除,
其他依此类推。最后t所指数组中的内容应为“135”。
注意:部分源程序给出如下。
请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花
括号中填入你编写的若干语句。
试题程序:
#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.请编写函数proc(),其功能是:计算并输出下列多项式值。S=(1+1
/2)+(1/3+1/4)+...+(1/(2n-l)+1/2n)例如,若输入10,
则输出为S=3.597740on的值要求大于1但不大于100。注意:部分
源程序给出如下。请勿改动函数main()和其他函数中的任何内容,
仅在函数proc()的花括号中填入所编写的若干语句。试题程序:
sinciudch>
liotaMcproc<mtn)
voedVUIMI<)
itilm
double
printf<*\n1npuin.*)i
procin)i
pniMftSl\®**>><
30.编写函数fun(),其功能是计算:
S作为函数值返回。
在C语言中可调用log(n)函数求ln(n)olog函数的引
用说明为:doublelog(doublex)。
例如,若m的值为20,则如n()函数值为6.506583。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括
号中填入你编写的若干语句。
试题程序:
«include<川dhhh>
ftmdudcVconao.h>
3tncltidkVstdio,h>
9rndudr<atKh>
ifooblr(wfi<mtm>
voidnuiiti()
“,tern(-CLS*)i
prtfiif<sK(\fi"・fttM2。》)i
四、2.程序修改题(10题)
31.下列给定程序中函数fun()的功能是计算1/n!的值。
例如:给n输入5,则输出0.0083330
请改正程序中的错误,使它能得到正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#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.下列给定程序中,函数fun()的功能是:根据整型形参n,计算如下
公式的值。
Al=l,A2=1/(1+A1),A3=l/(1+A2),An=(l/(1+A(n-1))
例如,若p=10,则应输出0.617977。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动mah函数,不得增行或删行,也不得更改程序的蛀构.
试题程序:
#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.下列给定程序中函数fun()的功能是;从低位开始取出长整型变量s
中奇数位上的数,依次构成一个新数放在t中。例如,当s中的数为
4576235时,t中的数为4725。
请改正程序中的错误,使它能得到正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#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.下列给定程序中,函数fun()的功能是根据整型形参m,计算如下公
式的值。
y=1-1/(2X2)+1/(3X3)-1/(4x4)+...+(-l)(m+l)/(mxm)
例如:m中的值为5,则应输出0.838611o
请改正程序中的错误,使它能得到正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#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.下列给定程序中,函数fun()的功能是:将m(lSmS10)个字符串连接
起来,组成一个新串,放入pt所指字符串中,例如:把3个串abc,CD,
EF串联起来,结果是abcCDEF。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#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中函数fun的功能是:先从键盘上输入一个3
行3列矩阵的各个元素的值,然后输出主对角线元素之和。
请改正函数fun中的错误或在横线处填上适当的内容并把横线删除,使
它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
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中函数fun的功能是:应用递归算法求形参a
的平方根。求平方根的迭代公式如下:
xl=-(x0+—)
2x0
例如,a为2时,平方根值为:1.414214。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
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中函数fun的功能是:对N名学生的学习成绩,
按从高到低的顺序找出前m(mS10)名学生来,并将这些学生数据存放在
一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
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中函数fun的功能是:首先将大写字母转换为
对应小写字母;若小写字母为a〜u,则将其转换为其后的第5个字母;
若小写字母为v〜z,使其值减21。转换后的小写字母作为函数值返回。
例如,若形参是字母A,则转换为小写字母f若形参是字母W,则转换
为小写字母b。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
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.下列给定程序中函数fun()的功能是:将长整型数中每一位上为奇数
的数依次取出,构成一个新数放在冲。高位仍在高位,低位仍在低位。
例如当s中的数为87653142时,t中的数为753lo
请改正函数fun()中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#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);
五、程序改错题(2题)
41.
下列给定的程序中,函数proc()的功能是:将str所指字符串中出现
的tl所指字符串全部替换成t2所指字符串,所形成的新的字符串放在
w所指的数组中。在此处,要求tl和t2所指字符串的长度相同。例如,
当str所指字符串中所指的内容为abcdabcdef9,tl所指字符串中的内容
为be,t2所指字符串中的内容为H时,结果在w所指的数组中的内容
应为alldalldefg。请修改程序中的错误,使它能得出正确的结果。注意:
不要改动main()函数,不得增行或删行,也不得更改程序的结构。试
题程序:
*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.下列给定程序中,函数proc()的功能是:给定n个实数,输出平均
值,并统计平均值以上(含平均值)的实数个数。
例如,n=8时,输入90.009,179.623,167.575,100.051,
6.092,154.986,12.432,45.765,所得平均值为94.566635,
在平均值以上的实数个数应为4。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main。函数,不得增行或删行,也不得更改程序的结
构。
试题程序:
*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中的解决方案。此解决方案的项
目中包含一个源程序文件modil.c。在此程序中,函数fun()的功能是求
出S所指字符串中最后一次出现的t所指字符串的地址,并将此地址通
过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则
函数值为NULLO
例如,当字符串中的内容为“abcdabfabcdx”,t中内容为“ab”时,输出
结果应是“abcdx”。
当字符串中的内容为“abcdabfabcdx”,t中内容为“abd”时,则程序输出
未找到信息“Notfound!”。请改正程序中的错误,使它能得出正确的
结果。
注意:不要改动main。函数,不得增行或删行,也不得更改程序的结
构!
试题程序:
#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.以下程序运行后的输出结果是【】。
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.
程序设计的任务是诊断和改正程序中的错误。程序调试活动由两部分
组成,其一是根据错误的迹象确定程序中错误的确切性、原因和位
置;其二是对程序进行修改,排除这个错误。
\r\n
\r\n
2.k-lk,-l解析:颠倒一个字符串中的字符,就是首尾对应的元素两两交
换。简单地可用两个游标变量i和j,i是前端元素的下标,j是后端元素的
下标,交换以这两个变量值为下标的元素str国和str[j]o开始时,i的值为
0,j的值为字符串末元素的下标(字符串长度减l)o每次交换后,i增l,j减
lo继续交换的条件是str[i]位于str[j]的前面,即i<j。字符串末元素的下
标是它的长度减1,所以在第二个空框处应填入-1。程序为了交换str[i]和
strU],使用了变量k,该变量应在程序的变量定义部分中一起定义,所以在
第一个空框处应填入ko
3.QTHRGQTHRG解析:strcmp(t,s)函数用来比较t和s所指字符串的大
小,若t>s,则函数值大于0;若1=5,则函数值等于0:若t<s,则函
数值小于0。Strcpy(t,s)函数的功能是把字符数组s所指字符串的内容复
制到字符数组t所指的存储空间中。本题中,t[10]=CDEF。第一次循环,
s[10]='BADEF',if语句的控制条件strcmp(t,s)<0不成立,接着执行第
二次循环.s='QTHRG',if语句的控制条件strcmp(t,s)<0成立,执行
下列的语句,将字符数组s所指字符串的内容复制到字符数组t所指的
存储空间中,然后输出字符数组t。
4.'\0"\\01解析本题涉及字符数组和指针的两个知识点:①在c语言中,
字符型数组在存放字符串时会自动在末尾加上字符串结束标识符")',
所以题中数组str有6个元素。②ptr指向数组s仕的首地址,ptr+5是指
向str[5],*(ptr+5)是引用str[5]的值,即'\\0'。
5.B66B66解析:字符B的ASCII码值为66,因此,按%c形式输出
B,按%d形式输出66,输出结果为:B66。
6.1
7.1000001010000010解析:运算的规则是只有当两个相应的二进制
位都为1时,该位的结果才为lo要保留第2、8位,只要将其与二进制
数10000010相与。
8.1343113431解析:初始化时,指针p指向m⑼的地址,指针q指向
m[4]的地址,p!=q满足循环条件,执行循环语句,得到m[0].k=l,
m[4].k=l,此时i=2,指针p指向m[l]的地址,指针q指向m[3]的地
址,p!=q满足循环条件,执行循环语句,得到m[l].k=3,k=3,此时
i=4,指针q指向m[2]的地址,p==q不满足循环条件,则退出循环,
m[2].k=4o所以最后输出为13431O
9.2468
10.*t++或*(t++)*t++或*(t++)解析:主函数中定义了两个字符型数组
stll和str2,并且给str2赋初值“abcdefgh”,接着调用函数sstrcpy(strl,str2),
将字符串str2的值赋给strl.在函数sstrcpy(*s,*t)中,用了一个while循
环,每循环一次将形参指针t所指的字符赋给形参指针s所指向的存储
空间,然后指针s和指针t都下移到下一个元素。所以空格处应该填*t++
或*(t++)。
11.A
软件危机主要表现在:软件需求的增长得不到满足;软件开发成本和进
度无法控制;软件质量难以保证;软件不可维护或维护程度非常低;软件
的成本不断提高;软件开发生产率的提高赶不上硬件的发展和应用需求
的增长。所以选择A。
12.C
解析:算法的特性中包括“有零个或多个输入”及“有一个或多个输出”
这两个特性。一个算法得到的结果就是算法的输出,没有输出的算法
是没有意义的,所以一千算法必须至少有一个输出。
13.C
14.A解析:由于字符“5”和“3”的ASCII码相差为2,所以chi经过运算
后的值应为65+2=67;同理,ch2经过运算后的值应为65+3=68,即是
字符“D”。
15.A
【答案】:A
【知识点】:黑盒测试
【解析】:黑盒测试也称功能测试或数据驱动测试,它完全不考虑程
序内部的逻辑结构和内部特征,只着眼于程序的外部结构,主要用来
检查程序功能是否按照需求规格说明书的规定正常使用。故选Ao
16.D
17.B
栈是先进后出的原则组织数据,所以人栈最早的最后出栈,所以选择
Bo
18.C解析:#define宏名的有效范围为定义命令之后到本源文件结束,
可以在程序中使用#undef命令终止宏定义的作用域。本题由于#undef的
作用,使a的作用范围在#definea100至【J#undefa之间,故答案为Co
19.C解析:选项A)char*a;*a="china”应改为a=china;,选项B)应
该是charstr[6];D)项表述方法有错误。
20.A
解析:题中将函数fun的入口地址赋给了指针变量fl,这时fl和fun
都指向函数的开头,调用*fl就是调用函数fun。
21.voidfun(char*a)
(
inti,j=0;
for(i=0;a[i]!=\0;i++)
if(a[i]!=*)
a[j++]=a[i];//若不是要删除的字符*则保留
a[j]=\O;//最后加上字符串结束符\0
)
【解析】此题是删除字符串中的星号。思路是通过for循环完成对字
符串的遍历,通过if判断,找到不是“*”的字符,将其赋值到数组a中
星号前的位置,“if(a[i]!=*)”“a[i++]=a[i『,最后返回主函数将删除*后
的字符串输出即可。
22.
【解析】根据题目中要求删除字符串中所有的空格,需要检查字符串中
的每一个字符。将不是空格的字符放入原来的字符串中,形成新的字符
串。在新的字符串的末尾加上结束符。
23.
【考点分析】
本题考查:迭代法求给定多项式的值。迭代算法:让计算机对一组指
令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,
都从变量的原值推出它的一个新值。需要注意变量的数据类型以及赋
初值操作。
【解题思路】
首先应该定义double类型变量,并且赋初值,用来存放多项式的某一
项和最后的总和。从第2项开始以后的每一项都是其前面一项乘以n/
(2*n+l),程序中用si来表示每一项,s表示求和后的结果。需注意si
和S的初值都为1.0,因为循环变量从第二项开始累加。
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)/*只要下标中有一个为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++)
本题要求计算二维数组周边元素的平均值,for循环语句控制循环过
程,if条件语句根据数组元素的下标判断该元素是否为二维数组的周
边元素。本题采用逐一判断的方式,周边元素的规律为下标中有一个
是。或N-1,所以只要下标中有一个是0或N-1,那么它一定是周边元
素。计算周边元素个数的方式是当给sum累加一个值时,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)//他♦分平均分.■梅妣
分数找人叩ftill中
l«p[j+♦JnBTOfwCL,
rriurt>M,♦网均分的人数
【解析】要找出低于平均分数的学生记录,首先应该算出所有学生的
平均成绩,然后将每一个学生的成绩与平均成绩相比较,将低于平均
成绩的学生记录放入数组below中,最后将低于平均分的人数返回给
主函数。
26.
I答案】
voidfun(ehar*s,chart[J)
I.
inti.j=0,n;
n=stricn(s);
fbr(iM);i<n;i++)
呻%2!以>&[%2]刈
(/*将下标为奇数同时ASCII码值为奇数的字符放人数组t中*/
j++;
)
产最后加上结束标识符*/
)
【解析】
用循环遍历字符串,通过if语句将下标和ASCII码都为奇数的字符保
存到数组中,在字符串末尾加上结束标识符。
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];/*将下标为奇数同时ASCII值为奇数的字符放入数组
t中*/
t[j]=,\(r;/*最后加上字符串结束标志*/
)
本题要求保留下标为奇数同时ASCII值也为奇数的字符,其余的所有字
符都删除。将s字符串中,满足条件的字符存放到字符串t中。if的条
件表达式为:if(i%2!=0&&s[i]%2!=0)o
29.
【解析】首先定义一个变量来存放表达式的和,根据题目中提供的多项
式,通过n次循环来求出n项的和。最后把所求得的和返回到主函数当
中。
30.
【解析】题目要求写出程序
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度灯光音响租赁服务合同
- 2024年度股权转让合同标的及合同属性8篇
- 大学实验室共建协议2024年度
- 4s店汽车销售合同范文 2篇
- 二零二四版铁路建设中隧道爆破施工合同
- 二零二四年度房地产经纪与销售合同
- 二零二四年度棉花机械采摘专利使用权转让合同
- 2024年度大数据分析合作保密合同
- 二零二四年度影视制作合同标的及制作周期与费用
- 合伙承包工工程合同范本
- ETI 基本准则Base Code-中文OK
- 光伏发电项目技术标投标文件
- 四年级上册四则混合运算300题及答案
- 过敏性休克演练试题及答案
- 2024年-四川省安全员-C证考试题库
- 军士生生涯规划
- 西安游学报告
- 中药学专业职业生涯发展报告
- 迎中考初三学生家长动员会课件
- 广州白云区经济分析报告
- 时序数据库在工业物联网中的应用
评论
0/150
提交评论