c 一道迴圈語句題,c 迴圈類的一道題

時間 2022-05-31 11:05:05

1樓:匿名使用者

第一種方法:

#include

#include

#include

void main()

;struct timeval tv_begin, tv_end;

for(int n = 2; n <= 23; n += 3)

for(int i = 1; i <= n; i++)

gettimeofday(&tv_end, null);

for(int n = 0; n < 8; n++)

printf("n = %d, result = %.20f\n", n*3+2, result[n]);

printf("time = %dus\n", tv_end.tv_usec - tv_begin.tv_usec);

}第一種方法的執行結果:

n = 2, result = 1.50000000000000000000

n = 5, result = 1.71666666666666678509

n = 8, result = 1.71827876984127003723

n = 11, result = 1.71828182619849312296

n = 14, result = 1.71828182845822996505

n = 17, result = 1.71828182845904531284

n = 20, result = 1.71828182845904553488

n = 23, result = 1.71828182845904553488

time = 112us

第二種方法:

#include

#include

#include

void main()

;struct timeval tv_begin, tv_end;

for(int n = 2; n <= 23; n += 3)

}gettimeofday(&tv_end, null);

for(int n = 0; n < 8; n++)

printf("n = %d, result = %.20f\n", n*3+2, result[n]);

printf("time = %dus\n", tv_end.tv_usec - tv_begin.tv_usec);

}第二種方法執行結果:

n = 2, result = 1.50000000000000000000

n = 5, result = 1.71666666666666678509

n = 8, result = 1.71827876984127003723

n = 11, result = 1.71828182619849312296

n = 14, result = 1.71828182845822996505

n = 17, result = 1.71828182845904531284

n = 20, result = 1.71828182845904553488

n = 23, result = 1.71828182845904553488

time = 25us

第三種方法:

#include

#include

#include

void main()

gettimeofday(&tv_end, null);

printf("time = %dus\n", tv_end.tv_usec - tv_begin.tv_usec);

}第三種方法執行結果:

n = 8, result = 1.50000000000000000000

n = 17, result = 1.71666666666666678509

n = 26, result = 1.71827876984127003723

n = 35, result = 1.71828182619849312296

n = 44, result = 1.71828182845822996505

n = 53, result = 1.71828182845904531284

n = 62, result = 1.71828182845904553488

n = 71, result = 1.71828182845904553488

time = 475us

注:第三種方法結果中的time無參考價值,該方法按照你題目的要求再迴圈中放入了printf函式做輸出,占用大量時間。前兩種方法都是將結果先放入陣列中,最後再輸出結果,printf函式的執行時間不在計算之內,能有效的評價演算法的時間複雜度。

這三種方法的時間複雜度應該是遞減的,第三種方法排除掉printf函式的影響後time的值大約為8us(微秒)

2樓:匿名使用者

也可以通過遞迴繞過迴圈,而且這有很多好處

採用遞迴求階乘繞過記憶體迴圈

採用遞迴求 e(n) 繞過第二層迴圈

下面的** vs2010 通過,裡面加了簡單的計時功能,我把迴圈次數都增大到 300 是為了讓計算機處理起來費時,好讓對比效果明顯(不增加的話三種方法都在幾個 ms 內完成,計時函式計算不出差別)

多執行幾次程式,得到最終結果,小規模下 執行效率 方法一 > 方法二 > 方法三

大規模下執行效率 方法三 > 方法二 > 方法一

**簡潔度 方法三 > 方法二 > 方法一

演算法難度 方法三 > 方法二 > 方法一

可擴充套件性 & 可維護性 方法三 > 方法二 > 方法一

#include

#include

#include

#define cishu 50

#define topnum 50

long double fac(long double x) // 遞迴求階乘

long double eval(long double x) // 遞迴求 e(n)

int main()

sum += (1 / nfac);

} if (n < 24)

} }

t1 = gettickcount() - timecount; // 計時結束

// 方法二

timecount = gettickcount(); // 計時開始

for (size_t n = 0; n != cishu; n++)

if (n < 24)}}

t2 = gettickcount() - timecount; // 計時結束

// 方法三

timecount = gettickcount(); // 計時開始

for (size_t n = 0; n != cishu; n++)}}

t3 = gettickcount() - timecount; // 計時結束

std::cout << sum << "\n\n 方法一用時: " << t1 << std::endl;

std::cout << sum << "\n\n 方法二用時: " << t2 << std::endl;

std::cout << sum << "\n\n 方法三用時: " << t3 << std::endl;

return 0;}

3樓:匿名使用者

(1)使用如下輪廓的三重迴圈來實現:

double e[8]=;

for(int n=2; n<=23; n+=3) //求出多個不同的e

cout<<"e("<

}(2)去掉最內層用來求階乘的迴圈,而改為使用二重迴圈的實現方法:

double e[8]=;

for(int n=2; n<=23; n+=3) //求出多個不同的e

cout<<"e("<

}(3)

double k=0,temp=1;

for(int n=1; n<=23; n++) //從第1項開始,一共(最多)累加23項

執行速度為1<2<3;

4樓:匿名使用者

#include

using namespace std;

int main()

cout<

}for(n=2; n<=23; n+=3) //求出多個不同的e

cout<

}result=0;

temp=1;

for(n=1; n<=23; n++) //求出多個不同的e}

c++迴圈類的一道題

5樓:匿名使用者

遞迴演算法。

不是將n的值加1了,而是沿原路返回計算。

m=n*f(n-1);//

cout<<"離開n="<

每次執行f(n-1)時下面的這條語句就沒執行,當n減到1了,開始執行下面這條語句,效果看起來好像是n加1。

乙個比較簡單的迴圈語句題 c++

6樓:璀璨叵儍瀦

i = j j賦值給i

i==j i等於j

第一次迴圈 i = j 此時 i等於5,5為真值第二次迴圈 i=j 此時 i等於4, 4為真值當第5次時 i=j i 為 0 , 0為假值迴圈結束

一道c++的選擇題 (關於迴圈次數)

7樓:

所有表示式都有個值、賦值表示式的值就是被賦的值,也就是等號右邊的值這裡是i=j=5!只要是整數都可以判斷真假,c,cxx,0為假,一切其他值為真!浮點數暫時還不知道行不行!

8樓:匿名使用者

你需要了解一下賦值語句作為判斷條件時是個什麼情況。

這題的答案是b,實際上相當於j遞減到0後終止迴圈。

9樓:匿名使用者

沒有跳出條件.

i=0進去,j=5進去的.

i = 1,j=4;

i=2,j=3;

i=3,j=2;

i=4,j=1;

i=5,j=0;

跳出條件按這題的條件判斷就是i=j;

只要i!=j,就一直迴圈,

當然,我還沒學c++呢,我現在只學到c的結構部分.你中間那句我看不懂,反正我就看跳出條件.for中的 跳出條件,和for裡面i++,j--;

10樓:匿名使用者

b,5次,你說的沒有錯,第二個表示式是判斷執行條件的。

但是你要搞清楚第二個表示式是哪個,在你這裡 i=j;作為第二個表示式。

你的第乙個表示式是個逗號表示式 int i=0,j=5;作為乙個整體,屬於一句話。只有分號才是一句話結束的標誌。你的第三句話是個空語句。

因為你的判斷語句為i=j;這條語句的值等於i的值。由於開始的時候j=5,迴圈體內j--,所以第五次的時候j會變成0,然後判斷i=j=0,非零為真,零值為假。此時迴圈結束。

c語言for迴圈 一道題求解析,C語言for迴圈 一道題求解析

的優先順序比 的優先順序高些,所以是先自加,然後取餘,最後才是比較 還有乙個要提醒的是,mian 函式前面一定要帶上int,當然void也可以通過編譯,但是void不符合標準,這些雖然是小問題也是要注意的,另外你的第一行 就錯了,應該是 include 夜 逍遙 if x 2 0 等價於 if x ...

一道C 程式設計題,一道c 程式設計題

看了介面有返回值,就不敢直接動輸入 用了複製和記憶體釋放,然而我想多了.include char fun char str for i 0 i s str,text free text return 0 ggoi romndno good morningprocess returned 0 0x0 ...

一道C語言程式設計題,一道C語言程式設計題

order.h中的 void mintomax int a order.c中的 include order.h void mintomax int a main.c中的 include include order.h void main printf n 瑜琅 name main.c author ...