六、上机实习题目
1.算法实现
R001E 输入1~20的整数n,把从1到n的n个整数摆成一个环,使得该环上任意相邻的两个数之和为素数。求出所有可能组合。
R002E 求第1500个只有2,3,5因子的数。数是从小到大排列,第一个数是1,1=2^0*3^0*5^0。 
R003E 编写一个程序,能够根据用户要求输出相应阶次的杨辉三角。
R004M 一个人带着一只羊,一条狼和一颗白菜想过河,假设他每次只能带一只羊,或者一条狼,或者一颗白菜过河,并限定人不在场时,狼和羊,或羊和白菜不能单独在一起,试编写程序求出他带一只羊,一条狼和一颗白菜过河的办法。 M
R005H 一辆重型卡车欲通过1000公里的沙漠,卡车耗油量为1公升/公里,卡车总载油量为500公升,显然卡车装一次油是通过不了沙漠的。因此司机必须在沿途设立几个储油点,使卡车能顺利通过沙漠。试问司机如何建这些储油点?每个储油点应该储多少升油?才能使用卡车以最小耗油量的代价通过沙漠? H
R006E 有一对小老鼠,出生一周后长成一对大老鼠,两周后出生第一对小老鼠,自己变成一对大老鼠,上周的小老鼠变成了大老鼠,此时共有三对老鼠。试编制程序,计算N周后有多少对老鼠? E
R007M 某级数的前两项A1=1,A2=1,以后各项具有如下的关系: 。下列程序的功能是:要求依次对于整数M=100,1000和10000求出对应的n值,使其满足: 且 ,这里 ,并依次把n值存入数值单元b[0],b[1],b[2]中,请编制jsValue()函数来实现此功能,最后调用函数WriteDat()把数组b[]中的值输出到out.Dat文件中。 M
R008M 函数ReadDat()的功能是从文件in.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数jsSort(),该函数的功能是:以行为单位对字符串按下面的给定条件进行排序,排序后的结果仍按下面的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果输出到文件out.Dat中。条件:从字符串中间一分为二,左边部分按字符的ASCII值降序排序,排序后,左边部分与右边部分按例子所示进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。 M
R009M 200个学生不按身高任意排成10行﹑20列的长方形队列。在每一列中选出一个最矮者(如这样人有几个,可任选其中一个)。然后在所选的20个矮人中挑出最高者一人,叫做“矮人中的高个子”。然后,令这20个矮人各回原位。再在每一行中选出一个最高者,又从这10个高人中挑出最矮者一人,叫“高个子中的矮子”。请问“矮人中的高个子”和“高个子中的矮子”这二人中哪个高? M
R01
0E 将一个正整数n(长整型)输出成“千分位”形式,即从个位数起,每三位之间加一个逗号,例如,将7654321输出成7,654,321。 E
R011M 编写一个子程序NewTon(float x0,float eps,float x1)。它的功能是用牛顿迭代法求
f(x)= 在x=0附近的一个实根。牛顿迭代公式为:
迭代收敛判据为: (eps为指定的迭代精度,例如1e-6)。若迭代成功,则返回非零值;否则,返回0。 M
R012E 编程实现从三个红球﹑五个白球﹑六个黑球中任意取出八个球,且其中必须有白球,输出所有可能的方案。 E
R013E 寻并输出11~999之间的整数 ,满足 均为回文数,所谓回文数即各位数字左右对称的数,如 皆为回文数。
E
R014H 输入N个点的坐标,判断这N个点能否构成一个凸多边形。 H
R015M 给定n个点的坐标,这n个点依次围成一闭合多边形,再给一点(x,y),判断它是否在多边形中。 M
R016E 在一行字符串中删去指定的字符。例如,要求在一行文字:“I have 50 Yuan.”中,删去字符“0”,使其变为“I have 5 Yuan.”。 E
R017E 3位正整数中,既是完全平方数,又有两位数相同,如144,676等,出所有这样的数。 E
R018E 设计一个支持矩阵加减乘运算的程序 E
R019E 输入一个自然数n,求 ,同时统计结果中有多少个0。
E
R020E 实现用于计算素数的算法。假定我们要出小于10的所有素数,其中共有2,3,4,5,6,7,8,9,10九个数,然后取走最小的数2并声明它就素数,然后筛掉2的倍数。重复上面的步骤直到空筛时,就可选出所有素数。 E
R021E 排序算法。要求在界面上显示包括原始数据(如以10个数据为例),排序过程以及排序后数据。 E
R022H 由n2个方块排成n行n列的正方形称为“n元棋盘”。如果两个皇后位于n元棋盘上的同一行或同一列或同一对角线上,则称它们为互相攻击。要求输出使n无棋盘上的n个皇后互不攻击的所有布局。
具体要求如下;
(1)n可由键盘输入。
(2)在输入n后,动态建立方法说明中所需要建立的数组空间;程序运行结束时释放该
存储空间。
(3)分别用n=4,5,6运行你的程序。 H
R023E 排序,要求:
(1)输入任意一串字母或数字。
(2)用选择法和冒泡法分别对(1)进行降幂排序。
(3)比较这两种排序方法所用的时间。
(4)具有输入输出界面。 E
R024M 设有n个人围坐在圆桌周围,从某个位置开始用自然数进行编号为1,2,…,n。然后从编号为k的人从1开始报数,数到m的人便出列;下一个人(第m十1个)又从1开始报数,数到m的人便是第二个出列的人。如此继续下去,直到最后一个人出列为止。要求输出这个出列的顺序。
这个问题称为雅瑟夫(Joseph
u)问题。
具体要求如下:
(1)n、m、k由键盘输入,输入前要有提示。
(2)在输入n后,动态建立方法说明中所需要建立的数组空间;程序运行结束时释放该
存储空间。
(3)分别用n=8,m=4,k=1以及n=10,m=12,k = 4调试运行你的程序。 M
2.文本字符串处理
题目编号 内容 要求 难度
W001E 输入字符串s,将s中的前导空格和尾随空格删去,中间连续多个空格缩减为一个空格。 E
W002M 实现txt文件中的查与替换功能 M
W003E 编制程序实现字符串的逆转功能。要求具有友好的输入、输出界面。如输入This is a test  输出 tset a si sihT E
W004E 字母统计
要求:(1)输入任意一段英文。
(2)统计(1)中各字母出现的概率。
(3)具有输入输出界面,并对输入的数字和其他符号给予提示。 E
W005M 单词统计
要求:(1)输入任意一段英文。
字符串长度计算工具
(2)根据(1)中各单词出现概率的高低输出前五个单词。
(3)具有输入输出界面 M
W006E 编写一个小程序,可以读入一个英文的文本文件,显示这个文件,并统计这个文件有多少个字符,多少个单词,多少个空白(空格、TAB),多少个段落,按照单词的长度进行统计。 E
W007H 编写一个小程序,能够实现将一个很长的英文行折成两行或者更多的行。要求能够在指定的列前换行,也可以在界面的边界换行。注意程序应当比较智能,如考虑在一个单词很长,或者在指定的列前面没有空白等特殊情况。尽可能的考虑较多的异常情况。具体功能参照Word的自动换行功能。 H
W008M 编程实现一个字数统计工具。要求可以直接在程序的文字区域输入文字,然后开始统计相关字数,也可以将要统计的文本粘贴到该程序中,然后进行统计。点击“开始统计”按钮,对应文本的字母字数和汉字字数就可以在程序窗口中的编辑框中显示出来。 M
3.常用程序设计
题目编号 内容 要求 难度
P001E 已知在文件IN.DAT中存有100个产品的销售记录,每个产品记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)几部分组成。其中:金额=单价×数量可计算出。函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。请编制SortDat(),其功能要求:按金额从大到小进行排列,最后调用函数WriteDat()把结果输出到文件OUT.DAT中。 E
P002M 在文件in.dat中有200个正整数,且每个数均在1000至9999之间。函数ReadDat()的功能是读取这200个数并存放到数组aa中。请编制函数jsSort(),该功能是:要求按每个数的后三位的大小进行升序排列,将排序后的前10个数存入数组aa中。如果数组bb中出
现后三位相等的数值,则对这些数值按原始4位数据进行降序排列。最后调用函数WriteDat()把结果bb输出到文件OUT.DAT中 M
P003M 已知在文件IN.DAT中存在若干个(个数〈200〉四位数字的正整数,函数ReadDat()的功能是读取这若干个正整数并存入数组xx中。请编制函数CalValue(),其功能要求:(1)求出这文件中共有多少个正整数totNum;(2)求这些数右移1位后,产生的新数是偶数的数的个数totCnt,以及满足此条件的这些数(右移前的值)的算术平均值totPjz,把所有的结果输出到文件OUT.DAT中。 M
P004E 输入两个整数m和n,及另一正整数k,计算m/n,结果精确到小数点后k位 E
P005H 输入任意四个整数(0到10),运算符只有加减乘除,还有括号.每个数只能且必须用一次。要求判断这些表达的结果中是否有24。如果有,输出计算表达式:如输入4,6,1,1 输出 4*6*1*1 =24 (允许有括号)。 H
P006E 文件拷贝,实现命令行式的COPY功能。 E
P007M 编制不同数制间的转换程序。要求提供输入输出界面,当输完一个任意十进制数字,程序能自动将其转化为另外的数制表示的值,包括二进制、八进制和十六进制,其中转化用算法实现,而不是用printf函数显示。 M
P008E 分数统计
要求:(1)输入某班级学生的姓名、分数;
(2)对(1)的分数进行排序,按分数从大到小输出; E
P009E 文本编辑器
要求:(1)编辑文本;
(2)保存、打开指定位置的文本文件;  E
P010M 解方程
要求:(1)用牛顿法求解下列方程在 附近的根( );
(2)改变初始值、误差后重新求解。  M
P011M 产生随机数
要求:
(1)满足均匀分布的[M,N]区间随机数,其中M,N是正整数。
(2) 满足指数分布的[M,N]区间随机数,其中M,N是正整数。 M
P012H 编写程序,查c程序中的基本语法错误,如圆括号、方括号、
花括号的不匹配;如单引号和双引号等。要求能够显示错误信息,
并给出错误行数。注意尽可能的考虑软件的通用性。 H
P013M 编写一个程序,读入一个c程序,按照字母表的顺序分组打印变
量名字。字符串和注释中的单词不考虑。 M
P014M 设计一个程序,统计一个班(最多有35人)的学生成绩,要求能实现如下四个功能:
(1)由键盘输入每个学生的学号和四门课程的成绩。
(2)计算每个学生的平均分和总分。
(3)按总分从高到低排出名次,并按名次输出每个学生的情况,包括学号、各科成绩、平均分和总分。
(4)根据用户要求输出某门课程(由键盘输入课程号)成绩在90分以上(含90分)且总分在前五名的学生情况,包括:学号、各科成绩、平均分和总分。
具体要求如下:
(1)每个功能
为一个独立的函数。
(2)所有的输入之前都要有提示。 M
4.链表设计
题目编号 内容 要求 难度
L001M 利用循环链表表示位数大于10的大整数
链表的头结点值为-1,其余结点依次存放数据,各结点最多存放四位整数。如下表示233238766
M
L002H 在利用上述数据结构完成大整数的表示后,实现两个大数的加法、减法运算(两个链表表示操作数)。 H
L003H 一元多项式简单的计算
1主要功能:
(1)输入并建立多项式;
(2)输出多项式;
(3)两个多项式相加,建立并输出和多项式;
(4)两个多项式相减,建立并输出差多项式。
实现提示:可选择带头结点的单向循环链表或单链表存储多项式,头结点可存放多项式的参数,如项数等。
2.要求:
一元多项式简单计算的基本功能
H
L004M 双向链表的排序。
要求:
输入一个双向链表,显示些双向链表并对此双向链表排序 M

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。