⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_35371.htm

📁 vc
💻 HTM
字号:
<p>
序号:35371 发表者:丑怪青蛙 发表日期:2003-04-06 09:40:59
<br>主题:[请教]用C语言编写的两个小程序,不知道这样可不可以?
<br>内容:[1]编程求1!+2!+3!+…+10!之和<BR>[2]编程求三位正整数中的水仙花数。所谓水仙花数是指该数等于其每位数字的立方和。如:153=1的3次方+5的3次方+3的3次方<BR><BR>我是这样写的:<BR>***********************************************************<BR><BR>[1]<BR><BR>main()<BR>{ int i,j;<BR>&nbsp;&nbsp;long s,t=0;<BR>&nbsp;&nbsp;for(i=1;i&lt;10;i++)<BR>&nbsp;&nbsp; { for(j=1;j&lt;=i;j++)<BR>&nbsp;&nbsp;&nbsp;&nbsp; {s=1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s*=j;<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;t+=s;<BR>&nbsp;&nbsp; }<BR> printf("1!+2!+3!+…+10!=%ld\n",t);<BR>}<BR><BR>[2]<BR><BR>#include &lt;math.h&gt;<BR>main()<BR>{ int i,t,a,b,c;<BR>&nbsp;&nbsp;for(i=100;i&lt;=999;i++)<BR>&nbsp;&nbsp; { a=i/100;<BR>&nbsp;&nbsp;&nbsp;&nbsp; b=(i-a*100)/10;<BR>&nbsp;&nbsp;&nbsp;&nbsp; c=i-a*100-b*10;<BR>&nbsp;&nbsp;&nbsp;&nbsp; t=exp(3log(a))+exp(3log(b))+exp(3log(c));<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(i==t)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("%5d",i);<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp;if(i&gt;=999)<BR>&nbsp;&nbsp;&nbsp;&nbsp;printf("End");<BR>}<BR>///////////////////////////////////////////////////////////<BR>请大虾指教,如果有更好的办法,麻烦告知。谢谢!!!
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:freejc 回复日期:2003-04-06 10:17:01
<br>内容:main()<BR>{ int i,j;<BR>&nbsp;&nbsp;long s,t=0;<BR>&nbsp;&nbsp;for(i=1;i&lt;10;i++)<BR>&nbsp;&nbsp; {s=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//这行拿到外边<BR>&nbsp;&nbsp;&nbsp;&nbsp; for(j=1;j&lt;=i;j++)<BR>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s*=j;<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;t+=s;<BR>&nbsp;&nbsp; }<BR>printf("1!+2!+3!+…+10!=%ld\n",t);<BR>}<BR><BR>#include &lt;math.h&gt;<BR>main()<BR>{ int i,t,a,b,c;<BR>&nbsp;&nbsp;for(i=100;i&lt;=999;i++)<BR>&nbsp;&nbsp; { a=i/100;<BR>&nbsp;&nbsp;&nbsp;&nbsp; b=(i-a*100)/10;//c=i%100/10;<BR>&nbsp;&nbsp;&nbsp;&nbsp; c=i-a*100-b*10;//c=i%10;<BR>&nbsp;&nbsp;&nbsp;&nbsp; t=exp(3log(a))+exp(3log(b))+exp(3log(c));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //这行有语法错误,exp(...)是干什么的?<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(i==t)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("%5d",i);<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp;if(i&gt;=999)<BR>&nbsp;&nbsp;&nbsp;&nbsp;printf("End");<BR>}
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:丑怪青蛙 回复日期:2003-04-06 11:50:31
<br>内容:请问<BR>[1]为什么s=1;一行要拿到外边?是本质问题还是这样程序的效率会高一点?<BR><BR>[2]<BR>exp()和log()套在一块是对数运算,结果相当于a的b次方<BR>具体在程序exp(3log(a))就是a的3次方
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:freejc 回复日期:2003-04-06 22:00:49
<br>内容:main()<BR>{ int i,j;<BR>&nbsp;&nbsp;long s,t=0;<BR>&nbsp;&nbsp;for(i=1;i&lt;10;i++)<BR>&nbsp;&nbsp; {s=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//这行拿到外边<BR>&nbsp;&nbsp;&nbsp;&nbsp; for(j=1;j&lt;=i;j++)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //(1)<BR>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s*=j;<BR>&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; //从一到这里是算i的阶乘,当然要在循环外把S重至,否则结果不就是i了吗?<BR>&nbsp;&nbsp;&nbsp;&nbsp;t+=s;<BR>&nbsp;&nbsp; }<BR>printf("1!+2!+3!+…+10!=%ld\n",t);<BR>}<BR><BR>2、 应该是exp(3*log(a))吧!<BR>这样算不好,效率低,误差也大。<BR>求高次方可用pow(...)<BR>不过这里只是三次方,建议使用a*a*a形式<BR>&nbsp;&nbsp; 因为是整形运算,而不用浮点型,效率应该不会降低<BR>&nbsp;&nbsp; 不会有误差的问题<BR>&nbsp;&nbsp;&nbsp;&nbsp; 可以试试:<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(exp(3*log(2))==2*2*2)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("YES");<BR>&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("NO");
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:丑怪青蛙 回复日期:2003-04-07 17:46:16
<br>内容:谢谢,完全明白!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -