第二届周立功杯C语言与嵌入式设计大赛C语言竞赛组第一阶段题目.docx

上传人:b****4 文档编号:4403951 上传时间:2022-12-01 格式:DOCX 页数:8 大小:19.85KB
下载 相关 举报
第二届周立功杯C语言与嵌入式设计大赛C语言竞赛组第一阶段题目.docx_第1页
第1页 / 共8页
第二届周立功杯C语言与嵌入式设计大赛C语言竞赛组第一阶段题目.docx_第2页
第2页 / 共8页
第二届周立功杯C语言与嵌入式设计大赛C语言竞赛组第一阶段题目.docx_第3页
第3页 / 共8页
第二届周立功杯C语言与嵌入式设计大赛C语言竞赛组第一阶段题目.docx_第4页
第4页 / 共8页
第二届周立功杯C语言与嵌入式设计大赛C语言竞赛组第一阶段题目.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

第二届周立功杯C语言与嵌入式设计大赛C语言竞赛组第一阶段题目.docx

《第二届周立功杯C语言与嵌入式设计大赛C语言竞赛组第一阶段题目.docx》由会员分享,可在线阅读,更多相关《第二届周立功杯C语言与嵌入式设计大赛C语言竞赛组第一阶段题目.docx(8页珍藏版)》请在冰豆网上搜索。

第二届周立功杯C语言与嵌入式设计大赛C语言竞赛组第一阶段题目.docx

第二届周立功杯C语言与嵌入式设计大赛C语言竞赛组第一阶段题目

 

第二届周立功杯C语言与嵌入式设计大赛

C语言竞赛组第一阶段题目

 

比赛时间:

2009-5-12到2009-5-27日

比赛形式:

竞赛选手在比赛时间内,完成10道算法设计题

程序设计语言:

C/C++语言

程序代码要求:

对每个函数进行注释(在函数之前),说明函数的作用,对主要算法代码进行注释。

程序编码风格参见"CodingStyle.doc"。

程序中,涉及到对文件的操作可以使用fopen,fscanf,fprintf等函数实现。

说明:

算法设计题目总共10道,不要求全做。

对于每道题目,选手应该完成中题目中的要求,扩展要求或者选做部分也会展一定的分值。

代码风格,注释等也会影响得分。

 

2009-05-09

题目一:

(7分)

1.问题描述

正整数x的约数是能整除x的正整数。

正整数x的约数个数记为div(x)。

例如,1,2,5,10都是正整数10的约数,且div(10)=4。

设a和b是2个正整数,a≤b,找出a和b之间约数个数最多的数x。

2.要求:

对于给定的2个正整数a≤b,编程计算a和b之间约数个数最多的数。

3.输入:

输入数据由文件名为div.in的文本文件提供。

文件的第1行有2个正整数a和b。

4.输出:

程序运行结束时,若找到的a和b之间约数个数最多的数是x,将div(x)输出到文件div.out中。

5.输入输出文件样例:

div.in

div.out

136

9

题目二:

(7分)

1.问题描述:

给定一个整数序列,求出子段序列的最大和,也就是一段连续和元素的和,使其和最大,(如果和为负数则返回0)。

2.要求:

对于给定的n个数字的序列,编程计算最大子段和。

3.输入:

由文件num.in给出输入数据。

文件第一行为n,第二行为n个整数序列。

4.输出:

将编程计算出的最大子段和输出到文件num.out。

5.输入输出文件样例:

num.in

num.out

9

34-3-68-34-2-3

9

题目三:

(9分)

1.问题描述

实现将N进制到M进制数的转换(1

对于11到36进制数,其基数使用从A到Z的英文字母(全部为大写)代替。

例如对于11进制,其基数10(十进制)使用"A"表示;对于36进制,其基数35(十进制)使用"Z"表示。

被转换的数全部为正数且小于2147483647(long型的最大值)。

下表为十进制数100对应的各进制数:

进制

10

11

16

27

35

数值

100

91

64

3J

2U

2.要求:

(1).实现10进制数到M进制数的转换。

(2).程序具有较强的容错能力(例如对错误的输入数字串的处理)。

(3).N进制到M进制数(1

3.输入:

输入文件名为convert.in,文件内容格式为第一列为被转换数的进制数,第二列为被转换数,第三列为转换后的进制。

这三列内容均为字符串形式。

每列之间使用一个空格隔开。

4.输出:

输出文件名为convert.out,文件内容为转换后的数。

对于一切错误,则输出“error”字符串。

5.输入输出文件样例:

样例1

convert.in

convert.out

1010027

3J

样例2

convert.in

convert.out

314027

error

题目四:

(9分)

1.问题描述:

大于1的正整数n可以分解为:

n=x1*x2*…*xm。

例如,当n=12时,共有8种不同的分解式:

12=12;

12=6*2;

12=4*3;

12=3*4;

12=3*2*2;

12=2*6;

12=2*3*2;

12=2*2*3。

2.要求:

对于给定的正整数n,编程计算n共有多少种不同的分解式。

3.输入:

由文件count.in给出输入数据。

第一行有1个正整数n(1≤n≤2000000000)。

4.输出:

将计算出的不同的分解式数输出到文件count.out。

5.输入输出文件样例:

count.in

count.out

12

8

题目五:

(9分)

1.问题描述:

设有n个顾客同时等待一项服务。

顾客i需要的服务时间为ti(1≤i≤n)。

应如何安排n个顾客的服务次序才能使平均等待时间达到最小?

平均等待时间是n个顾客等待服务时间的总和除以n。

2.要求:

对于给定的n个顾客需要的服务时间,编程计算最优服务次序。

3.输入:

由文件service.in给出输入数据。

第一行是正整数n,表示有n个顾客。

接下来的1行中,有n个正整数,表示n个顾客需要的服务时间。

4.输出:

将编程计算出的最小平均等待时间输出到文件service.out。

5.输入输出文件样例:

service.in

service.out

10

56121991000234335599812

532.00

题目六:

(9分)

1.问题描述:

在实际应用中,常常会出现对两个大数进行操作的情况,比如对其进行加减运算。

请设计一个算法实现对两个大数m和n的运算(m和n的位数不大于128位)。

2.要求:

(1).实现对两个大数的相加运算。

(2).实现对两个大数的相减运算(扩展要求)。

3.输入:

输入文件名为ogol.in,文件内容有两列,分别为两个大数。

4.输出:

输出文件名为ogol.out,文件内容有两行,第一行为两个大数的和,第二行为两个大数的差(如果没有实现两个大数相减,则此行没有)。

5.输入输出文件样例:

ogol.in

ogol.out

99999999999999999991

10000000000000000000

题目七:

(11分)

1.问题描述:

设有n件工作分配给n个人。

将工作i分配给第j个人所需的费用为cij。

试设计一个算法,为每一个人都分配1件不同的工作,并使总费用达到最小。

2.要求:

设计一个算法,对于给定的工作费用,计算最佳工作分配方案,使总费用达到最小。

3.输入:

由文件work.in给出输入数据。

第一行有1个正整数n(1≤n≤20)。

接下来的n行,每行n个数,表示工作费用。

4.输出:

将计算出的最小总费用输出到文件work.out。

5.输入输出文件样例:

work.in

work.out

3

1023

234

345

9

题目八:

(11分)

1.问题描述:

对一个序列进行的“无序”测量指的是:

计算出序列中未按照字母顺序进行排列的字母对的个数。

举例来说,在字母序列“DAABEC”中,经过“无序”测量的值是5,因为字母D比它右边的4个字母(A,A,B,C)大,而字母E比它右边的1个字母(C)要大,所以本字符序列中的倒置的无序字符对个数为5。

而这种测量值被称作——序列倒置对个数。

 序列“AACEDGG”仅有一对倒置(E和D)——它差不多已经按序排列了——然而序列“ZWQM”有六对倒置(它是毫无秩序的——完全的颠倒秩序)。

2.要求:

编一个针对“DNA链序列”的目录(序列中只能包含A,C,G,T四个字母),依据每个序列中倒置对的个数,从“倒置对数”最少的到“倒置对数”最多的序列,依次编排目录,要求所有的字符串序列的长度相同。

3.输入:

第一行包含两个整数,一个正整数n(0

下面的输入由m行组成,每行为一个长度为n的字符串。

4.输出:

输出已输入字符串的列表,从“最多排序数”到“最少排序数”依次安排,因为两个字符串可能会有相同的排序数,所以他们的输出依照最初的排列顺序进行。

5.输入输出文件样例:

dna.in

dna.out

106

AACATGAAGG

TTTTGGCCAA

TTTGGCCAAA

GATCAGATTT

CCCGGGGGGA

ATCGATGCAT

CCCGGGGGGA

AACATGAAGG

GATCAGATTT

ATCGATGCAT

TTTTGGCCAA

TTTGGCCAAA

题目九:

(12分)

1.问题描述:

8x8的国际象棋棋盘上的一匹马,恰好走过出起点外的其他63个位置各一次,最后回到起点。

这条路线称为一条马的Hamilton周游路线。

2.要求:

对于给定的mxn的国际象棋棋盘,m和n均为大于5的偶数,且|m-n|<=2。

编程找出一条马的Hamilton周游路线。

3.输入:

输入数据由文件名为hamilton.in的文本文件提供。

文件的第1行是2个正整数m和n。

第二行为马的初始坐标编号(坐标原点:

为"0",左下角)。

4.输出:

输出文件名为hamilton.out,文件内容为马走过的路线,其中第一个为起始位置,依次为第二,第三个位置,每行最多8个数据。

例如对于8x8棋盘,对其规定如下:

每个位置使用一个数字代表,左下角为起始编号,从0开始。

56

57

58

59

60

60

60

63

48

49

50

51

52

53

54

55

40

41

42

43

44

45

46

47

32

33

34

35

36

37

38

39

24

25

26

27

28

29

30

31

16

17

18

19

20

21

22

23

8

9

10

11

12

13

14

15

0

1

2

3

4

5

6

7

5.输入输出文件样例:

hamilton.in

hamilton.out

88

0

0104133121623

2912…

题目十:

(16分)

系统用户管理是许多应用软件里不可缺少的部分,请使用C语言为某软件开发一个简单的用户管理子系统,具体功能要求如下:

(1). 添加新用户

     在系统中为新用户创建一个访问系统的帐户,其中用户名的长度限制在1~6个字符之间且不区分大小写;用户密码的长度限制在6~10个字符之间,注意密码区分大小写。

在输入新用户名时,需要判定输入的用户名是否已经存在,若已经存在则提示用户重新输入;在输入用户密码时,需要分别输入“用户密码”和“确认密码”,若两者不一致则提示用户并让用户全部重新输入;用户在输入密码时,不允许直接在屏幕上显示用户键盘敲入的字符,必须用“*”号代替(下面输入密码时,与此要求相同);系统中所有用户的帐户存储在一个数据文件里。

(2). 系统登录

     在用户登录时对用户身份进行确认。

当输入了用户名和密码后,判断输入的用户是否存在且密码相同,若用户合法,则提示“登陆成功”;否则,提示“用户名或密码错误”,让用户重新输入;注意,只允许用户尝试3次,超过3次则显示“非法用户”并退出模块。

(3). 密码修改

     在修改用户密码时,需要输入用户名和原始密码,以及新密码和确认密码;当用户名和原始密码正确以及新密码和确认密码一致时,更新用户的密码,否则提示用户错误原因,即“用户名或密码错误”或“新密码和确认密码不一致”。

(4). 用户查询

     为用户管理提供模糊查询功能。

当输入检索词后,查询出所有用户名中包含该检索词的用户。

例如:

假设当前系统中包含的用户包括abc,bab,cab,cba,如果用户输入的检索词是ab或AB,则检索出来的用户应该包括abc、bab和cab。

   为了验证上述模块是否开发正确,可在main函数中编写一个菜单完成对上述功能模块的选择调用。

另外,以上任务在字符模式底下完成就可以了,不需要采用图形界面模式。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1