2013届寒假程序设计练习题
☆说明:基础题部分的9道题必做,提高题部分的5道题至少做2道。(自学C程序设计的数组和函数部分)。
★文件保存要求:用自己的中文名字作为文件夹名;目录下存程序源文件,程序源文件名以题目序号为名,但提高题部分的文件名由题目中给出。
⊙文件读写样例在目录中,能理解文件操作的同学,尽量用文件读写的方式。 ※基础题部分:
1、将一个正整数分解质因数,此数若为质数输出-1,否则输出格式如例子所示。例如:输入90,打印出90=2*3*3*5。
2、输入一行字符(字符数不大于100),分别统计出其英文字母、空格、数字和其它字符的个数。输出格式:四个整数之间用空格间隔(分别为英文字母、空格、数字和其它字符的个数)。
3、有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。输出格式:一个实数,小数保留2位。
4、一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。输出格式:是回文数输出大写的Y,否则输出大写的N。
5、打印一个 N*N 的方阵,N为每边 字符的个数(3<N<20), 要求最 外一层为\第二层为\从第三层 起每层依次打印数字 1,2,3,... (下图以N为15为例) N=15 打印出下面图形
TTTTTTTTTTTTTTT TJJJJJJJJJJJJJT TJ11111111111JT
TJ12222222221JT TJ12333333321JT TJ12344444321JT TJ12345554321JT TJ12345654321JT TJ12345554321JT TJ12344444321JT TJ12333333321JT TJ12222222221JT TJ11111111111JT TJJJJJJJJJJJJJT TTTTTTTTTTTTTTT
输入文件:一个数N;输出文件:数据格式如上图,字母用大写。 6、 读入一行文本,包含若干个单词(以空格间隔,%结尾)。将其中以 A 开头的 单词与以 N 结尾的单词,用头尾交换的办法予以置换。(字符个数不大于100)
7、 题目:任意 输入一个十进数整数,将其转换成 N 进制数(0 8、题目: 矩阵中填数. 当给出 N*N 的矩阵,要求用程序填入下列形式的数:(N<=10) ① 倒填,例如N=5 ② 蛇形填数 ③ 回转填数 ┌─┬─┬─┬─┬─┐ ┌─┬─┬─┬─┬─┐ ┌─┬─┬─┬─┬─┐ │25│24│23│22│21│ │ 1│ 3│ 4│10│11│ │ 1│16│15│14│13│ ├─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┤ │20│19│18│17│16│ │ 2│ 5│ 9│12│19│ │ 2│17│24│23│12│ ├─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┤ │15│14│13│12│11│ │ 6│ 8│13│18│20│ │ 3│18│25│22│11│ ├─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┤ │10│ 9│ 8│ 7│ 6│ │ 7│14│17│21│24│ │ 4│19│20│21│10│ ├─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┤ │ 5│ 4│ 3│ 2│ 1│ │15│16│22│23│25│ │ 5│ 6│ 7│ 8│ 9│ └─┴─┴─┴─┴─┘ └─┴─┴─┴─┴─┘ └─┴─┴─┴─┴─┘ 9、题目:有n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡是报到3的人退出圈子,问最后留下的是原来第几号的那位。 ※提高题部分 1、Your Ride Is Here 你的飞碟在这儿! 【题目描述】 一个众所周知的事实,在每一慧星后面是一个不明飞行物UFO。 这些不明飞行物时常来收集来自在地球上忠诚的支持者。 不幸地,他们的飞碟在每次旅行只能带上一定数目的支持者。 他们要做的是用一种聪明的方案让每一个团体人被慧星带走。他们为每个慧星起了一个独有名字,通过这些名字来决定一个团体是不是特定的慧星带走。 那个相配方案的细节在下面被给出; 你的工作要写一个程序来通过团体的名字和彗星的名字来决定一个组是否应该与在那一颗慧星后面的不明飞行物搭配。 团体的名字和慧星的名字都以下列各项方式转换成一个数字: 这个最后的数字代表名字中所有字母的信息,\是 1 和 \是 26。 举例来说,团体 \会是 21*19*1*3*15=17955 。 如果团体的数字除以47的余数等于慧星的数字除以47的余数,那么你要告诉这个团体需要准备好被带走 ! 写一个程序读入慧星的名字和团体的名字,如果能搭配打印\否则打印\团体的名字和慧星的名字将会是有没有空格或标点的一串大写字母(不超过6个字母)。 【输入格式(ride.in)】 第 1 行: 彗星的名字(一个长度为1到6的字符串) 第 2 行: 团体的名字( 一个长度为1到6的字符串) 【输出格式(ride.out)】 单独一行包含\或\。 【输入样例1】 COMETQ HVNGAT 【输出样例1】 GO 【输入样例2】 ABSTAR USACO 【输出样例2】 STAY 2、Greedy Gift Givers 贪婪的送礼者 【题目描述】 对于一群要互送礼物的朋友,GY要确定每个人送出的钱比收到的多多少。在这一个问题中,每个人都准备了一些钱来送礼物,而这些钱将会被平均分给那些将收到他的礼物的人。然而,在任何一群朋友中,有些人将送出较多的礼物(可能是因为有较多的朋友),有些人有准备了较多的钱。给出一群朋友, 没有人的名字会长于 14 字符,给出每个人将花在送礼上的钱,和将收到他的礼物的人的列表,请确定每个人收到的比送出的钱多的数目。 【输入格式(gift1.in)】 第 1 行: 人数NP,2<= NP<=10 第 2到 NP+1 行:这NP个在组里人的名字 一个名字一行 第NP+2到最后: 这里的I段内容是这样组织的: 第一行是将会送出礼物人的名字。 第二行包含二个数字: 第一个是原有的钱的数目(在0到2000的范围里),第二个 NGi 是将收到这个人礼物的人的个数 如果 NGi 是非零的, 在下面 NGi 行列出礼物的接受者的名字,一个名字一行。 【输出格式(gift1.out)】 输出 NP 行 每行是一个的名字加上空格再加上收到的比送出的钱多的数目。 对于每一个人,他名字的打印顺序应和他在输入的2到NP+1行中输入的顺序相同。所有的送礼的钱都是整数。 每个人把相同数目的钱给每位要送礼的朋友,而且尽可能多给,不能给出的钱由送礼者本人持有。 【重要提示】 评测程序是基于UNIX的LINUX系统:换行符只是一个\这与WINDOWS下换行符有两个字符\与\\r\是不同的。 不要让你的程序被困在这里! 【样例输入】 5 dave laura owen vick amr dave 200 3 laura owen vick owen 500 1 dave amr 150 2 vick owen laura 0 2 amr vick vick 0 0 【样例输出】 dave 302 laura 66 owen -359 vick 141 amr -150 3、Friday the Thirteenth 黑色星期五 【题目描述】 13号又是一个星期五。13号在星期五比在其他日子少吗?为了回答这个问题,写一个程序,要求计算每个月的十三号落在周一到周日的次数。给出N年的一个周期,要求计算1900年1月1日至1900+N-1年12月31日中十三号落在周一到周日的次数,N为正整数且不大于400。 这里有一些你要知道的: 1900年1月1日是星期一. 4,6,11和9月有30天.其他月份除了2月都有31天.闰年2月有29天,平年2月有28天. 年份可以被4整除的为闰年(1992=4*498 所以 1992年是闰年,但是1990年不是闰年)以上规则不适合于世纪年. 可以被400整除的世纪年为闰年,否则为平年.所以,1700,1800,1900和2100年是平年,而2000年是闰年. 请不要预先算好数据(就是叫不准打表 0。0)! 【输入输出文件格式】 程序名: friday.c 输入格式: (friday.in) 一个正整数n. 输出格式: (friday.out) 七个在一行且相分开的整数,它们代表13日是星期六,星期日,星期一...星期五的次数. 【输入样例】 20 【输出样例】 36 33 34 33 35 35 34 4、Broken Necklace (beads)打破项链 【题目描述】 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意 安排的。 这里是 n=29 的二个例子: 1 2 1 2 r b b r b r r b r b b b r r b r r r w r b r w w b b r r b b b b b b r b r r b r b r r r b r r r r r r b r b r r r w 图片 A 图片 B r 代表 红色的珠子 b 代表 蓝色的珠子 w 代表 白色的珠子 第一和第二个珠子在图片中已经被作记号。 图片 A 中的项链可以用下面的字符串表示: brbrrrbbbrrrrrbrrbbrbbbbrrrrb 假如你要在一些点打破项链,展开成一条直线,然后从一端开始收集同颜色的珠子直到你遇到一个不同的颜色珠子,在另一端做同样的事(颜色可能与在这之前收集的不同)。 确定应该在哪里打破项链来收集到最大多数的数目的珠子。 例如,在图片A中的项链中,在珠子9和珠子10或珠子24和珠子25之间打断项链可以收集到8个珠子。 白色珠子什么意思? 在一些项链中还包括白色的珠子(如图片B) 所示。 当收集珠子的时候,一个被遇到的白色珠子可以被当做红色也可以被当做蓝色。 表现含有白珠项链的字符串将会包括三个符号 r , b 和 w 。 写一个程序来确定从一条被给出的项链可以收集到的最大珠子数目。 【程序名称】beads.c 【输入格式】 第1行: N,珠子的数目 第2行: 一串长度为N的字符串, 每个字符是 r ,b 或 w。 【输出格式】 单独的一行包含从被供应的项链可以被收集的珠子数目的最大值。 【样例输入】(文件 beads.in) 29 wwwbbrwrbrbrrbrbrwrwwrbwrwrrb 【样例输出】(文件 beads.out) 11

