课程设计洗牌c语言,C语言课程设计参考题目.doc

C语言课程设计参考题目

《C语言课程设计》参考课题

破译密码

据说最早的密码来自于罗马的凯撒大帝。消息加密的办法是:对消息原文中的每个字母,分别用该字母之后的第5个字母替换(例如:消息原文中的每个字母A都分别替换成字母F)。而你要获得消息原文,也就是要将这个过程反过来。

密码字母:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z M

原文字母:V W X Y Z A B C D E F G H I J K L M N O P Q R S T U

注意:只有字母会发生替换,其他非字母的字符不变,并且消息原文的所有字母都是大写的。最多不超过100个数据集组成,每个数据集之间不会有空行,每个数据集由3部分组成:

起始行:START

密码消息:由1到200个字符组成一行,表示凯撒发出的一条消息.

结束行:END

在最后一个数据集之后,是另一行:ENDOFINPUT每个数据集对应一行,是凯撒的原始消息。

Sample Input

START

NS BFW, JAJSYX TK NRUTWYFSHJ FWJ YMJ WJXZQY TK YWNANFQ HFZXJXEND

START

N BTZQI WFYMJW GJ KNWXY NS F QNYYQJ NGJWNFS ANQQFLJ YMFS XJHTSI NS WTRJ

END

START

IFSLJW PSTBX KZQQ BJQQ YMFY HFJXFW NX RTWJ IFSLJWTZX YMFS MJ

END

ENDOFINPUT

Sample Output

IN WAR, EVENTS OF IMPORTANCE ARE THE RESULT OF TRIVIAL CAUSES

I WOULD RATHER BE FIRST IN A LITTLE IBERIAN VILLAGE THAN SECOND IN ROME

DANGER KNOWS FULL WELL THAT CAESAR IS MORE DANGEROUS THAN HE

解题思路

凯撒编码,判断字符是否是字母,并循环-5即可,记得要循环哦,非常简单的题目哦

进制转换问题

1. 问题描述

实现将N进制到M进制数的转换(1 < N,M <= 36)。对于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 < N,M < 36)的转换(扩展要求,选做)。

3. 输入:

输入文件名为convert.in,文件内容格式为第一列为被转换数的进制数,第二列为被转换数,第三列为转换后的进制。这三列内容均为字符串形式。每列之间使用一个空格隔开。

4. 输出:

输出文件名为convert.out,文件内容为转换后的数。对于一切错误,则输出“error”字符串。

5. 输入输出文件样例:

样例1

convert.in

convert.out

10 100 27

3J

样例2

convert.in

convert.out

3 140 27

error

A Z A

× A A Z

------------

A A A A

A A Z Z

Z A A

------------

Z A Z A A

*问题分析与算法设计

问题本身并不复杂,可以对乘式中的每一位使用穷举法,最终可以得到结果。本题的关键在于怎样有效的判断每个部分积的每一位是否满足题意,这一问题处理不好,编写的程序会很长。程序实现中可采用了一个判断函数,通过传入函数的标志字符串对所有的数进行统一的判断处理。

乘式还原(2)

有乘法算式如下:

○○○

× ○○

------------

○○○○

○○○○

------------

○○○○○

你可能感兴趣的:(课程设计洗牌c语言)