C语言第八次作业 下载本文

内容发布更新时间 : 2024/5/19 21:28:05星期一 下面是文章的全部内容请认真阅读。

当前编程题:14级第八次作业---统计整数 1. 【问题描述】

输入若干个整数,统计出现次数最多的那个整数。如果出现最多的整数有两个以上,打印最早输入的那个整数。 【输入形式】

从标准输入读取输入。第一行只有一个数字N(1≤N≤10000),代表整数的个数。以后的N行每行有一个整数。 【输出形式】

向标准输出打印出现次数最多的那个数字。 【输入样例】 6 11 0 -1 20 0 300

【输出样例】 0

【样例说明】

输入6个整数,其中出现次数最多的是0,共出现两次。 【评分标准】

本题不准使用数学库函数。运行时限1秒,正确得20分,每个测试点4分,提交程序名为count.c。

2. 【问题描述】 从低到高排序) 【输入形式】

每次键盘读入最多不超过50个学生的学生信息: 第一行为学生人数;

后面每一行为空格隔开的学生学号、姓名、年龄,其中学号和年龄都是整数。 【输出形式】

分别以姓名顺序(从低到高)和年龄顺序(从低到高)将学生信息输出,每行输出一位学生的信息,其中学号占3位,姓名(英文)占6位,年龄占3位,均为右对齐。年龄相同时按姓名从低到高排序。两种顺序的输出结果用一行空行相隔。 【输入样例】 4 1 aaa 22 45 bbb 23 54 ddd 20 110 ccc 19 【输出样例】

从键盘中读入最多不超过50个学生的学生信息(包括空格隔开的姓名、学号、年龄信息,以学号

1 aaa 22 45 bbb 23 110 ccc 19

54 ddd 20 110 ccc 19 54 ddd 20 1 aaa 22

45 bbb 23 【样例说明】

从键盘输入四个学生记录,分别按姓名和年龄排序并输出。 【评分标准】

分别以姓名顺序和年龄顺序输出学生信息,完全正确得20分,每个测试点4分,提交程序名为students.c。

3. 【问题描述】编写一个程序,输入N个用户的姓名和电话号码,按照用户姓名的词典顺序排列输出用户的姓名和电话号码。

【输入形式】用户首先在第一行输入一个正整数,该正整数表示待排序的用户数目,然后在下面多行输入多个用户的信息,每行的输入格式为:姓名 电话。以回车结束每个用户的输入。 【输出形式】程序输出排序后的结果。每行的输出结果格式也是: 姓名 电话。姓名和电话字段中间没有空格,要求用户姓名不能超过10个字符,超出10个字符时候只取前10个字符作为姓名。电话号码不能超过10位,超过10位时只按10位处理。输出姓名、电话字段各占12个字符宽,输出格式采用默认对齐方式。另外,用户的数量要求不超过50个。 【样例输入】 3

amethystic 1234567 amethyst 654321 wangwei 7645434 【样例输出】

####amethyst######654321 ##amethystic#####1234567 #####wangwei#####7645434

【样例说明】程序根据用户姓名的词典顺序排序,最后按照姓名#电话的格式输出。另外,由于规定姓名和电话之间用空格分割,所以输入姓名时请将姓和名一起输入,中间不要有空格。另外输出时候程序将自动补齐12字符宽。程序输出结尾有个回车符。

【评分标准】完全正确为20分,每个测试点4分。提交程序文件名为telsort.c 4. 【问题描述】要从n只猴子中选出一位大王。它们决定使用下面的方法:

n只猴子围成一圈,从1到n顺序编号。从第q只猴子开始,从1到m报数,凡报到m的猴子退出竞选,下一次又从退出的那只猴子的下一只开始从1到m报数,直至剩下的最后一只为大王。请问最后哪只猴子被选为大王。

【输入形式】控制台输入三个整数n,m,q。 【输出形式】输出最后选为大王的猴子编号。 【样例输入】 7 4 3 【样例输出】

4

【样例说明】输入整数n = 7,m = 4,n = 3,输出4

【评分标准】本题要求输出最后被选为大王的猴子编号,完全正确得20分,每个测试点4分。上传C语言文件名为monkey.c。 5. 【问题描述】

编写一个程序实现两个一元多项式相乘。 【输入形式】

首先输入第一个多项式中系数不为0的项的系数和指数,以一个空格分隔。且该多项式中各项的系数均为0或正整数,系数和最高幂次不会超过int类型的表示范围。对于多项式 anxn +a n-1 x n-1 + … + a1x1 + a0x0 的输入方法如下: an n a n-1 n-1 … a1 1 a0 0

即相邻两个整数分别表示表达式中一项的系数和指数。在输入中只出现系数不为0的项。最后一项的指数后没有空格,只有一个回车换行符。 按照上述方式再输入第二个多项式。 【输出形式】

将运算结果输出到屏幕。将系数不为0的项按指数从高到低的顺序输出,每次输出其系数和指数,均以一个空格分隔,最后一项的指数后也可以有一个空格。 【样例输入】

10 80000 2 6000 7 300 5 10 18 0 3 6000 5 20 8 10 6 0 【样例输出】

30 86000 50 80020 80 80010 60 80000 6 12000 21 6300 10 6020 31 6010 66 6000 35 320 56 310 42 300 25 30 130 20 174 10 108 0 【样例说明】

输入的两行分别代表如下表达式: 10x80000 + 2x6000 + 7x300 + 5x10 + 18 3x6000 + 5x20 + 8x10 + 6 相乘结果为:

30x86000 + 50x80020 + 80x80010 + 60x80000 + 6x12000 + 21x6300 + 10x6020 + 31x6010 + 66x6000 + 35x320 + 56x310 + 42x300 + 25x30 + 130x20 + 174x10 + 108 提示:利用链表存储多项式的系数和指数。 【评分标准】

该题要求输出相乘后多项式中系数不为0的系数和指数,共有5个测试点。上传C语言文件名为multi.c。

#include #include

int main(int argc,char *argv[]) {

int i,line=1,n=0,k=0; char a[500],ch; FILE *in; if(argc==2) n=10; else

for(i=1;argv[1][i]!='\\0'; i++) n=n*10+argv[1][i]-'0'; in=fopen(argv[argc-1],\ while((ch=fgetc(in))!=EOF) { } fclose(in); if(ch=='\\n')

line++;

in=fopen(argv[argc-1],\ for(i=1;(ch=fgetc(in))!=EOF;)

{ } fclose(in); if(i>=line-n)

putchar(ch);

if(ch=='\\n') i++;

return 0; }