C语言51100套试题答案及详解文档格式.docx

上传人:b****6 文档编号:17215884 上传时间:2022-11-29 格式:DOCX 页数:161 大小:219.49KB
下载 相关 举报
C语言51100套试题答案及详解文档格式.docx_第1页
第1页 / 共161页
C语言51100套试题答案及详解文档格式.docx_第2页
第2页 / 共161页
C语言51100套试题答案及详解文档格式.docx_第3页
第3页 / 共161页
C语言51100套试题答案及详解文档格式.docx_第4页
第4页 / 共161页
C语言51100套试题答案及详解文档格式.docx_第5页
第5页 / 共161页
点击查看更多>>
下载资源
资源描述

C语言51100套试题答案及详解文档格式.docx

《C语言51100套试题答案及详解文档格式.docx》由会员分享,可在线阅读,更多相关《C语言51100套试题答案及详解文档格式.docx(161页珍藏版)》请在冰豆网上搜索。

C语言51100套试题答案及详解文档格式.docx

/*返回平均值*/

该程序功能是把低于平均分的学生数据放在b所指的

数组中,低于平均分的学生人数通过形参n传回,平均分通

过函数值返回。

(1)首先,通过循环求总分,然后求得平均分。

(2)在循环中,进行平均分与每个成绩进行比较,并将

满足条件的数据存入数组及对其进行累加。

【考点链接】数组操作;

结构体。

第52套试题答案及详解

a[5]…升序排序,故第二空应为“2”。

第三空:

选择排序法中的升序排序,首先从数组中挑选

(1)n/2

(2)i

(3)a[n-i-1]

一个最小的元素,把它和第一元素交换,接着从剩下的n-1

个元素中再挑出一个最小的元素,把它和第二个元素交换,

不断重复以上过程,直到比较完最后两个元素。

故内层循环

变量j应该从i+1开始,因此第三空处应为“i+1”。

【考点链接】数组;

循环结构。

二、程序修改题

本题中函数fun的功能是将数组中的元素倒置,即第一

个元素和最后一个元素交换,第二个元素和倒数第二个元素

交换,依此类推,总共交换n/2次,n为数组的长度。

由审题分析可知,总共交换n/2次,故循环的

终止条件为i等于n/2,故第一空处应为“n/2”。

难度指数★

a[0]和a[n-1]交换,a[1]和a[n-2]交换…,因此

(1)sum=0.0;

(2)if((i+1)%5==0)

本题函数的功能是对每五个元素求一个平均值。

首先要

依顺序读取每五个元素,并对这五个元素取平均值。

a[i]和a[n-i-1]交换,故第二空处应为“i”。

“t=a[i];

a[i]=a[n-1-i];

”所以第三空处是把t值

赋值a[n-1-i],故第三空处应为“a[n-1-i]”。

【考点链接】函数逻辑;

数组操作。

(1)在第一标识下“sun=0.0;

”,根据题意,这是给sum

赋值,而sun没有定义编译时会提示错误,应改为

(1)n=*p-'

0'

;

(2)n=n*8+*p-'

“sum=0.0;

”。

(2)错误标识下的if判断语句是依顺序取五个字符,if

中的逻辑表达式语法有误,由于1%5恒等于1,所以i+1%5

也就等价于i+1了,所以将“if(i+1%5==0)”改为“if((i+1)%5==

0)”,此处主要注意的是运算符的优先级。

【考点链接】if条件语句。

三、程序设计题

(1)该题中函数功能是实现八进制到十进制的转换。

中,八进制与十进制之间的转换关系是:

八进制就是逢8

进1。

八进制数采用0~7这8个数来表达一个数。

八进制

数第1位的权值为8的0次方,第2位权值为8的1次方,

第3位权值为8的2次方,等等。

(2)从已给定源程序的main主函数开始入手,首先通

过if语句判断串是否过长,是否符合题干要求;

然后循环

1inti;

判断串中的每一位是否都在0~7之间,是否符合八进制要

求,最后调用fun(s)实现八进制到十进制的转换。

1

(1)第一个标识下面:

语句“n=*p-'

o'

”中的'

不是数

字零,而是字母'

,根据前面的分析因此改为:

“n=*p-'

(2)第二个标识下面:

语句“n=n*8+*P-'

”,首先进行

(1)相同的修改,变量P没有定义,根据题意要求这里

因此第二空处为“k”。

此处是将字符串长度不超过k的字符串ss[i]

拷贝到ss[j++]中,故第三空处为“ss[i]”。

【考点链接】函数功能;

指针。

应该是“*p-'

”,所以此句改为:

“n=n*8+*p-'

【考点链接】字符;

数制。

(1)intk=0;

(2)while(*p||*q)

【答案】难度指数★★

1STRECc;

2inti;

3c.num[0]='

\0'

/*置初始空串*/

4c.s=-1;

/*置成绩为-1*/

5for(i=0;

6if(strcmp(a[i].num,b)==0){/*判

断学号是否相等*/

7strcpy(c.num,a[i].num);

/*相

等,则对学号进行赋值*/

8c.s=a[i].s;

/*相等,则对成绩进行

赋值*/

9break;

/*退出循环体*/

11returnc;

/*返回结构体变量*/

该程序功能是逐个比较两数组对应字符的ASCII值大

小。

从已给定源程序的main主函数开始入手,调用函数

“fun(a,b,c);

”,对字符串a、b进行比较,生成字符串c。

(1)第一个标识下面的“intk=1;

”在题目中要求将字

符放在数组c,如果数组中有n个元素,应该从c[0]到c[n-1]。

所以,应将k的初始化定义改为从0开始,即“intk=0;

(2)第二个标识下面的判断条件,是根据题目要求逐个

比较两个数组对应字符的ASCII值的大小,所以判断条件

应该是直到两个字符数组所有元素比较完毕,而不是数组对

应元素不相等。

其中,该题主要考查变量的初始化,逻辑关系。

【考点链接】函数逻辑。

该程序功能是函数返回指定学号的学生数据,指定的学

号在主函数中输入。

解题思路是在循环过程中,使用if判

断表达式,将输入的学号与所有的学号进行比较,如果找到

该学号,将其赋值到指定变量,否则将空格赋值到指定变量,

表明没有查找到该学号。

在for循环中,利用C语言自带字符串比较函数strcmp,

对输入的学号与所有的学号进行比较,以求出指定学号。

【考点链接】结构体;

函数传值。

第53套试题答案及详解

1inti=0;

2char*p=a;

3while(*p&

&

*p=='

*'

4{

5a[i]=*p;

6i++;

7p++;

8}

9while(*p)

10{

11if(*p!

='

12{

13a[i]=*p;

14i++;

15}

16p++;

(1)N

(2)k

(3)ss[i]

17}

本题中函数fun的功能是在形参ss所指字符串数组中,

删除所有串长超过k的字符串,函数返回所剩字符串的个

数。

for(i=0;

__1__;

i++)”补充循环的结束条件,

fun的参数(*ss)[M]是指向N行M列的字符串数组,循环是

逐行查找字符串的长度是否超过k,因此循环次数是N次,

故第一空处应为“N”。

if(len<

=__2__)strcpy(ss[j++],__3__);

”可知在

循环当中是将长度没有超过k的字符串保存在ss所指的字

符串数组的前面,j记录满足长度不超过k的字符的个数,

18a[i]='

该程序功能是除了字符串前导的“*”号之外,将串中

其他“*”号全部删除。

本题的解题过程首先确定由串起始

位置开始的第一个非“*”位置,然后对由第一个非“*”开

始的字符到串尾的字符进行判断,如果不是“*”的字符拷

贝到字符串。

(1)首先,使用一个指针p指向串的起始位置,然后对

指针p指向的字符进行判断,并且如果是“*”,将其拷贝到

字符串,这样确定了由头开始的第一个非“*”的位置。

(2)然后,在循环过程中对由第一个非“*”字符起始

到串尾的字符进行判断,如果不是“*”就将其拷贝到字符

串a,否则跳过。

(3)最后,在新生成的字符串尾加'

【考点链接】指针操作。

第54套试题答案及详解

5p++;

6}

7a[j]='

该程序功能是删除字符串中所有的*号。

解题思路是在

while循环过程中,利用if判断表达式判断每一个字符是否

为“*”号,如果不是将其拷贝到字符串,否则跳过,这样

就实现了函数功能。

(1)首先利用工作指针指向字符串,当指针不指向串尾

(1)1

(2)j++

(3)j

时,就对字符串进行循环判断。

函数fun的功能是把形参a所指数组中的奇数按原顺序

依次存放到a中,把偶数从数组中删除,奇数和偶数的判断

可用取余的方法来实现,a[i]%2等于0那么a[i]是偶数,否

则是奇数。

根据“a[j]=a[i];

”可知,a[i]是奇数,变量j记

录奇数的个数,故第一空处是判断a[i]是否是奇数,故第一

空处应为“1”。

变量j记录奇数的个数,故第二空处j计数应

当加1,因此第二空处应为“j++”或“j=j+1”。

fun函数的返回值是奇数个数,故第三空处应

为“j”。

【答案】难度指数★★★

(1)t=a;

a=b;

b=t;

(2)return(b);

(1)本题中函数的功能是求出两个非零正整数的最大公

约数。

其中,最大公约数是指能最大约去给出的几个数字的

数字,例如15和30能最大约去的数字是15,所以15就是

它们的最大公约数。

(2)从源程序的main主函数开始入手,通过键盘输入

两个正整数,语句“a=fun(num1,num2);

”调用fun函数求得

(1)根据算法分析,首先要确保a、b两个数中a是较

大数,b是较小数,如果不是,则交换a和b。

但是第一个

标识下,交换a和b两个数的算法有误,所以应将“t=a;

b=a;

a=t;

”改为“t=a;

(2)算法到循环结束,最后余数为0的时候,b中所存

的数即为最大公约数,也就是函数要返回的值。

因此,第二

个标识下面的“return(a);

”改为“return(b);

【考点链接】函数实现的逻辑关系。

1intj=0;

3while(*p){

4if(*p!

)a[j++]=*p;

(2)在循环中利用if判断表达式,判断是字符是否为

“*”,如果不是“*”将其拷贝到字符串,否则跳过“*”

字符。

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

符“'

第55套试题答案及详解

(1)j=3

(2)i(3)j

函数fun的功能是统计所有小于等于n(n>

2)的素数的个

数,素数的个数作为函数值返回,判断一个整数n是否是素

素数是指能被1和本身整除的正整数(>

1),所以判别

n是否为素数,只要用2、3、…、n-1这些数逐个去除n,

观察余数是否为0即可,只要有一次相除余数为0,n就不

是素数,否则n为素数。

n>

2,由“printf("

\nTheprimenumberbetween3

to%d\n"

n);

”可知,从3开始寻找素数,故第一空处应为

“j=3”。

由审题分析可知,判断i是否是素数用2、3、…、

i-1这些数逐个去除i即可,故第二空处应为“i”。

由“count++;

printf(count%15?

"

%5d"

:

"

\n%5d"

i);

”可知找到一个素数i了,在i是素数的时候,变量j从2

到i-1都不能被i整除,退出for循环的是j的值已经变成i

了,故判断j是否大于等于i便可知i是不是素数,所以第

三空应为“j”。

【考点链接】函数功能。

(1)sum=0;

j=0;

(2)if(sum%4==2)

本题中函数的功能是计算前n(4<

n<

50)项的累加和;

在累加过程中把那些被4除后余2的当前累加值放入数组

中,符合此条件的累加值的个数作为函数值返回主函数。

(1)根据题意第一标识下“sum=j==0;

”是给sum和j

赋初值0,故应改成“sum=0;

(2)第二个标识下的if语句是根据题干要求,累加和

被4除后余2,而原题是将2赋值给sum%4。

所以,第二个

标识下“if(sum%4=2)”应该改为“if(sum%4==2)”。

【考点链接】变量初始化;

if条件语句;

逻辑表达式。

2doublesum=0.0;

3if(n>

1&

=100){

4for(i=1;

=n;

5sum+=1.0/(2*i-1)-1.0/(2*i);

7returnsum;

该程序功能是计算并输出多项式值。

根据题干中给出的

数列,首先推出每一项的表达式,然后再对多项式进行累加

求和。

(1)根据题干中给出的数列,推出每一项是(1.0/(2*i-

1)-1.0/(2*i))。

(2)在循环中求得每一项,然后对其进行累加求和。

【考点链接】逻辑关系;

运算符。

第56套试题答案及详解

本题中函数的功能是用递归算法计算斐波拉契级数数

列中第n项的值。

本题主要是对于switch-case语法的介绍。

(1)第一个标识下的switch后用括号括起来的表达式

的标准语法后面是没有“;

”的,所以“switch(g);

”应该改

为“switch(g)”。

(2)第二个标识下的case加常量表达式的后面用冒号

连接选择语句,所以“case1;

”改为“case1:

“case1:

和“case2:

”都是返回1,应该写两个“return1”。

【考点链接】switch分支语句。

【答案】难度指数★★★★

2for(i=0;

3a->

ave=a->

ave+a->

s[i];

4a->

该程序功能是计算结构体中某一成员的平均值。

这类题

主要考查是对结构体的操作,关于平均分数的求解过程首先

统计成员的总分,然后计算平均分。

(1)本题中给出的题干中定义了结构体变量STREC用

来存储学生的记录。

(2)利用for循环求得总分,然后求得平均分,最后将

平均分放入记录ave中。

其中,结构体成员的引用形式可以

为a.ave、a.s[i]等。

for循环。

(1)a[i]

(2)a[j]

(3)a[j]

第57套试题答案及详解

本题中函数的功能是将数组中的元素下标位置为偶数

的元素按照从小到大排序,下标为奇数位置的元素按照从大

到小排序,相当于2个排序过程。

在fun函数中,采用选择

排序法进行排序,分别用max和min存储每次寻找的最大

(1)filename

(2)fp

(3)fp

值和最小值,px和pn记录每次查找到的最大值和最小值的

下标位置。

根据“max=min=___1___;

px=pn=i;

”可知,

px和pn初始化为i,max和min初始化为a[i],假定第一个

元素为最大值、最小值,然后逐个和其他的元素比较找出最

大值和最小值,因此第一空应为“a[i]”。

根据“max=a[j];

px=j;

”可知,max保存了a[j]

的值,说明max比元素a[j]小,故第二空处应为“a[j]”。

根据“min=a[j];

pn=j;

”可知,min保存了a[j]

的值,说明min比元素a[j]大,故第三空处应为“a[j]”。

本题中函数fun的功能是重写形参filename所指文件中

最后一个学生的数据,即用新的学生数据覆盖该学生原来的

数据,本题主要考察文件的读写。

“fp=fopen(__1__,"

rb+"

);

”补充fopen的参数,

fopen的调用形式是:

fp=fopen(文件名,文件使用方式),因

此第一空处应填文件名“filename”。

此处是补充fseek函数的参数,fseek的调用形

式是:

fseek(fp,offset,position),其中第一个参数是文件型指

针,故第二空处应填文件型指针变量“fp”。

fwrite的调用形式是(buffer,size,count,fp),最后

一个参数是文件型指针,故第三空处应填“fp”,将新的学

难度指数★★

生数据写在最后一个学生数据位置。

(1)switch(g)

(2)case1:

return1;

case2:

return1;

【考点链接】结构图;

文件操作。

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

(2)returnh;

该题中函数功能是创建带头结点的单向链表。

从已给定

源程序的main主函数开始入手,首先通过“head=

Creatlink(8,22);

”语句调用Creatlink函数生成单向链表,然

后“outlink(head);

”输出该链表。

(1)第一标识下“p=(NODE)malloc(sizeof(NODE));

”,

由“returnsum;

”可知sum变量记录了主对角

线元素和反向对角线元素之和,第一空处是在使用sum变

量之前对其初始化,因此第一空处应为“sum=0;

由第二个循环内“sum+=t[i][n-i-___3___];

”可

知,第一个循环是主对角元素和,第二个循环求反向对角线

元素之和,因此第二空处应为“t[i][i]”。

第二个循环求反向对角线元素之和,反向对角

元素为t[i][n-i-1],故第三空应为“1”。

逻辑关系。

maclloc函数的返回类型是void*类型,表示未确定类型的指

针,因此需要指针类型转换,而“(NODE)”不是指针类型,

(1)doubler;

故第一标识下应改成“p=(NODE*)malloc(sizeof(NODE));

(2)第二个标识下,最后将单链表返回,应该是返回头

指针h指向的链表,而不是其中的一个节点p,所以“return

p;

”应该改为“returnh;

【答案】难度指数★

1inti,n=0;

//字符统计初始值设置为0

i<

strlen(s);

i++)

3//小于字符串长度进行字符循环判断

5if(s[i]>

a'

s[i]<

z'

s[i+1]

=='

'

||s[i+1]=='

)//单词判断条件

6n++;

//单词统计计数器加1

7}

8returnn;

//返回统计值

该程序功能是统计一行字符串中单词的个数,作为函数

值返回。

单词之间以空格为分割,所以对单词个数的统计可

以理解为对空格字符的统计,其中最后一个单词以字符串的

结尾符为分割。

(2)while(fabs(n-m)>

0.001)

(1)该题中函数功能是二分法求方程根。

其中,二分法

的求根过程,是将含根区间平均分为两个小区间,然后判断

哪个区间是含根区间。

在此基础上,将这里的小含根区间进

一步划分为两个更小的区间

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 制度规范

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1