2021-2022学年湖北省荆门市全国计算机等级考试C语言程序设计测试卷(含答案)_第1页
2021-2022学年湖北省荆门市全国计算机等级考试C语言程序设计测试卷(含答案)_第2页
2021-2022学年湖北省荆门市全国计算机等级考试C语言程序设计测试卷(含答案)_第3页
2021-2022学年湖北省荆门市全国计算机等级考试C语言程序设计测试卷(含答案)_第4页
2021-2022学年湖北省荆门市全国计算机等级考试C语言程序设计测试卷(含答案)_第5页
已阅读5页,还剩16页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

2021-2022学年湖北省荆门市全国计算机等级考试C语言程序设计测试卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(12题)1.有如下定义#defineD2intx=5;floaty=3.83;charC='D';则下面选项中错误的是

A.x++;B.y++;C.c++;D.D++;

2.设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一元素,其存储地址为1,每个元素占一个地址空间,则a85的地址为()。

A.13B.33C.18D.40

3.有以下程序:#include<stdio.h>voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i+=2)for(j=i+2;j<n;j+=2)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(aa,10);for(i=0;i<10;i++)printf("%d.",aa[i]);printf("\n");}其输出结果是()。

A.1,2,3,4,5,6,7,8,9,10,

B.10,9,8,7,6,5,4,3,2,1,

C.9,2,7,4,5,6,3,8,1,10,

D.1,10,3,8,5,6,7,4,9,2,

4.有以下函数:intfun(char*x,char*y){intn=0;}while((*x==*y)&&*x!=‘\0’){x++;y++;n++;}returnn;}函数的功能是()。

A.将y所指字符串赋给x所指存储空间

B.查找x和y所指字符串中是否有‘\0’

C.统计x和y所指字符串中最前面连续相同的字符个数

D.统计x和y所指字符串中相同的字符个数

5.下列叙述中正确的是()。

A.数据库系统是一个独立的系统,不需要操作系统的支持

B.数据库技术的根本目标是要解决数据的共享问题

C.数据库管理系统就是数据库系统

D.以上三种说法都不对

6.下列定义数组的语句中,正确的是()。A.#defineN10;intx[N];

B.intN=10;intx[N];

C.int:x[0.10];

D.intx[];.

7.有以下程序:#include<stdio.h>#include<math.h>main(){ints;floatn,t,pai;t=1,pai=0,n=1.0,s=1;while(fabs(t)>1.0e-6){pai+=t;n+=2;s=-s;t=s/n;}printf(“total=%f\n”,pai);}程序运行所计算的是()。

A.1-1/2!+1/3!-1/5!+1/7!-…

B.1+1/3+1/5+1/7+1/9-…

C.1+1/2+1/3+1/4+1/5-…

D.1-1/3+1/5-1/7+1/9-…

8.以下选项中关于C语言常量的叙述错误的是()。

A.所谓常量,是指在程序运行过程中,其值不能被改变的量

B.常量分为整型常量、实型常量、字符常量和字符串常量

C.常量可分为数值型常量和非数值常量

D.经常被使用的变量可以定义成常量

9.

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

A.预处理命令行必须位于C源程序的起始位置

B.在C语言中,预处理命令行都以“#”开头

C.每个C程序必须在开头包含预处理命令行:#include

D.C语言的预处理不能实现宏定义和条件编译的功能

11.以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是

A.feof(fp)B.ftell(fp)C.fgetc(fp)D.rewind(fp)

12.若有定义“inta=1234,b=-5678;”,用语句“printf("%+-6d%+-6d",a,b);”输出,以下正确的输出结果是()。

A.+1234-5678(中间有一个空格,最后有一个空格)

B.+1234-5678(最前面有一个空格,中间有一个空格)

C.+-1234+-5678(最前面和最后均无空格)

D.1234-5678(中间有两个空格,最后有一个空格)

二、2.填空题(12题)13.函数fun的功能是计算xn。

doublefun(doublex,intn)

{inti;doubley=1;

for(i=1;i<=n;i++)y=y*x;

returny;

}

主函数中已正确定义m、a、b变量并赋值,并调用fun函数计算:m=a4+b4-(a+b)3。实现这一计算的函数调用语句为【】。

14.以下程序的功能是:通过函数func输入字符并统计输入字符的个数。输入时用字符作为输入结束标志。请填空。#include<stdio.h>long();/*函数说明语句*/main(){longn;n=func();printf"n=%1d\n",n);}longfunc(){longm;for(m=0;getchar()!='';());returnm:}

15.数据库系统中实现各种数据管理功能的核心软件称为【】。

16.若有下列定义(设int类型变量占两个字节),则i=【】,j=【】。

inti=8,j=9;floatx=123.456;

print("i=%oj=%o\n",i,j);

17.下列程序的输出结果是______。

10ngfun5(intn)

{longs;

if((n==1)‖(n==2))

s=2;

else

s=n+fun5(n-1);

return(s);

}

main()

{longx;

x=fun5(4);

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

18.以下程序运行后的输出结果是()。main(){inta=3,b=4,c=5,t=79;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,C);}

19.下列程序执行输出的结果是【】。

#include<stdio.h>

f(inta)

{intb=0;

staticc=3;

a=c++,b++;

return(a);}

main()

{inta=2,i,k;

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

k=f(a++);

printf("%d\n",k);}

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

floatfun(intx,inty)

{return(x+y);}

main()

{inta=2,b=5,c=8;

printf("%3.Of\n",fun((int)fun(a+c,b),a-c));}

21.函数viodfun(float*sn,intn)的功能是:根据以下公式计算S,计算结果通过形参指针sn传回;n通过形参传入,n的值大于等于0。请填空。

s=1-1/3+1/5-1/7+…1/(2n+1)

voidfun(float*sn,intn)

{floats=0.0,w,f=-1.0;

inti=0;

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

{f=【】*f;

w=f/(2i+1);

s++=w;

}

【】=s;

}

22.若给fun函数的形参s传送字符串:"abc-6354abc",则函数的返回值是()。(字符串中包括空格)

longfun(charS[])

{longn;intsign;

for(;isspace(*s)||islower(*s);s++);

sign=(*s=='-')?-1:1;

if(*s=='+'||*s=='-')s++;

for(n=0;isdigit(*s);s++)

n=10*n+(*S-'0');

returnsign*n;

}

23.模式/内模式映射为数据库提供了【】数据独立性。

24.以下程序通过函数SunFun求这里f(x)=x2+1,由F函数实现。请填空。

main()

{printf("Thesum=%d\n",SunFun(10));}

SunFun(intn)

{intx,s=0;

for(x=0;x<=n;x++)s+=F(【】);

returns;

}

F(intx)

{return(【】);}

三、3.程序设计题(10题)25.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是:把指定分数范围之外的学生数据放在b所指的数组中,分数范围之外的学生人数由函数值返回。

例如,输入的分数是80和89,则应当把分数低于80和高于89的学生数据进行输出,不包含80分和89分的学生数据。主函数中把80放在low中,把89放在heigh中。

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

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

试题程序

#include<stdio.h>

#defineN16

typedefstruct

{charnum[10];

ints;

}STREC;

intfun(STREC*a,STREC*b,int1,inth)

{

}

main()

{

STRECs[N]={{“GA005”,55},{“GA003”,96},

{“GA002”,80},{“GA004”,68},{“GA001”,88},

{“GA007”,74},{“GA008”,85},{“GA006”,99},

{“GA015”,90},{“GA013”,53},{“GA012”,66},

{“GA014”,82},{“GA0ll”,73},{“GA017”,69},

{“GA018”,64},{“GA016”,86}};

STECh[N],tt;

FILE*out;

inti,j,n,low,heigh,t;

printf(“Enter2integernumberlow&heigh:”);

scanf(“%d%d”,&low,&heigh);

if(heigh<low)

{

t=heigh;

heigh=low;

low=t;

}

n=fun(S,h,low,heigh);

printf(“Thestudent'Sdataout%d--%d:\n”,low,heigh);

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

printf("%s%4d\n",h[i].num,h[i].s);

/*输出指定分数范围内的学生记录*/

printf(“\n”);

ut=fopen(“out23.dat”,“w”);

fprintf(out,“%d\n”,n);

n=fun(s,h,70,79);

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

/*分数在70~79之外的学生记录按分数从低到高排列*/

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

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

{

tt=h[i];

h[i]=h[j];

h[j]=tt;

}

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

fprintf(out,“%4d\n”,h[i].s);

fprintf(out,“\n”);

fclose(out);

}

26.请编写函数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]);

}

27.请编写函数fun(),它的功能是计算下列级数和,和值由函数值返回。

S=1+x+x2/2!3/3!+…/xn/n!

例如,当n=10,x=0.3时,函数值为1349859。

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

#include<math.h>

doublefun(doublex,intn)

{

}

main()

{

clrscr();

printf("%f",fun(0,3,10));

}

28.请编写函数fun(),该函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N),按J顷序合并组成一个新的字符串。

例如,若字符串数组中的M个字符串为

AAAA

BBBBBBB

CC

则合并后的字符串内容应该是AAAABBBBBBBCC

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

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

试题程序:

#include<conio.h>

#defineM3

#defineN20

voidfun(chara[M][N],char*b)

{

}

main()

{

charw[M][N]={"AAAA","BBBBBBB","CC"},i;

chara[100]={"####################"};

printf("Thestring:\n");

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

puts(w[i]);

printf("\n");

fun(w,a);

printf("TheAstring:\n");

printf("%s",a);

printf("\n\n");

}

29.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是:函数返回指定成绩的学生数据,指定的成绩在主函数中输入。若没找到指定的成绩,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。

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

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

试题程序:

#include<stdio.h>

#include<stdlib.h>

#defineN16

typedefstruct

{charnum[l0];

ints;

}STREC;

STRECfun(STREC*a,intb)

{

}

main()

{

STRECs[N)={{“GA005”,76},{“GA003”,89},

{“GA002”,64},{“GA004”,75},{“GA001”,88},

{“GA007”,65},{“CA008”,96},{“GA006”,69},

{“GA015”,85},{“GA013”,78},{“GA012”,62},

{“GA014”,60},{“GA011”,73},{“GA017”,72},

{“GA018”,98},{“GA016”,94}};

STRECh;

intm;

inti,n;

FILE*out;

printf(“Theoriginaldata:\n”);

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

{if(i%4==0)

printf(“\n”);

/*每行输出4个学生记录*/

printf(“%s%3d”,s[i].num,s[i].s);

}

printf(“\n\nEnterthescore:”);

scanf(“%d”,&m);

h=fun(S,m);

printf(“Thedata:”);

printf(“\n%s%4d\n”,h.mum,h.S);

printf(“\n”);

ut=fopen(“out24.dat",“W”);

h=fun(s,85);

fprintf(out,“%S%4d\n”,h.num,h.S);

fclose(out);

}

30.请编写函数fun(),它的功能是:将带头结点单向链表按data域由大到小排序(排序时不考虑头结点),主函数用随机函数为各节点data域赋值,头结点data域赋值为0。

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

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

[试题源程序]

#include<stdio.h>

#include<coni0.h>

structas

{

intdata;

structaa*next;

};

voidfun(structaa*p)

{

}

main()

{

inti,n,m=100;

structaa*h=NULL,*s=NULL,

*p=NULL;

clrscr()

s=(structaa*)malloc(siZeof(structaa));

h=s;h->data=0;h->next=NULL;

printf("Pleaseinputn:");

scanf("%d",&n);

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

{

p=(structaa*)malloc(sizeof(structaa));

p->data=rand()%m;P->next=NULL;

printf("%d",P->data);

s->next=p;s=s->next;

}

fun(h);

printf("\n");

for(h=h->next;h!=NULL;h=h->nnext)

printf("%d",h->data);

}

31.程序定义了NxN的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是:求出数组周边元素的平均值并作为函数值返给主函数中的s。

例如:a数组中的值为:

则返回主程序后s的值应为:3.375。

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

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

32.请编写函数fun(),其功能是:将s所指字符串中下标为奇数的字符删除,串中剩余字符形成的新串放在t所指数组中。

例如,当s所指字符串中的内容为siegAHdied,则在t所指数组中的内容应是seAde。

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

voidfun(char*S,chart[])

{

}

main()

{

chars[100],t[100];

clrscr();

printf("\nPleaseenterstrings:");

scanf("%S",S);

fun(S,t);

printf("\nTheresultis:%s\n",t);

}

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

例如,输入25,则应输出23571113171923。

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

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

{

}

main()

{

intm,n,zz[100];

clrscr();

printf("/nPleaseenteranintegernumberbetween10and100:");

scanf("%d",&n);

fun(n,&m,zz);

printf("\n\nThereare%dprimenumbers

lessthan%d:",m,n);

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

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

}

34.函数fun的功能是:将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,s所指串中剩余的字符形成的新串放在t所指的数组中。

例如,若s所指字符串中的内容为“ABCDEFGl2345”,其中字符C的ASCII码值为奇数,在数组中的下标为偶数,因此必须删除:而字符1的ASCII码值为奇数,在数组中的下标也为奇数,因此不应当删除,其他依此类推。

最后t所指的数组中的内容应是“BDFl2345”。

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

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

四、单选题(0题)35.若fp是指向某文件的指针,且尚未读到文件末尾,则函数feof(fp)的返回值是()。

A.EOFB.-lC.非零值D.0

五、单选题(0题)36.数据管理技术发展的三个阶段中,()没有专门的软件对数据进行管理。

I.人工管理阶段

II.文件系统阶段

Ⅲ.数据库阶段A.A.仅IB.仅ⅢC.I和IID.II和Ⅲ六、单选题(0题)37.有以下程序:#include<stdio.h>main(){charv[4][10];inti;for(i=0;i<4;i++)scanf(“%s”,v[i]);printf(“%c,%s,%s,%c”,**v,*(v+1),v[3]+3,*(v[2]+1));}程序运行时输入welcomeyoutobeijing并按<Enter>键,则输出结果是()。

A.w,youjing,o

B.welcome,you,jing,to

C.w,you,eeijing,u

D.w,xelcome,eeijing,u

参考答案

1.D解析:C语言中++运算符的对象可以是整型、实型和字符型,但不可是常量,本题中D为常量。

2.B

3.C解析:sort函数的功能实际上是对数组中奇数位置上的数进行从大到小排序。排序后的结果应该为9,2,7,4,5,6,3,8,1,10。

4.C本题中由循环条件可知,遇到‘\\0’或x与y所指的字符不相等时循环结束。所以函数的功能是统计x和y所指字符串中最前面连续相同的字符个数。故本题答案为C选项。

5.B解析:本题考查数据库系统的基本概念和知识。

数据库系统除了数据库管理软件之外,还心须有其他相关软件的支持。这些软件包括操作系统、编译系统、应用软件开发工具等。对于大型的多用户数据库系统和网络数据库系统,还需要多用户系统软件和网络系统软件的支持。因此,选项A的说法是错误的。

数据库可以看成是长期存储在计算机内的、大量的、有结构的和可共享的数据集合。因此,数据库具有为各种用户所共享的特点。不同的用户可以使用同一个数据库,可以取出它们所需要的子集,而且容许子集任意重叠。数据库的根本目标是要解决数据的共享问题。因此,选项B的说法是正确的。

通常将引入数据库技术的计算机系统称为数据库系统。一个数据库系统通常由五个部分组成,包括相关计算机的硬件、数据库集合、数据库管理系统、相关软件和人员。

因此,选项C的说法是错误的。

因此,本题的正确答案是选项B。

6.A[解析]数组说明的一般形式为:类型说明符数组名[常量表达式]。B)中N是变量,不能用变量定义数组长度。C)选项中数组长度是非法的一串数字。定义数组时必须为其指明长度,D)选项中数组长度为空,所以非法。\u3000\u3000

7.Dmain函数首先定义整型变量S,初值为1;定义float类型的n、t、Pai,其中n初值为1.0,t初值为1,pai初值为0。while循环判断t的绝对值(fabs为求float类型值的绝对值的函数)是否大于1.0×10-6,若t的绝对值大于1.0×10-6,那么,执行语句“pai+=t;n+=2;s=-s;t=s/n;”,所以每轮循环pai累加“s/n”(其中s是上一轮s的相反数,n是上一轮n累加2的值)。第1轮循环时,pai被赋值为1,s是正数,所以最终pai的计算结果是:1-1/3+1/5-1/7+1/9-…。故本题答案为D选项。

8.D此题考查的是常量和变量的定义,常量不是经常使用的变量,而是一个确定的数值,所以答案选择D。

9.D

10.B本题是对基本知识点的理解,预处理命令行的位置没有规定,只是习惯写在起始位置而已,当需要时才用#include<stdio.h>头文件,预处理的作用就是实现宏定义和条件编译。

11.D解析:本题考查的是文件操作函数.题目中fseek(fp,0L,SEEK_SET)的作用将文件指针定位到文件开始。feof(fp)的作用是判断文件指针是否已到文件结尾,因此选项A不对。ftell(fp)的作用是获取当前文件指针的位置,因此选项B不对。fgetc(fp)的作用是从文件中读取一个字节,因此选项C不对。rewind(中)的作用是将文件指针重定位到文件开头,所以应该选择D。

12.Aprintf函数参数包括格式控制字符串和输出参数,其中格式控制字符串中除了格式控制字符外,其他字符原样输出。本题中的printf(“%+-6d%+-6d”,a,b);”,在%和格式控制字符d之间,“+”号表示输出的数字带正负号号表示输出数据向左对齐,“6”表示输出宽度,如果输出数据的宽度不够6,那么左对齐,右边补空格。所以本题输出+1234-5678(中间有一个空格,最后有一个空格)。本题答案为A选项。

13.m=fun(a4)+fun(b4)-fun(a+b3);m=fun(a,4)+fun(b,4)-fun(a+b,3);解析:函数fun(x,n)的作用是求xn,因此a4应该调用函数fun(a,4),b4应该调用函数fun(b,4),(a+b)3应该调用函数fun(a+b,3),所以题目中的数学表达式,写成C程序中的语句为m=fun(a,4)+fun(b,4)-fun(a+b,3)。

14.tunc()m++tunc()m++解析:第一空白处,在C语言中如果子函数在主函数之后定义,就要对其进行说明,说明的形式为:“函数类型名函数名”。所以此处填写func()。第二空白处,整型变量m表示输入字符的个数,所以每输入一个字符,变量m的值就加1。所以此处填写m++。

15.数据库管理系统数据库管理系统(DBMS)

16.1011

17.99解析:考查ifelse语句,n==4不满足条件,所以fun5(4)=4+fun5(3),n==3也不满足条件,fun5(3)=3+fun5(2),n==2满足条件fun5(2)=2,故x=4+3+2=9。

18.45794579解析:本题考查的是条件判断语句。本题特别需要注意的是“;”的问题,不能把“t=a;a=c;c=t;”误认为是第一个if的语句,实际上,只有“t=a;”才是第一个if的语句。所以判断第一个if语句的表达式不成立后,执行的是“a=c;c=t;”,此时a=5,c=79。然后判断第二个if语句的条件表达式,表达式成立,执行后面的3条语句,让a、b、c分别为4、5和79。

19.44解析:本题考查了静态存储类别的局部变量的特点。静态存储类别的局部变量在程序的整个生存周期内都存在,但作用域却只局限于定义它的函数或局部范围。当i=0时执行第一次for循环,k=f(2),a=c++,b++;因为赋值运算符的优先级高于逗号运算符,所以a=3,c=4;当i=1时执行第二次for循环,k=f(3),a=c++,b++;因为c为静态局部变量所以保留着这一次执行的结果值4,所以a=4,c=5,所以函数f()返回a的值为4。

20.本题考查函数的综合知识。首先,我们可以利用强制转换类型转换运算符,将一个表达式转换成所需类型。如:(double)a是将a转换成double类型;(int)(x+y)是将x+y的值转换成整型。

本题可按部就班地逐步运算:

fun((int)fun(a+c,b),a-c)

fun((int)fun(10,5),2-8)

fun((int)15.000000,-6)

fun(15,-6)

9

21.-1或-1.0或-1*sn-1或-1.0或-1\r\n*sn

22.-6354-6354解析:本题的考查点是函数的返回值。这个函数的目的是提取出由函数的形参传送来的字符串中的数字字符,并通过相应字符位置计算出它们数值形式的幂,最后返回字符串中的数字字符的数值形式,所以函数的返回值应当是“-6354”。

23.物理物理

24.xx*x+1或1+x*xx\r\nx*x+1或1+x*x解析:题目中要求从x=0开始将f(x)的值累加起来,直到x=10。在SunFun()函数中用了一个for循环,每循环一次将f(x)累加到s中,所以在本题的第一个空格处我们应该填x,然后x+1,共循环10次。F()函数的功能应该是求数学表达式f(x)的值,所以其返回值应该为x*x+1。

25.intfun(STREC*aSTREC*bintlinth){intij=0;for(i=0;i<N;i++)if((a[i].s>=0&&a[i].s<1)||(a[i].s>h&&a[i].s<=100))/*将各分数低于1高于h的学生记录存于结构体数组b中*/b[j++]=a[i];returnj;/*返回分数范围内的学生人数*/}intfun(STREC*a,STREC*b,intl,inth)\r\n{\r\ninti,j=0;\r\nfor(i=0;i<N;i++)\r\nif((a[i].s>=0&&a[i].s<1)||(a[i].s>h&&a[i].s<=100))/*将各分数低于1,高于h的学生记录存于结构体数组b中*/\r\nb[j++]=a[i];\r\nreturnj;/*返回分数范围内的学生人数*/\r\n}解析:处理此类分段统计问题,可采用多分支选择语句或条件选择语句。此处采用条件选择语句解答,具体见参考答案。使用条件选择语句进行分段统计时应当注意分段范围。

26.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}解析:这道题是考查一个数是不是素数的简单延伸,只要掌握了判断素数的方法,问题便能顺利解决,请学习者以此题为例,搞清判断素数的方法。

27.doublefun(doublexintn){inti;doubles=1.0.s1=1.0;for(i=1;i<=n;i++){s1=s1*i;/*各项中的阶乘*/s=s+pow(xi)/s1;/*按公式求出*/}returns;}doublefun(doublex,intn)\r\n{\r\ninti;\r\ndoubles=1.0.s1=1.0;\r\nfor(i=1;i<=n;i++)\r\n{s1=s1*i;/*各项中的阶乘*/\r\ns=s+pow(x,i)/s1;/*按公式求出*/\r\n}\r\nreturns;\r\n}解析:本程序中用s1来表示每项的分母(即各项中的阶乘),要注意本程序中s和s1的初值都为1。

28.voidfun(chara[M][N]char*b){intijk=0;for(i=0;i<M;i++)/*将字符串数组中的M个字符串按顺序存入一个新的字符串*/for(j=0;a[i][j]!='\0';j++)b[k++]=a[i][j];b[k]='\0';/*在字符串最后加上结束标志符*/}voidfun(chara[M][N],char*b)\r\n{\r\ninti,j,k=0;\r\nfor(i=0;i<M;i++)/*将字符串数组中的M个字符串,按顺序存入一个新的字符串*/\r\nfor(j=0;a[i][j]!='\\0';j++)\r\nb[k++]=a[i][j];\r\nb[k]='\\0';/*在字符串最后加上结束标志符*/\r\n}解析:本程序中for(i=0;i<M;i++)循环的作用是用于对二维数组行的控制,第2个循环的作用是从同一行中取出字符并存放到一维数组b中,语句是b[k++]=a[i][j];。

29.STRECfun(STREC*aintb){inti;STRECstr={“\0”-1);/*若没找到指定的成绩在结构体变量中给学号置空串给成绩置-1*/for(i=0;i<N;i++)if(a[i].s==b)/*找到指定成绩的学生记录*/str=a[i];returnstr;/*返回学生记录*/}STRECfun(STREC*a,intb)\r\n{\r\ninti;\r\nSTRECstr={“\\0”,-1);/*若没找到指定的成绩,在结构体变量中给学号置空串,给成绩置-1*/\r\nfor(i=0;i<N;i++)\r\nif(a[i].s==b)/*找到指定成绩的学生记录*/\r\nstr=a[i];\r\nreturnstr;/*返回学生记录*/\r\n}解析:本程序一开始先使结构休变量str的学号为空出,成绩为-1。题中循环体的功能是搜索所有学生的成绩并判断是否有成绩与b所指定的成绩相同(即找到),若找到则给str重新赋值(str=a[i]),若没找到则str成员的值还是原有值(即未找到时学号返回空串,成绩返回-1)。

30.voidfun(structas*p){inttemp;structas*1st;for(p=p->next;p->next!=NULL;p=p->next)for(1st=p->next;1st!=NULL;1st=1st->next)if(1st->data>p->data){temp=1st->data;1st->data=p->data;p->data=temp;}}voidfun(structas*p)\r\n{\r\ninttemp;\r\nstructas*1st;\r\nfor(p=p->next;p->next!=NULL;p=p->next)\r\nfor(1st=p->next;1st!=NULL;1st=1st->next)\r\nif(1st->d

温馨提示

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

评论

0/150

提交评论