77范文网 - 专业文章范例文档资料分享平台

程序设计(上机)指导书(3)

来源:网络收集 时间:2019-08-17 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

最后调用函数writeDat()读取50个数据t,分别得出结果且把结果输出到文件out.dat中。例如:当t=1000时,函数值为:1597。

(2)有一个已按从小到大排好序的数组,今输入一个数,要求按原来的顺序规律将它插入到数组中。

(3)编程实现如下功能:选取100到1000范围内所有个位与十位数字之和被10整除所得余数是百位数字的素数(如293),计算并输出上述这些素数的个数CNT以及这些素数值的和SUM,最后调用函数writerData()把结果CNT和SUM输出到文件out.dat中。

(4)编程并实现函数 char* IntToStr (int number),该函数将一个给定的整数转换为字符串。再编写main()函数验证上面所编写的IntToStr()函数。 (5)打印日历:编写一个程序,输出当前月的日历。计算生成当月的日历,打印当月的日历,输出到以自己学号命名的文件中(如:thismonth_07000122.txt),同时也在屏幕显示。输出的格式如下(假设当天日期为2008年11月29日):

Calendar Nov

------------------------------------- Sun Mon Tue Wed Thu Fri Sat 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

今天是: 2008年11月29日 星期6 当前时间是: 8:5:24

在C/C++中对日期和时间操作所用到的数据结构和函数,下面将作简单介绍,这些相关的函数和数据结构的声明都在time.h文件中。详细的技术资料请参考C语言手册。

1)日历时间:是用“从一个标准时间点到此时的时间经过的秒数”来表示的时间。这个标准时间点对不同的编译器来说会有所不同,但对一个编译系统来说,这个标准时间点是不变的,该编译系统中的时间对应的日历时间都通过该标准时间点来衡量。日历时间在系统中是一个long int型数据。

2)标准时间:就是我们通常所使用的年月日小时分钟秒等,在标准C/C++中,我们可通过tm结构来获得日期和时间,tm结构在time.h中的定义如下:

#ifndef _TM_DEFINED

10

struct tm {

int tm_sec; /* 秒 - 取值区间为[0,59] */ int tm_min; /* 分 - 取值区间为[0,59] */ int tm_hour; /* 时 - 取值区间为[0,23] */

int tm_mday; /* 一个月中的日期 - 取值区间为[1,31] */

int tm_mon; /* 月份(从一月开始,0代表一月) - 取值区间为[0,11] */ int tm_year; /* 年份,其值等于实际年份减去1900 */

int tm_wday; /* 星期 – 取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 */ int tm_yday; /* 从每年的1月1日开始的天数 – 取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */

int tm_isdst; /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/ };

#define _TM_DEFINED #endif

3)获取当前日期:这里介绍两个函数

time()函数获得当前的日历时间(Calendar Time),其原型为:

long time( long * timer );

localtime()函数是将日历时间转化为本地时间,其原型为:

struct tm * localtime( const time_t * timer );

我们可以先用time()函数获得当前的日历时间(long int型数),再将之通过localtime()转换为我们所需要的日期格式等等就可以了。例子如下(在VC++6.0环境下编译通过):

// examp1e.cpp : This example shows that how date information is got. #include #include int main(void) {

struct tm *local;

long t; time(&t);

cout << \local = localtime(&t);

local->tm_year = local->tm_year + 1900; local->tm_mon ++;

cout << \<< \

11

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

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

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库程序设计(上机)指导书(3)在线全文阅读。

程序设计(上机)指导书(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/jiaoyu/681094.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: