📄 subject_21570.htm
字号:
<p>
序号:21570 发表者:常山赵子龙 发表日期:2002-11-18 17:26:54
<br>主题:请教:一个C语言的程序!
<br>内容: 早就听说学编程要学会去读源代码才会有所提高,然而在网上寻觅了很久,收获却是微乎其微,即便偶然的能找到几个,大都也是那种非常高深难懂的,对我这个初学者还说没什么价值!<BR> 在最近一期《黑客X档案》的附赠光盘上,我看到了一个“精典C程序100例!”正在苦学C语言却无所进展的我自然不会放过这个机会!翻开看了前面几个例题,倒也不是很难,却都是非常典型的那种!并想把这些好东东和大家一起分享一下,但后来一想,既然要发出来给人看,就该先验证一下程序的对错吧!<BR> 于是问题就出现了,下面就是一个例题:<BR><BR>【程序3】<BR>题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?<BR>1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后<BR> 的结果满足如下条件,即是结果。请看具体分析:<BR>2.程序源代码:<BR>#include "math.h"<BR>main()<BR>{<BR>long int i,x,y,z;<BR>for (i=1;i<100000;i++)<BR> { x=sqrt(i+100); /*x为加上100后开方后的结果*/<BR> y=sqrt(i+268); /*y为再加上168后开方后的结果*/<BR> if(x*x==i+100&&y*y==i+268);/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/<BR> printf("\n%ld\n",i);<BR> }<BR>}<BR><BR><BR> 可是我把它打出来调试的时候,却发现这个程序把从1-99999的数字全部打出来了!显然“sqrt”这个取平方根的函数没有实现它应有的功能,而好象是把每一个数开方后的小数保留了下来,并没有进行取整。于是就有了这个平方根再平方等于原数本身的情况发生了!<BR> 我也是个初学者,试了好久还是老样子,所以请哪位高手能指点一下,先谢了!
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:Norton AntiVirus 回复日期:2002-11-18 17:42:39
<br>内容:根据你的程序printf("\n%ld\n",i);就是打印i的值啊
<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>回复者:linney 回复日期:2002-11-18 17:42:45
<br>内容:if(x*x==i+100&&y*y==i+268); 这里多了一个;号,把这个;去掉就行了。/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/<BR> printf("\n%ld\n",i);<BR><BR>如下面<BR>/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/<BR>if(x*x==i+100&&y*y==i+268)<BR> printf("\n%ld\n",i);<BR><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>
回复者:凯凯 回复日期:2002-11-18 17:43:23
<br>内容:#include "math.h"<BR>#include <stdio.h><BR><BR>int main()<BR>{<BR>long int i,x,y,z;<BR>for (i=1;i<100000;i++) {<BR> x=(long)sqrt(i+100); // /*x为加上100后开方后的结果*/<BR> y=(long)sqrt(i+268); // /*y为再加上168后开方后的结果*/<BR> if(x*x==i+100&&y*y==i+268) ///*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/<BR> printf("\n%ld\n",i);<BR>}<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>
回复者:Norton AntiVirus 回复日期:2002-11-18 17:44:20
<br>内容:应该打印:<BR>printf("\n%f\n%f", x, y,);<BR><BR>另外,多了一个分号,也应该去掉<BR><BR>否则判断的条件就没用了<BR>2002-11-18 17:45:36
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -