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

下载本文档

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

文档简介

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

一、2.填空题(10题)1.下列程序段的运行结果是______。

charstr口="ABCD",*p=str;

printf("%d\n",*(p+3));

2.下面程序有两个printf语句,如果第一个printf语句输出的是194,则第二个printf语句的输出结果是【】。

main()

{inta[10]={1,2,3,4,5,6,7,8,9,0},*p;

p=a;

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

printf("%\n",p+9);

}

3.若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为【】。

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

#include<stdio.h>

longfib(intg)

{switch(g)

{case0:return0;

case1:

case2:return1;}

return(fib(g-1)+fib(g-2));}

main()

{longk;

k=fib(5);

printf("k=%5ld\n",k);}

5.按照逻辑结构分类,结构可以分为线性结构和非线性结构,栈属于______。

6.数据结构分为逻辑结构与存储结构,线性链表属于【】。

7.在最坏情况下,堆排序需要比较的次数为()。

8.C语言中用______表示逻辑值为“真”,用数字“0”表示逻辑值为“假”。

9.下列程序的运行结果是______。

#include<stdio.h>

main()

{inta,b,c;

a=3;b=4;c=5;

if(a>b)

if(a>c)

printf("%d",a);

elseprintf("%d",b);

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

}

10.表示""整数x的绝对值大于5""时值为""真""的C语言表达式是【】。

二、单选题(10题)11.

12.若i、j已定义成mt型,则下列程序段中内循环体的总执行次数是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30

13.第

27

有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件一组,则多3个零件;若分成9个零件一组,则多5个零件。下面程序是求这堆零件总数,请选择填空。

#include<stdio.h>

main()

{inti;

for(i=100;i<200;i++)

if((i-2)%4==0)

if(!((i-3)%7))

if(_______)

printf("%d",i);

}

A.i%9=5B.i%9!=5C.(i-5)%9!=0D.(i-5)%9==0

14.当c的值不为0时,在下列选项中不能正确将c的值赋给变量a、b的是()。

A.c=b=a;B.(a=c)||(b=c)C.(a=c)&&(b=c);D.a=c=b;

15.

16.有以下程序:#include<stdio.h>main(){inta=1,b=2;for(;a<8;a++){b+=a;a+=2;}printf(“%d,%d\n”,a,b);}程序运行后的输出结果是()。

A.9,18B.8,11C.7,11D.10,14

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

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

18.在下列排序算法中,在待排序的数据表已经为有序时,花费时间反而最多的是()

A.希尔排序B.堆排序C.冒泡排序D.快速排序

19.下列定义数组的语句中正确的是()。

A.#defmeN10intx[N];

B.intN=10;intx[N];

C.intx[0..10];

D.intx[];

20.有以下程序#include<stdio.h>main(){inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5,*q=NULL;*q=*(p+5);printf("%d%d\n",*p,*q);}程序运行后的输出结果是______。

A.运行后报错B.66C.611D.510

三、程序设计题(10题)21.学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组stu中,请编写函数proc(),该函数的功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

22.某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数fun,其功能是:求出该学生的平均分,并放人记录的ave成员中。

例如,学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应为78.875。注意:部分源程序在文件PROGl.C中。

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

23.

24.请编写一个函数intproc(int*s,intt,int*k),用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。例如,输入如下整数:876675896101999401980431451777则输出结果为4,999。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

25.请编写函数fun,其功能是:找出2×M整型二维数组中最大元素的值,并将此值返回调用函数。

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

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

26.规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:删除字符串中所有的*号。编写函

数时,不得使用c语言提供的字符串函数。

例如,字符串中的内容为:****A*BC*DEF*G*******删除*后字符串中的内容应当

是:ABCDEFG。

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

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

27.假定输入的字符串只包含字母和“#”号,请编写函数fun(),它的功能是:删除字符串中所有的“#”号。在编写函数时,不得使用C语言提供的字符串函数。例如,若字符串中的内容为“##w#e1##come###”,删除后,字符串中的内容则应当是“welcome”。请勿改动main()函数与其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。试题程序:

28.编写函数fun,其功能是:求出1~1000之间能被7或11整除,但不能同时被7和11整除的所有整数,并将其放在a所指的数组中,通过n返回这些数的个数。

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

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

29.编写函数intproc(intlim,intaa[M]),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求出的素数。例如,若输入12时,则输出:235711。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

30.请编写函数proc(),其功能是:计算并输出下列多项式值。S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-1/2n)例如,若主函数从键盘给n输入20后,则输出为s=0.680803。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

四、2.程序修改题(10题)31.下列给定程序中,函数fun()的功能是:给定n个实数,输出平均值,并统计平均值以上(含平均值)的实数个数。例如,n=8时,输入193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763,所得平均值为195.838745,在平均值以上的实数个数应为5。

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

intfun(floatx[],intn)

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

ihtj,c=0;floatxa=0.0;

for(j=0;j<n;.j++)

xa+=x[j]/n;

printf("ave=%f\n",xa);

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

if(x[j]>=xa)

c++;

returnc;

}

main()

{floatx[l00]={193.199,195.673,195.757,

196.051,196.092,196.596,

196.579,196.763};

clrscr();

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

}

32.给定程序MODll.C中函数fun的功能是:统计一个无符号整数中各位数字值为零的个数,通过形参传回主函数;并把该整数中各位上最大的数字值作为函数值返回。例如,若输入无符号整数30800,则数字值为零的个数为3,各位上数字值最大的是8。

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

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

33.给定程序MODll.C中函数fun的功能是:首先将大写字母转换为对应小写字母;若小写字母为a~u,则将其转换为其后的第5个字母;若小写字母为v~z,使其值减21。转换后的小写字母作为函数值返回。例如,若形参是字母A,则转换为小写字母f若形参是字母W,则转换为小写字母b。

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

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

34.下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数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);

}

35.给定程序MODll.C中函数fun的功能是:先将s所指字符串中的字符按逆序存放到t所指字符串中,然后把s所指串中的字符按正序连接到t所指串的后面。

例如:当s所指的字符串为:“ABCDE”时,则t所指的字符串应为:“EDCBAABCDE”。

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

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

36.下列给定程序中,函数fun()的功能是:从3个红球,5个白球,6个黑球中任意取出8个作为一组,进行输出。在每组中,可以没有黑球,但必须要有红球和白球。组合数作为函数值返回。正确的组合数应该是15。程序中i的值代表红球数,j的值代表白球数,k的值代表黑球数。

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

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

试题程序:

#include<stdio.h>

intfun()

{inti,j,k,sum=0;

printf("\nTheresult:\n\n");

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

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

{for(j=1;j<=5;j++)

{k=8-i-j;

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

if(k>=1&&k<=6)

{sum=sum+1;

printf("red:%4dwhite:%4d

black:%4d\n",i,j,k);

}

)

}

returnsum;

}

main()

{intsum;

sum=fun();

printf("sum=%4d\n\n",sum);

}

37.下列给定函数中,函数fun()的功能是:统计字符串中各元音字母(即A,E,I,O,U)的个数。注意:字母不分大小写。例如,输入THIsisaboot,则应输出是10220。

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

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

fun(char*s,intnum[5])

{intk,i=5;

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

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

num[i]=0;

for{;*s;s++)

{i=-l;

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

switch(s)

{case'a':case'A':{i=0;break;}

case'e':case'E':{i=1;break;}

case'i':case'I':{i=2;break;}

case'o':case'O':{i=3;break;}

case'u':case'U':{i=4;break;}

}

if(i>=0)

num[i]++;

}

}

main()

{chars1[81];intnum1[5],i;

clrscr();

printf("\nPleaseenterastring:");

gets(s1);

fun{s1,num1);

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

printf("\n");

}

38.给定程序MODll.C中函数fun的功能是:将s所指字符串的正序和反序进行连接,形成一个新串放在t所指的数组中。

例如,当s所指字符串为:“ABCD”时,则t所指字符串中的内容应为:“ABCDDCBA”。

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

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

39.下列给定程序中,函数fun()的作用是:将字符串tt中的小写字母都改为对应的大写字母,其他字符不变。例如,若输入“edS,dAd”,则输出“EDS,DAD”。

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

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

试题程序:

#include<stdio.h>

#include<string.h>

#include<conlo.h>

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

charfun(chartt[])

{

inti;

for(i=0;tt[i];i++)

{

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

if((tt[i]>='A')&&(tt[i]<='2'))

tt[i]-=32;

}

return(tt);

}

main()

{

inti;

chartt[81];

clrscr();

printf("\nPleaseenterastring:");

gets(tt);

printf("\nTheresultstringiS:/n%s",fun(tt));

}

40.下列给定程序中,函数fun()的功能是::求k!(k<13),所有阶乘的值作为函数值返回。例如:若k=10,则应输出3628800。

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

注意:不要改动main函数,不得增行或删行,也不得更

改程序的结构。

试题程序:

#include<conio.h>

#include<stdio.h>

longfun(intk)

{

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

ifk>0

return(k*fun(k-l));

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

elseif(k=0)

return1;

}

main()

{intk=10;

clrscr();

print,("%d!=%1d\n",k,fun(k));

}

五、程序改错题(2题)41.下列给定程序中函数fun的功能是:从整数10到55之间,查找能被3整除且有一位上的数值是5的数,把这些数放在b所指的数组中,这些数的个数作为函数值返回。规定函数中al放个位数,a2放十位数。

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

注意:部分源程序在文件MODll.C中,不得增行或删行,也不得更改程序的结构!

42.下列给定程序中,proc()函数的功能是:根据形参m,计算下列公式的值。t=1+1/2+1/3+1/4+…+1/m例如,若输入10,则应输出2.928968。请修改程序中的错误,使它能计算出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、操作题(2题)43.请编写一个函数intfun(int*s,intt,int*k),用来求出数组的最小元素在数组中的下标并存放在k所指的存储单元中。

例如,输入如下整数:

234345753134436458100321135760

则输出结果为6,100。

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

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

{

}

main()

{

inta[10]={234,345,753,134,436,458,

100,321,

135,760),k;

clrscr();

fun(a,10,&k);

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

}

44.请编写函数fun,函数的功能是:将大于形参m且紧靠m的k个素数存入xx所指的数组中。例如,若输入17,5,则应输出:19,23,29,3l,37。

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

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

参考答案

1.6868解析:本题考查如何用指针引用数组元素。本题先定义了一个指向字符型数组str的指针p,指针p指向数组str的首地址,p+3将指针指向str[3],*(p+3)指的是字符“D”,输出时是以“%d,格式输出的,即输出其相应ASCII码值68。

2.1a61a6解析:对于指针变量的运算,就是对地址的运算。本题中由于指针指向的是整型变量,所以,使指针变量移动9个位置也就是移动18个字节。注意,本题是以十六进制输出的。

3.88解析:fabs函数功能是求x的绝对值,计算结果为double型。pow功能是计算x的y次方的值,计算结果同样为double型。所以本题表达式相当于2.0的3.0次方,结果为8.000000。

4.k=5k=5解析:本题主要考查了函数的递归调用方法。g=0或\ue008g=1\ue009或g=2是递归的终止条件,然后用回代的方法从一个已知值推出下一个值,直到计算出最终结果。

5.线性结构线性结构解析:数据的逻辑结构是指数据元素之间的逻辑关系,分为线性结构和非线性结构。常见的线性结构有线性表、栈和队列等,常见的非线性结构有树、二叉树等。

6.存储结构

7.O(nlog2n)

8.非0非0解析:逻辑运算中,非0表示逻辑“真”,用。表示逻辑“假”。

9.55解析:分析程序,当a=3;b=4;c=5时,判断语句a>b不成立,所以不执行后面的语句,直接执行“printf('%d\\n',c);”语句,输出c的值,输出结果为5。

10.x>5||x<-5x<-5或x<-5||x>5x>5||x<-5,x<-5或x<-5||x>5解析:要使整数x的绝对值大于5,则x大于5或x小于5,用C语言表示即为:x>5||x<-5或者x<-5||x>5。故本题答案为;x>5||x<-5或者x<-5||x>5。

11.C

12.B本题考查for循环的使用。对于第1个for循环,任何一个i,内层j的循环都要使j~0到3,j=4时不符合,所以退出j循环;然后i减1,J仍然要从0~3,j=4时退出J循环直到i变成0,退出i循环。第一条for语句执行6次,第二条for语句执行4次,所以内循环体执行6*4=24次。

13.D

14.C选项A是先将a的值赋给变量b,再将变量b的值赋给变量c,不合题意;B选项中由于c的值不为0,在将c的值赋给变量a后,表达式a=c的值为1,不再对表达式b=c计算;对于c选项,表达式a=c的值为1,再求表达式b=c的值为1,然后进行逻辑与运算;D选项将b的值赋给c后再赋给e,故选择C选项。

15.B

16.D第1次循环,a的值为1,满足条件,执行“b+=a;”与“a+=2;”,则b的值变为3,a的值变为3。执行“a++”,a的值为4,满足条件进入第2次循环,执行完循环体后,b的值为7,a的值为6。执行“a++”,a的值为7,满足条件进入第3次循环,执行完循环体后,b的值为14,a的值为9。执行“a++”,a的值为10。条件不满足,退出循环。故本题答案为D选项。

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

18.D

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

20.A解析:本题考核的知识点是通过指针引用数组的元素的方法.本题中首先定义了一个一维数组a并初始化,由于定义该数组的时候省略了长度,因此该数组的长度为初始化时候赋初值的个数即为12。数组名a代表数组的首地址,所以*p=a+5语句使得p指向数组的第6个元素,而在程序中定义了一个指针q并让它指向空,实际上程序并没有在内存中为指针q开辟存储空间,这样给q赋值不允许的,故该程序运行后报错。所以,4个选项中选项A符合题意。

21.

【解析】要得到成绩高于等于平均分的学生数据,首先要得到所有学生的平均分,然后把每个学生的成绩与平均分相比较。把符合条件的学生数据放在数组b中,学生个数通过形参中的指针变量返回,平均分数由函数值返回。

22.

【考点分析】

本题考查:结构体类型成员运算,指向结构体类型的指针变量作函数参数。

【解题思路】

本题考查自定义形参的相关知识点,程序流程是这样的:在fun函数中求出平均分后,返回到主函数时平均分也要带回,所以只能定义一个指针类型的形参STREC*a,此时,引用成员的方式可以使用指向运算符,即a一>ave和a一>s[i],当然也可用(*a).ave和(*a).s[i]。

23.

24.

【解析】要得到数组中的最大元素的下标,需要比较数组中的每一个元素。将最大的元素返回给主函数,最大元素的下标通过形参返回给主函数。

25.

【考点分析】

本题考查:求数组的最大值,需要运用循环语句,因为数组是二维数组,所以应使用二层for循环嵌套。使用for循环语句时需要注意循环变量的取值范围。

【解题思路】

此类求最大值或最小值的问题,我们可以采用逐个比较的方式,要求对数组中所有元素遍历一遍,并且从中找出数组最大值或最小值。首先定义变量max存放数组中的第一个元素的值,然后利用for循环逐个找出数组中的元素,并与max比较,如果元素值大于max,则将该值赋予max,循环结束后max的值即为数组最大值,最后将该值返回。

【解题宝典】

该类题目考查较多,要掌握逐行比较的方法。对于m*n二维数组,如采用逐行查找方法,代码实现为:

26.

【考点分析】

要删除字符串中所有*号需要用循环语句遍历字符串,用

判断语句判断字符是否为*号,由此可以决定该程序应使用循

环判断结构。

【解题思路】

27.

【解析】在while循环中,利用if判断表达式中每一个字符是否为“#”,如果不是,将其复制到字符串,否则跳过,这就实现了函数的功能。

(1)首先利用工作指针指向字符串,当指针不指向串尾时,就对字符串进行循环判断。

(2)在循环中利用if判断表达式字符是否为“#”,如果不是,将其复制到字符串,否则跳过。

(3)所有字符处理完后,记得在新串s的末尾加上结束符“ˊ\0ˊ”。

28.

【考点分析】

本题考查:if语句,用来判断能被7整除或者能被11整除,但是又不能同时被7和11整除的数,在这里充分理解”逻辑与”和”逻辑或”的区别;for循环语句的循环变量用来控制取值范围。

【解题思路】

该题需要运用循环判断结构来实现,其中循环语句比较容易,只要确定循环变量的范围即可,下面来看判断语句,题目要求找出能被7或11整除,但不能同时被7和11整除的所有整数。能同时被7和ll整除的整数一定能被77整除,且不能被

77整除的数不一定就是能被7或11整除的数,所以可得出程序中的if语句。注意:(i%7==0||i%11==0)两边必须要有小括号。

29.

【解析】首先判断小于等于整数lim的所有整数是否为素数。然后将一个素数放入数组aa中,最后将素数的个数返回给主函数。

30.

【解析】由题目中所给的表达式可知,多项式的值为n项表达式的和。可以利用n次循环求出n项表达式的值,求和放在变量s中。最后将多项式的值返回到主函数当中。

31.错误:缺{正确:加{错误:缺{正确:加{解析:本题我们可以拆分成两个简单的c语言试题:

(1)求出n个数的平均值。

(2)将大于平均值的数字个数计算出来。可利用循环和条件选择语句,对x数组进行遍历,若某个值大于平均成绩,则将该元素累加计入c中。我们先来摘清楚一个简单的求10个整数平均值的例子。

#include'stdio.h'

voidmain()

{

inti,a[10],s=0;

floataver=0.0;

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

{

scanf('%d',&a[i]);

s=s+i;

}

aver=s/10.0;

printf('这十整数中的平均值为:%f',aver);

}

其实,n个整数求和也就是10个整数的拓展,没什么难的!

32.(1)if(t==0)(2)*zero=count;(1)if(t==0)(2)*zero=count;解析:本题中函数的功能是统计一个无符号整数中各位数字值为0的个数。对无符号数进行截取,然后对每个数字进行判断并统计。

33.(1)c=c+32;(2)c=c+5;(1)c=c+32;(2)c=c+5;解析:本题中函数的功能是将某些大写字母转换为对应小写字母之后的第五个字母。对于将字母转换的题型,首先是查找符合条件的字符,然后根据规则对字符进行转换。本题需要大家了解大小写字母是怎样通过ASCII码相互转换的。

34.(1)错误:fun(NODE*h)正确:intfun(NODE*h)(2)错误:p=h->next;正确:p=p->next;(1)错误:fun(NODE*h)正确:intfun(NODE*h)\r\n(2)错误:p=h->next;正确:p=p->next;解析:本题考查的这种链表的数据结构中,必须利用指针变量才能实现。即一个结点中应包含一个指针变量,用它存放下一结点的地址。建立单向链表的一般步骤是:建立头指针一建立第一个节点一头指针指向第一个节点一建立第二个节点一第一个节点的指针域指向第二个节点→……→最后一个节点指向NULL。本题重点是:了解链表的基本思想和相关算法,其实考试时的程序根本没有书上的难。在这里我们要说,重点理解有关链表插入及删除时指针移动的先后顺序问题。注意指针的保存和归位。(即头指针的保存和链表遍历时指针的归位)。这都是考试重点!

35.(1)intisl;(2)t[i]=s、[sl-i-1];(1)inti,sl;(2)t[i]=s、[sl-i-1];解析:本题中函数的功能是先将字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。解题思路是首先对字符串进行逆序存放,然后再把字符串正序连接在串后。

36.(1)错误:for(i=0;i<=3;i++)正确:for(i=1;<3;i++)(2)错误:if(k>1&&k<=6)正确:if(k>1&&k<=6)&&(i!=0)&&(j!=0)||(k==0))(1)错误:for(i=0;i<=3;i++)正确:for(i=1;<3;i++)\r\n(2)错误:if(k>1&&k<=6)正确:if(k>1&&k<=6)&&(i!=0)&&(j!=0)||(k==0))解析:该题是一道教材习题的变体,如果单纯从数学的排列组合角度来分析,实在简单不过,那怎么才能用C语言实现题目中的要求呢?这就需要我们有一个清晰的编程思想。红球数i的总数为3,但最小值为1,循环条件中,i的值是从0开始的,所以不应该是for(i=O;i<=3;i++,而是for(i=1;i<=3;i++),另外,在if(k>1&&k<=6)中,程序旨在说明题干中的“在每组中,可以没有黑球,但必须要有红球和白球”信息,一一满足后,正确的条件应该是if((k>1&&k<=6)&&(i!=0)&&(j!=0)||(k==0))。

37.(1)错误:fun(char*sintnum[5])正确:voidfun(char*sinthum[5])(2)错误:num[i]=0;正确:num[k]=0;(3)错误:switch(s)正确:switch(*s)(1)错误:fun(char*s,intnum[5])正确:voidfun(char*s,inthum[5])\r\n(2)错误:num[i]=0;正确:num[k]=0;\r\n(3)错误:switch(s)正确:switch(*s)解析:switch语句说明:

(1)switch后的表达式,可以是整型或字符型,也可以是枚举类型的。在新的ANSIC标准中允许表达式的类型为任何类型。

(2)每个case后的常量表达式只能是常量组成的表达式,当switch后的表达式的值与某一个常量表达式的值一致时,程序就转到此case后的语句开始执行。如果没有一个常量表达式的值与swish后的值一致,就执行default后的语句。

(3)各个case后的常量表达式的值必须互不相同,不然的话程序就不知该跳到何处开始执行。

(4)各个case的次序不影响执行结果,一般情况下,尽量使用出现机率大的case放在前面(为什么,等学到《数据结构》就知道了)。

(5)在执行完一个case后面的语句后,程序流程转到下一个case后的语句开始执行。千万不要理解成行完一个case后程序就转到switch后的语句去执行了。

在本例中,其他错误都比较简单,而且我们在前面已经介绍过了。

38.(1)voidfun(char*schar*t)(2)t[2*d]=‘\0’;(1)voidfun(char*s,char*t)(2)t[2*d]=‘\0’;解析:本题中函数的功能是将字符串的正序和反序进行连接

温馨提示

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

评论

0/150

提交评论