某年的一个程序比赛题目
第一题:(20分)由键盘输入一个自然数N(1≤N≤9),要求程序在屏幕上输出如下图形。
N=1时: N=3时: N=4时:
1 11111 1111111
12221 1222221
12321 1233321
12221 1234321
11111 1233321
1222221
1111111
注:应保证N在图形中只出现一次,且在中心。
第二题:(40分)
编一程序,对两个文本文件(都不超过20行,且每行不超过100个字符)按行进行
比较,找出它们中完全相同的行、只在第一个文件中出现过的行和只在第二个文件中
出现过的行。两个文本文件的文件名由键盘输入,结果输出到一个名为compfile.out的
文件里。
输出文件的格式要求:
文件分为三部分,各部分之间用一个空行隔开。
第一部分是在两个文件中都有的行,要注明在原文本文件中所在的行号,格式如
下:
hello world file1(1) file2(1)
we need peace file1(3) file2(4)
第二部分是只在第一个文件中出现,而没在第二个文件中出现的行,要注明行
号,格式如下:
stop bombing! file1(2)
viva peace file1(4)
第三部分是只在第二个文件中出现,而没在第一个文件中出现的行,要注明行
号,格式如下:
i'm in Beijing file2(2)
my heart is in YUG file2(3)
第三题:(40分)
根据给出的一组顶点的坐标,计算出它们所围多边形的面积。点的坐标由一个名
为points.in的文件给出,格式为:第一行是点的个数N,后面紧接着N行,每行两个数字
(由空格隔开),分别表示点的X、Y坐标,且点的坐标是按顺时针给出的。要求程序
将面积保留两位小数,输出到屏幕上。(本题只要求能计算凸多边形,点的个数不会
超过15个。)
例如:points.in内容为:
4
3 3
3 0
1 0
1 2
则应在屏幕上输出:
5.00
第四题:(50分)
从键盘输入一由变量、加号、乘号和小括号组成的表达式(变量都是单个大写字
母),要求将其中所有多余的括号去掉,在屏幕上输出化简后的表达式。
例:输入:A+(B*(C+A))
输出:A+B*(C+A)
输入:A+(B+C)+D*E
输出:A+B+C+D*E
注:如果表达式不可化简,则照原样输出;输入的表达式长度不会超过100个字
符。
第五题:(50分)
有一个8╳8的国际象棋棋盘,要求用最少的马控制住整个棋盘。请打印出一组方案
输出结果时,要先显示所用的马的个数,再按照如下的方法显示棋盘。
*****MM*
**M*****
**MM**M*
*******M
M***M***
****MM**
M*MM*M**
******M*
注:用M表示马的位置,星号表示空位置。这个例子用了16个马,这不是用马
个数最少的方案。
大家试者做一下