2022年湖北省咸宁市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2022年湖北省咸宁市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2022年湖北省咸宁市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2022年湖北省咸宁市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2022年湖北省咸宁市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2022年湖北省咸宁市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(12题)1.

2.有以下程序:

main()

{intX,i;

for(i=1;i<=50;i++)

{x=i;

if(X%2=O)

if(x%3=O)

if(X%7=0)

printf("%d,i)";

}

}

输出结果是()。

A.28

B.27

C.42

D.41

3.

4.以下叙述中正确的是()。

A.局部变量说明为static存储类,其生存期将得到延长

B.全局变量说明为static存储类,其作用域将被扩大

C.任何存储类的变量在未赋初值时,其值都是不确定的

D.形参可以使用的存储类说明符与局部变量完全相同

5.若有以下定义,则能使值为3的表达式是intk=7,x=12;

A.x%=(k%=5)B.x%=(k-k%5)C.x%=k-k%5D.(x%=k)-(k%=5)

6.有以下程序:#include<stdio.h>main(){inta=1,b=2,c=3,d=0;if(a==1&&b++==2) if(b!=2||c--!=3) printf(“%d,%d,%d\n”,a,b,c); elseprintf(“%d,%d,%d\n”,a,b,c);elseprintf(“%d,%d,%d\n”,a,b,c);}程序的运行结果是()。

A.1,3,2B.1,3,3C.1,2,3D.3,2,1

7.队列的“先进先出”特性是指()。

A.最早插入队列中的元素总是最后被删除

B.当同时进行插入、删除操作时,总是插入操作优先

C.每当有删除操作时,总是要先做一次插入操作

D.每次从队列中删除的总是最早插入的元素

8.下面描述中,符合结构化程序设计风格的是()。

A.使用顺序、选择和重复(循环.三种基本控制结构表示程序的控制逻辑

B.模块只有一个入口,可以有多个出口

C.注重提高程序的执行效率

D.不使用goto语句

9.设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为()。

A.求子串B.联接C.匹配D.求串长

10.在有序双向链表中定位删除一个元素的平均时间复杂度为()

A.O(1)B.O(N)C.O(logN)D.O(N*logN)

11.若执行以下程序时从键盘上输入9,则输出结果是()。main(){intn;scanf(”%d”,&n);if(n++<10)printf(”/%d\n”,n);elseprintf(”%d\n”,n--);}A.11B.10C.9D.8

12.有下列程序:程序执行后的输出结果是()。A.efg,h,z,q,bcd

B.efg,d,zyz,wbbcd

C.efgabcdsnopqhijkIxyz,h,z,q,bcd

D.efgabcdsnopqhijkIxyz,d,zyz,w,bbcd

二、2.填空题(12题)13.有以下程序:

#include<stdio.h>

main()

{intn=0,m=1,x=2;

if(!n)x-=1;

if(m)x-=2;

if(x)x-=3;

printf("%d\n",x);

}

执行后的输出结果是【】。

14.以下程序的定义语句中,x[1]的初值是[9],程序运行后输出的内容是[10]。

#include<stdio.h>

main()

{intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i;

for(i=0;i<4;i++)

{p[i]=&x[2*i+1];

printf("%d",p[i][0]);

}

printf("\n");

}

15.设有定义:intn,*k=&n;以下语句将利用指针变量k读写变量n中的内容,请将语句补充家整。

seanf("%d",【】);

printf("%d\n",【】);

16.当m=1,n=2,a=3,b=2,c=4时,执行d=(m=a!=B)&&(n=b>C)后,m的值为()。

17.关系操作的特点是______操作。

18.以下程序的输出结果是______。

#include<stdio.h>

main()

{inta[5]={2,4,6,8,10},*p;

p=a;p++;

printf("%d",*p);

}

19.数据库系统在三级模式之间提供了两层映像,这两层映像是外模式/模式映像和【】。

20.下列软件系统结构图的宽度为[]。

21.有以下程序:

fun(inta,intb)

{if(a>b)return(a);

elsereturn(b);

}

main()

{intx=3,y=8,z=6,r;

r=fun(fun(x,y),2*z);

printf("%\d\n",r);

}

程序运行后的输出的结果是【】。

22.在面向对象的设计中,用来请求对象执行某一处理或回答某些信息的要求称为【】。

23.有以下程序,其功能是:以二进制“写”方式打开文件d1.dat,写入1~100这100个整数后关闭文件。再以二进制“读”方式打开文件d1.dat,将这100个整数读入到另一个数组b中,并打印输出。请填空。

#include<stdio.h>

main()

{FILE*fp;

inti,a[100],b[100];

fp=fopen("d1.dat","wb");

for(i=0;i<100;i++)a[i]=i+1;

fwrite(a,sizeof(int),100,fp);

fclose(fp);

fp=fopen("d1.dat",【】);

fread(b,sizeof(int),100,fp);

fclose(fp);

for(i=0;i<100;i++)printf("%d\n",b[i]);

}

24.以下程序中,函数SumColumMin的功能是:求出M行N列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。请填空。

#defineM2

#defineN4

voidSumColumMin(inta[M][N],int*sum)

{inti,j,k,s=0;

for(i=0;i<N;i++)

{k=0;

for(j=1;j<M;j++)

if(a[k][i]>a[j][i])k=j;

s+=a[k][i];

}

*sum=s;

}

main()

{intx[M][N]={3,2,5,1,4,1,8,3},s;

SumColumMin(【】);

printf("%d\n",s);

}

三、3.程序设计题(10题)25.假定输入的字符串中只包含字母和*号。请编写函数fun(),它的功能是:使字符串中前部的*号不得多余n个;若多余n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。

例如,字符串中的内容为****A*BC*DEF*G*******,若n的值为2,删除后,字符串中的内容则应当是**A*BC*DEF*G*******;若n的值为4,则字符串中的内容仍为****A*BC*DEF*G******。n的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include<stdio.h>

#include<conio.h>

voidfun(charAa,intn)

{

}

main()

{chars[81];intn;

printf("Enterastring:\n");gets(s);

printf("Entern:");scanf("%d",&n);

fun(s,n);

printf("Thestringafterdeleted:\n");

puts(s);

}

26.m个人的成绩存放在score数组中,请编写函数fun(),它的功能是将高于平均分的人数作为函数值返回,将高于平均分的分数放在叩所指的数组中。

例如,当score数组中的数据为24,35,88,76,90,54,59,66,96时,函数返回的人数应该是5,up中的数据应为88,76,90,66,96。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

intfun(intscore[],intm,intup[])

{

}

main()

{

inti,n,up[9];

intscore[9]={24,35,88,76,90,54,

59,66,96};

clrscr();

n=fun(score,9,up);

printf("\nuptotheaveragescoreare:");

for(i=0;i<n;i++)

printf("%d",up[i]);

}

27.请编写函数fun(),该函数的功能是:移动一维数组中的内容,若数组中有n个整数,要求把下标从p~n-1(p<n-1)的数组元素平移到数组的前面。

例如,一维数组中的原始内容为1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,P的值为6。移动后,一维数组的内容应为7,8,9,10,11,12,13,14,15,1,2,3,4,5,6。

[注意]部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

[试题源程序]

#inciude<stdio.h>

#defineN80

voidfun(int*w,intp,intn)

{

}

main()

{

inta[N]=(i,2,3,4,5,6,7,8,9,10,11,12,13,14,15);

inti,P,n=15;

printf("Theoriginaldata:\n");

for(i=0;i<n;i++)

printf("%3d",a[i]);

printf("\n\nEnterp:");

scanf("%d",&p);

fun(a,P,n);

printf("\nThedataaftermoving:\n");

for(i=0;i<n;i++)

printf("%3d",a[i]);

printf("\n\n");

}

28.请编写一个函数intfun(int*s,intt,int*k),用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。

例如,输入如下整数:

876675896101301401980431451777

则输出结果为6,980。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include<conio.h>

#include<stdio.h>

intfun(int*s,intt,int*k)

{

}

main()

{

inta[10]={876,675,896,101,301,401,

980,431,451,777},k;

clrscr();

fun(a,10,&k);

printf("%d,%d\n",k,a[k]);

}

29.请编写函数fun(),其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。

例如,输入17,则应输出46891012141516。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include<conio.h>

#include<stdio.h>

voidfun(intm,int*k,intxx[])

{

}

main()

{

intm,n,zz[100];

clrscr();

printf("\nPleaseenteranintegernumber

between10and100:");

scanf("%d",&n);

fun(n,&m,zz);

printf("\n\nThereare%dnon-prime

numberslessthan%d:",m,n);

for(n-0;n<m;n++)

printf("\n%4d",zz[n]);

}

30.请编写函数fun,函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

例如,一维数组中的数据是:2223445666677899101010。

删除后,数组中的内容应该是:2345678910。

注意:部分源程序在文件PROGl.C中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

31.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。

注意:部分源程序在文件PROGl.C文件中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

32.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是:把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include<stdio,h>

#defineN8

typedefstruct

{charnum[10];

doubles;

}STREC;

doublefun(STREC*a,STREC*b,int*n)

{

}

main()

{

STRECs[N]={{"GA05",85},{"GA03",76}

{"GA02",69},{"GA04",85}

{"GA01",91}{"GA07",72},{"GA08",64}

{"GA06",87}};

STSCh[N],t;

FILE*out;

int.i,j,n;

doubleave;

ave=fun(s,h,&n);

printf("The%dstudentdatawhichis

lowerthan%7.3f:\n"n,ave);

for(i=0;i<n;i++)

/*输出成绩低平均值的学生记录*/

printf("%s%4lf\n"h[i]num,

h[i].s);

printf("\n");

ut=fopen("out71dat","w"

fprintf(out,"%d\n%7.3f\n",nave);

/*输出平均值/

for(i=0;i<n-1;i++)

for(j=i+l;j<n;j++)

if(h[i].s>h[j].s)

{t=h[i];h[i]=h[j];h[j]=t;}

/*将成绩由低至高排列*/

for(i=0;i<n;i++)

fprintf(out,"%4lf\n"h[i]s);

fclose(out);

}

33.请编写函数fun(),其功能是:计算并输出给定10个数的方差。

其中

例如,给定的10个数为95.0,89.0,76.0,65.0,88.0,72.0,85.0,81.0,90.0,56.0,则输出为S=11.730729。

注意;部分源程序给出如下.

请勿改动主函数mam和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include<math.h>

#include<stdio.h>

doublefun(doublex[10])

{

}

main()

{

doubles,x[i0]={95.0,89.0,76.0,65.0,

88.0,72.0,85.0,81.0,90.0,56.0};

inti;

printf("\nTheoriginaldatais:\n");

for(i=0;i<10;i++)

printf("%6.1f",x[i]);

printf("\n\n");

s=fun(x);

printf("s=%f\n\n",s);

}

34.请编写函数fun,其功能是:计算并输出给定10个数的方差:

例如,给定的10个数为95.0、89.0、76.0、65.0、88.0、72.0、85.0、81.0、90.0、56.0,输出为s=11.730729。

注意:部分源程序在文件PROGl.C中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

四、单选题(0题)35.有下列程序:程序执行后的输出结果是()。A.2,14,3,18,4,18

B.1,14,2,18,3,18

C.2,14,3,18,4,22

D.1,14,2,18,3,18,4,18

五、单选题(0题)36.利用E-R模型进行数据库的概念设计,可以分成3步:首先设计局部E-R模型,然后把各个局部E-R模型综合成一个全局的模型,最后对全局E-R模型进行(),得到最终的E-R模型。

A.简化B.结构化C.最小化D.优化

六、单选题(0题)37.如果树的的结点A有4个兄弟,而且B为A的双亲,则B的度为()。

A.3B.4C.5D.1

参考答案

1.D

2.C\n只有当3个if条件同时成立,即能够同时被2、3、7整除时,才输出i的值,而从0到50能够同时被2、3、7整除的数只有42,故选择c选巩。

\n

3.D

4.A解析:局部变量在执行到它所在的程序块时产生,执行完时被摧毁,而静态局部变量的生存期将一直延长到程序运行结束,故选项A正确;全局变量的只有一种静态存储类别,故全局变量说明为static存储类,和没有说明为static存储类其生存期都是一直延长到程序运行结束,故选项B不正确:未赋初值的局部变量的初值是随机的,故选项C不正确;形参只能是一般局部变量,不能使用任何存储类说明符,故选项D不正确。所以,4个选项中选项A符合题意。

5.D解析:运算符“%”的两侧都应该是整型数。另外,本题需要掌握的知识点是:x%=k,等价于x=x%k。注意:强制类型转换表达式。

6.Belse总是和最近的if配对。进入第1个if语句进行条件判断时,因为是選辑与操作,需要两边运算对象的值均为非零值才为真,所以需要逐个执行判断。结果为1,进入第2个if语句进行条件判断。因为“b!=2”条件成立,所以整个条件表达式的值为真,不再执行逻辑或的第2个运算对象“(c--!=3)”变量c的值不变,也不再执行第1个else语句。输出a的值1,b的值3,c的值3。故本题答案为B选项。

7.D

8.A解析:结构化程序设计方法的四条原则是:①自顶向下;②逐步求精;③模块化;④限制使用goto语句。“自顶向下”是指在程序设计时,先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。“逐步求精”是指对复杂问题应设计一些子目标作过渡,逐步细节化。“模块化”是指一个复杂问题由若干稍简单的问题构成;解决这个复杂问题的程序,也应由若干稍简单问题的小程序组成。

9.C

10.B

11.B当n为9时,此时if语句成立,执行n++后,n为10,因此输出n的值为10,故选择B选项。

12.A程序定义一个二维字符数组v,使用5个字符串对其初始化。对于表达式“*v”等价于“*(v+0)”,输出的是数组v的第1个元素efg;“**(v+3)”等价于“*(*(v+3)+0)”,输出的是数组v的第4个元素的第1个字符h;“v[4]”表示数组v的第5个元素,“v[4]+2”表示输出从下标2开始的所有字符,即z;“v[2]”表示数组v的第3个元素,“*(v[2]+4)”表示数组v的第3个元素的下标为4的字符q;“v[1]+1”表示数组v的第2个元素从下标1开始的子字符串,即bcd。所以程序输出:efg,h,z,q,bcd。本题答案为A选项。

13.-4-4解析:因为n=0,所以!n为真,执行x-=1;得到x=x=2-1=1;m=1为真,执行x-=2;得到x=x-2=1-2=-1;x=-1为真,执行x-=3;得到x=x-3=-1-3=-4。

14.在主函数中根据整型数组x[]的定义可知,x[1]的初值等于2。在for循环语句中;当i=0时,p[0]=&x[1],p[0][0]=2;当i=1时,P[1];&x[3],p[1][0]=4;当i=2时,p[2]=及x[5],p[2][0]=6;当i=3时,p[3]=&x[7],p[3][0]=8,所以程序输出的结果为2、4、6、8。\r\n\r\n

15.k[7]*kk[7]*k解析:scanf()函数有两个参数,第—个参数是格式控制部分(格式控制部分是字符串,主要由“%”号和格式字符组成)第二个参数是一地址列表(地址列表是由多个地址组成,可以是变量的地址,也可以是字符串的首地址)。而第一个空格处位于scanf()函数的第二个参数处,所以,第一个空应该填地址k。printf()函数有两个参数,第一个参数是输出格式字符串(输出格式字符串是由控制输出格式的字符和非格式字符组成的,通常是字符常量。非格式字符作为输出数据的间隔,输出时原样输出)第二个参数为一输出表达式表(输出表达式表是由若干个需要计算和输出的表达式组成的,表达式之间用逗号分隔开)。而第二个空位于printf()函数的第二个参数处,所以应该填*K。

16.11解析:①“sizeof'、“%”、“>”、“<<”、“*=”,运算符的优先级顺序为:“*=”→“>”→“<<”→“%”→“sizeof”;②位运算的优先级顺序为:“~”→“<<”→“>>”→“&”→“^”。(b=2)>(c=4)不成立,逻辑为假,所以n=0;(a=3)!=(b=2)成立,逻辑为真,所以m=1。

17.集合集合

18.指针P指向数组a的首地址,执行语句p++;后p指向数组a的第2个元素的地址,即a[1]的地址,因此*p=a[1]=4。\r\n\r\n

19.模式/内模式映像模式/内模式映像解析:映像即一种对应规则,指出映像双方如何进行转换。数据库系统在三级模式之间提供了两层映像,这两层映像是外模式/模式映像与模式/内模式映像。

20.33解析:软件系统结构图的宽度:整体控制跨度(最大模块数的层)的表示。

21.1212解析:函数fun的功能是求两个数当中的最大值。语句r=fun(fun(x,y),2*z)的执行过程为:首先计算fun(x,y),因x=3、y=8,所以结果为8;然后计算fun(8,2,*z),即计算fun(8,12),所以r=12。

22.消息消息解析:在面向对象技术中,主要用到对象(object)、类(class)、方法(method)、消息(message)、继承(inheritance)、封装(encapsulation)等基本概念。其中消息是用来请求对象执行某一处理或回答某些信息的要求。

23.rb或"r+b"或"rb+"rb或'r+b'或'rb+'解析:根据题目要求,在下划线位置应该填入一个能实现二进制读的使用文件方式的参数即可。所以,可以填'rb'或'r+b'或'rb+'。

24.x&sx,&s解析:函数SumColumMin中变量k存放一列数组元素中值最小的数组元素的行标,函数通过形参sum带回值,sum是指针变量,将s中的值赋给*sum。空为函数调用,函数SumColumMin有两个形参,二维数组和指针变量,故空中应填x,&s。

25.voidfun(char*aintn){inti=0k=0;char*p*t;p=t=a;/*开始时p与t同时指向数组的首地址*/while(*t==‘*’)/*用k来统计前部星号的个数*/{k++;t++;}if(k>n)/*如果k大于n则佼p的前部保留n个星号其后的字符依次存入数组a中*/{while(*P){a[i]=*(p+k-n);i++p++;}a[i]=‘\0’;/*在字符串最后加上结束标志位*/}}voidfun(char*a,intn)\r\n{\r\ninti=0,k=0;\r\nchar*p,*t;\r\np=t=a;/*开始时,p与t同时指向数组的首地址*/\r\nwhile(*t==‘*’)/*用k来统计前部星号的个数*/\r\n{k++;t++;}\r\nif(k>n)/*如果k大于n,则佼p的前部保留n个星号,其后的字符依次存入数组a中*/\r\n{while(*P)\r\n{a[i]=*(p+k-n);\r\ni++\r\np++;\r\n}\r\na[i]=‘\\0’;/*在字符串最后加上结束标志位*/\r\n}\r\n}解析:while()循环的作用是计算出前部星号的个数;if()的作用是判断星号个数是否多于n个,若是则只保留n个星号,即从字符串前部的倒数第n个星号开始,到最后一个字符都存入数组a中,最后记得在字符串最后加上结束标志位。

26.intfun(intscore[]intmintup[]){intij=0;floatav=0.0for(i=0;i<m;i++)av=av+score[i]/m;/*求平均值*/for(i=0;i<m;i++)if(score[i]>av)/*如果分数高于平均分则将此分数放入up数组中*/up[j++]=score[i];returnj;/*返回高于平均分的人数*/}intfun(intscore[],intm,intup[])\r\n{\r\ninti,j=0;\r\nfloatav=0.0\r\nfor(i=0;i<m;i++)\r\nav=av+score[i]/m;/*求平均值*/\r\nfor(i=0;i<m;i++)\r\nif(score[i]>av)/*如果分数高于平均分,则将此分数放入up数组中*/\r\nup[j++]=score[i];\r\nreturnj;/*返回高于平均分的人数*/\r\n}解析:该题第1个循环的作用是求出平均分av,第2个循环的作用是找出高于平均分的成绩并存入up数组中。

27.voidfun(int*wintpintn){intiJt;for(i=p;i<=n-i;i++){t=w[n-1];for(j=n-2;j>=0;j--)w[j+1]=w[j];w[0]=t;}}voidfun(int*w,intp,intn)\r\n{\r\ninti,J,t;\r\nfor(i=p;i<=n-i;i++)\r\n{\r\nt=w[n-1];\r\nfor(j=n-2;j>=0;j--)\r\nw[j+1]=w[j];\r\nw[0]=t;\r\n}\r\n}

28.intfun(int*sinttint*k){inti;*k=0;/*k所指的数是数组的下标值*/for(i=0;i<t;i++)if(s[*k]<s[i])*k=i;/*找到数组的最大元素把该元素的下标赋给k所指的数*/returns[*k];/*返回数组的最大元素*/}intfun(int*s,intt,int*k)\r\n{\r\ninti;\r\n*k=0;/*k所指的数是数组的下标值*/\r\nfor(i=0;i<t;i++)\r\nif(s[*k]<s[i])*k=i;/*找到数组的最大元素,把该元素的下标赋给k所指的数*/\r\nreturns[*k];/*返回数组的最大元素*/\r\n}解析:本题中直接使用指针变量k,但在使用时要注意对k的指针运算,此外,一开始应让*k的值为数组中的某一下标值,即*k=0。

29.voidfun(intmint*kintxx[]){intijn=0;for(i=4;i<m;i++)/*找出大于1小于整数m的非素数*/{for(j=2;j<i;j++)if{i%j==0)break;if(j<i)xx[n++]=i;}*k=n;/*反回非素数的个数*/}voidfun(intm,int*k,intxx[])\r\n{\r\ninti,j,n=0;\r\nfor(i=4;i<m;i++)/*找出大于1小于整数m的非素数*/\r\n{for(j=2;j<i;j++)\r\nif{i%j==0)break;\r\nif(j<i)xx[n++]=i;\r\n}\r\n*k=n;/*反回非素数的个数*/\r\n}解析:这道题是考查一个数是不是素数的简单延伸,只要掌握了判断素数的方法,问题便能顺利解决,请学习者以此题为例,搞清判断素数的方法。

30.

解析:该程序功能是删去一维数组中所有相同的数,使之只剩一个。解题思路是,首先在函数中定义临时变量指向每一个元素,然后在循环过程中将临时值和其他元素进行比较,如果相同,那么跳过相同字符。

31.

解析:该程序功能是按分数的高低排列学生的记录。首先从数组中挑选一个最大的元素,把它和第一元素交换,接着从剩下的n-1个元素中再挑出一个最大的元素,把它和第二个元素交换,不断重复以上过程,直到比较完最后两个元素。

32.doublefun(STREC*aSTREC*bint*n){intij=0;doubleay=0.0;for(i=0;i<N;i++)av=av+a[i].s;av=av/N;/*求平均值*/for(i=0;i<N;i++)if(a[i].s<av)b[j++]=a[i];/*将低于平均值的学生记录存入结构体b中*/*n=j;/*指针传回低于平均值的学生人数//returnav;/*返回平均值*/}doublefun(STREC*a,STREC*b,int*n)\r\n{\r\ninti,j=0;\r\ndoubleay=0.0;\r\nfor(i=0;i<N;i++)\r\nav=av+a[i].s;\r\nav=av/N;/*求平均值*/\r\nfor(i=0;i<N;i++)\r\nif(a[i].s<av)b[j++]=a[i];/*将低于平均值的学生记录存入结构体b中*/\r\n*n=j;/*指针传回低于平均值的学生人数//\r\nreturnav;/*返回平均值*/\r\n}解析:很明显,本题应该使用循环语句和条件判断语句来实现目的,第1个循环是求出总分,然后求出平均分av。第2个循环的作用是将分数低于平均分的学生记录存入数组b中。

33.doublefun(doublex[10]){doublexl=0.0s=0.0;inti;for(i=0;i<10;i++)xl=xl+x[i];xl-xl/10;/*求10个数的平均值*/for(i=0;i<l0;i++)s=s+(x[i]-xl)*(x[i]-x1);returnsqrt(s/l0);/*求10个数的方差*/}doublefun(doublex[10])\r\n{\r\ndoublexl=0.0,s=0.0;\r\ninti;\r\nfor(i=0;i<10;i++)\r\nxl=xl+x[i];\r\nxl-xl/10;\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000/*求10个数的平均值*/\r\nfor(i=0;i<l0;i++)\r\ns=s+(x[i]-xl)*(x[i]-x1);\r\nreturnsqrt(s/l0);\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000/*求10个数的方差*/\r\n}解析:又是一道算式表达题,程序中用第1个循环来完成求10个数的总和,接着再用x1=x1/10来求出平均值。

34.

解析:该程序功能是计算并输出给定10个数的方差。解题思路是,根据题干中给出的方差公式首先计算出x’的值,然后计算根号里面的值,最后求其平方根。

35.A程序定义整型变量a和i,其中a的初值为7。for循环中,循环变量i的取值为1,2,3。循环体中判断a的取值,当a>14时,执行break跳出循环;当a取值为奇数时,a%2==1,a自增3,执行continue继续执行循环体;当a取值为偶数时,a%2==0,a自增4,输出i和a的值。i取值为1时,a取值为7,自增3后a的值为10,执行下一个循环。i取值为2时,a取值为10,自增4后a的值为14,输出2,14。i取值为3时,a取值为14,自增4后a的值为18,输出3,18。i取值为4时,a取值为18,循环终止,输出4,18。综上,程序输出:2,14,3,18,4,18。本题答案为A选项。

36.D解析:在概念设计中按照模块的划分画出每个模块的E-R图,然后把这些图合成一张E-R图作为全局模型,最后应该对全局E-R图进行优化,看看是否有重复和不合理的地方。不能只是进行简单的合并。

37.C2022年湖北省咸宁市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(12题)1.

2.有以下程序:

main()

{intX,i;

for(i=1;i<=50;i++)

{x=i;

if(X%2=O)

if(x%3=O)

if(X%7=0)

printf("%d,i)";

}

}

输出结果是()。

A.28

B.27

C.42

D.41

3.

4.以下叙述中正确的是()。

A.局部变量说明为static存储类,其生存期将得到延长

B.全局变量说明为static存储类,其作用域将被扩大

C.任何存储类的变量在未赋初值时,其值都是不确定的

D.形参可以使用的存储类说明符与局部变量完全相同

5.若有以下定义,则能使值为3的表达式是intk=7,x=12;

A.x%=(k%=5)B.x%=(k-k%5)C.x%=k-k%5D.(x%=k)-(k%=5)

6.有以下程序:#include<stdio.h>main(){inta=1,b=2,c=3,d=0;if(a==1&&b++==2) if(b!=2||c--!=3) printf(“%d,%d,%d\n”,a,b,c); elseprintf(“%d,%d,%d\n”,a,b,c);elseprintf(“%d,%d,%d\n”,a,b,c);}程序的运行结果是()。

A.1,3,2B.1,3,3C.1,2,3D.3,2,1

7.队列的“先进先出”特性是指()。

A.最早插入队列中的元素总是最后被删除

B.当同时进行插入、删除操作时,总是插入操作优先

C.每当有删除操作时,总是要先做一次插入操作

D.每次从队列中删除的总是最早插入的元素

8.下面描述中,符合结构化程序设计风格的是()。

A.使用顺序、选择和重复(循环.三种基本控制结构表示程序的控制逻辑

B.模块只有一个入口,可以有多个出口

C.注重提高程序的执行效率

D.不使用goto语句

9.设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为()。

A.求子串B.联接C.匹配D.求串长

10.在有序双向链表中定位删除一个元素的平均时间复杂度为()

A.O(1)B.O(N)C.O(logN)D.O(N*logN)

11.若执行以下程序时从键盘上输入9,则输出结果是()。main(){intn;scanf(”%d”,&n);if(n++<10)printf(”/%d\n”,n);elseprintf(”%d\n”,n--);}A.11B.10C.9D.8

12.有下列程序:程序执行后的输出结果是()。A.efg,h,z,q,bcd

B.efg,d,zyz,wbbcd

C.efgabcdsnopqhijkIxyz,h,z,q,bcd

D.efgabcdsnopqhijkIxyz,d,zyz,w,bbcd

二、2.填空题(12题)13.有以下程序:

#include<stdio.h>

main()

{intn=0,m=1,x=2;

if(!n)x-=1;

if(m)x-=2;

if(x)x-=3;

printf("%d\n",x);

}

执行后的输出结果是【】。

14.以下程序的定义语句中,x[1]的初值是[9],程序运行后输出的内容是[10]。

#include<stdio.h>

main()

{intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i;

for(i=0;i<4;i++)

{p[i]=&x[2*i+1];

printf("%d",p[i][0]);

}

printf("\n");

}

15.设有定义:intn,*k=&n;以下语句将利用指针变量k读写变量n中的内容,请将语句补充家整。

seanf("%d",【】);

printf("%d\n",【】);

16.当m=1,n=2,a=3,b=2,c=4时,执行d=(m=a!=B)&&(n=b>C)后,m的值为()。

17.关系操作的特点是______操作。

18.以下程序的输出结果是______。

#include<stdio.h>

main()

{inta[5]={2,4,6,8,10},*p;

p=a;p++;

printf("%d",*p);

}

19.数据库系统在三级模式之间提供了两层映像,这两层映像是外模式/模式映像和【】。

20.下列软件系统结构图的宽度为[]。

21.有以下程序:

fun(inta,intb)

{if(a>b)return(a);

elsereturn(b);

}

main()

{intx=3,y=8,z=6,r;

r=fun(fun(x,y),2*z);

printf("%\d\n",r);

}

程序运行后的输出的结果是【】。

22.在面向对象的设计中,用来请求对象执行某一处理或回答某些信息的要求称为【】。

23.有以下程序,其功能是:以二进制“写”方式打开文件d1.dat,写入1~100这100个整数后关闭文件。再以二进制“读”方式打开文件d1.dat,将这100个整数读入到另一个数组b中,并打印输出。请填空。

#include<stdio.h>

main()

{FILE*fp;

inti,a[100],b[100];

fp=fopen("d1.dat","wb");

for(i=0;i<100;i++)a[i]=i+1;

fwrite(a,sizeof(int),100,fp);

fclose(fp);

fp=fopen("d1.dat",【】);

fread(b,sizeof(int),100,fp);

fclose(fp);

for(i=0;i<100;i++)printf("%d\n",b[i]);

}

24.以下程序中,函数SumColumMin的功能是:求出M行N列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。请填空。

#defineM2

#defineN4

voidSumColumMin(inta[M][N],int*sum)

{inti,j,k,s=0;

for(i=0;i<N;i++)

{k=0;

for(j=1;j<M;j++)

if(a[k][i]>a[j][i])k=j;

s+=a[k][i];

}

*sum=s;

}

main()

{intx[M][N]={3,2,5,1,4,1,8,3},s;

SumColumMin(【】);

printf("%d\n",s);

}

三、3.程序设计题(10题)25.假定输入的字符串中只包含字母和*号。请编写函数fun(),它的功能是:使字符串中前部的*号不得多余n个;若多余n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。

例如,字符串中的内容为****A*BC*DEF*G*******,若n的值为2,删除后,字符串中的内容则应当是**A*BC*DEF*G*******;若n的值为4,则字符串中的内容仍为****A*BC*DEF*G******。n的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include<stdio.h>

#include<conio.h>

voidfun(charAa,intn)

{

}

main()

{chars[81];intn;

printf("Enterastring:\n");gets(s);

printf("Entern:");scanf("%d",&n);

fun(s,n);

printf("Thestringafterdeleted:\n");

puts(s);

}

26.m个人的成绩存放在score数组中,请编写函数fun(),它的功能是将高于平均分的人数作为函数值返回,将高于平均分的分数放在叩所指的数组中。

例如,当score数组中的数据为24,35,88,76,90,54,59,66,96时,函数返回的人数应该是5,up中的数据应为88,76,90,66,96。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

intfun(intscore[],intm,intup[])

{

}

main()

{

inti,n,up[9];

intscore[9]={24,35,88,76,90,54,

59,66,96};

clrscr();

n=fun(score,9,up);

printf("\nuptotheaveragescoreare:");

for(i=0;i<n;i++)

printf("%d",up[i]);

}

27.请编写函数fun(),该函数的功能是:移动一维数组中的内容,若数组中有n个整数,要求把下标从p~n-1(p<n-1)的数组元素平移到数组的前面。

例如,一维数组中的原始内容为1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,P的值为6。移动后,一维数组的内容应为7,8,9,10,11,12,13,14,15,1,2,3,4,5,6。

[注意]部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

[试题源程序]

#inciude<stdio.h>

#defineN80

voidfun(int*w,intp,intn)

{

}

main()

{

inta[N]=(i,2,3,4,5,6,7,8,9,10,11,12,13,14,15);

inti,P,n=15;

printf("Theoriginaldata:\n");

for(i=0;i<n;i++)

printf("%3d",a[i]);

printf("\n\nEnterp:");

scanf("%d",&p);

fun(a,P,n);

printf("\nThedataaftermoving:\n");

for(i=0;i<n;i++)

printf("%3d",a[i]);

printf("\n\n");

}

28.请编写一个函数intfun(int*s,intt,int*k),用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。

例如,输入如下整数:

876675896101301401980431451777

则输出结果为6,980。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include<conio.h>

#include<stdio.h>

intfun(int*s,intt,int*k)

{

}

main()

{

inta[10]={876,675,896,101,301,401,

980,431,451,777},k;

clrscr();

fun(a,10,&k);

printf("%d,%d\n",k,a[k]);

}

29.请编写函数fun(),其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。

例如,输入17,则应输出46891012141516。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include<conio.h>

#include<stdio.h>

voidfun(intm,int*k,intxx[])

{

}

main()

{

intm,n,zz[100];

clrscr();

printf("\nPleaseenteranintegernumber

between10and100:");

scanf("%d",&n);

fun(n,&m,zz);

printf("\n\nThereare%dnon-prime

numberslessthan%d:",m,n);

for(n-0;n<m;n++)

printf("\n%4d",zz[n]);

}

30.请编写函数fun,函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

例如,一维数组中的数据是:2223445666677899101010。

删除后,数组中的内容应该是:2345678910。

注意:部分源程序在文件PROGl.C中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

31.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。

注意:部分源程序在文件PROGl.C文件中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

32.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是:把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include<stdio,h>

#defineN8

typedefstruct

{charnum[10];

doubles;

}STREC;

doublefun(STREC*a,STREC*b,int*n)

{

}

main()

{

STRECs[N]={{"GA05",85},{"GA03",76}

{"GA02",69},{"GA04",85}

{"GA01",91}{"GA07",72},{"GA08",64}

{"GA06",87}};

STSCh[N],t;

FILE*out;

int.i,j,n;

doubleave;

ave=fun(s,h,&n);

printf("The%dstudentdatawhichis

lowerthan%7.3f:\n"n,ave);

for(i=0;i<n;i++)

/*输出成绩低平均值的学生记录*/

printf("%s%4lf\n"h[i]num,

h[i].s);

printf("\n");

ut=fopen("out71dat","w"

fprintf(out,"%d\n%7.3f\n",nave);

/*输出平均值/

for(i=0;i<n-1;i++)

for(j=i+l;j<n;j++)

if(h[i].s>h[j].s)

{t=h[i];h[i]=h[j];h[j]=t;}

/*将成绩由低至高排列*/

for(i=0;i<n;i++)

fprintf(out,"%4lf\n"h[i]s);

fclose(out);

}

33.请编写函数fun(),其功能是:计算并输出给定10个数的方差。

其中

例如,给定的10个数为95.0,89.0,76.0,65.0,88.0,72.0,85.0,81.0,90.0,56.0,则输出为S=11.730729。

注意;部分源程序给出如下.

请勿改动主函数mam和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include<math.h>

#include<stdio.h>

doublefun(doublex[10])

{

}

main()

{

doubles,x[i0]={95.0,89.0,76.0,65.0,

88.0,72.0,85.0,81.0,90.0,56.0};

inti;

printf("\nTheoriginaldatais:\n");

for(i=0;i<10;i++)

printf("%6.1f",x[i]);

printf("\n\n");

s=fun(x);

printf("s=%f\n\n",s);

}

34.请编写函数fun,其功能是:计算并输出给定10个数的方差:

例如,给定的10个数为95.0、89.0、76.0、65.0、88.0、72.0、85.0、81.0、90.0、56.0,输出为s=11.730729。

注意:部分源程序在文件PROGl.C中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

四、单选题(0题)35.有下列程序:程序执行后的输出结果是()。A.2,14,3,18,4,18

B.1,14,2,18,3,18

C.2,14,3,18,4,22

D.1,14,2,18,3,18,4,18

五、单选题(0题)36.利用E-R模型进行数据库的概念设计,可以分成3步:首先设计局部E-R模型,然后把各个局部E-R模型综合成一个全局的模型,最后对全局E-R模型进行(),得到最终的E-R模型。

A.简化B.结构化C.最小化D.优化

六、单选题(0题)37.如果树的的结点A有4个兄弟,而且B为A的双亲,则B的度为()。

A.3B.4C.5D.1

参考答案

1.D

2.C\n只有当3个if条件同时成立,即能够同时被2、3、7整除时,才输出i的值,而从0到50能够同时被2、3、7整除的数只有42,故选择c选巩。

\n

3.D

4.A解析:局部变量在执行到它所在的程序块时产生,执行完时被摧毁,而静态局部变量的生存期将一直延长到程序运行结束,故选项A正确;全局变量的只有一种静态存储类别,故全局变量说明为static存储类,和没有说明为static存储类其生存期都是一直延长到程序运行结束,故选项B不正确:未赋初值的局部变量的初值是随机的,故选项C不正确;形参只能是一般局部变量,不能使用任何存储类说明符,故选项D不正确。所以,4个选项中选项A符合题意。

5.D解析:运算符“%”的两侧都应该是整型数。另外,本题需要掌握的知识点是:x%=k,等价于x=x%k。注意:强制类型转换表达式。

6.Belse总是和最近的if配对。进入第1个if语句进行条件判断时,因为是選辑与操作,需要两边运算对象的值均为非零值才为真,所以需要逐个执行判断。结果为1,进入第2个if语句进行条件判断。因为“b!=2”条件成立,所以整个条件表达式的值为真,不再执行逻辑或的第2个运算对象“(c--!=3)”变量c的值不变,也不再执行第1个else语句。输出a的值1,b的值3,c的值3。故本题答案为B选项。

7.D

8.A解析:结构化程序设计方法的四条原则是:①自顶向下;②逐步求精;③模块化;④限制使用goto语句。“自顶向下”是指在程序设计时,先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。“逐步求精”是指对复杂问题应设计一些子目标作过渡,逐步细节化。“模块化”是指一个复杂问题由若干稍简单的问题构成;解决这个复杂问题的程序,也应由若干稍简单问题的小程序组成。

9.C

10.B

11.B当n为9时,此时if语句成立,执行n++后,n为10,因此输出n的值为10,故选择B选项。

12.A程序定义一个二维字符数组v,使用5个字符串对其初始化。对于表达式“*v”等价于“*(v+0)”,输出的是数组v的第1个元素efg;“**(v+3)”等价于“*(*(v+3)+0)”,输出的是数组v的第4个元素的第1个字符h;“v[4]”表示数组v的第5个元素,“v[4]+2”表示输出从下标2开始的所有字符,即z;“v[2]”表示数组v的第3个元素,“*(v[2]+4)”表示数组v的第3个元素的下标为4的字符q;“v[1]+1”表示数组v的第2个元素从下标1开始的子字符串,即bcd。所以程序输出:efg,h,z,q,bcd。本题答案为A选项。

13.-4-4解析:因为n=0,所以!n为真,执行x-=1;得到x=x=2-1=1;m=1为真,执行x-=2;得到x=x-2=1-2=-1;x=-1为真,执行x-=3;得到x=x-3=-1-3=-4。

14.在主函数中根据整型数组x[]的定义可知,x[1]的初值等于2。在for循环语句中;当i=0时,p[0]=&x[1],p[0][0]=2;当i=1时,P[1];&x[3],p[1][0]=4;当i=2时,p[2]=及x[5],p[2][0]=6;当i=3时,p[3]=&x[7],p[3][0]=8,所以程序输出的结果为2、4、6、8。\r\n\r\n

15.k[7]*kk[7]*k解析:scanf()函数有两个参数,第—个参数是格式控制部分(格式控制部分是字符串,主要由“%”号和格式字符组成)第二个参数是一地址列表(地址列表是由多个地址组成,可以是变量的地址,也可以是字符串的首地址)。而第一个空格处位于scanf()函数的第二个参数处,所以,第一个空应该填地址k。printf()函数有两个参数,第一个参数是输出格式字符串(输出格式字符串是由控制输出格式的字符和非格式字符组成的,通常是字符常量。非格式字符作为输出数据的间隔,输出时原样输出)第二个参数为一输出表达式表(输出表达式表是由若干个需要计算和输出的表达式组成的,表达式之间用逗号分隔开)。而第二个空位于printf()函数的第二个参数处,所以应该填*K。

16.11解析:①“sizeof'、“%”、“>”、“<<”、“*=”,运算符的优先级顺序为:“*=”→“>”→“<<”→“%”→“sizeof”;②位运算的优先级顺序为:“~”→“<<”→“>>”→“&”→“^”。(b=2)>(c=4)不成立,逻辑为假,所以n=0;(a=3)!=(b=2)成立,逻辑为真,所以m=1。

17.集合集合

18.指针P指向数组a的首地址,执行语句p++;后p指向数组a的第2个元素的地址,即a[1]的地址,因此*p=a[1]=4。\r\n\r\n

19.模式/内模式映像模式/内模式映像解析:映像即一种对应规则,指出映像双方如何进行转换。数据库系统在三级模式之间提供了两层映像,这两层映像是外模式/模式映像与模式/内模式映像。

20.33解析:软件系统结构图的宽度:整体控制跨度(最大模块数的层)的表示。

21.1212解析:函数fun的功能是求两个数当中的最大值。语句r=fun(fun(x,y),2*z)的执行过程为:首先计算fun(x,y),因x=3、y=8,所以结果为8;然后计算fun(8,2,*z),即计算fun(8,12),所以r=12。

22.消息消息解析:在面向对象技术中,主要用到对象(object)、类(class)、方法(method)、消息(message)、继承(inheritance)、封装(encapsulation)等基本概念。其中消息是用来请求对象执行某一处理或回答某些信息的要求。

23.rb或"r+b"或"rb+"rb或'r+b'或'rb+'解析:根据题目要求,在下划线位置应该填入一个能实现二进制读的使用文件方式的参数即可。所以,可以填'rb'或'r+b'或'rb+'。

24.x&sx,&s解析:函数SumColumMin中变量k存放一列数组元素中值最小的数组元素的行标,函数通过形参sum带回值,sum是指针变量,将s中的值赋给*sum。空为函数调用,函数SumColumMin有两个形参,二维数组和指针变量,故空中应填x,&s。

25.voidfun(char*aintn){inti=0k=0;char*p*t;p=t=a;/*开始时p与t同时指向数组的首地址*/while(*t==‘*’)/*用k来统计前部星号的个数*/{k++;t++;}if(k>n)/*如果k大于n则佼p的前部保留n个星号其后的字符依次存入数组a中*/{while(*P){a[i]=*(p+k-n);i++p++;}a[i]=‘\0’;/*在字符串最后加上结束标志位*/}}voidfun(char*a,intn)\r\n{\r\ninti=0,k=0;\r\nchar*p,*t;\r\np=t=a;/*开始时,p与t同时指向数组的首地址*/\r\nwhile(*t==‘*’)/*用k来统计前部星号的个数*/\r\n{k++;t++;}\r\nif(k>n)/*如果k大于n,则佼p的前部保留n个星号,其后的字符依次存入数组a中*/\r\n{while(*P)\r\n{a[i]=*(p+k-n);\r\ni++\r\np++;\r\n}\r\na[i]=‘\\0’;/*在字符串最后加上结束标志位*/\r\n}\r\n}解析:while()循环的作用是计算出前部星号的个数;if()的作用是判断星号个数是否多于n个,若是则只保留n个星号,即从字符串前部的倒数第n个星号开始,到最后一个字符都存入数组a中,最后记得在字符串最后加上结束标志位。

26.intfun(intscore[]intmintup[]){intij=0;floatav=0.0for(i=0;i<m;i++)av=av+score[i]/m;/*求平均值*/for(i=0;i<m;i++)if(score[i]>av)/*如果分数高于平均分则将此分数放入up数组中*/up[j++]=score[i];returnj;/*返回高于平均分的人数*/}intfun(intscore[],intm,intup[])\r\n{\r\ninti,j=0;\r\nfloatav=0.0\r\nfor(i=0;i<m;i++)\r\nav=av+score[i]/m;/*求平均值*/\r\nfor(i=0;i<m;i++)\r\nif(score[i]>av)/*如果分数高于平均分,则将此分数放入up数组中*/\r\nup[j++]=score[i];\r\nreturnj;/*返回高于平均分的人数*/\r\n}解析:该题第1个循环的作用是求出平均分av,第2个循环的作用是找出高于平均分的成绩并存入up数组中。

27.voidfun(int*wintpintn){intiJt;for(i=p;i<=n-i;i++){t=w[n-1];for(j=n-2;j>=0;j--)w[j+1]=w[j];w[0]=t;}}voidfun(int*w,intp,intn)\r\n{\r\ninti,J,t;\r\nfor(i=p;i<=n-i;i++)\r\n{\r\nt=w[n-1];\r\nfor(j=n-2;j>=0;j--)\r

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论