C 语言学习 3
【程序3】
題目:一個整數,它加上100后是一個全然平方數。再加上168又是一個全然平方數。請問該數是多少?
1.程序分析:在10萬以內推斷。先將該數加上100后再開方,再將該數加上268后再開方,假設開方后的結果滿足例如以下條件,即是結果。請看詳細分析:
2.程序源碼:
#include "math.h" #include "stdio.h" #include "conio.h" main() {long int i,x,y,z;for (i=1;i<100000;i++){x=sqrt(i+100); /*x為加上100后開方后的結果*/y=sqrt(i+268); /*y為再加上168后開方后的結果*/if(x*x==i+100&&y*y==i+268) /*假設一個數的平方根的平方等于該數,這說明此數是全然平方數*/printf("\n%ld\n",i);}getch(); }
題目:一個整數,它加上100后是一個全然平方數。再加上168又是一個全然平方數。請問該數是多少?
1.程序分析:在10萬以內推斷。先將該數加上100后再開方,再將該數加上268后再開方,假設開方后的結果滿足例如以下條件,即是結果。請看詳細分析:
2.程序源碼:
#include "math.h" #include "stdio.h" #include "conio.h" main() {long int i,x,y,z;for (i=1;i<100000;i++){x=sqrt(i+100); /*x為加上100后開方后的結果*/y=sqrt(i+268); /*y為再加上168后開方后的結果*/if(x*x==i+100&&y*y==i+268) /*假設一個數的平方根的平方等于該數,這說明此數是全然平方數*/printf("\n%ld\n",i);}getch(); }
這個函數中調用了?sqrt 函數,它在 math.h 文件里,我第一次調用這個函數出錯,但不是由于我使用的錯誤,而是程序中的 x、y、z 參數的類型設錯了。應該設 long int,它是有符號的,并且應該是 long 型的,否則有可能會溢出。
至于函數中為什么要推斷小于 100000,這個真不知道,標記一下。或者誰知道,給個答案。
這里面還有個思維方式的問題。假設你想用開根號函數來做此題,不是不能夠,不過只在參數的類型上就非常麻煩。假設不用開根號而是用平方來推斷,結果是一樣的,可是會簡單非常多。
轉載于:https://www.cnblogs.com/jhcelue/p/6814678.html
總結
- 上一篇: oracle 存过调试 stepinto
- 下一篇: 从零开始——电子商务平台01