C语言程序设计(上机)指导书(V5.2)

loading 分享 2026-9-4 下载文档

<< \ \ << \ << \ << \ \

return 0;

}

运行的结果如下:

The Calendar Time now is:1135176221 Today is: 2005-12-21 22:43:41 3

(6)猜数游戏:程序要求学生用随机函数产生一个数,判断用户是否猜对,如果猜错了,则提示偏大还是偏小,记录用户猜数所用的时间和次数。 (7)计算分数的精确值:使用数组精确计算M/N(0

由于计算机字长的限制,常规的浮点运算都有精度限制,为了得到高精度的计算结果,就必须自行设计实现方法。

为了实现高精度的计算,可将商存放在一维数组中,数组的每个元素存放一位十进制数,即商的第一位存放在第一个元素中,商的第二位存放在第二个元素中?.,依次类推。这样就可以使用数组不表示一个高精度的计算结果。

进行除法运算时可以模拟人的手工操作,即每次求出商的第一位后,将余数乘以10,再计算商的下一位,重复以上过程,当某次计算后的余数为0 时,表示M/N为有限不循环小数某次计算后的余数与前面的某个余数相同时,则M/N为无限循环小数,从该余数第一次出现之后所求得的各位数就是小数的循环节。

程序具体实现时,采用了数组和其它一些技巧来保存除法运算所得到的余数和商的各位数。

(8)自动发牌:一副扑克有52张牌,打桥牌时应将牌分给四个人。请设计一个程序完成自动发牌的工作。要求:黑桃用S(Spaces)表示;红桃用H(Hearts)表示;方块用D(Diamonds)表示;梅花用C(Clubs)表示。

按照打桥牌的规定,每人应当有13张牌。在人工发牌时,先进行洗牌,然后将洗好的牌按一定的顺序发给每一个人。为了便于计算机模拟,可将人工方式的发牌过 程加以修改:先确定好发牌顺序:1、2、3、4;将52张牌顺序编号:黑桃2对应数字0,红桃2对应数字1,方块2对应数字2,梅花2对应数字3,

12

黑桃3 对应数字4,红桃3对应数字5,...然后从52 张牌中随机的为每个人抽牌。

此处可采用C语言库函数的随机函数,生成0到51之间的共52个随机数,以产生洗牌后发牌的效果。

六、上机实习题目

1.算法实现

题目编号 内容 要求 难度 R001E 输入1~20的整数n,把从1到n的n个整数摆成一个环,使E 得该环上任意相邻的两个数之和为素数。求出所有可能组合。 R002E 求第1500个只有2,3,5因子的数。数是从小到大排列,第一个E 数是1,1=2^0*3^0*5^0。 R003E 编写一个程序,能够根据用户要求输出相应阶次的杨辉三角。 E R004M 一个人带着一只羊,一条狼和一颗白菜想过河,假设他每次只M 能带一只羊,或者一条狼,或者一颗白菜过河,并限定人不在场时,狼和羊,或羊和白菜不能单独在一起,试编写程序求出他带一只羊,一条狼和一颗白菜过河的办法。 R005H 一辆重型卡车欲通过1000公里的沙漠,卡车耗油量为1公升/H 公里,卡车总载油量为500公升,显然卡车装一次油是通过不了沙漠的。因此司机必须在沿途设立几个储油点,使卡车能顺利通过沙漠。试问司机如何建这些储油点?每个储油点应该储多少升油?才能使用卡车以最小耗油量的代价通过沙漠? R006E 有一对小老鼠,出生一周后长成一对大老鼠,两周后出生第一E 对小老鼠,自己变成一对大老鼠,上周的小老鼠变成了大老鼠,此时共有三对老鼠。试编制程序,计算N周后有多少对老鼠? R007M 某级数的前两项A1=1,A2=1,以后各项具有如下的关系:M An?An?2?2An?1。下列程序的功能是:要求依次对于整数 13

M=100,1000和10000求出对应的n值,使其满足:Sn?M且Sn?1?M,这里Sn?A1?A2???An,并依次把n值存入数值单元b[0],b[1],b[2]中,请编制jsValue()函数来实现此功能,最后调用函数WriteDat()把数组b[]中的值输出到out.Dat文件中。 R008M 函数ReadDat()的功能是从文件in.dat中读取20行数据存放M 到字符串数组xx中(每行字符串长度均小于80)。请编制函数jsSort(),该函数的功能是:以行为单位对字符串按下面的给定条件进行排序,排序后的结果仍按下面的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果输出到文件out.Dat中。条件:从字符串中间一分为二,左边部分按字符的ASCII值降序排序,排序后,左边部分与右边部分按例子所示进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。 R009M 200个学生不按身高任意排成10行﹑20列的长方形队列。在每M 一列中选出一个最矮者(如这样人有几个,可任选其中一个)。然后在所选的20个矮人中挑出最高者一人,叫做“矮人中的高个子”。然后,令这20个矮人各回原位。再在每一行中选出一个最高者,又从这10个高人中挑出最矮者一人,叫“高个子中的矮子”。请问“矮人中的高个子”和“高个子中的矮子”这二人中哪个高? R010E 将一个正整数n(长整型)输出成“千分位”形式,即从个位数起,E 每三位之间加一个逗号,例如,将7654321输出成7,654,321。 R011M 编写一个子程序NewTon(float x0,float eps,float x1)。它的M 功能是用牛顿迭代法求 f(x)=x3?2x2?4x?1在x=0附近的一个实根。牛顿迭代公式为: 14

xn?1?xn?f(xn) 'f(xn)迭代收敛判据为:f(xn?1)?eps(eps为指定的迭代精度,例如1e-6)。若迭代成功,则返回非零值;否则,返回0。 R012E 编程实现从三个红球﹑五个白球﹑六个黑球中任意取出八个E 球,且其中必须有白球,输出所有可能的方案。 R013E 寻找并输出11~999之间的整数m,满足m,m2,m3均为回文数,E ,m3?1331所谓回文数即各位数字左右对称的数,如m?11,m2?121皆为回文数。 R014H 输入N个点的坐标,判断这N个点能否构成一个凸多边形。 H R015M 给定n个点的坐标,这n个点依次围成一闭合多边形,再给一M 点(x,y),判断它是否在多边形中。 R016E 在一行字符串中删去指定的字符。例如,要求在一行文字:“I E have 50 Yuan.”中,删去字符“0”,使其变为“I have 5 Yuan.”。 R017E 3位正整数中,既是完全平方数,又有两位数相同,如144,676E 等,找出所有这样的数。 R018M 设计一个支持矩阵加减乘运算的程序 R019E 输入一个自然数n,求n!,同时统计结果中有多少个0。 E E R020E 实现用于计算素数的算法。假定我们要找出小于10的所有素M 数,其中共有2,3,4,5,6,7,8,9,10九个数,然后取走最小的数2并声明它就素数,然后筛掉2的倍数。重复上面的步骤直到空筛时,就可选出所有素数。 R021E 排序算法。要求在界面上显示包括原始数据(如以10个数据为E 例),排序过程以及排序后数据。 R022H 由n2个方块排成n行n列的正方形称为“n元棋盘”。如果两个H 皇后位于n元棋盘上的同一行或同一列或同一对角线上,则称它们为互相攻击。要求输出使n无棋盘上的n个皇后互不攻击的所有布局。 15


C语言程序设计(上机)指导书(V5.2).doc 将本文的Word文档下载到电脑
搜索更多关于: C语言程序设计(上机)指导书(V5.2) 的文档
相关推荐
相关阅读