下午卷完整-.docVIP

下午卷完整-.doc

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
下午卷完整-

下午卷 试题一 阅读以下说明和流程图,填补流程图中的空缺(1)~(5),将解答填入答题纸的对应栏内。 【说明】 平面上一个封闭区域内稳定的温度函数式一个调和函数,如果区域边界上各点的温度是已知的(非常数),那么就可以用数值方法近似地计算出区域内各点的温度(非负数)。 假设封闭区域是矩形,可将整个矩形用许多横竖线切分成比较细小的网格,并以最简单的方式建立坐标系统,从而可以将问题描述为:已知调和函数u(i,j)在矩形{0≤i≤m;0≤j≤n}四边上的值,求函数u在矩形内部各个网格点{i=1,…,m-1;j=1…,n-1}上的近似值。 根据调和函数的特点可以推导出近似算式:该矩形内任一网格点上的函数值等于其上下左右四个相邻网格点上函数值的算术平均值。这样,我们就可以用迭代法来进行数值计算了。首先将该矩形内各网格点上的函数值设置为一个常数,例如u(0,0);然后通过该迭代式计算矩形内个网格点上的新值。这样反复进行迭代计算,若某次迭代后所有的新值与原值之差别都小于预定的要求(例如0.01),则结束求解过程。 【流程图】 答案(1)0 或 任意一个负数 (2)(u(i,j+1)+u(i,j-1)+u(i-1,j)+u(i+1,j))/4 (3)max (4)new 或 (u(i,j+1)+u(i,j-1)+u(i-1,j)+u(i+1,j))/4 或等价表示 (5)max 解析:本题是要完成一个算法的流程。(1)是给max赋初始值,由于本题所涉及到的数据都是非零数,故可以给max赋值为0或者为任意一个负数。(2)循环开始后,本题要算的是该矩形内任一网格点上的函数值new,该值等于其上下左右四个相邻网格点上函数值的算术平均,所以new为(u(i,j+1)+u(i,j-1)+u(i-1,j)+u(i+1,j))/4。(3)循环继续进行,如果|u(i,j)-new|max,则将|u(i,j)-new|的值赋值给max,所以填max,(4)若|u(i,j)-new|max不成立,则将new或者(u(i,j+1)+u(i,j-1)+u(i-1,j)+u(i+1,j))/4赋值给u(i,j)。(5)循环结束,判断max是否小于0.01,故填max。如果成立,则迭代算法结束,若不成立,则继续迭代算法。 试题二 阅读以下说明和C函数,填充函数中的空缺,将解答填入答题纸的对应栏内。 【说明】 函数GetDateId(DATE date)的功能是计算并返回指定合法日期date是其所在年份的第几天。例如,date表示2008年1月25日时,函数的返回值为25,date表示2008年3月3日时,函数返回值为63。 函数Kday_Date(int theyear, int k)的功能是计算并返回指定合法年份theyear(theyear≥1900)的第k天(1≤k≤365)所对应的日期。例如,2008年的第60天是2008年2月29日,2009年的第60天是2009年3月1日。 函数isLeapYear(int y)的功能是判断y代表的年份是否为闰年,是则返回1,否则返回0。 DATE类型定义如下: typedef struct{ int year, month, day; }DATE; 【C函数1】 int GetDateId(DATE date) { Const int days_month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int i, date_id = date.day; for(i=0;i___;i++) date_id+=days_month[i]; if(____ isLeapYear(date.year)) date_id++; return date_id; } 【C函数2】 _____Kday_Date(int theyear, int k) { int i; DATE date; int days_month[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31}; assert(k=1 k=365 theyear=1900); /*不满足断言时程序终止*/ date.year=_____; if(isLeapYear(date.year)) days_month[2]++; for(i=1;;){ k=k-days_month[i++]; if(k=0){date.day=k+____; date.month=i-1; break;} } return date; } 答案: (1)date.month (2)date.month2 或其等价形式 (3)DATE (4)theye

文档评论(0)

bokegood + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档