2018年浙江理工大学C语言程序设计复试实战预测五套卷

更新时间:2023-05-07 18:01:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

考研专业课资料、辅导、答疑一站式服务平台

第 1 页,共 42 页

目录

2018年浙江理工大学C 语言程序设计复试实战预测五套卷(一) (2)

2018年浙江理工大学C 语言程序设计复试实战预测五套卷(二) (12)

2018年浙江理工大学C 语言程序设计复试实战预测五套卷(三) (20)

2018年浙江理工大学C 语言程序设计复试实战预测五套卷(四) (28)

2018年浙江理工大学C 语言程序设计复试实战预测五套卷(五) (36)

考研专业课资料、辅导、答疑一站式服务平台

第 2 页,共 42 页 2018年浙江理工大学C 语言程序设计复试实战预测五套卷(一)

特别说明:

1-本资料为2018复试学员内部使用,终极模拟预测押题,实战检测复试复习效果。

2-资料仅供复试复习参考,与目标学校及研究生院官方无关,如有侵权、请联系我们立即处理。 ————————————————————————————————————————

一、编程题

1. 编写程序,输入三角型的三条边长,求其面积。注意:对于不合理的边长输入要输出数据错误的提示信息。

【答案】

#include"math.h"

main ( )

{intflag=0;

floata ,b ,c ,s ;

do

{printf("Pleaseenterabc :");

scanf("%f%f%f",&a ,&b ,&c);

if(a>b+c||b>a+c||c>a+b)

flag=1;

}while(flag);

s=(a+b+c)/2;

printf("S=%f",s=sqrt((s-a)*(s-b)*(s-c)));

}

2. 25个人围成一个圈,从第1个人开始顺序报号,凡报号为3和3的倍数者退出圈子,找出最后留在圈子中的人原来的序号。

【答案】

链表头指针

考研专业课资料、辅导、答疑一站式服务平台

第 3 页,共 42 页

如果是第一个结点,在head 中保留该结点的首地址

?

?

如果不是第一个结点,将新建结点连到链表的结尾处

?

如果是3的倍数

?

结点数减

1

如果结点数<3,退出循环

链表走到下一个结点

如果到尾结点,下一个结点连接到头结点

计数器加

1

?

函数功能:建立一个新结点,并为该结点赋值 ? 函数参数:整型变量nodeNumbers ,表示建立的结点个数

返回值:返回该结点的指针

考研专业课资料、辅导、答疑一站式服务平台

第 4 页,共 42 页

?

函数功能:显示所有己建立的结点的结点号和该结点中数据项内容 ?

函数参数:结构体指针变量head ,表示指向链表的头指针 ?

返回值:无

函数功能:删除结点,释放内存

函数参数:结构体指针变量P ,表示指向链表的当前结点的指针

结构体指针变量pr ,表示指向链表的当前结点的前一个结点的指针

返回值:返回指向当前结点的指针

头结点的删除

尾结点的删除

考研专业课资料、辅导、答疑一站式服务平台

第 5 页,共 42 页

【解析】可以用链表方式实现。首先按照1?25号的顺序建立链表,1?25号存放在链表的数据区,从链表头开始数,数到3或3的倍数的结点,删除该结点,一直到链表结束;重复上述过程一直到链表中只剩下两个结点,读出最后两个结点的数据区的数据就是最后的答案。

编程中遇到如下几个问题:

在第一次从链表头开始数每个结点时,可以很方便地确定每个结点的顺序,当到该链表的结尾时,结尾结点的顺序号应该是25号,下面应该数哪个结点?显然是头结点,也就是说,需要将该链表的首尾相接形成一个环形,如何形成一个环形?程序怎么做?

删除结点操作中包含三种不同的结点删除方式:中间结点、头结点、结尾结点。每一种删除方式都会不同,在访问和删除过程中必须分清要删除结点的类型。

必须考虑循环何时结束。

3. 设有字母a 、b 、c ,请编程用递归的方法产生由这些字母组成的,且长度为n 的所有可能的字符串。例如,输入n=2,则输出:

aa ab ac babbbccacbcc

【答案】

#include

inta[10];

fun(int*p ,intm ,intn)/*从m 个元素中取n 个存入数组p 中*/

{inti ;/*用数0~m-1表示m 个不同的元素*/

for(i=0;i

{*p=i ;

if(n>1)fun(p+1,m ,n-1);

elseprint(p);

}

}

print(int*p)

{int*q ;

for(q=a ;q<=p ;q++)/*输出结果,将整数转换为字母a 起始的序列*/

printf("%c",'a'+*q);

printf("\t");

}

本文来源:https://www.bwwdw.com/article/9efe.html

Top