高级语言程序设计c大一考试,《高级语言程序设计》期末考试试题.DOC

《高级语言程序设计》期末考试试题

清华大学计1年级《高级语言程序设计》期末考试试题

(3小时上机完成)

试卷说明:

请在C盘根目录下建立一个子目录,以自己的学号命名,并将所有的程序存入此目录。如,学号为010000的同学,需要建立目录C:\010000,并将程序存入此目录。按照题目名称中指定文件名保存你的程序,并保存一个备份,以免程序被意外破坏。例如,第一题应当保存一个叫做1-1bak.cpp的文件。

3-A和3-B最多只能选择一道题目。如果同时存在3-A.cpp和3-B.cpp,我们将随机选择一道题目进行评分。

所有题目采用键盘输入和屏幕输出,你的程序不得访问任何文件。

评分时将查看源程序,请严格遵守题目中给出的限制。

第一部分 基础问题 (每题12分,共60分)

1-1.自我介绍 ( 1-1.cpp )

在屏幕上输出你的学号和姓名,各占一行。

1-2.递归函数 ( 1-2.cpp )

有这样一个函数:

键盘输入实数a和b(0 < a, b < 100),计算该函数当x=a, y=b的值并输出到屏幕。输入值最多有四位小数,输出时四舍五入保留两位小数。

样例:

输入输出9.2 5.636.47

1-3.进制转换 ( 1-3.cpp )

请将一个n进制的数转换成m进制的数,并输出.(在10进制以上的数中A代表10,B代表11,以此类推)

输入:

第1行1个整数n,表示被转换的数的进制(2 < = n < = 30)

第2行1个整数m,表示转换后的数的进制(2 < = m < = 30)

第3行有1个n进制的数。

输出:

仅1行,为转换后的m进制的数。

样例:

输入输出2

8

100110010462(注意:不要使用标准的进制转换函数)

1-4.竖式打印 ( 1-4.cpp )

键盘输入两个两位正整数a,b ( 11 < = a,b < = 99,且a和b都不包含数字’0’ ),在屏幕上输出a与b相乘的竖式。注意尽量按照样例的格式进行输出。

样例:

输入输出25 12 25

* 12

------

50

25

------

300

1-5. 铅笔工厂 ( 1-5.cpp )

在铅笔工厂里,一支铅笔要经过下列工序:首先在一台机器中喷上彩漆,随后在另一台机器中喷上清漆。遗憾的是这两台机器都有一些毛病。上彩漆的机器在每处理n支铅笔后就“罢工”一次(也就是下一支铅笔将不被喷上彩漆),而上清漆机器在处理m支铅笔后“罢工”一次。于是这所工厂出产四种铅笔,一种是成品铅笔,一种是只上过彩漆的铅笔,一种是只上过清漆的铅笔,最后一种是没有上过任何漆的铅笔。

请编写程序,对给定的n, m 和 k (被处理的铅笔总数),计算四种铅笔的数量。

例如,n=3, m=5 以及k=17,那么铅笔的处理情况如下图:

?1234567891011121314151617彩漆√√√×√√√×√√√×√√√×√清漆√√√√√×√√√√√×√√√√√17支铅笔中,有12支是成品。而第12支是什么漆也没上的;第6支只上了彩漆,还有3支只上了清漆。

输入:

仅一行,三个整数 n, m 和 k。0 < n < 106, 0 < m < 106, 0 < k < 109。

输出:

在一行中依次输出下列4个数:

a) 铅笔成品数。

b) 没被上漆的铅笔数。

c) 上过彩漆而没上清漆的铅笔数。

d) 上过清漆而没上彩漆的铅笔数。

样例1

输入输出3 5 1712 1 1 3

样例2

输入输出999999 999999 999999999999999000 999 0 0

第二部分 用指定方法设计程序 (每题15分,共30分)

2-1. 约数个数 ( 2-1.cpp )

一个正整数的约数定义为能够整除它的所有正整数。如24的约数有:1, 2, 3, 4, 6, 8, 12, 24,共8个。我们称24的约数个数为8。下面给出一种求约数个数的方法,仍以24为例:

首先将24分解质因数,并表示成幂积的形式:24=23*31;

然后将每个质因数的幂加1后相乘,(3+1)*(1+1)=8,即24的约数有8个。

再以90为例:90=21*32*51,(1+1)*(2+1)*(1+1)=12,于是90共有12个约数,它们分别是1, 2, 3, 5, 6, 9, 10, 15, 18, 30, 45, 90。

根据上面的方法,你的程序需要完成两个任务:

任务一:

输入一个正整数k,在屏幕上输出k的约数的个数c。(6分)

任务二:

输入一个正整数n,将1~n按照约数个数的不同进行分类,在屏幕上输出

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值