语言程序两数相除精确到小数点后k位.docVIP

语言程序两数相除精确到小数点后k位.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文档。上传文档
查看更多
语言程序两数相除精确到小数点后k位.doc

题目, 输入两个整数m和n,及另一正整数k,计算m/n,结果精确到小数点后k位 1、问题分析与方案设计。 首先解决输入问题。题目要求输入三个整数m, n, k。所以定义input ()函 数,使输入的为正整数,如果是字母或者其他字符则会报错提示重新输入。具体 方法:先采用字符串输入,限定每一个输入的字符都在0飞之间,保证输入的是 数字,避免输入的是字母或者其他字符,然后再对字符串使用atoi函数,该函 数为c语言自带的函数,其功能为:把字符串转换成整型数。 关于m/n的计算问题。计算结果要求精确到k位,由于m与n是整形,所以 m/n结果也是整形,而无法得到小数点后面的位数。所以这里有两种解决方案①: 讲m、n定义为double型②:将结果的整数部分与小数部分分别显示。由于第 一种方案的局限性(无法精确到用户指定的k位),所以本程序采用第二种方案, 输出问题。首先在界面上把所输入的m n k全部显示出来以便用户查看,再 输出运算结果。结果的输出考虑最后一位四舍五入的情况。 菜单与人性化设计。首先显示菜单,包括欢迎语,本程序的功能介绍以及用 户的输入要求,让人一目了然。当处理完一个操作之后,提示用户是否继续,输 入y继续,则再次输入m n k;若输入n则退出程序。 另外考虑到除数不能为0,所以限定输入的n不能为0,若为0则报错重输。 流程图: 开始 2、编程实现。 1、输入函数input ()o int inputl () { int m; int flag, i;//设定标识符flag,如果输入的不是0~9的数字则flag=l,进 入报错重输循环 char t[100]; //先采用字符串输入限定输入的每一位都在0、之间,保证 输入的是数字、避免输入的是字母或者其他字符 do { flag=0; fflush(stdin); re: gets (t); for(i=0;(size_t)i〈strlen(t);i++) { if(t[i]〈’O’ ||t[i]’9’) flag=l; } if (flag) { printf (输入有误,请重新输入m: \n); flag=0; //(这一步要重置flag为0,当做无误的再作判断) goto re; } }while(flag); m=atoi (t) ;// atoi功能:把字符串转换成整型数 return m; } 并JCL在input2中用以下语句限定n不能输入为0. if (m==0) {printf (〃n 不能为 0,请重新输入 n\n〉〉〃); goto re; } //考虑到除 数不能为0 2、功能实现 1 )、输出整数部分和小数点。关键程序:printf (运算结果为%土 , m/n) ; //%d. 将整数部分与小数部分分开处理 2)、输出小数部分。主要通过ik的循环不断输出小数点后的每一位。关键 代码:for (i = l; i〈k; i++) { m=m%n; m*=10; printf(%d〃’m/n) ;//到 k-1 位 } 3)、四舍五入。若要第k位四舍五入,则需要定义f (k下一位的数值)。通过f 与5的比较,用if语句控制进位与否。关键代码: (11二01%11;(11*=10;//最后一位(1位)四舍五入 x=m/n; //k位的值 m二m%n;m氺=10; f=m/n; //k下一位的值,用于判断是否大于5 if (f〈5)printf (%d\n〃,x); else printf(%d\n〃,x+1); 3、询问是否继续。实现多次执行程序。关键代码: printf (是否继续? y/n\n?z,); fflush(stdin); scanf (〃%c,c); while(c!=’ y’ c!=’ n’) { printf (输入有误请选择y或者n\n〉>); fflush(stdin); } if(c==’y’)goto repeat; else printf (〃再见\门); 源程序: 3、测试数据、测试结果、结果分析 测试1: 测试数据:m=787422 n=89999 k=90 测试结果: ca :\so£tvare\p005e\Deliig\p005e. eze4 |口| X| 请输入m 787422 请输入n ?adcll 输入有误, 89999 本磕羡?卩下 输入3个整数。n k卖现n/n结果保留至小数点后)^位 请重新输入I 90 787422 89999 90 返昇 5S 禾刀 8.?4923054?0060??84530939232658i4064600?l??85?53i?50352?8169?5?441?493| 5277058633984822053578 是否继续? sr/n ? 结果分析:分别输入mnk如果输入的

文档评论(0)

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

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

1亿VIP精品文档

相关文档