程序设计大赛试题

第一部分预赛题目

试题1.“数学黑洞”:任意一个4位自然数,将组成该数的各位数字重新排列,形成一个最大数和一个最小数,之后两数相减,其差仍为一个自然数。重复进行上述运算,最终会出现一个神秘的数,请编程输出这个神秘的数。

试题2.将数字1、2、3、4、5、6填入一个2行3列的表格中,要使得每一列右边的数字比左边的数字大,每一行下面的数字比上面的数字大。请编写程序求出按此要求可有几种填写方法。

试题3.编写成绩排序程序。按学生的序号输入学生的成绩,按照分数由高到低的顺序输出学生的名次,该项名次的分数、相同名次的人数和学号;同名次的学号输出在同一行中,一行最多输出10个学号。

试题4.输入一个字符串,内有数字和非数字字符,如:gs 423cd156 7896>?df12345,将其中连续的数字作为一个整数,依次存放到一数组a中,例如:423放在a[0],156放在a[1],…。统计共有多少个整数,并输出这些数。

试题5.在磁盘上建立一文件stud用于存放学生数据(含学号、姓名、数学、语文、英语、平均成绩、总成绩),从键盘输入6个学生的学号、姓名及三门课的成绩,计算出总分和平均分存入文件stud,并显示该文件的内容。编写程序完成以上功能。

试题6:某工业自动控制系统中,需通过PC机检测管道的流量,由于线路传输信号不稳定,采集的数据有一定的误差。PC机上采集到的电压信号通过如下公式可计算出管道的流量:

L=(V-V0)*K

其中L为流量,V为PC机上测到的电压值,V0为传输电路的基准电压,K为比例因子。

现场测得实验数据已保存在i:\tube.txt,请确定算法并编程计算此系统上基准电压(V0)和比例因子(K)的最佳值,使得系统计算出来的流量与实际误差最小。

要求:1、运行的测试数据直接从i:\tube.txt文件中读取;

2、不可改变i:\tube.txt文件中任何内容。

附件:i:\tube.txt

试题7:用某行业的产品质量化验中使用“四舍六入五留双”的方法统计数据。该方法的数据修约规则如下:

① 当尾数小于或等于4时,直接将尾数舍去;

② 当尾数大于或等于6时,将尾数舍去并向前一位进位;

③ 当尾数为5,而尾数后面的数字均为0时,应看尾数“5”的前一位:若前一位数字此时为奇数,就应向前进一位;若前一位数字此时为偶数,则应将尾数舍去。

④ 当尾数为5,而尾数“5”的后面还有任何不是0的数字时,无论前一位在此时为奇数还是偶数,也无论“5”后面不为0的数字在哪一位上,都应向前进一位。

例如,下列各数用“四舍六入法”保留两位有效数字。

8.3300≈8.3 8.3600≈8.4 8.3570

≈8.4 8.3500≈8.4 8.2500≈8.2

现有某企业化验室对某产品质量进行多次检验,其检验的原始数据保存i:\quality.txt文件中,但其中的“平均值”、“合格率”和“标准偏差”等项目尚未统计。请编程按照上述“四舍六入五留双”的统计方法对表中尚未统计的项目进行统计。

要求:1、运行的测试数据直接从i:\quality.txt文件中读取,不可改变i:\quality.txt文件中任何内容。

2、程序中的“四舍六入五留双”统计方法应自己编制代码完成,不可用系统提供的函数或控件;

4、要统计的“平均值”和“标准偏差”结果要求保留小数点后3位,“合格率”保留小数点后2位;

附:1、质量控制标准(大于以下标准为质量不合格)

成分 CaO Fe2O3 煤掺入量 水分

含量标准 0.220 0.030 0.230 0.015

2、标准偏差计算公式为:

试题8:某汽车越野赛按不同型号分组:A组--小汽车、B组--老爷车、C组--摩托车。比赛当天完成,所有的比赛车起点相同且走同一线路,总路程约300公里,出发时间为:A组—9:00、B组—9:30、C组—10:00,文件i:\match.txt为赛道终点的裁判记录各赛车抵达的时间。请根据此成绩编程输出各组赛车中速度最快的前5名的车号和用时。

要求:运行的测试数据直接从i:\ match.txt文件中读取,不可改变i:\ match.txt文件中任何内容。

试题9:旅行路线选择:某人欲利用假期时间旅游,从桂林市出发游遍三亚(SanYa)、武夷山(WuYiShan)、杭州(HangZhou)、九寨沟(JiuZhaiGou)、吐鲁番(TuLuFan)、丽江(LiJiang)等各城市,各城市之间的旅费(已含路费、住宿、景点等全部费用)如i:\ TraveFee.txt文件中所示,请编程编排旅游选择的最佳线路,使之旅费最少。

要求:1、各城市间的旅费表数据由输入文件i:\ TraveFee.txt提供,不可改变i:\ match.txt文件中任何内容。

2、输出的旅游线路表示如下形式:

The route path is:GuiLin->SanYa->……->GuiLin {最少旅费城市路径}

Total of traveling expense: 6200 {最少旅费数}

试题10:输入一字符串,编写程序实现如下功能:

1)将字符串的内容颠倒过来并进行输出。如:“abc”改为“cba”。

2)统计输入文本中单词的个数,单词之间用空格符、换行符、跳格符隔开。

3)找出字符串中所有相同的字母,输出并显示其出现次数。

试题11:设有如下结构类型说明:

struct stud

{ char num[5],

char name[10] ;

int s[4] ;

double ave ;

}

请编写:

1)从键盘输入至少3名学生的学号、姓名和四项成绩,然后计算出平均分并放在结构体对应的域中。按学号从小到大的顺序保存到文件file.dat中。

2)根据学生姓名

查找并输出该学生的平均分。

3)从file.dat中读出学生的有关信息,根据每人的平均分得出其相应的等级。输出其姓名及等级。(85 A档 )

试题12:调用随机函数为5╳4的矩阵置100以内的整数。调用随机函数步骤如下:

#include “stdlib.h”

x=rand()%100 /*产生0到100的随机数*/

编写程序,实现如下功能:

1)求出每行元素之和的平均值,并将平均值最大的一行元素与平均值最小的一行元素对调。输出该矩阵。

2)逆置该矩阵并输出。即将第一列的元素放在第一行上、第二列的元素放在第二行上、其它依次类推。

3)找出每一行最小的数,输出其所在的列号。

试题13:输入一行数字字符(用回车结束),每个数字字符的前后都有空格,编写程序实现如下功能。

1)按大小顺序输出每个数字字符及与之对应的ASCII代码值,每行输出三对。

2)将这一行中的数字转换成一个整数,例如:若输入2 4 8 3 ,则输出2483

3)将该数字字符串中的所有偶数数字字符删除。

试题14:输入任意整数,编程实现如下功能。

1)编写函数,验证任意偶数为两个素数之和并输出这两个素数。

2)编写函数,判断整数x是否是同构数,所谓“同构数”是指,它出现在它的平方数的右边。例如:输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数。x的值由主函数从键盘读入,要求不大于100。

3)编写函数,将输入的10进制整数转化为它所对应的二进制数。

试题一

试题15::编写一个求解一元二次方程的解的程序。用户只要给出一元二次方程:

aX2+bX+c=0的三个系数a,b,c,便可以求出它的根。

1.程序运行时,给出三个命令选项提示,分别是:输入方程系数,退出程序,清屏。用户按相应键可执行其中的一个命令,执行完毕后又返回初始状态;

2.当选择输入方程系数选项后,提示用户输入三个系数a,b,c当用户输入完成后,回车即可求出方程的根(可能为实根或虚根),之后返回命令提示状态;

3.当选择退出程序选项后,提示是否真的退出,若真的要退出,程序才退出,否则,程序不自动退出。

4.选择清屏选项后,返回到初始时的命令选择选择状态。

试题16:写出一个程序,接受一个以N/D的形式输入的分数,其中N为分子,D为分母,输出它的小数形式。如果它的小数形式存在循环 节,要将其用括号括起来。例如:1/3=.00000...表示为.(3),又如41/333=.123123123...表示为.(123)。

一些转化的例子:

1/3=.(3)

22/5=4.4

1/7=.(142857)

3/8=.375

45/46=.803(571428)

试题17:魔方阵就是一种特殊的方阵(这里只考虑奇数阶魔方阵):它的

行,列,对角线,上的数字之和都要相等,且方阵中的每一个数字都不相等,且数字的范围都在1到n*n之间.

如3×3魔方阵为:

8 1 6

3 5 7

4 9 2

1.程序运行时,给出两个命令选项:产生魔方阵或退出程序或清屏,如下所示:

2.当用户按M键,提示用户输入魔方阵的阶数N(N为奇数),按回车便输出魔方阵,如下所示:

3.产生魔方阵后又返回初始命令选择状态,用户按Q退出,按M继续产生魔方阵

4.提示:

奇数阶魔方阵的生成方法如下:

(1) 第一个位置在第一行正中;

(2) 新位置应当处于最近一个插入位置右上方,但如右上方位置已超出方阵上边界,则新位置取应选列的最下一个位置,如超出右边界则新位置取应选行的最左一个位置;

(3) 若最近一个插入元素为N的整倍数,则选下面一行同列上的位置为新位置。

第二部分复赛题目

试题1:下面是一个乘法竖式,如果用我们给定的那几个数字来取代*(第一位不能为0),可以使式子成立的话,我们就叫这个式子牛式。

* * *

x * *

----------

* * *

* * *

----------

* * * *

请编写程序找出所有的牛式。

要求:输入可以指定数字个数和及其数字,输出为符合条件的牛式。

例如,输入为:

5

2 3 4 6 8

输出为:

2 2 2

x 2 2

---------

4 4 4

4 4 4

----------

4 8 8 4

试题2::坐飞机旅行费用不小。购买飞机票的费用不一定直接与旅行的总路程相关。为了节省路费,旅客通常会制定最佳的旅游路线,进而购买相关机票。然而航空公司已经发现这一现象,通常要求一张机票所涉及的旅行路线是按固定顺序排列的。例如,假如你有一张机票,它规定了路线:从城市1到城市2,再到城市3。你就不能直接从城市2到城市3,你必须从城市1开始,而且,你不能从城市1到城市2,然后买别的机票飞到别的地方而后返回城市2,再到城市3。考虑以下实例:

假定允许你买三种机票:

机票1:城市1----》城市3-----》城市4, 225美元

机票2:城市1----》城市2 ,200美元

机票3:城市2-----》城市3,50美元

现在假定你想从城市1旅行到城市3,有两种购票方式:

方式1:购买机票1,只使用该票涉及到的前半部分旅程。耗费225美元;

方式2:购买机票2和机票3,耗费250美元

方式1是比较经济的购票方式。

现给定一组可购买的机票,和一条或多条旅行路线,为了使旅行费用最低,你必须确定怎样购买机票。每一条旅行路线都是可能的。

1.输入:

第1行有一个数,表示票的种数NT,紧接着的NT行分别是各种票的具体说明,分别是编号 ,票价,旅行路线,最后一行是

旅客要旅行的路线。例如,输入文件中的数据格式可能如下:

3

1 225 1 3 4

2 200 1 2

3 50 2 3

1 3

这里的第1行表示有3种票;第2到第4行(共3行)用于说明该票的信息,每行的第1个数表示票的编号(从1开始,递增,这里的三种票编号分别为1,2,3),第2个数表示该票的票价,其余的数表示该票的所覆盖的城市编号(例如上面的机票1所旅行的城市分别为城市1,城市3,城市4;最后一行用于指定旅客的旅行路线(这里为:城市1---》城市3)

2.输出

输入的测试数据所对应的各种购票方式(每一种单独至于一行)。其中第1行应为最省钱的购票方式:

例如,上面的方案对应如下:

1,225

2 3,250

注:逗号前面的数表示票的编号,若有多种票,则其间用空格分隔开来;逗号后面表示该购票方式所需金额。

试题3:玩彩票

我市发行一套福利彩票。彩票上写有1到M这M个自然数。彩民可以在这M个数中任意选取N个不同的数打圈。每个彩民只能买一张彩票,不同的彩民的彩票上的选择不同。

每次抽奖将抽出两个自然数X和Y。如果某人拿到的彩票上,所选N个自然数的倒数和,恰好等于X/Y,则他将获得一个纪念品。

已知抽奖结果X和Y。现在的问题是,必须准备多少纪念品,才能保证支付所有获奖者的奖品。

试题4:捉鬼大师

世界上有鬼吗?如果有,那就一定有捉鬼大师。但捉鬼大师们法力有限,他们只能消灭位于他们东南面的鬼。也就是说,如果把捉鬼大师所在位置视为原点,那么他们只能消灭第四象限的鬼怪(位于x正半轴和y负半轴上的鬼也会被消灭)。

现在给出一些鬼和坐标和一些捉鬼大师的坐标,请问有多少个鬼不会被消灭?

输入:

第一行,给出两个数字g,b对应予鬼的个数和捉鬼大师的个数。接下来的g行,每行两个整数,是每个鬼的坐标(之间有一个空各分开),在接下来得b行,每行两个整数,是每个捉鬼大师的坐标(之间有一个空各分开),不会有重复的鬼或重复的捉鬼大师出现。

输出:

无法被消灭的鬼的坐标x,y,之间用一个空格分开。注意这些坐标输出顺序必须 按照y值得绛序排列,当y相等时,则按照x的绛序排列。

样例:

输入:

3 2

0 5

1 2

2 3

1 4

-2 3

输出:

0 5

建议:

int main()

{

int g,b;

scanf("%d %d",&g,&b);

for(int i=0;i

//读入鬼坐标

for(int i=0;i

//读入捉鬼大师坐标

//你的代码

return 0;

}

试题5:擦桌子

1.Stan是个懒惰的孩子,他做任何事总希望能找到既省力又快捷的方法。Stan的父母开着一家餐馆。餐馆有n*n张桌子,排放成n*n的方阵,每个桌子

都有一个坐标,左上角的桌子的坐标为(1,1),其右面的桌子坐标为(1,2),其下面的桌子的坐标为(2,1).....最右下角桌子的坐标为(n,n)。Stan每天都要帮助他父母擦桌子,他当然不打算自己一个人干,所以他召唤出了一只小精灵。

小精灵只有一项技能:当Stan擦了坐标为(x,y)的桌子时,小精灵会自动帮他把所有坐标为(kx,ky)(k=2,3,.........,,使得kx

比如n=4时,Stan只要擦(1,1), (1,2), (1,3), (1,4), (2,1), (2,3), (3,1), (3,2), (3,4), (4,1), (4,3)这些桌子,一共是11张。

为保证正确性,你可以按照如下格式编程

int main()

{

int case;

scanf("%d",&case);

while(case--){

//你的代码

}

}

试题6:电报解密

加拿大電信有一特殊的报文,把原始信息拆解后,混入一些杂乱信息流再发送。现在我们要写一个函数,目的是从收到的信息流中加工出有效的内容。

int decollator(const char SOH[ ], char text[ ])

{

...

}

SOH 是以0值结尾的string。他保存待处理的信息流;

text 保存提炼出的有效信息,他已分配了足夠空间,函数中不必考虑溢出问题;

返回值 是text中字符个数。

处理规则如下:

1、 搜索信息流中的 ‘1’ 和‘0’,每找到8个一组 就按照“二进制数”特征转为ASCII字符,如果这个字符是可打印字符(meaningful character)即为有效字符,保存

例如 01100001 -> 97 -> 'a' (‘a’将收录到text中)

2、 如果遇到信息流结尾,或规则3、4情况时,8个一组的‘1’或‘0’并没找齐,那么用‘0’补齐再处理

3、 信息流中出现关键字“RPT”并且紧跟一个自然数n(n不超过255),那么:将刚才得到的有效字符重复n次

例如: " 01100010 RTP9 " -> "bbbbbbbbb" (九个‘b’将收录到text中)

4、 信息流中出现关键字“SKP”,那么:忽略信息流中接下来的8个‘1’或‘0’

试题7:用给定的几种钱币凑成某个钱数,一般而言有多种方式。例如:给定了6种钱币面值为2、5、10、20、50、100,用来凑15元,可以用5个2元、1个5元,或者3个5元,或者1个5元、1个10元,等等。显然,最少需要2个钱币才能凑成15元。 你的任务就是,给定若干个互不相同的钱币面值,编程计算,最少需要多少个钱币才能凑成某个给出的钱数。

1.输入:

输入可以有多个测试用例。每个测试用例的第一行是待凑的钱数值M(1

2.输出:

每个测

试用例输出一行,即凑成钱数值M最少需要的钱币个数。如果凑钱失败,输出“Impossible”。你可以假设,每种待凑钱币的数量是无限多的。

3.样例输入/输出,

输入:

15

6 2 5 10 20 50 100

1

1 2

0

输出:

2

Impossible

第一部分预赛题目

试题1.“数学黑洞”:任意一个4位自然数,将组成该数的各位数字重新排列,形成一个最大数和一个最小数,之后两数相减,其差仍为一个自然数。重复进行上述运算,最终会出现一个神秘的数,请编程输出这个神秘的数。

试题2.将数字1、2、3、4、5、6填入一个2行3列的表格中,要使得每一列右边的数字比左边的数字大,每一行下面的数字比上面的数字大。请编写程序求出按此要求可有几种填写方法。

试题3.编写成绩排序程序。按学生的序号输入学生的成绩,按照分数由高到低的顺序输出学生的名次,该项名次的分数、相同名次的人数和学号;同名次的学号输出在同一行中,一行最多输出10个学号。

试题4.输入一个字符串,内有数字和非数字字符,如:gs 423cd156 7896>?df12345,将其中连续的数字作为一个整数,依次存放到一数组a中,例如:423放在a[0],156放在a[1],…。统计共有多少个整数,并输出这些数。

试题5.在磁盘上建立一文件stud用于存放学生数据(含学号、姓名、数学、语文、英语、平均成绩、总成绩),从键盘输入6个学生的学号、姓名及三门课的成绩,计算出总分和平均分存入文件stud,并显示该文件的内容。编写程序完成以上功能。

试题6:某工业自动控制系统中,需通过PC机检测管道的流量,由于线路传输信号不稳定,采集的数据有一定的误差。PC机上采集到的电压信号通过如下公式可计算出管道的流量:

L=(V-V0)*K

其中L为流量,V为PC机上测到的电压值,V0为传输电路的基准电压,K为比例因子。

现场测得实验数据已保存在i:\tube.txt,请确定算法并编程计算此系统上基准电压(V0)和比例因子(K)的最佳值,使得系统计算出来的流量与实际误差最小。

要求:1、运行的测试数据直接从i:\tube.txt文件中读取;

2、不可改变i:\tube.txt文件中任何内容。

附件:i:\tube.txt

试题7:用某行业的产品质量化验中使用“四舍六入五留双”的方法统计数据。该方法的数据修约规则如下:

① 当尾数小于或等于4时,直接将尾数舍去;

② 当尾数大于或等于6时,将尾数舍去并向前一位进位;

③ 当尾数为5,而尾数后面的数字均为0时,应看尾数“5”的前一位:若前一位数字此时为奇数,就应向前进一位;若前一位数字此时为偶数,则应将尾数舍去。

④ 当尾数为5,而尾数“5”的后面还有任何不是0的数字时,无论前一位在此时为奇数还是偶数,也无论“5”后面不为0的数字在哪一位上,都应向前进一位。

例如,下列各数用“四舍六入法”保留两位有效数字。

8.3300≈8.3 8.3600≈8.4 8.3570

≈8.4 8.3500≈8.4 8.2500≈8.2

现有某企业化验室对某产品质量进行多次检验,其检验的原始数据保存i:\quality.txt文件中,但其中的“平均值”、“合格率”和“标准偏差”等项目尚未统计。请编程按照上述“四舍六入五留双”的统计方法对表中尚未统计的项目进行统计。

要求:1、运行的测试数据直接从i:\quality.txt文件中读取,不可改变i:\quality.txt文件中任何内容。

2、程序中的“四舍六入五留双”统计方法应自己编制代码完成,不可用系统提供的函数或控件;

4、要统计的“平均值”和“标准偏差”结果要求保留小数点后3位,“合格率”保留小数点后2位;

附:1、质量控制标准(大于以下标准为质量不合格)

成分 CaO Fe2O3 煤掺入量 水分

含量标准 0.220 0.030 0.230 0.015

2、标准偏差计算公式为:

试题8:某汽车越野赛按不同型号分组:A组--小汽车、B组--老爷车、C组--摩托车。比赛当天完成,所有的比赛车起点相同且走同一线路,总路程约300公里,出发时间为:A组—9:00、B组—9:30、C组—10:00,文件i:\match.txt为赛道终点的裁判记录各赛车抵达的时间。请根据此成绩编程输出各组赛车中速度最快的前5名的车号和用时。

要求:运行的测试数据直接从i:\ match.txt文件中读取,不可改变i:\ match.txt文件中任何内容。

试题9:旅行路线选择:某人欲利用假期时间旅游,从桂林市出发游遍三亚(SanYa)、武夷山(WuYiShan)、杭州(HangZhou)、九寨沟(JiuZhaiGou)、吐鲁番(TuLuFan)、丽江(LiJiang)等各城市,各城市之间的旅费(已含路费、住宿、景点等全部费用)如i:\ TraveFee.txt文件中所示,请编程编排旅游选择的最佳线路,使之旅费最少。

要求:1、各城市间的旅费表数据由输入文件i:\ TraveFee.txt提供,不可改变i:\ match.txt文件中任何内容。

2、输出的旅游线路表示如下形式:

The route path is:GuiLin->SanYa->……->GuiLin {最少旅费城市路径}

Total of traveling expense: 6200 {最少旅费数}

试题10:输入一字符串,编写程序实现如下功能:

1)将字符串的内容颠倒过来并进行输出。如:“abc”改为“cba”。

2)统计输入文本中单词的个数,单词之间用空格符、换行符、跳格符隔开。

3)找出字符串中所有相同的字母,输出并显示其出现次数。

试题11:设有如下结构类型说明:

struct stud

{ char num[5],

char name[10] ;

int s[4] ;

double ave ;

}

请编写:

1)从键盘输入至少3名学生的学号、姓名和四项成绩,然后计算出平均分并放在结构体对应的域中。按学号从小到大的顺序保存到文件file.dat中。

2)根据学生姓名

查找并输出该学生的平均分。

3)从file.dat中读出学生的有关信息,根据每人的平均分得出其相应的等级。输出其姓名及等级。(85 A档 )

试题12:调用随机函数为5╳4的矩阵置100以内的整数。调用随机函数步骤如下:

#include “stdlib.h”

x=rand()%100 /*产生0到100的随机数*/

编写程序,实现如下功能:

1)求出每行元素之和的平均值,并将平均值最大的一行元素与平均值最小的一行元素对调。输出该矩阵。

2)逆置该矩阵并输出。即将第一列的元素放在第一行上、第二列的元素放在第二行上、其它依次类推。

3)找出每一行最小的数,输出其所在的列号。

试题13:输入一行数字字符(用回车结束),每个数字字符的前后都有空格,编写程序实现如下功能。

1)按大小顺序输出每个数字字符及与之对应的ASCII代码值,每行输出三对。

2)将这一行中的数字转换成一个整数,例如:若输入2 4 8 3 ,则输出2483

3)将该数字字符串中的所有偶数数字字符删除。

试题14:输入任意整数,编程实现如下功能。

1)编写函数,验证任意偶数为两个素数之和并输出这两个素数。

2)编写函数,判断整数x是否是同构数,所谓“同构数”是指,它出现在它的平方数的右边。例如:输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数。x的值由主函数从键盘读入,要求不大于100。

3)编写函数,将输入的10进制整数转化为它所对应的二进制数。

试题一

试题15::编写一个求解一元二次方程的解的程序。用户只要给出一元二次方程:

aX2+bX+c=0的三个系数a,b,c,便可以求出它的根。

1.程序运行时,给出三个命令选项提示,分别是:输入方程系数,退出程序,清屏。用户按相应键可执行其中的一个命令,执行完毕后又返回初始状态;

2.当选择输入方程系数选项后,提示用户输入三个系数a,b,c当用户输入完成后,回车即可求出方程的根(可能为实根或虚根),之后返回命令提示状态;

3.当选择退出程序选项后,提示是否真的退出,若真的要退出,程序才退出,否则,程序不自动退出。

4.选择清屏选项后,返回到初始时的命令选择选择状态。

试题16:写出一个程序,接受一个以N/D的形式输入的分数,其中N为分子,D为分母,输出它的小数形式。如果它的小数形式存在循环 节,要将其用括号括起来。例如:1/3=.00000...表示为.(3),又如41/333=.123123123...表示为.(123)。

一些转化的例子:

1/3=.(3)

22/5=4.4

1/7=.(142857)

3/8=.375

45/46=.803(571428)

试题17:魔方阵就是一种特殊的方阵(这里只考虑奇数阶魔方阵):它的

行,列,对角线,上的数字之和都要相等,且方阵中的每一个数字都不相等,且数字的范围都在1到n*n之间.

如3×3魔方阵为:

8 1 6

3 5 7

4 9 2

1.程序运行时,给出两个命令选项:产生魔方阵或退出程序或清屏,如下所示:

2.当用户按M键,提示用户输入魔方阵的阶数N(N为奇数),按回车便输出魔方阵,如下所示:

3.产生魔方阵后又返回初始命令选择状态,用户按Q退出,按M继续产生魔方阵

4.提示:

奇数阶魔方阵的生成方法如下:

(1) 第一个位置在第一行正中;

(2) 新位置应当处于最近一个插入位置右上方,但如右上方位置已超出方阵上边界,则新位置取应选列的最下一个位置,如超出右边界则新位置取应选行的最左一个位置;

(3) 若最近一个插入元素为N的整倍数,则选下面一行同列上的位置为新位置。

第二部分复赛题目

试题1:下面是一个乘法竖式,如果用我们给定的那几个数字来取代*(第一位不能为0),可以使式子成立的话,我们就叫这个式子牛式。

* * *

x * *

----------

* * *

* * *

----------

* * * *

请编写程序找出所有的牛式。

要求:输入可以指定数字个数和及其数字,输出为符合条件的牛式。

例如,输入为:

5

2 3 4 6 8

输出为:

2 2 2

x 2 2

---------

4 4 4

4 4 4

----------

4 8 8 4

试题2::坐飞机旅行费用不小。购买飞机票的费用不一定直接与旅行的总路程相关。为了节省路费,旅客通常会制定最佳的旅游路线,进而购买相关机票。然而航空公司已经发现这一现象,通常要求一张机票所涉及的旅行路线是按固定顺序排列的。例如,假如你有一张机票,它规定了路线:从城市1到城市2,再到城市3。你就不能直接从城市2到城市3,你必须从城市1开始,而且,你不能从城市1到城市2,然后买别的机票飞到别的地方而后返回城市2,再到城市3。考虑以下实例:

假定允许你买三种机票:

机票1:城市1----》城市3-----》城市4, 225美元

机票2:城市1----》城市2 ,200美元

机票3:城市2-----》城市3,50美元

现在假定你想从城市1旅行到城市3,有两种购票方式:

方式1:购买机票1,只使用该票涉及到的前半部分旅程。耗费225美元;

方式2:购买机票2和机票3,耗费250美元

方式1是比较经济的购票方式。

现给定一组可购买的机票,和一条或多条旅行路线,为了使旅行费用最低,你必须确定怎样购买机票。每一条旅行路线都是可能的。

1.输入:

第1行有一个数,表示票的种数NT,紧接着的NT行分别是各种票的具体说明,分别是编号 ,票价,旅行路线,最后一行是

旅客要旅行的路线。例如,输入文件中的数据格式可能如下:

3

1 225 1 3 4

2 200 1 2

3 50 2 3

1 3

这里的第1行表示有3种票;第2到第4行(共3行)用于说明该票的信息,每行的第1个数表示票的编号(从1开始,递增,这里的三种票编号分别为1,2,3),第2个数表示该票的票价,其余的数表示该票的所覆盖的城市编号(例如上面的机票1所旅行的城市分别为城市1,城市3,城市4;最后一行用于指定旅客的旅行路线(这里为:城市1---》城市3)

2.输出

输入的测试数据所对应的各种购票方式(每一种单独至于一行)。其中第1行应为最省钱的购票方式:

例如,上面的方案对应如下:

1,225

2 3,250

注:逗号前面的数表示票的编号,若有多种票,则其间用空格分隔开来;逗号后面表示该购票方式所需金额。

试题3:玩彩票

我市发行一套福利彩票。彩票上写有1到M这M个自然数。彩民可以在这M个数中任意选取N个不同的数打圈。每个彩民只能买一张彩票,不同的彩民的彩票上的选择不同。

每次抽奖将抽出两个自然数X和Y。如果某人拿到的彩票上,所选N个自然数的倒数和,恰好等于X/Y,则他将获得一个纪念品。

已知抽奖结果X和Y。现在的问题是,必须准备多少纪念品,才能保证支付所有获奖者的奖品。

试题4:捉鬼大师

世界上有鬼吗?如果有,那就一定有捉鬼大师。但捉鬼大师们法力有限,他们只能消灭位于他们东南面的鬼。也就是说,如果把捉鬼大师所在位置视为原点,那么他们只能消灭第四象限的鬼怪(位于x正半轴和y负半轴上的鬼也会被消灭)。

现在给出一些鬼和坐标和一些捉鬼大师的坐标,请问有多少个鬼不会被消灭?

输入:

第一行,给出两个数字g,b对应予鬼的个数和捉鬼大师的个数。接下来的g行,每行两个整数,是每个鬼的坐标(之间有一个空各分开),在接下来得b行,每行两个整数,是每个捉鬼大师的坐标(之间有一个空各分开),不会有重复的鬼或重复的捉鬼大师出现。

输出:

无法被消灭的鬼的坐标x,y,之间用一个空格分开。注意这些坐标输出顺序必须 按照y值得绛序排列,当y相等时,则按照x的绛序排列。

样例:

输入:

3 2

0 5

1 2

2 3

1 4

-2 3

输出:

0 5

建议:

int main()

{

int g,b;

scanf("%d %d",&g,&b);

for(int i=0;i

//读入鬼坐标

for(int i=0;i

//读入捉鬼大师坐标

//你的代码

return 0;

}

试题5:擦桌子

1.Stan是个懒惰的孩子,他做任何事总希望能找到既省力又快捷的方法。Stan的父母开着一家餐馆。餐馆有n*n张桌子,排放成n*n的方阵,每个桌子

都有一个坐标,左上角的桌子的坐标为(1,1),其右面的桌子坐标为(1,2),其下面的桌子的坐标为(2,1).....最右下角桌子的坐标为(n,n)。Stan每天都要帮助他父母擦桌子,他当然不打算自己一个人干,所以他召唤出了一只小精灵。

小精灵只有一项技能:当Stan擦了坐标为(x,y)的桌子时,小精灵会自动帮他把所有坐标为(kx,ky)(k=2,3,.........,,使得kx

比如n=4时,Stan只要擦(1,1), (1,2), (1,3), (1,4), (2,1), (2,3), (3,1), (3,2), (3,4), (4,1), (4,3)这些桌子,一共是11张。

为保证正确性,你可以按照如下格式编程

int main()

{

int case;

scanf("%d",&case);

while(case--){

//你的代码

}

}

试题6:电报解密

加拿大電信有一特殊的报文,把原始信息拆解后,混入一些杂乱信息流再发送。现在我们要写一个函数,目的是从收到的信息流中加工出有效的内容。

int decollator(const char SOH[ ], char text[ ])

{

...

}

SOH 是以0值结尾的string。他保存待处理的信息流;

text 保存提炼出的有效信息,他已分配了足夠空间,函数中不必考虑溢出问题;

返回值 是text中字符个数。

处理规则如下:

1、 搜索信息流中的 ‘1’ 和‘0’,每找到8个一组 就按照“二进制数”特征转为ASCII字符,如果这个字符是可打印字符(meaningful character)即为有效字符,保存

例如 01100001 -> 97 -> 'a' (‘a’将收录到text中)

2、 如果遇到信息流结尾,或规则3、4情况时,8个一组的‘1’或‘0’并没找齐,那么用‘0’补齐再处理

3、 信息流中出现关键字“RPT”并且紧跟一个自然数n(n不超过255),那么:将刚才得到的有效字符重复n次

例如: " 01100010 RTP9 " -> "bbbbbbbbb" (九个‘b’将收录到text中)

4、 信息流中出现关键字“SKP”,那么:忽略信息流中接下来的8个‘1’或‘0’

试题7:用给定的几种钱币凑成某个钱数,一般而言有多种方式。例如:给定了6种钱币面值为2、5、10、20、50、100,用来凑15元,可以用5个2元、1个5元,或者3个5元,或者1个5元、1个10元,等等。显然,最少需要2个钱币才能凑成15元。 你的任务就是,给定若干个互不相同的钱币面值,编程计算,最少需要多少个钱币才能凑成某个给出的钱数。

1.输入:

输入可以有多个测试用例。每个测试用例的第一行是待凑的钱数值M(1

2.输出:

每个测

试用例输出一行,即凑成钱数值M最少需要的钱币个数。如果凑钱失败,输出“Impossible”。你可以假设,每种待凑钱币的数量是无限多的。

3.样例输入/输出,

输入:

15

6 2 5 10 20 50 100

1

1 2

0

输出:

2

Impossible


    相关文章

    百度之星程序设计大赛试题

    百度之星程序设计大赛试题 第一题(共四题100分):连续正整数(10分)    题目描述:一个正整数有可能可以被表示为n(n>=2)个连续正整数之和,如:    15=1+2+3+4+5    15=4+5+6    15=7+8 请 ...

    2012-2013学年度上学期中学物理教师工作总结

     在教育局和进修学校的正确领导下,工作中与学校工作计划保持高度一致,认真研究教育创新,学习新时期的现代教育理念,提高理论水平,真对日益增强危机感,努力提高自己的政治与业务水平。下面就半年的工作总结如下:   一、积极参加学校组织的政治学习活 ...

    中式客房铺床技能大赛试题

    中式客房铺床技能大赛试题 座号 -.填空(每题1分,满分10分.) 1. 客房部一般下设六个分支机构:经理办公室.楼层.公共区域.客房服务中心.布件房和 . 2. 领取和补充小酒吧的酒水和食品时,要检查酒水的质量和 . 3. 客房室内环境设 ...

    计算机技能大赛试题

    计算机技能大赛试题(高级) 试题说明:本试题满分共100分,包括理论部分(30分)和操作部分(70分),考试时间总计120分钟. 其中理论部分直接作在试卷上,操作部分按照试卷和考试时的具体要求作答. (一) 理论部分:单项选择题:(每题1分 ...

    齐鲁大学生软件设计及外语大赛方案

    齐鲁大学生软件设计及外语大赛方案 齐鲁大学生软件设计及外语大赛(以下简称"大赛")自2003年开始,已经成功举办了十届,2013年正在举行第十一届大赛.这项大赛由山东省科学技术协会.济南市科学技术协会.济南市经济和信息化 ...

    江苏省2015职业学校技能大赛信息技术类方案

    2015年江苏省职业学校技能大赛 信息技术类项目实施方案 一.竞赛项目及内容 (一)竞赛项目 本次竞赛设移动互联与物联网技术.网络搭建及应用.网络综合布线技术.电子商务技术.智能家居安装维护.动画片制作.计算机辅助设计(工业产品CAD).数 ...

    电子设计大赛电源类历年试题

    全国电子设计大赛电源类历年题目 第一届(1994年)全国大学生电子设计竞赛题目 题目一 简易数控直流电源 一.设计任务 设计出有一定输出电压范围和功能的数控电源.其原理示意图如下: 二.设计要求 1.基本要求 (1)输出电压:范围0-+9. ...

    2013中职技能大赛OFFICE考试题

    2013年湖北省中等职业学校技能大赛 计算机应用技术类 一. 文字录入(10分钟,满分10分) 使用"打字高手WWT "进行看屏对照录入,汉字输入方法任选. 二. OFFICE 软件应用(120分钟,满分90分) 注意: ...

    "计算机基本技能大赛"活动策划书

    理学院团委.理学院学生会: 为了加强我理学院同学间团队凝聚力,丰富学生课余生活,提高动手能力,同时展示我理学院风采,电子信息科学与技术班决定于xx年11月举办"宁夏医科大学理学院首届计算机基本技能大赛".具体活动安排如下 ...