C算法提高训练题(2)

2019-01-19 18:23

题12:分数统计

给定一个百分制成绩T,将其划分为如下五个等级之一: 90~100为A,80~89为B,70~79为C,60~69为D,0~59为E

现在给定一个文件inp,文件中包含若干百分制成绩(成绩个数不超过100),请你统计五个等级段的人数,并找出人数最多的那个等级段,按照从大到小的顺序输出该段中所有人成绩(保证人数最多的等级只有一个)。要求输出到指定文件oup中。

输入格式

若干0~100的正整数,用空格隔开

输出格式

第一行为5个正整数,分别表示A,B,C,D,E五个等级段的人数 第二行一个正整数,表示人数最多的等级段中人数

接下来一行若干个用空格隔开的正整数,表示人数最多的那个等级中所有人的分数,按从大到小的顺序输出。

样例输入

100 80 85 77 55 61 82 90 71 60

样例输出

2 3 2 2 1 3

85 82 80

题13:猜测排名

5名选手A,B,C,D,E参加100米赛跑,赛前他们对结果作了如下预测: A说:我不是第一,C不是最后一名 B说:A是第一,我是第二 C说:B是第一,我不是第三 D说:C是第一,我是第二 E说:D是第一,我是第三

赛后发现每个人刚好说对了一半。请你编程求出比赛最终排名有哪些可能。

本题要求将结果输出到指定文件oup中。 输出:

输出最终排名,为ABCDE五个字母组成的一个排列,表示1~5名对应的选手。

说明

假设在你自己机器上的代码为: #include

#include #include #include #include using namespace std; void guess(char *oup) {

ofstream fout; fout.open(oup); @你的其它代码 fout.close(); }

int main() {

guess(\ return 0; }

你提交的代码应该是上面例子的红色部分

题14:欧拉函数

给定一个大于1,不超过2000000的正整数n,输出欧拉函数,phi(n)的值。 如果你并不了解欧拉函数,那么请参阅提示。

这是一道完善函数的题目,给定输入文件名inp和输出文件名oup,要求从输入文件中读取n,将结果输出到指定文件。

输入格式

在给定的输入文件中进行读入: 一行一个正整数n。

输出格式

将输出信息输出到指定的文件中: 一行一个整数表示phi(n)。

样例输入

输入文件example.in的内容为: 17

样例输出

输出文件example.out的内容为: 16

提示

欧拉函数phi(n)是数论中非常重要的一个函数,其表示1到n-1之间,与n互质的数的个数。显然的,我们可以通过定义直接计算phi(n)。 当然,phi(n)还有这么一种计算方法。

首先我们对n进行质因数分解,不妨设n=p1^a1 * p2^a2 * ... * pk^ak (这里a^b表示a的b次幂,p1到pk为k个互不相同的质数,a1到ak均为正整数),那么 phi(n)=n(1-(1/p1))(1-(1/p2))....(1-(1/pk)) 稍稍化简一下就是

phi(n)=n(p1-1)(p2-1)...(pk-1)/(p1*p2*...*pk)

计算的时候小心中间计算结果超过int类型上界,可通过调整公式各项的计算顺序避免(比如先做除法)!

题15:不同单词个数统计

编写一个程序,输入一个句子,然后统计出这个句子当中不同的单词个数。例如:对于句子“one little two little three little boys”,总共有5个不同的单词:one, little, two, three, boys。 说明:(1)由于句子当中包含有空格,所以应该用gets函数来输入这个句子;(2)输入的句子当中只包含英文字符和空格,单词之间用一个空格隔开;(3)不用考虑单词的大小写,假设输入的都是小写字符;(4)句子长度不超过100个字符。

输入格式:输入只有一行,即一个英文句子。

输出格式:输出只有一行,是一个整数,表示句子中不同单词的个数。 输入输出样例

样例输入

one little two little three little boys

样例输出

5

题16:打水问题

N个人要打水,有M个水龙头,第i个人打水所需时间为Ti,请安排一个合理的方案使得所有人的等待时间之和尽量小。

输入格式

第一行两个正整数N M 接下来一行N个正整数Ti。 N,M<=1000,Ti<=1000

输出格式

最小的等待时间之和。(不需要输出具体的安排方案)

样例输入

7 3

3 6 1 4 2 5 7

样例输出

11

提示

一种最佳打水方案是,将N个人按照Ti从小到大的顺序依次分配到M个龙头打水。

例如样例中,Ti从小到大排序为1,2,3,4,5,6,7,将他们依次分配到3个龙头,则去龙头一打水的为1,4,7;去龙头二打水的为2,5;去第三个龙头打水的为3,6。 第一个龙头打水的人总等待时间 = 0 + 1 + (1 + 4) = 6 第二个龙头打水的人总等待时间 = 0 + 2 = 2 第三个龙头打水的人总等待时间 = 0 + 3 = 3 所以总的等待时间 = 6 + 2 + 3 = 11

题17:单词个数统计

编写一个程序,输入一个字符串(长度不超过80),然后统计出该字符串当中包含有多少个单词。例如:字符串“this is a book”当中包含有4个单词。

输入格式:输入一个字符串,由若干个单词组成,单词之间用一个空格隔开。 输出格式:输出一个整数,即单词的个数。 输入输出样例 用户输入数据样例: this is a book 系统输出数据如下: 4

题18:断案

公安人员审问甲、乙、丙、丁四个嫌疑犯,已确知,这四个人当中仅有一人是偷窃者,还知道这四个人的答话,要么完全诚实,要么完全说谎。在回答公安人员的问话中: 甲说:“乙没有偷,是丁偷的。” 乙说:“我没有偷,是丙偷的。” 丙说:“甲没有偷,是乙偷的。”

丁说:“我没有偷,我用的那东西是我家里的。” 请根据上述四人答话,判断谁是偷窃者。 输入格式:无输入。

输出格式:输出一个字符,表示偷窃者是谁,A表示甲,B表示乙,C表示丙,D表示丁。

题19:栅格打印问题

编写一个程序,输入两个整数,作为栅格的高度和宽度,然后用“+”、“-”和“|”这三个字符来打印一个栅格。

输入格式:输入只有一行,包括两个整数,分别为栅格的高度和宽度。 输出格式:输出相应的栅格。 输入输出样例

样例输入

3 2

样例输出

+-+-+ | | | +-+-+ | | | +-+-+ | | | +-+-+

题20:复数求和

从键盘读入n个复数(实部和虚部都为整数)用链表存储,遍历链表求出n个复数的和并输出。 样例输入: 3 3 4 5 2 1 3 样例输出: 9+9i 样例输入: 7 1 2 3 4 2 5 1 8 6 4 7 9 3 7 样例输出: 23+39i

题21:字符串比较


C算法提高训练题(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:关于校园文化建设的建议

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: