台灣最大程式設計社群網站
線上人數
2008
 
會員總數:245979
討論主題:189557
歡迎您免費加入會員
討論區列表 >> C/C++ >> 開根號不使用sqrt //印出可以使x為平方整數的i值//
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
開根號不使用sqrt //印出可以使x為平方整數的i值//
價值 : 10 QP  點閱數:8822 回應數:13
樓主

沙拉
門外漢
0 3
68 8
發送站內信

//印出可以使x為平方整數的i值//
#include"stdio.h"
#include"stdlib.h"
int main()
{
long int i,x;

for(i=1;i<1000;i++)
{

if(x*x==i+100)
printf("\n%1d\n",i);

}


system("pause");
return 0;

}


完全不懂錯在哪
結果沒有印出任何值

搜尋相關Tags的文章: [ C ] ,
本篇文章發表於2011-03-23 00:29
1樓
回應

Jonas
檢舉此回應
沒有給定x 的初始值
本篇文章回覆於2011-03-23 09:53
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

沙拉
檢舉此回應
//印出可以使x為平方整數的i值//
#include"stdio.h"
#include"stdlib.h"
int main()
{
long int i,x=1;

for(i=1;i<1000;i++)
{

if(x*x==i+100)
printf("\n%1d\n",i);

}


system("pause");
return 0;

}
還是一樣沒有結果啊!!
本篇文章回覆於2011-03-23 18:05
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

JoJo
檢舉此回應

本篇文章回覆於2011-03-24 16:05
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

幻羽星辰
捐贈 VP 給 井上卜口 檢舉此回應
痾...
我直接請教一個很簡單的小小的問題...

依照您二樓的程式碼...
long int i,x=1;

for(i=1;i<1000;i++)
{

if(x*x==i+100)
printf("\n%1d\n",i);

}

所以您認為在i=1~999的迴圈堶...
1*1在什麼情況下可以等於i+100勒???

= =???
本篇文章回覆於2011-03-24 16:35
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

沙拉
檢舉此回應
恩~~打錯了 i=100000
本篇文章回覆於2011-03-24 23:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

沙拉
檢舉此回應
期我只是想寫出一個開根號的函式 而不用 #include<math.h> 內的函式

包括 sqrt() pow()等等 都不用
本篇文章回覆於2011-03-24 23:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

沙拉
檢舉此回應
//印出x該根號的值
//
#include<stdio.h>
#include<stdlib.h>
int main()
{
double i,x;
scanf("%f",&x);
printf("\n");



for(i=0;i <= x;i++)
{

if(i*i == x)
break;

}


printf("%f\n",i);




system("pause");
return 0;

}
修改後 沒有印出值
本篇文章回覆於2011-03-25 01:04
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
回應

Raymond
檢舉此回應
>double i,x;
>scanf("%f",&x);

- 你有去看看 scanf() 的格式說明嗎? 提示: double 的格式不是 "%f".
- 你有用 debugger 在這裡看看 'x' 的內容嗎?
- 你要整數的根, 沒有必要用 double. 有用 unsigned long 試過嗎? 【注意】如果你換類型, scanf(), printf() 的格式可能需要換.
本篇文章回覆於2011-03-25 02:10
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
作者回應

沙拉
檢舉此回應
我已經將scanf()格式改成 %d了
但我輸入66開根號他卻印出67.000000

我並沒有要特定開成整數的根啊 例如我輸入66 我想要將66開根號後取小數點後3位數啊
本篇文章回覆於2011-03-25 16:56
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
最有價值解答

Raymond
檢舉此回應
>我已經將scanf()格式改成 %d了

但所欲儲存的變數是什麼類型? %d 只能用在整數類型:




>但我輸入66開根號他卻印出67.000000

跟你最後所貼的程式比較, 如果唯一的變動只是把 %f 改成 %d, 那你的程式還是不對.


>我並沒有要特定開成整數的根啊 例如我輸入66 我想要將66開根號後取小數點後3位數啊

到這篇為止, 你完全沒有說你要計算到小數後 3 位數, 你一開始貼的程式也完全沒有表示要用浮點類型來做運算.

算了, 給你一些提示吧, 用『縮小範圍』法:

- 類似你現在的方法, 從輸入的值中, 判斷 lower 及 upper 兩個值, 該數的「根」會介於 lower 及 upper 之間. 比方說你現在的做法, 輸入 x; lower 是 0, upper 是 x ( 0 至 x 應該是最大的範圍了, 安全, 但效率不高).

- 用 for() 迴圈, 從 lower 跑到 upper, 遞增 1, 來找出該數的「根」介於哪兩個數之間, 把這兩個數取代為新的 lower 及 upper.

- 重複上面的邏輯, 遞增為 0.1.

- 重複上面的邏輯, 遞增為 0.01.

- 重複上面的邏輯, 遞增為 0.001.

- 一直到你要的精確度為止.


本篇文章回覆於2011-03-25 21:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
回應

小銘
檢舉此回應
哈囉 請問各位以上的題目有解出嗎
本篇文章回覆於2016-03-20 15:05
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
回應

Raymond
檢舉此回應
>哈囉 請問各位以上的題目有解出嗎

你所謂的「解出」是什麼意思? 是要完整的程式碼嗎? 你可以自己寫寫看.
本篇文章回覆於2016-03-22 00:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
回應

淺水員
檢舉此回應
利用直式開方實作出來的

本篇文章回覆於2016-07-27 00:11
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.