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

下载本文档

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

文档简介

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

一、2.填空题(10题)1.以下程序运行后的输出结果是______。

structNODE

{inthum;structNODE*next;

};

main()

{structNODEs[3]={{1,'\0'},{2,'\0'},{3,'\0'}},*p,*q,*r;

intsum=0;

s[0].next=s+1;s[1].next=s+2;s[2].next=s;

p=S;q=p->next;r=q->next;

sum+=q=>next->num;sum+=r->next->next->num;

2.下面程序的输出结果是【】。

charb[]="ABCD";

main()

{char*chp;

for(chp=b;*chp;chp+=2)printf("%s",chp);

printf("\n");

}

3.以下程序运行后的输出结果是【】。

main()

{intp=30;

printf("%dkn",(p/3>0?p/10:p%3));

}

4.以下程序运行后的输出结果是【】。

#include<stdio.h>

main()

{charc;intn=100;

floatf=10:doublex:

x=f*=n/=(c=50);

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

}

5.下面程序

main()

{inti,j,m,n;

i=5;

j=10;

m=++i;

n=j++;

printf("%d,%d,%d,%d",i,j,m,n);

}

运行后,i,j,m,n的值分别是_______。

6.写出下列程序的输出结果______。

main()

{intn=0;

while(n++<=1);

printf("%d,",n);

printf("%d",n++);

}

7.与结构化需求分析方法相对应的是【】方法。

8.近年来形成了软件开发的多种模式,大致有3种类型:基于瀑布模型的结构化生命周期方法、基于动态定义需求的【】方法和基于结构的面向对象的软件开发方法。

9.下列程序的输出结果是【】。

main()

{inta=1,b=2;

a=a+b;b=a-b,a=a-b;

printf("%d,%d\n",a,b);

}

10.下面程序的功能是:计算110之间的奇数之和与偶数之和,请填空。

#include<stdio.h>

main()

{inta,b,c,I;

a=c=0;

for(I=0;I<=10;I+=2)

{a+=I;

【】;

c+=b;}

printf("偶数之和=%d\n",a);

printf("奇数之和=%d\n",c-11);}

二、单选题(10题)11.有三个关系R、s和T如下:

由关系R和s通过运算得到关系T,则所使用的运算为()。

A.并B.自然连接C.笛卡尔积D.交

12.

13.设S为C语言的语句,计算机执行下面算法时,算法的时间复杂度为()。A.n2B.O(nlgn)C.O(n)D.O(n2)

14.以下不属于C语言整数的是()。

A.12fB.25uC.-32D.+20L

15.

16.一个队列的入队序列是1,2,3,4,则队列的输出序列是()。

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

17.有以下程序段:charc1,c2;for(c=‘0’,c2=‘9’;c1<c2;c1++,c2--)printf(“%c%c”,c1,c2);程序段的执行结果是()。

A.0123456789B.0918273645C.0123498765D.9876543210

18.

19.若串S1="ABCDEFG",S2="9898",S3="###",S4="012345",执行其结果为()。A.ABC###G0123B.ABCD###2345C.ABC###G1234D.ABCD###1234

20.设有以下程序段:structbook{floatprice;charlanguage;chartitle[20];}rec,*ptr;ptr=&rec;要求输入字符串给结构体变量rec的title成员,错误的输入语句是()。

A.scanf(“%s”,ptr.title);

B.scanf(“%s”,rec.title);

C.scanf(“%s”,(*ptr).title);

D.scanf(“%s”,ptr->title);

三、程序设计题(10题)21.下列程序判断字符串s是否对称,对称则返回1,否则返回0;如f("abba")返回1,f("abab")返回0。

22.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,学生的记录由学号和成绩组成,N名学生的记录已放入主函数的结构体数组s中。请编写函数fun(),其功能是把指定分数范围内的学生记录存放在b所指的数组中,分数范围内的学生人数由函数值返回。如输入的分数是60、69,则应当把分数在60~69的学生记录输出,包含60分和69分的学生记录。主函数中把60放在low中,把69放在high中。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<stdio.h>#defineN16typedefstruct{ charnum[10]; ints;}STREC;intfun(STREC*a,STREC*b,intl,inth)voidmain(){ STRECs[N]={{“GA005”,85},{“GA003”,76},{“GA002”,69},{“GA004”,85},{“GA001”,96},{“GA007”,72},{“GA008”,64},{“GA006”,87},{“GA015”,85},{“GA013”,94},{“GA012”,64},{“GA014”,91},{“GA011”,90},{“GA017”,64},{“GA018”,64},{“GA016”,72}}; STRECh[N]; inti,n,low,high,t; printf(“Enter2integernumberlow&high:”); scanf(“%d%d”,&low,&high); if(high<low) {t=high;high=low;low=t;} n=fun(s,h,low,high); printf(“Thestudent’sdatabetween%d--%d:\n”,low,high); for(i=0;i<=""p=""> printf(“%s%4d\n”,h[i].num,h[i].s); printf(“\n”);}

23.实现字符串拷贝的函数strcpy为()。

24.有N个学生,每个学生的信息包括学号、性别、姓名、四门课的成绩,从键盘上输入N个学生的信息,要求输出总平均成绩最高的学生信息,包括学号、性别、姓名和平均成绩。

25.请编一个函数voidproc(intttEM][N],intpp[N]),tt指向一个M行N列的二维数组,求出二维数组每行中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。

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

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

试题程序:

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

#defineM3

#defineN4

voidproc(intttrM3rN]。intpp[N])

{}

voidmain

{

intstr[M][N]={{34,56,84,78},

{23,84,93,12),

{28,38,39,93}};

intp[N],i,j,k;

system("CLS");

printf("Theriginaldatais:\n");

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

{

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

printf("%6d",str[i][j]);

printf("\n");

}

proc(str,p);

printf("\nTheresultis:\n");for(k=0:k<M;k++)

printf("%4d",p[k]);

printf("n");}

26.编写函数proc,它的功能是:计算和输出下列级数的和。S=1/(12)+1/(23)+…+1/(n(n+1))例如,当n=20时,函数值为0.952381。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

27.请编一个函数voidproc(inttt[M][N],intpp[N]),tt指向一个M行N列的二维数组,求出二维数组每行中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。

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

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

试题程序:

28.学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组s中,请编写函数proc(),它的功能是:函数返回指定学号的学生数据,指定的序号在主函数中输入。若没找到指定的学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回(用于字符串比较的函数是strcmp)。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

29.从键盘上输入9个数,按3行3列的格式输出。

30.请编一个函数floatproe(doubleh),函数的功能是对变量h中的值保留2位小数,并对第3位进行四舍五人(规定h中的值为正数)。例如,若h值为7.32596,则函数返回7.33;若h值为7.32496,则函数返回7.32。注意:部分源程序给出如下。.请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

四、2.程序修改题(10题)31.下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun()的功能是:将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并作为函数值返回。

其累加和通过函数值返回main()函数。例如,若n=5,则应输出8.391667。

请改正程序中的错误,使它能得到正确结果。

[注意]不要改动main函数,不得增行或删行,也不得更改程序的结构。

[试题源程序]

#include<stdio.h>

#include<stdiib.h>

typedefstructaa

{

intdata;

structaa*next;

}NODE;

intfun(NODE*h)

{

intsum=0;

NODE*P;

/**********found**********/

p=h;

while(P->next)

{

if(p->data%2==0)

sum+=p->data;

/**********found**********/

p=h->next;

}

returnsum;

}

NODE*creatlink(intn)

{

NODE*h,*p,*s,*q;

inti,x;

h=p=(NODE*)malloc(sizeof(NODE));

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

{

s=(NODE*)malloc(sizeof(NODE));

s->data=rand()%16;

s->next=p->next;

p->next=s;

p=p->next;

}

p->next=NULL;

returnh;

}

outlink(NODE*h,FILE*Pf)

{

NODE*p;

p=h->next;

fprintf(Pf,"\n\nTHELIST:\n\nHEAD");

while(P)

{

fprintf(Pf,"->%d",p->data);p=p->next;

}

fprintf(pf,"\n");

}

outresult(ints,FILE*pf)

{

fprintf(Pf,"\nThesumofevennumbers:%d\n",s);

}

main()

{

NODE*head;inteven;

head=creatlink(12);

head->data=9000;

outlink(head,stdout);

even=fun(head);

printf("\nTheresult:\n");outresult(even,stdout);

}

32.N个有序整数数列已放在一维数组中,给定下列程序中,函数fun()的功能是:利用折半查找算法查找整数m在数组中的位置。若找到,则返回其下标值:反之,则返回-1。

折半查找的基本算法是:每次查找前先确定数组中待查的范围:low和high(low<high),然后把m与中间位置(mid)中元素的值进行比较。如果m的值大于中间位置元素中的值,则下一次的查找范围放在中间位置之后的元素中;反之,下次查找范围落在中间位置之前的元素中。直到low>high,查找结束。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include<stdio.h>

#defineN10

/*************found*********************/

voidfun(inta[],intm)

{intlow--0,high=N-l,mid;

while(low<=high)

{mid=(low+high)/2;

if(m<a[mid])

high=mid-1;

/*************found*********************/

elseif(m>=a[mid])

low=mid+1;

elsereturn(mid);

}

return(-1);

}

main()

{inti,a[N]={-3,4,7,9,13,24,67,89,100,180},k,m;

printf("a数组中的数据如下:");

for(i=0;i<N;i++)printf("%d",a[i]);

printf("Enterm:");scanf("%d",&m);

k=fun(a,m);

if(k>=0)printf("m=%d,index=%d\n",m,k);

elseprintf("Notbefound!\n");

}

33.给定程序MODll.C中函数fun的功能是:从n(形参)个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。

例如,若输入8名学生的成绩:80.5607290.59851.58864则低于平均分的学生人数为:4(平均分为:75.5625)。

请改正程序中的错误,使它能统计出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

34.给定程序MODll.C中函数fun的功能是:在字符串的最前端加入n个*号,形成新串,并且覆盖原串。

注意:字符串的长度最长允许为79。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

35.下列给定程序中,函数fun()的功能是:根据以下公式求n的值,并作为函数值返回。例如,给指定精度的变量eps输入0.0005时,应当输出Pi=3.140578。

n/2=1+1/3+1/3*2/5+1/3*2/5*3/7+1/3*2/5*3/7*4/9……

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include<conio.h>

#include<stdio.h>

#include<math.h>

doublefun(doubleeps)

{doubles,t;intn=t;

s=0.0;

/*************found**************/

t=1;

/*************found**************/

while(t>eps)

{s+=t;

t=t*n/(2*n+1);

n++;

}

/*************found**************/

return(s);

}

main()

{doublex;

printf("\nPleaseenteraprecision:");

scanf("%1f",&x);

printf("\nPi=%1f\n",fun(x));

}

36.下列给定程序中fun()函数的功能是:将n个无序整数从小到大排序。

请改正程序中的错误,使它能得出正确的结果。

注意;不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include<conio.h>

#include<stdio.h>

#include<stdlib.h>

fun(intn,int*a)

{inti,j,p,t;

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

{P=j;

/***************found*******************/

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

if(a[p]>a[i])

/***************found*******************/

t=i;

if(p!=j)

{t=a[j];a[j]=a[p];a[p]=t;}

}

}

putarr(ihtn,int*z)

{inti;

for(i=l;i<=n;i++,z++)

{printf("%4d",*z);

if(!(i%10))printf("\n");

}printf("\n");

}

main()

{intaa[20]={9,3,0,4,1,2,5,6,8,10,7},n=11;

clrscr();

printf("\n\nBeforesorting%dnumbers:\n",n);putarr(n,aa);

fun(n,aa);

printf("\nAftersorting%dnumbers:\n",n);putarr(n,aa);

}

37.给定程序MODll.C中函数fun的功能是:根据以下公式求π值,并作为函数值返回。

例如,给指定精度的变量eps输入0.0005时,应当输出Pi=3.141480。

请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

38.给定程序中函数fun的功能是:从低位开始取出长整型变量S中偶数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。

例如,当s中的数为7654321时,t中的数为642。

请改正程序中的错误,使它能得到正确结果。

[注意]不要改动main函数,不得增行或删行,也不得更改程序的结构。

[试题源程序]

#include<stdio.h>

/************found***********/

voidfun(longs,longt)

{

longs1=10;

s/=10;

*t=s%10;

/************found************/

while(s<0)

{

s=s/100;

*t=s%10*s1+*t;

s1=s1*10;

}

}

msin()

{

longs,t;

printf("\nPleaseenters:");

scanf("%ld",&s);

fun(s,&t);

printf("Theresultis:%ld\n",t);

}

39.下列给定程序中,函数fun()的功能是:根据整型形参n,计算如下公式的值。

A1=1,A2=1/(1+A1),A3=1/(1+A2),…,An=(1/(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));

}

40.下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数fun()的作用是求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

typedefstructaa

{intdata;

structaa*next;

}NODE;

/*************found**************/

fun(NODE*h)

{intmax=-1;

NODE*p;

p=h->next;

while(p)

{if(p->data>max)

max=p->data;

/*************found**************/

p=h->next;

}

returnmax;

}

outresult(ints,FILE*pf)

{fprintf(pf,"\nThemaxinlink:%d\n

",s);}

NODE*creatlink(intn,intm)

{NODE*h,*p,*s,*q;

inti,x;

h=p=(NODE*)malloc(sizeof(NODE));

h->data=9999;

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

{s=(NODE*)malloc(sizeof(NODE));

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

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

}

p->next=NULL;

returnh;

}

outlink(NODE*h,FILE*pf)

{NODE*p;

p=h->next;

fprintf(pf,"\nTheLIST:\n\nHEAD");

while(p)

{fprintf(pf,"->%d",p->data);

p=p->next;}

fprintf(pf,"\n");

}

main()

{NODE*head;intm;

clrscr();

head=creatlink(12,100);

outlink(head,stdout);

m=fun(head);

printf("\nTheRESULT:\n");outresult

(m,stdout);

}

五、程序改错题(2题)41.下列给定程序中,函数proc的功能是计算正整数m各位上数字的平方和。 例如,输入498,则输出应该是161。 请修改程序中的错误,使它能得到正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include<stdlib.h> #include<stdio.h> #include<conio.h> longproc(10ngm) {//****found****longsum=1;do{sum+=(m%10)*(m%10);m/=l0;//****found****}while(m)return(sum); } voidmain {longn;system("CLS");printf("Pleaseenteranumber:");scanf("%1d",&n);printf("\n%ld\n",proc(n)); }

42.下列给定程序中,函数proc()的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、操作题(2题)43.下列给定程序中,函数proc()的功能是根据整型形参n,计算如下公式的值:y=1-1/(22)+1/(33)-1/(44)+…+(-1)(n+1)/(m)例如,n中的值为l0,则应输出0.817962。请修改程序中的错误,使它能得到正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

44.以下fun函数的功能是在N行M列的整型二维数组中,选出一个最大值作为函数值返回,请填空。(设M,N已定义)

intfun(inta[N][M])

{inti,j,row=0,col=0;

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

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

if(a[i][j]>a[row][col])(row=i;col=j;)

return(_____);

}

参考答案

1.解析:程序通过语句“s[0]next=s+1;s[1].next=s+2;s[2].next=s;”将结构体变量s中各结点连接成了一个循环链表,即最后一个结点的指针域指向了头结点,整个链表形成了一个环,并通过语句“p=s;q=p->next;r=q->next;”将结构体指针变量p、q、r指向了各结点。

2.ABCDCD

3.33本试题中,先判断表达式p/3>0,该值为真,所以此表达式等于p/10的值3,故最后输出的值为3。

4.220220解析:根据赋值运算符“自右至左”的结合顺序,程序中赋值表达式x=f*=n/=(c=50)的求解步骤为:首先计算n/=(c=50),即n=n/c=100/50=2;然后计算f*=n,即f=f*n=10*2=20.000000,由此得到x的值为20.000000。

5.611610。6,11,6,10。解析:本题考查自加的前置和后置的区别。

6.333,3解析:本题在while(n++<=1)语句后,直接加了分号,说明如果while()的条件为真时,该循环什么都不做:n++是先取n的当前值和1做比较,然后再将n加1。第一次循环,n=0时,循环条件n++=<1成立,执行循环,然后得到n=1。第二次循环,n=1时,循环条件n++=1<=1成立,执行循环,然后得到n=2。第三次循环,n=2时,循环条件n++=2<=1不成立,不执行循环,但在判断循环条件时仍将n加1,得到n=3.退出循环后执行printf语句,第二个printf语句输出n++,是先输出n的当前值3,然后再将n加l,即程序结束后得到n=4,但输出的是3。

7.结构化设计结构化设计解析:与结构化需求分析方法相对应的是结构化设计方法。结构化设计就是采用最佳的可能方法设计系统的各个组成部分以及各个成分之间的内部联系的技术。

8.原型化原型化

9.21

10.b=I+1b=I+1解析:本题考查了for循环语句的执行过程。i+=2是修正表达式,执行一次循环体后i的值就增加2,i的初始值为0,每次加2后的和累加至a,所以a的值就是110之间的偶数之和;b的值是111之间的奇数和,但在输出b值时,c去掉多加的11,即为110之间的奇数之和。

11.D关系R与s经交运算后所得到的关系是由那些既在R内又在S内的共有元组组成的,记为RnS。

12.D

13.D

14.AC语言中整型常量,从表示形式来看,有十进制、八进制或十六进制;从符号位来看,有有符号整数和无符号整数两类。选项A的“12f”是float类型的实数,不是整数;选项B的“25u”属于无符号整数;选项C的“-32”是十进制形式的有符号整数;选项D的“+20L”是十进制形式的长整数。故本题答案为A选项。

15.D

16.C

17.B程序定义两个字符变量c1和c2。for循环中,首先为c1赋值‘0’,为c2赋值‘9’,接着判断c1和C2的大小。由于字符变量可以作为整型数处理,数字字符的ASCII值按字面数值的大小顺序连续递增,因此c1小于c2成立,执行循环体输出“09”,再将c1自增1,c2自减1后,执行下一轮循环,直到c1=‘5’,c2=‘4’时,c1<c2不成立,循环终止。最终程序段输出:0918273645。故本题答案为B选项。

18.B

19.D

20.A运算符“->”适用指针访问成员变量,运算符“.”适用普通变量访问成员变量。ptr是指针,只能用“->”,因此选项A错误。选项B中,rec.title代表数组title,选项B正确,同理选项C正确。“*ptr”是结构体变量rec,可以使用运算,因此选项D正确。故本题答案为A选项。

21.22.intfun(STREC*a,STREC*b,intl,inth){ inti,j=0; for(i=0;i<=""p=""> if(a[i].s>=l&&a[i].s<=h)/*将分数高于l,低于h的学生记录存入结构体数组b中*/ b[j++]=a[i]; returnj; /*返回分数范围内的学生人数*/}本题使用循环判断结构实现题目要求。循环语句用于遍历结构体数组;条件语句用于判断当前元素是否符合条件,若符合条件则将其存入结构体数组b中。变量j为数组b元素下标,最后变量j+1为学生人数,作为函数值返回。

23.

24.\n#include'stdio.h'

\n#defineN3

\nstructstudent

\n{longstu_num;charsex;

\ncharname[15];intscore[4];

\nfloataverage;};

\nmain

\n{intI,j,index;floatsum,max;

\nstructstudentstuarr[N];

\nfor(I=0;I{printf('pleaseinput%dstudentinformation:\\n',I+1);

\nscanf('%ld,%c,%s',&stuarr[I].stu_num,&stuarr[I].sex,stuarr[I].name);

\nfor(j=0;j<4;j++)

\nscanf('%d',&stuarr[I].score[j]);}

\nfor(I=0;I{sum=0.0;

\nfor(j=0;j<4;j++)

\nsum+=stuarr[I].score[j];

\nstuarr[I].average=sum/4.0;}

\nmax=stuarr[0].average;

\nindex=0;

\nfor(I=1;Iif(stuarr[I].average>max)

\n{max=stuarr[I].average;

\nindex=I;}

\nprintf('总平均成绩最高的学生信息是学号=%ld,性别=%c,姓名=%s,平均成绩=%4.1f\\n',stuarr[index].stu_num,stuarr[index].sex,stuarr[index].name,stuarr[index].average);

\n}\n25.\r\n\tvoidproc(inttt[M][N],intpp[N])

inti,j,max;

for(i=0;i<M;i++)//i控制行的下标

{

max=tt[i][c];//max存放每行中最大的数

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

if(tt[i][j]>max)

max=tt[i][j];

pp[i]=max;//把大的数放到PP数组中,经过i来控制pp数组的下标

}

}

【解析】按照题目中要求,求出二维数组每行中最大元素,并依次放入PP所指的一维数组中。首先比较二维数组中每一行的元素,找出每一行中的最大元素,放入一维数组pp中,返回到主函数当中。

26.

【解析】首先定义一个变量来表示其和s,通过n次循环求出n项的和,最后将所得到各项的和值返回给主函数。

27.

【解析】按照题目中要求,求出二维数组每行中最大元素,并依次放入pp所指的一维数组中。首先比较二维数组中每一行的元素,然后找出每一行中的最大元素,放入一维数组pp中,最后返回到主函数当中。

28.

【解析】首先将一个STREC结构的变量学号赋值为空,成绩为-1。要返回指定学生的数据,应该将每一个学生的学号与给定的学生学号相比较。若有相同的,则把其数据返回给主函数。如果没有该学号的学生,就将定义的学号为空,成绩为-1的记录返回给主函数。

29.\n#include'stdio.h'

\nmain

\n{inta[3][3],i,j,s=0;

\nfor(i=0;i<3;i++)

\nfor(j=0;j<3;j++)

\nscanf('%d',&a[i][j]);

\nfor(i=0;i<3;i++)

\n{for(j=0;j<3;j++)

\nprintf(“%d”,a[i][j]);

\nprintf(“\\n”);

\n}

\n}

\n

30.

【解析】要实现对变量的值保留2位小数。并对第3位小数进行四舍五入,可以通过先将其小数点后3位变为正数后加5,所得到的数除10,最后再除100来实现。

31.(1)错误:while(p->next)正确:while(p!=NULL)或while(p)(2)错误:p=h->next;正确:p=p->next;(1)错误:while(p->next)\r\n正确:while(p!=NULL)或while(p)\r\n(2)错误:p=h->next;\r\n正确:p=p->next;解析:错误1:循环时要注意循环中止的条件是p!=NULL(最后一个结点为空,就像字符串的最后一个字符为结尾标志符'\\0'一样),while(p->next)使循环提前结束,所以应改为while(p!=NULL)或while(p)。

错误2:当累加完后,应该把指针指向下一个结点的指针赋给p,而不是把头指针指向的下一个结点赋给p,否则还会造成死循环,所以p=h->next;应该改为p=p->next;。

32.(1)错误:voidfun(inta[]intm)正确:intfun(inta[]intm)(2)错误:elseif(m>=a[mid])正确:elseif(m>a[mid])(1)错误:voidfun(inta[],intm)正确:intfun(inta[],intm)\r\n(2)错误:elseif(m>=a[mid])正确:elseif(m>a[mid])解析:fun(inta[],intm)函数的返回值为int类型,所以定义函数时,函数的返回类型不能是void,而是int类型。

elseif(m>=a[mid]中的m>a[mid]与m=a[mid]两个条件段的结果不一样,所以要分开考虑。

33.(1)t+=s[k];(2)*aver=ave;(1)t+=s[k];(2)*aver=ave;解析:该程序功能是统计出低于平均分的学生人数,首先求得平均分,然后再求得低于平均分的人数。从已给定源程序的main.主函数开始入手,printf语句中的fun(s,m,&aver)l调用函数实现题目中的要求。

34.(1)p=s;(2)while(*p++);(1)p=s;(2)while(*p++);解析:在字符串的最前端加入n个“*”号,形成新串,并且覆盖原串。然后通过“printf("\nThestringatlerinsert:\\"%s\\"、n",s);”函数直接输出结果。

35.(1)错误:t=0;正确:t=1.0;(2)错误:while(t>eps)正确:while(t>=eps)(3)错误:return(s);正确:return(s*2);(1)错误:t=0;正确:t=1.0;\r\n(2)错误:while(t>eps)正确:while(t>=eps)\r\n(3)错误:return(s);正确:return(s*2);解析:该题中,我们首先看函数fun()中while语句的含义,当新的一项大于给定参数时,循环累加。根据题意我们可以看出,最后一项应该小于给定参数,因此,循环条件应当为while(t>=eps)。至于return(s);错误,是一个数学常识,应该是return(s*2);。

36.(1)错误:for(i=j+1;i<n-1;i++)正确:for(i=j+1;i<n;i++)(2)错误:t=i;正确:p=i;(1)错误:for(i=j+1;i<n-1;i++)正确:for(i=j+1;i<n;i++)\r\n(2)错误:t=i;正确:p=i;解析:该程序是对n个数实现从小到大的排序,该题中先是找小输入整数的最小项,置于指针第1个元素的位置:再找出第2个元素至尾元素的最小项,置于第2个元素的位置;之后顺次处理后读元素。

37.(1)t=1;(2)return(2*s);(1)t=1;(2)return(2*s);解析:该题中函数功能是根据公式计算π值。从已给定源程序的main.主函数开始入手,通过键盘输入制定精度,然后通过“printf“\neps=%lf,P

温馨提示

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

评论

0/150

提交评论