C++题目求助
C++程序设计训练题目
2008年夏季学期
1. 分别编写出把十进制整数转化成二进制整数和把二进制整数转化成十进制整数的函数,并编写主程序调用它们,以验证其正确性。要求:十进制转二进制,如果出现负数,转成补码形式。2、如果十进制数很大,想想怎么处理。3、二进制转十进制,不需要考虑负数情况。
2. 用筛选法可得到2~10000之间的所有素数,方法是:从2开始,找到一个素数K,就将所有K的倍数的数从数表中删去,直到K到 为止。这样会得到一个序列:
2,3,5,7,11,13,17,19,23,……
试找出此序列中最长的等差序列(连续的和不连续的两种)。例如:3,5,7 为一连续等差序列,长度为3,公差为2;而7,13,19 为一不连续等差序列,长度为3,公差为6。
3. 可以采用正则表达式来实现字符串匹配功能。一种简单的正则表达式是由英文字母(区分大小写)、数字及通配符“*”和“?”任意组合而成的。“?”代表任意一个字符,“*”代表零个或任意多个字符。例如,a*b可以匹配acb,aabb,afdfdb,ab等,但不可以匹配ac,bb,abbc;a?b可以匹配acb,abb,但不可以匹配ab,accb。试编写一个程序,从文件中读入N个字符串,再从键盘上读入任意一个合乎规则的正则表达式,例如:“a?bb*d”,输出符合正则表达式的字符串。
4. 读入N位学生的{学号(char型6位)、姓名(char型10位)、性别(char型1位)、年龄(int)和籍贯(char型20位)、班级(char型6位)},建立学生人事文件;读入M门课的{课号(char型6位)、课名(char型20位)、学分(float)、授课教师姓名(char型10位)、先修课课号(char型6位)(无先修课则用“NO”表示)},建立课程档案文件;读入L个{学号(char型6位)、课号(char型6位)、成绩(float)、选修学期(int)}建立选修关系文件 。分别以二进制方式存储这三个文件。然后分别完成以下各项操作:
(1) 求某学生的平均成绩以及他所在班的平均成绩;
(2) 删除某学生的所有记录;
(3) 打印每门课的平均成绩和超过平均分的学生的学号、姓名、班级、成绩;
(4) 读入课名,给出选修了此课的学生学号、姓名、班级、成绩;
(5) 求这样的学生的学号、姓名、班级、所选课名,他至少选修了某人(自己指定一个)所选的所有课程。
(此程序比较长,但希望认真完成,一定要模块化,并认真注释,尽量用中文注释)
*5.在电话语音识别中需要识别电话号码,这需要识别0到9十个数字,而识别前首先需要训练这十个数字,请编写程序设计一个电话号码表,要求数字组数最少。其中:每一组数字都是八位(例如:62781704),0到9十个数字中每两个数字之间至少连接一次(象62781707,其中出现了:6-2、2-7、7-8、8-1、1-7、7-0、0-7七个连接,7-0和0-7是不同的连接),0-0、1-1、......、9-9的连接也要考虑。每个数字在开头、结尾至少各出现一次(象62781707,其中6在开头出现一次,7在结尾出现一次)。
要求:画出流程图,算法分析,源程序加详细注释
输入输出要求:文件的标准输入输出,具体形式如下(在命令行下测试):