c语言竟赛试题.docVIP

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

C语言竞赛试题 1.分数变小数 写出一个程序,接受一个以N/D的形式输入的分数,其中N为分子,D为分母,输出它的小数形式。假如它的小数形式存在循环 节,要将其用括号括起来。例如:1/3=.00000...表示为.(3),又如41/333=.123123123...表示为.(123)。 一些转化的例子: 1/3=.(3) 22/5=4.4 1/7=.(142857) 3/8=.375 45/46=.803(571428) 用上面的分数和11/59来测试你的程序。 运行举例: ENTER N,D:17 1/7=.(142857) 本题中,0=N=65535,0=D=65535,设运算结果小数点后最多保留100位。 (1)解题思路 本题可以模拟手算除法的形式,重复地进行求商和余数的运算,直到余数为0或出现循环节为止。 (2)参考程序 Const Max=100; (小数点后最大位数) Var Left,Digit:Array[0..Max]of 视频教程word; (记录每次的余数和商) n,d:Word; q,Top:Word; (q为循环字节的位置) Procedure Init; Begin Write(ENTER N,D:); Readln(n,d); End; Procedure Cacl; (计算) Var i:Word; Begin Digit[0]:=n css.shtml target=_blank title = div视频教程div d; Left[0]:=n Mod d; Top:=0; q:=0; (初始化商和余数) While Left[Top] 0 Do (余数不为0则循环) Begin Inc(Top); Digit[Top]:=(Left[Top-1]*10)Div d; Left[Top]:=(Left[Top-1]*10)Mod d; For i:=0 To Top-1 Do If Left[Top]=Left[i] Then Begin q:=i+1; Exit; (假如出现循环节则退出) End; End; End; Procedure Print; Var i:Word; Begin Write(n,\,d,=); If(Digit[0]0 Then Write(Digit[0]); If Top0 Then Write(.); For(i:=1 To Top Do Begin If i=q Then Write((); Write(Digit[i]); End; If q0 Then Write()); Writein; End; Begin Init; {读入数据} Cacl; {计算} Print;; {打印结果} End. (3)运行结果 ENTER N,D:11 59 11/59=.(1864406779661016949152542372881355932203389830508474576271) 附:改写后的C源程序如下: #includestdio.h #define Max 100 /*小数点后最大位数*/ int Left[Max]; int Digit[Max]; /*记录每次的余数和商*/ int n,d,q,Top; /*q为循环字节的位置*/ void Init(void) {   printf(ENTER N,D:);   scanf(%d %d,n,d); } void Cacl(void) /*计算*/ {   int i=0,j=1;   Digit[0]=n/d;

文档评论(0)

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

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

1亿VIP精品文档

相关文档