- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
作业四
要求:(最后的压缩文件rar提交到精品课程网站中)独立完成,作业雷同不予计算平时成绩;
要求:(最后的压缩文件rar提交到精品课程网站中)
独立完成,作业雷同不予计算平时成绩;
书面作业提交word文档,文件名为:学号_姓名_班级_作业4.doc;
上机作业要上机调试通过,且写出测试数据及运行结果,也放到上述文档中;
上机作业需另外提交源代码程序(cpp文件),标明题号;
全部内容完成后,将上述文件压缩在一起,压缩文件名为:学号_姓名_班级_作业4.rar 。
一、书面作业
画出本次作业中第二部分(上机作业)所有题目的N-S图。
补充:
4-1 构思一个适合利用静态变量的应用。使用静态变量有什么不好之处?
解答:
(1)局部静态变量的应用
定义在块作用域的局部静态变量,因为被分配在静态存贮区,块调用结束时其值仍被保存,下一次调用时还可使用。利用它的这一特性,可以实现“伪随机数发生器”如下;
#includeiomanip.h
unsigned rand(); //返回一个0-65535的伪随机数
unsigned random(unsigned mod);//返回一个0到(mod-1)的伪随机数
int main( )
{ //印400个0-99的伪随机数
for(int i=0;i400;i++)
coutsetw(4) random(100);
return 0;
}
unsigned rand()
{
static unsigned seed(1);//第一次调用初始化为1,以后是‘线性同余序列’,
seed=seed*1664525+1013904223;//溢出部分被忽略,以4294967296为‘模’
return seed/65536; // 返回seed的前半部(高位)
}
unsigned random (unsigned mod )
{
return rand()% mod;
}
(2)全局静态变量的应用
上例中 static unsigned seed(1) 定义在函数rand()内的好处是安全,但每次使用seed都只能初始化为1,因而得到的总是同一个随机数序列。为了seed能初始化为不同的值,须将它定义在函数外(如果不是静态变量可以定义为参数,这里不行),作为全局变量,不必有static修饰符也分配在静态存储区,完成与上例相同的工作。(改在main函数前定义unsigned seed=1;),如果不让其他文件使用seed变量,则可保留static修饰符。现在可增加修改seed的函数如下:
static unsigned seed=1;
void srand(unsigned seed0)
{
seed=seed0;
}
使用此函数就可以得到不同的随机数序列。
(3)静态变量的不好之处
局部静态变量和全局变量一样,永久地占有静态存储区,不利于存储空间的充分利用。所以在没有必要时,不应使用局部静态变量和全局变量,尤其是大型数据更需注意。静态全局变量不能被其他文件引用,是否合适,依程序要求而定,并无不好。
此外,局部静态变量不符合引用透明性。当有递归调用时,前后不一致,需小心识别。
4-2 讨论为什么c++语言本身不提供输入/输出机制,而要由系统库函数来实现。
解答:
因为输入输出具有独立性和多变性。输入输出本身是个独立的复杂的系统,它不仅和算法数据有关,还和性能各异的输入输出设备(硬件)有关。如果由c++语言本身提供输入/输出机制,必然导致语言的庞大和不灵活。所以要由一些系统库函数来实现。
4-3 指出下列函数原型是否有错误,如果有错误请改正∶
(1) static int calc_middle(x, y, z);
(2) extern int calc_average(int 1_score, int 2_score, int 3_score);
(3) extern float 3rd_function(int x, int y, int z);
(4) extern char who_am_i(int index; int max_student);
(5) int no_para_func();
(6) extern this_is_procedure;
(7) int what_to_do(int x, int y, int z = 0, int w = 0);
(8) int how_to_do(int x = 0, int y = 0, int z, int w);
(9) char look_up(char word, char dictionary,
文档评论(0)