版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2023年湖南省邵阳市全国计算机等级考试
C语言程序设计真题(含答案)
学校:班级:姓名:考号:
一、2.填空题(10题)
1.数据库技术的主要特点为数据的集成性、数据的高【】和低冗余性、
数据独立性和数据统一管理与控制。
2.以下程序的运行结果是【】。
#include<string.h>
typedefstructstudent{
charname[10];
longsno;
floatscore;
}STU;
main()
STUa={"Zhangsan",2001,95},b={"Shangxian",2002,90},
c={"Anhua",2003,95},d,*p=&d;
d=a;
if(strcmp(,)>0)d=b;
if(strcmp(,d-name)>0)d=c;
printf("%ld%s\n",d.sno,p->name);
)
3.若定义#definePI3.14159,则执行完下列程序后输出结果是_____
#definePI3.14159;printf("PI=%f",PI);
4.下面程序的功能是将一个字符串str的内容倒序,请填空。
#inelude<stdio.h>
#include<strins.h>
main()
{inti,j,[];
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);
)
5.数据库保护分为:安全性控制并发性控制和数据的恢复。
6.以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文
件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确
定文件长度。请填空。
FILE*myf;longfl;
myf=【]("test.t","rb");
fseek(myf,O,SEEKEND);
fl=ftell(myf);
fclose(myf);
printf("%d\n",fl)
7.有以下定义和语句,贝IJsizeof(a)的值是[],而sizeof(a.share)的值
是【】。
structdate
{intday;
intmouth;
intyear:
union{intshare1;
floatshare2:
}share;
)a;
8.下面程序的输出是[】。
main()
{intarr[10],i,k=0;
for(i=0;i<10;i++)
arr[i]=i;
for(i=l;i<4;i++)
k+=arr[i]+i;
printf("%d\n"k);}
9.下面程序的功能是:输出100以内能被3整除且个位数为6的所有
整数,请填空。
#include<stdio.h>
main()
{inti,j;
for(i=0[];i++)
{j=i*10+6;
if([])continue;
printf("%d",j);
10.下面程序的输出结果是【】。
charb[]="ABCD";
main()
(
charb[30];
strcpy(&b[0],"GH");
strcpy(&b[l],"GH");
strcpy(&b[2],"GH");
printf("%s\n",b);
)
二、单选题(10题)
11.设一组初始记录关键字序列(5,2,6,3,8),以第一个记录关键字5为基
准进行一趟快速排序的结果为()。
A.2,3,5,8,6B.3,2,5,8,6C,3,2,5,6,8D,2,3,6,5,8
12.在下面栈的基本运算中,不是加工型运算的是____。
A.初始化B.进栈C.退栈D.判栈空
13.在数据流图(DFD)中,带有名字的箭头表示
A.模块之间的调用关系B.程序的组成成分C.控制程序的执行顺序D.
数据的流向
14.设"char**s;以下正确的表达式是()。
A.s="computer";B.*s="computer";C.**s="computer";D.*s='c';
15.
(40)已知一个文件中存放若干工人档案记录,其数据结构如下:
structa
{charnumber[100];
intage;
floatp[6]J;
定义一个数组:structanumber[10];
假定文件已正确打开,不能正确地从文件中读入10名工人数据到数组b中的是()o
A)fread(b,sizeofi[structa),10,fp);B)fbr(i=0;i<10;i-H-)
fread(b[i],sizeof(structa),l,fp);
C)fbr(i=0;i<10;i++)D)fbr(i=0;i<5;i-^=2)
frcad(b+i,sizcofl(structa),l,fp);fread(b>i,sezeof(structa),2,fp);
16.有以下程序段
intj;
floaty;
charname[50];
scanf("%2d%f%s",&i,&y,name);
当执行上述程序段,从键盘上输入555667777abc后,y的值为()。
A.55566.0B,566.0C,7777.0D,566777.0
17.静态链表中指针表示的是()。
A.内存地址B.数组下标C.下一元素地址D.左、右孩子地址
18.使用数组名作为函数的实参时,传递给形参的是()。
A.数组中第1个元素的值B.数组的首地址C.数组中全部元素的值D.
数组元素的个数
19.若一组记录的排序码为(46,79,56,38,40,84),则利用快速排序的方法,
以第一个记录为基准得到的一次划分结果为()
A.38,40,46,56,79,84
B.40,38,46,79,56,84
C.40,38,46,56,79,84
D.40,38,46,84,56,79
20.第3题已知:intc[3]⑷;则对数组元素引用正确的是
A.c[1][4]B.c[1.5][0]C.c[1+0][0]D.以上表达都错误
三、程序设计题(10题)
21.
函数fun的功能是:将s所指字符串中下标为偶数同时ASCII值为奇数
的字符删除,S所指串中剩余的字符形成的新串放在t所指的数组中。
例如,若s所指字符串中的内容为“ABCDEFG12345”,其中字符C的
ASCII码值为奇数,在数组中的下标为偶数,因此必须删除;而字符1的
ASCII码值为奇数,在数组中的下标为奇数,因此不应当删除,其他依
此类推。最后t所指的数组中的内容应是“BDF12345”。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号
中填入你编写的若干语句。
试题程序:
#include<stdio.h>
include<string.h>
voidfun(char*s,chart[D
(
)
mmn()
{.
chars[100],t[100];
printf(H\nPleaseenterstringS:");
scanf(H%s,',s);
fun(s,t);
printf(M\nThere»ukis:%s\nM,t);
22.
假定输入的字符串中只包含字母和*号。请编写函数proc(),它的功能
是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。形
参m给出了字符串的长度,形参h给出了字符串中前*号的个数,形参
e给出了字符串中最后*号的个数。在编写函数时,不得使用C语言提
供的字符串函数。例如,若字符串中的内容为****a*bc*def*g****,删
除后,字符串中的内容则应当是a*bc*def*g。注意:部分源程序给出如
下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc
()的花括号中填入所编写的若干语句。试题程序:
ttincludeV.tdso,b>
AIRCIIMUVCOAMKh>
vendprocCdwu•a»mtm.inth•inte)
voedauian()
char*£S1j«•!••(!
mitn*0«tn*0«fn*O»
phmf(aEncerA«tnnfI\D*)I
<et>(»)i
whileC•t)
-"m"导冷圈舲长It
t一一i/掂计t|B向字符率兄施
wt)dr<•)
(■——.・■十+/
,指针,■向■晅一个字母・sflUt/部•'的
个教
wt>al«<•(••'•,>
<(+♦!(!>♦♦11
/m*tf・网■一个字,・《■畿精•»‘•’的个•
proc<■・m*(n«tn)i
prmtf<*The»tnnc>(irrdeleiedt\ii*>i
puts(•)|
23.使用VC++2010打开考生文件夹下progl中的解决方案。此解决方案
的项目中包含一个源程序文件progl.co在此程序中,请编写函数fun(),
其功能是将放在字符串数组中的M个字符串(每个字符串的长度不超过
N),按顺序合并成一个新的字符串。
例如,若字符串数组中的M个字符串为|“AAAA”,“BBBBBBB”,
“CC”|,则合并后的字符串内容应该是“AAAABBBBBBBCC”。
注意:部分源程序给出如下。
请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花
括号中填入你编写的若干语句。
试题程序:
#include<stdio.h>
#include<conio.h>
#defineM3
#defineN20
voidfun(chara[M][N],char*b)
(
)
voidmain()
(
charw[M][N]={“AAAA”,“BBBBBBB”,“CC”};
chara[l00]={"##################"};
inti;
printf("Thestring:\n");
for(i=0;i<=""p="">
puts(w[i]);
printf("\n”);
fun(w,a);
printf("TheAstring:\n^^);
printfT%s",a);“
printfC^\n\n^^);
24.
请编写一个函数voidproc(intm,intk,intxx[]),该函数的功能是将大
于整数m且紧靠m的k个非素数存入所指的数组中。例如,若输入:
105(即M=10,k=5),则应输出:1214151618o注意:部分源程序
给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函
数proc()的花括号中填入所编写的若干语句。试题程序:
Uinclude<stdlib.h>
MincludeVcooidb>
,include<•tdoo.
*oidprocimtm.mth.in(
voedrnaiiH)
witm«a«u()(XX)Ji
'CLS*>i
pruttR*\nPle«Mm<cftwoifiiegerni*)|
•canif*SdXd,♦.
proc<m«B«u)i
foc(RI-OI-V・.III+♦)
prtnd(*S<i
pnnifC-\»*>i
25.使用VC++2010打开考生文件夹下progl中的解决方案。此解决方案
的项目中包含一个源程序文件progl.c。在此程序中,编写函数fun(),
其功能是删除一个字符串中指定下标的字符。其中,a指向原字符串,
删除指定字符后的字符串存放在b所指的数组中,n中存放指定的下标。
例如,输入一个字符串“World”,然后输入3,则调用该函数后的结果
为“Word”。
注意:部分源程序给出如下。
请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花
括号中填入你编写的若干语句。
试题程序:
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#defineLEN20
voidfun(chara[],charb[],intn)
(
)
voidmain()
(
charstr1[LEN],str2[LEN];
intn;
system(“CLS”);
printf("Enterthestring:\n,5);
gets(strl);
printf("Enterthepositionofthestringdeleted:^^);
scanf("%d",&n);fun(strl,str2,n);
printf("Thenewstringis:%s\n”,str2);
}一
26.
函数fun的功能是:将S所指字符串中除下标为偶数同时ASCII码值也
为偶数的字符外,其余的全部删除;字符串中剩余字符所形成的新串放
在t所指的数组中。
例如,若s所指字符串中的内容为"ABCDEFG123456",其中字符A的
ASCII码值为奇数,因此应当删除;字符8的ASCII码值为偶数,但在
数组中的下标为奇数,因此也应当删除;字符2的ASCII码值为偶数,
在数组中的下标也为偶数,因此不应当删除,其他依此类推。最后t所
指的数组中的内容应是“246”。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括
号中填入你编写的若干语句。
试题程序:
#include<stdio.h>
#in<lude<stringJ)>
voidfun(char*s,chart{])
voidmain()
{chars[l00ht[100j;
printff^XnPleaseenterstringS:r,);
scanf("%s”,s);
fun(s4);
printf(M\nTheresultis:%s\n°J);J
27.使用VC++2010打开考生文件夹下progl中的解决方案。此解决方
案的项目中包含一个源程序文件progl.c。在此程序中,编写函数
fun(),该函数的功能是统计一行字符串中单词的个数,并将其作为函
数值返回。字符串在主函数中输入,规定所有单词由小写字母组成,
单词之间由若干个空格隔开,一行的开始没有空格。
注意:部分源程序在文件progl.c中。
请勿改动main。函数和其他函数中的任何内容,仅在函数fun()的花括
号中填入你编写的若干语句。
试题程序:
1#include<string.h>
2#include<stdio.h>
3#defineN80
4intfun(char*s)
5{
6
7)
8voidmain()
9{
10FILE*wf;
11charline[N];
12intnum=0;
13printf("Enterastring:\n");
14gets(line);
15num=fun(line);
16printf("Thenumberofwordsis:%d\n\n",num);
]7/*********found*********/
18wf=fopen("out.dat","w");
19fprintf(wf,"%d",fun("abigcar"));
20fclose(wf);
2]/*********found*********I
22}
28.使用VC++2010打开考生文件夹下progl中的解决方案。此解决方
案的项目中包含一个源程序文件progl.c。在此程序中,编写函数fun(),
其功能是将两个两位数的正整数a、b合并成一个整数放在c中。合并
的方式是将a中的十位数和个位数依次放在c数的十位和千位上,b中
的十位数和个位数依次放在c数的百位和个位上。
例如,当a=45,b=如时,调用该函数后,c=5142o
注意:部分源程序给出如下。
请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花
括号中填入编写的若干语句。
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
voidfun(inta,intb,long*c)
main()
inta,b;
longc;
printf("Inputa,b:");
scanf("%d%d”,&a,&b);
fun(a,b,&c);
printff'Theresultis:%ld\n,,,c);
29.
假定输入的字符串中只包含字母和*号。请编写函数proc(),它的功能
是:使字符串中前部的*号不得多余m个;若多余m个,则删除多余的
*号;若少于或等于m个,则什么也不做,字符串中间和尾部的*号不删
除。例如,字符串中的内容为****A*BC*DEF*G****,若m的值为2,
删除后,字符串中的内容则应当是**A*BC*DEF*G****;若m的值为
4,则字符串中的内容仍为****A*BC*DEF*G****°n的值在主函数中输
入。在编写函数时,不得使用c语言提供的字符串函数。注意:部分源
程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅
在函数proc()的花括号中填入所编写的若干语句。试题程序:
*indudtVstdio.
8include<cofi4h>
midproc<char•••loln)
•vid>
(ciuifJiinitnl
print((*Efiirr,MnngsKn">Mr)i
pnniCCtnii
procC
pnnlfCafirrdrlrtrdc\t**)i
30.
请编写函数proc(),其功能是:将str所指字符串中除了下标为奇数、
同时ASCII值为偶数的字符外,其余的全部删除,串中剩余字符所形成
的一个新串放在t所指的数组中。例如,若str所指字符串中的内容为
edB2A4Dsdg,其中字符A的ASCII码值为奇数,因此应当删除;其中
字符B的ASCII码值为偶数,但在数组中的下标为偶数,因此也应当
删除;而字符2的ASCII码值为偶数,所在数组中的下标为奇数,因此
不应当删除。依此类推,最后t所指的数组中的内容应是d24。注意:
部分源程序给出如下。请勿改动main()函数和其他函数中的任何内
容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:
aknclude
修utcltMic*Vcotwo,
9includeVstdia.
HmdudrV"nn<.
voidproe<char•Mr.diar汇],
void)
charttr[100]
pnnt((eviteralricig%>>i
•%、.
pco<(<ir>O|
*'■Th*HI
四、2.程序修改题(10题)
31.下列给定程序中,函数fun()的功能是:实现两个整数的交换。例如
给a和b分别输入60和65,输出为:a=65b=60
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序;
#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);
)
32.给定程序M0D11C中函数fun的功能是根据形参m的值(2勺运9),
在m行m列的二维数组中存放如下所示规律的数据,由main函数输
出。
例如,若输入2|若输入4
则输出:|则输出:
12|1234
24|2468
|36912
|481216
请改正程序函数中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
1,include<conio.h>
2#include<stdio.h>
3*defineM10
4inta[M][M]■{0};
5/•found**。**"**
6voidfun(int**arintm)
7(intjrk;
8for(j«0;j<m;j++)
9for(k«0;k<tn;k++)
10/found・•・••*★****育*/
11a[j][k)-k*j;
12I
13main()
14{inti,j,n;
15printf("Entern:");scant
w
(%d"r&n);
16fun(a,n);
17for(i»0;i<n;1♦+)
18{for(j-O;j<n;j++)
19printf("%4d"fa[i][j]);
20printf(R\nw);
21
22
33.已知一个数列从第。项开始的前三项分别为0,0,1,以后的各项
都是其相邻的前三项之和。给定程序M0D11.C中函数fun的功能是:
计算并输出该数列前n项的平方根之和。n的值通过形参传入。
例如,当n=10时,程序的输出结果应为:23.197745o
请改正程序中的错误,使程序能输出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
1finclude<stdio.h>
2finclude<math.h>
3/♦♦********w*found*♦♦♦♦**♦♦♦♦*/
4fun(intn)
5{doublesum,sOrslfs2,s;intk;
6sum-1.0;
7if(n<-2)sum-0.0;
8sO=0.0;si=0.0;s2=1.0;
9for(k«4;k<-n;k*+)
10(s=sO♦si♦s2;
11sum"sqrt(s);
12sO»si;si-s2;s2«s;
13}
14/************found**w***♦♦***♦/
15returnsum
16
17main()
intn;
19Jprintf("InputN-n);
20iscanf("%d",&n);
21\Rw
printf(%f\nrfun(n));
22!)
34.下列给定程序中,函数fun()的功能是:从3个红球,5个白球,6个
黑球中任意取出8个作为一组,进行输出。在每组中,可以没有黑球,
但必须要有红球和白球。组合数作为函数值返回。正确的组合数应该是
15o程序中i的值代表红球数,j的值代表白球数,k的值代表黑球数。
请改正程序中的错误,使它能得出正确的结果。
注童:不要改动main函数,不得增行或删行,也不得更改程序的蛀构。
试题程序:
#include<stdio.h>
intfun()
{inti,j,k,sum=0;
printf("\nTheresult:\n\n");
for(i=0;i<=3;i++)
{for(j=l;j<=5;j++)
{k=8-i-j;
/**************found******************/
if(k>=l&&k<=6)
{sum=sum+l;
printf("red:%4dwhite:%4d
black:%4d\n",i,j,k);
returnsum;
)
main()
{intsum;
sum=fun();
printf("sum=%4d\n\n",sum);
35.下列给定程序中,函数fun()的功能是:在字符串str中找出ASCII
码值最小的字符,将其放在第一个位置上,并将该字符前的原字符向后
顺序移动。例如,调用fun()函数之前给字符串输入fagAgBDh,调用后
宁符串中的内容为AfaggBDho
请改正程序中的错误,使它能得到正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdio.h>
/*************found************/
voidfun(charp)
(
charmin,*q;
inti=0;
min=p[i];
while(p[i]!=O)
(
if(min>p[i])
(
/*************found*********
p=q+i;
min=p[i];
)
i++;
)
while(q>p)
{*q=*(q-l);
q--;
)
p[0]=min;
)
main()
(
charstr[8O];
printf("Enterastring:");
gets(str);
printf("\nTheoriginalstring:");
puts(str);
fun(str);
printf("\nThestringaftermoving:");
puts(str);
printf("\n\n");
)
36.给定程序M0D11.C中函数fun的功能是:计算n的5次方的值(规
定n的值大于2、小于8),通过形参指针传回主函数;并计算该值的个
位、十位、百位上数字之和作为函数值返回。
例如,7的5次方是16807,其低3位数的和值是15。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
1•tinclude<stdio.h>
2iIinclude<math.h>
3intfun(intn,int*value)
4{intdrs,i;
5/•••■foundrmf*/
6d-0;s-0;
7for(i«l;i<«5;i++).d・d・n;
8*value-d;
9for(i«l;i<-3;i++)
10{sms*d%10;
11
12d-d\10;
13
14returns;
15
16main()
17(intn,sum,v;
18do
19;{printf(w\nEntern(2<n<8):n);
(scanf("%dn,&n);)
20iwhile(n<-2||n>-8);
21sum«fun(n,&v);
22printf(w\n\nTheresults\nvalue*
%dsum-%d\n\n"rv,sum);
23
37.下列给定的程序中,函数fun()的功能是:判断字符ch是否与str所
指字符串中的某个字符相同;若相同,则什么也不做,若相同,则将其
插在申的最后。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
/*************found**************/
voidfun(charstr,charch)
{while(*str&&*str!=ch)str++;
/*************found**************/
if(*str==ch)
{str[O]=ch;
/*************found**************/
str[l]='O';
main()
{chars[81],c;
clrscr();
printf("\nPleaseenterastrzng:");
gets(s);
printf("\nPleaseenterthecharacterto
search:");
c=getchar();
fun(s,c);
printf("\nTheresultis%s\n",s);
38.下列给定程序中,函数fun()的功能是:统计字符串substr在字符串
srt中出现的次数。例如,若字符串为aaas1kaaas,子字符串为as,则
应输出2。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdio.h>
fun(char*str,char*substr)
{inti,j,k,num=0;
/*************found**************/
for(i=0,str[i],i++)
for(j=i,k=O;substr[k]==str[j];k++,j++)
if(substr[k+l]=='\0')
{num++;
break;
)
returnnum;
}
main()
{charstr[80],substr[80];
printf("Inputastring:");
gets(str);
printf("Inputasbustring:");
gets(substr);
printf("%d\n",fun(str,substr));
39.下列给定程序中函数fun()的功能是;先将在字符串s中的字符按逆
序存放到t串中,然后把s中的字符按正序连接到t串的后面。例如:
当S中的字符串为ABCDE时,则t中的字符串应为EDCBAABCDEo
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
voidfun(char*s,char*t)
(
inti,sl;
sl=strlen(s);
for(i=0;i<sl;i++)
t[i]=s[sl-l];
for(i=0;i<si;i++)
/*************found**************
t[sl+i]=s[i];
t[2*sl]-'\0';
)
main()
{chars[100],t[100];
clrscr();
printf("\nPleaseenterstrings:");
scanf("%s",s);
fun(s,t);
printf("Theresultis:%s\n",t);
40.下列给定的程序中,函数fun()的功能是:计算并输出k以内最大
的6个能被7或11整除的自然数之和。K的值由主函数传入,若k的
值为500,则函数的值为2925。
请改正程序中的错误,使它能得到正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#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));
}
五、程序改错题(2题)
41.下列给定程序中,函数proc()的功能是逐个比较strl,str2两个字符
串对应位置中的字符,把比ASCII值大或相等的字符依次存放到str数
组中,形成一个新的字符串。
例如,strl中的字符串为fshADfg,str2中的字符串为sdAEdi,则str
中的字符串应为sshEdigo
请修改程序中的错误,使它能得到正确结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结
构。
试题程序:
ftifidudrV,ldio.
11mrludeVarmg.
voidproc<ciuir•p.char•q.rhar•c•
(mlk-Oi
whalc<•pI•
//••••louad••••
(if<«P>,♦q)
<(ll•qi
*IMPC£IIJ***pt
if(•p)p+♦।
ii<•q>q++i
//••••(ov*d••••
voidmain()
(charwvrl(10J**f&hAIXg**mr2[103**MiAEdi*•
Ii
proc4.”1・zr2・M『)i
printrnMnn*»trl>w)iput»(ntrl>i
*TbrMnngMr2s*)iput»(»tr2)i
pnntf<*Tbcmiahsa)i
42.下列给定程序中,函数proc()的作用是:将字符串str中的大写字
母都改为对应的小写字母,其他字符不变。例如,若输入“abD,dFAD”,
则输出“abd,dfad”。请修改函数proc()中的错误,使它能得出正确
的结果。注意:不要改动main()函数,不得增行或删行,也不得更
改程序的结构。试题程序:
smcluJrVzdio.
二inclucftrV,tdlihb>
9include<>tnng.h>
彩VcfMxn,h>
char•proclchar*tr])
imli
//••••fouml••••
'Z>>)
toCD+-3九t
rrtiamCsir)।
voidmainC>
ciwif<ir£SlJi
sy»tm(*Cl-S*)i
prifi(((*\fil*lea9*eeviter.Mnnfft*)i
g«<»<»if>!
priatfCe\nThiemuhMrif^gi»«proc
六、操作题(2题)
43.执行以下程序后的输出结果是【】。
main()
{inta=10;
a=(3*5,a+4);printf("a=%d\n",a);
)
44.使用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'');
参考答案
1.共享性共享性解析:数据库技术的主要特点有以下几个方面:数据的
集成性,数据的高共享性与低冗余性,数据的独立性,数据统一管理与
控制。
2.2002Shangxian2002Shangxian解析:本题中首先定义—结构体类型
STU,该结构体由一个长度为10的字符型数组、一个long型变量和一
个float型变量组成。接着在主函数中用STU定义了4个结构体变量a、
b、c、d,并且给a、b、c赋初值,然后定义了一个结构体指针p,并让
它指向变量do将变量a的值赋给变量d,接着通过两个if语句比较结
构体变量a、b、c的成员name大小。第一个if语句将结构体变量
和结构体变量b.name中较小的那个赋值给结构体变量d,第二个if语
句将结构体变量和结构体变量较大的那个赋给结构体变
量do比较通过函数strcmp实现。strcmp()函数有两个参数,分别为被比
较的两个字符串。如果第一个字符串大于第二个字符串返回值大于0,
若第一个小于第二个返回值小于。,相等时返回值为0。字符串比较大
小的标准是从第一个字符开始依次向右比较,遇到某一个字符大,该字
符所在的字符串就是较大的字符串,如果遇到某一个字符小,该字符所
在的字符串就是较小的字符串。程序中第一个if语句
strcmp(,)>0为真,故将b的值赋给d,第二个if语句
strcmp(,d-name)>0为假,故不执行后面的语句,最后d的值为b
的值,因此输出d.snO和p->name的值为2002Shangxiano
3.PI=3.14159PI=3.14159解析:本题先定义了一个宏名PI,以后在程序
中出现PI都用3.14159替代,但是C语言规定:双引号中的宏名是不
进行替换的。
4.k-lk-l解析:第一处应该是定义的某个变量,读程序可知,变量k没
有定义,所以此处应填入ko字符串的倒序,就是将首尾对应的字符(数
组元素)两两交换。可用两个游标变量i和j分别代表前端元素的下标和
后端元素的下标,交换以这两个变量值为下标的元素str[i]和str[j]o开
始时,i的值为0,j的值为字符串末元素的下标(字符串长度减1)。每次
交换后,i增1,j减1。继续交换的条件是str[i]仍然位于str[j]的前面,
即i<J。字符串末元素的下标是它的长度减1,所以在第二处应填入-1。
5.完整性控制完整性控制
6.fopenfopen解析:函数fopen的原型为FILE*fopen(char*filename,
char*mode),功能为以mode指定的方式打开名为filename的文件;函
数fseek的原型为intfseek(FILE*fp,longoffset,intbase),功能为将fp
所指向的文件的位置指针移到以base所指出的位置为基准,offset为位
移量的位置;函数ftell的原型为longftell(FILE*fp),功能为返回fp所
指向的文件中当前的读写位置涵数fclose的原型为intfclose(FILE*fp),
功能为关闭fp所指的文件,释放文件缓冲区。
7.10410\r\n4解析:结构体变量所占内存长度是各成员占的内存长度之
和。每个成员分别占有其自己的内存单元。int占2个字节,float占4个
字节,共用体变量所占的内存长度等于最长的成员的长度。所以,
sizeof(a.share)的值是4,sizeof(A)的值是2+2+2+4=10。
8.1212解析:本题通过第一个for循坪将数组arr[0]-arr[9]分别赋值为0-
9,通过第二个for循环的三次循环累加,求出结果为12,具体分析如
下:
i=l:k=0+arr[l]+l即k=2;
i=2:k=2+arr[2]+2即k=6;
i=3:k=6+arr[3]+3即k=12;
9.i<=9或i<10或9>=i或10>ij%3!=0或j%3i<=9或i<10或9
>=i或10>i\r\nj%3!=0或j%3
10.GGGHGGGH解析:由于在函数main中定义了数组变量b,其将屏
蔽全局变量b。对于一维数纽变量,其值为一常数,等于数组首元素地
址。strcpy(&b[O],'GH'),是将字符串GH复制到数组b中从首元数开始
的空间中,此是b中的字符串为“叫":strcpy(&b[l],'GH'),是将字符串
'GH复制到数组b中从第二个元素开始的空间中,此是b中的字符串为
“GH”。执行第三次strcpy函数后,b中的字符串为GGGH:
11.C
12.D
13.D解析:数据流相当于一条管道,并有一级数据(信息)流经它。在数
据流图中,用标有名字的箭头表示数据流。数据流可以从加工流向加工,
也可以从加工流向文件或从文件流向加工,并且可以从外部实体流向系
统或从系统流向外部实体。
14.B
15.B
16.B
变量J只接收输入数据的前两位,从第三位开始直到空格之间的输入
整数都会被保存到浮点型变量Y中。
17.C
18.B用数组名作为函数参数时,数组名退化为指针,传递给形参的是数
组的首地址。故本题答案为B选项。
19.C
20.C
21.
【答案】
voidfun(char*s,chart(])
(“
inti,j=0;
for(i=0;j<strlen(s);i++)
由++J=s[i];
I
【解析】
使用循环遍历字符串,将下标和ASCII码值满足要求的元素赋给新的字符串o
22.
【解析】题目要求不能用C语言提供的字符串函数,可以利用移动字符
串指针来实现,首先移动字符串指针到第一个不是*的位置,通过指针
的移动,来实现把第一个不是星号的字符与最后一个不是星号的字符放
到a数组中,最后用‘'0'来作为字符串结束的标志。
23.voidfun(chara[M][N],char*b)
(
inti,j,k=O;
for(i=0;i/*将字符串数组中的M个字符串,按顺序存入一个新的
字符串*/
for(j=0;a[i][j]!='V),;j++)
b[k++]=a[i]0];
b[k]一\(r;/*在字符串最后加上字符串结束标志*/
)
该题考核的是字符串连接操作。字符串数组相当于二维字符数组。字符
数组a是M行N列的二维数组。通过两层for循环遍历数组a,将数组
a中的元素保存到数组b中。在数组b的最后一个元素后添加字符串结
束标志,\\0"
24.
【解析】通过要求把非素数的数放到xx数组中,检查大于整数m的整
数,将不是素数的整数放在数组xx中,直到个数大于k个结束。
25.voidfun(chara[],charb[],intn)
inti,k=0;
for(i=0;a[i]!='\0,;i++)
if(i!=n)/*将不是指定下标的字符存入数组b中*/
b[k++]=a[i];
b[k]=\(r;/*在字符串最后加上字符串结束标志*/
)
本题要求删除字符串中指定下标的字符,即把非指定下标的字符保留。
所以if语句条件表达式为“i!=n"。字符串最后不要忘记加上字符串结
束标志、0、
26.
【答案】.」仙
voidfun(char*9.chartf])'.•''一左;:
{^^1W「!■*
inti,j=(hi
6出=0»[讯='\0*1)’!,:.r-
if(i%2==0&&qi)%2==0)/*将s所指字符串中下标和AScn码值都为偶数的字符放人数组t中•/
t(j++|=«[i];-S'•1';•
,在字符串最后加上结束保识符*/.
I.
【解析】:•:.•,.「二'.
循环语句遍历字符串,条件语句找出下标和ASCII码值同时为偶数的字符.并存人数组中。
27.Intfun(char*s)
(
Inti,j=0;
for(i=0;s[i]!=,\\o7i++)if(s[i]!=,'&&(s[i+i]==,,||s[i+l]=='\\0'))
/*如果一个字母的下一个字符为空格或者结束标记,则表示一个单词
结束*/
J++;
_returnj;/*返回单词个数*/
要判断单词的个数,首先考虑怎样识别一个单词。如果一个字母的下
一个字符为空格或者字符串结束标志,则表示一个单词结束。因此程
序使用for循环语句遍历整个字符串,用if条件语句判断当前字符是
否表示一个单词的结束。如果当前字符表示一个单词结束,则存放单
词个数的变量加1,最后返回单词的个数。
28.voidfun(inta,intb,long*c)
(,
/*b%10获取b的个位数,a/10获取a的十位数,a%10获取a的个位
数,b/10获取b的十位数*/
*c=b%10+(a/10)*10+(b/10)*100+(a%10)*1000;
)
本题主要考核如何取出a和b的个位数和十位数,取出后如何将其表示
成c中相应的位数。由于a和b都是只有两位的整数,因此分别对它们
除以10可得到它们的十位数,分别用10对它们求余可得到它们的个位
数。将得到的数对应乘以1000、100、10、1,即可得到c的千位数、百
位数、十位数、个位数。注意使用c时要进行指针运算。
29.
【解析】题目中要求字符串前部的*不得多于m,首先要计算出字符串
前部的*号的个数,与变量m进行比较。当字符串前部的*多于m个时,
删除多余的*。规定不能用字符串函数处理,可以通过移动字符串的首
指针来实现。
30.
【解析】题目中要求将字符串str中下标为奇数,同时ASCH码值为偶
数的字符放在数组t中,首先,需要检查字符串str中下标为奇数的字符
的ASCII码值是否为偶数,将符合要求的字符放在数组t中。最后,为
新的字符串数组添加结束符。
31.(1)错误:voidfun(intab)正确:voidfun(int*aint*b)(2)错误:
t=b;b=a;a=t;正确;t=*b;*b=*a;*a=t;(l)错误:voidfun(inta,b)正确:void
fun(int*a,int*b)\r\n(2)错误:t=b;b=a;a=t;正确;t=*b;*b=*a;*a=t;解
析:本题考查指针变量做函数参数。采用一般变量做参数,不能改变实
参的值,采
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 柞蚕良种繁育技术规程 编制说明
- 2023年河北省秦皇岛市海港区小升初语文试卷
- 某市政工程污雨水管道施工方案
- 智能制造装备基地项目盈利能力分析报告
- 食品项目建筑工程方案
- 年产xx门板及饰面板项目建筑工程分析报告
- 安徽省阜阳市颍州区阜阳市第三中学2023-2024学年高一下学期6月期中生物试题
- (第一讲)Benjamin-Franklin可编辑
- 2023-2024学年陕西省咸阳市乾县第二中学数学高一下期末经典试题含解析
- 垃圾分类项目投资管理方案
- 中医保健-温通灸
- 部编版海底世界公开课一等奖课件省赛课获奖课件
- 护理员(护工)培训计划
- 南邮-数字通信试题
- 制药工艺学-郑州大学中国大学mooc课后章节答案期末考试题库2023年
- 新概念二册课文电子版
- 部编版道德与法治五年级下册第一单元《我们一家人》大单元作业设计案例(三)
- 云计算与大数据PPT完整全套教学课件
- 医疗器械十周年庆典策划案
- 2020青岛版三年级下册科学21走进工程师(动画版)课件
评论
0/150
提交评论