看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《ale34354 (雞屎)》之銘言: : 1. : 答案顯示不出來因為超出範圍long int的範圍是-2147483648-2147483647 : 這個乘以後是2400000000 不可能說,答案顯示不出來。 long int a, b, c;// range is: -2147483648 ... +2147483647 // 當計算的結果,超出允許的範圍的時候,會得到錯誤的答案, 而且,電腦不會給你 任何的錯誤或是 警告訊息。 這是 很可怕的一種現象,所以 要同學加深印象, 並且知道原理和 對策 : 問一下 40000L "L"是什麼意思 我不知道 所以我就假設他是40000 L: long int, U: unsigned : 2.我把他打進去 Dev-c++裡面後什麼東西都沒有顯示出來我猜應該是無線迴圈吧 : 大概吧.......不確定 double x, y; x= 3.1415926; y= x + 1.0; // y > x while (y > x) { x= x*1.001; y= y + 1.0; } // 不可能會產生 無窮的回圈, 一定是 你把程式 打錯了 這一題是考你 浮點數型態的 精確度, 或是 有效位數是 大約多少位數? : 3.答案是9008425914092448.000 : 因為b=a跳出回圈 why? b= a + 1.0; // b > a 為什麼,b 會小於,或是 等於 a, 請解釋清楚。 : 4.答案是78498 : 使用什麼方法最快(不知道) 有一種 質數測試的方法,叫做 sieve 的方法。 篩選法。 google 一下吧 計算所需要的時間,都沒有給我。 time() 函數的精確度,只有到 秒。 怎麼辦! : 我用的方法應該這樣叫 : 我猜的 : 循序收尋法 不過我也只會這個而已 : 跑的時間(超久的) : 精確度要小於0.1秒(這句不懂) 請改用 ftime() 這個函數, 你可以 google 一下,這個函數 怎麼使用。 : 5.是93326215443944102後面141個0 : 必須精確到 每一位?(不懂這句話的意思 請使用 大數運算。 : 6. : 這個數字太大了 沒有辦法直接顯示出來 : 所以我去google了 : 原來這題要用 加大整數 才可以顯示出答案 : 我看了加大整數怎麼寫 看好久 : 終於大概知道怎麼寫了 : 答案應該是這樣354224848179261915075 : 精確度要小於0.1秒是什麼意思? 請改用 ftime() 這個函數。 : 計算多久完成?是用時間函數算的嗎? : 我用時間函數算起來怪怪的 我明天在來研究怎麼用..... 這個題目是考你,當函數的遞迴呼叫很慢的時候,怎麼辦? 如何改成 非遞迴的方式? 如果,一定 強迫使用 遞迴的函數呼叫, 如何解決 時間的問題? : 7.放棄 不要 輕言放棄。 都已經告訴你,使用 辛普森積分法, 你為何就不能 google 一下呢? 這一題,其實 不是考你 數值積分。 求質數的那一題,如果使用 傳統的方法, 其實,也是在 提醒你 浮點數的 運算誤差的問題。 : 花的時間 : 大部分的時間都花在第6題上面.... : 我知道我接下來該怎麼走了...... : 就是 多作題目 : 謝謝大家了 不客氣! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.30.84
littleshan:不要用 ftime,那是舊的 POSIX 標準,也不在 C 標準內 02/22 11:55
sjgau:dev-c 有提供,或者,你有更好的 solution? 02/22 13:00
VictorTom:用time(), 跑十次除以十, 就約有0.1秒了.... (光速逃XD) 02/22 13:22
littleshan:這老問題了,Windows 用 QueryPerformanceCounter 02/22 13:24
VictorTom:(舉手) 那個~~只要求到0.1秒, 用clock()不行嗎....@_@" 02/22 13:25
littleshan:POSIX 用 clock_gettime 或 gettimeofday 02/22 13:25
littleshan:話說 C std 倒是沒提到 clock() 的精確度必須是多少... 02/22 13:46
UNARYvvv:要自行除以 CLOCKS_PER_SEC 02/22 15:38
tropical72:clock_t 我以為是精準到 1ms 02/22 15:54