1樓:回頭的世界
以下為在vc++6.0環境下對程式效率(時間,空間)分析的過程和結論:
1 程式**
#include "stdafx.h"
#include
int main()
;int max;
max=number[0];
for(int i=1;i<10;i++)
}if (max if (max if (max if (max if (max if (max if (max if (max if (max return 0; }2 問題提出: 上面程式**查詢10個數中的最大值,分別使用for +if語句,和9個單獨的if語句,請問上述兩種方法, 哪一種程式效率較高?為什麼? 3 分析 3.1 for+if語句的反彙編** 13: for(int i=1;i<10;i++) 00401074 mov dword ptr [ebp-30h],1 0040107b jmp main+76h (00401086) 0040107d mov ecx,dword ptr [ebp-30h] 00401080 add ecx,1 00401083 mov dword ptr [ebp-30h],ecx 00401086 cmp dword ptr [ebp-30h],0ah 0040108a jge main+94h (004010a4) 14:19: } 004010a2 jmp main+6dh (0040107d) 3.2 獨立的9個if語句的反彙編**(以第一個if語句為例) 22: if (max 004010a4 mov eax,dword ptr [ebp-2ch] 004010a7 cmp eax,dword ptr [ebp-24h] 004010aa jge main+0a2h (004010b2) 23:3.3 分析: 1)使用for + if ,每次迴圈需要執行13個彙編**,迴圈**最大可能執行:9 * 13 = 117條指令; 2)使用獨立if語句,每次執行5條判斷語句,9個if**判斷最大執行**量為9 * 5 = 45 條指令; 程式效率分析(執行時間和佔用記憶體空間的分析)因此從程式時間效率上分析,2)的時間效率會比較高。但從空間 上分析,1)的效率會比較高,迴圈執行一共使用15條指令;2)的效率不高(45條指令空間)。 實際的程式設計使用建議 :一般實際使用1)方法的話,**會比較容易維護,2)在實際應用中顯得不是很專業的做法! 2樓:匿名使用者 兩種演算法的程式效率應該相當的吧,時間複雜度都為o(10)糾正一個錯誤:定義變數 int number[10],int max; 要麼把逗號改成分號,要麼就把int去掉 希望回答對你有幫助。 3樓:洪濡霈 用9個if的效率高,但是用for語句比較簡潔,易修改。 原因很明顯,for迴圈裡同樣做了9次比較和賦值,但是還多出了9次對i的賦值和比較操作。 其實不必計較這個的,基本沒人會用9個if 4樓:匿名使用者 這個 最壞情況下都是常量時間 o(1) 所以是一樣的 假設有n步 for 迴圈和if 都是 o(n) 所以 比這個是沒意義的這個for 能迴圈n次 if你能複製n次嗎??? 5樓:匿名使用者 for高,cpu會把for的迴圈塊放進cache再進行運算。如果你的if語句太長甚至都不能整個的放進去。 c語言中能不能只用if語句實現迴圈?如何用if語句實現迴圈?以下面這個程式為例 6樓:佛火天下 哈哈,你只執行了第一步,if可以迴圈,但是要用到goto語句,你和goto語句搭配用肯定木有問題的啦 你這是邏輯錯誤+語法理解不到位 不過我也看出來了,你應該學完了c,不過還很萌那種,重複,重複,重複.,記憶記憶記憶,熟能生巧啦 7樓:匿名使用者 基本概念學得不紮實啊。 程式設計的三種基本結構:順序,條件,迴圈。 如果非要用if來做,可以寫個遞迴的函式來求階乘: #include int f(int n) int main() 8樓:chong詠 親,,if只是判斷,,建議你把if改成while 9樓:友雅唱 #include int main() printf("%d\n",s); return 0;} 10樓:匿名使用者 if實現得用goto語句吧? c語言中if和else if用的多會不會讓程式變慢?我用了幾十個了 11樓:go學龍 這要看你對程式的效率要求有多高。。。一般程式無所謂啦 但如果你要求高,,,幾十個if-else if估計有一定影響。。。 12樓:匿名使用者 不會的,你用幾百個也不會慢,迴圈做錯了才會變慢 c語言for迴圈巢狀if語句 13樓:匿名使用者 兩種方法,一種是重新賦值,程式段如下 for(i=0;i本層迴圈,由於賦值i=-1,執行完//break語句之後,執行外層迴圈i++指令,使得//i=0;外層迴圈相當於重新開始,j的值無需處理,//因每次進入內層迴圈,j值均會被for語句賦初值0}第二種方法是無條件轉移指令: sign: for(i=0;i 一般情況下,應當避免使用goto無條件跳轉指令,因為很多人認為程式可讀性會因為goto的引入而變差,但是在不少情況下goto可以使得程式**簡單,效率提高,個人認為適當使用goto指令並無不可,樓主可自己作出選擇。 14樓:繆立軍 int flag = 0; for (int i=0;i條件成立 if (flag) break; }是要實現這個麼 15樓:兔子和小強 for(i=0; i<10; ++i)}} 16樓:ylf塵風 for(i=0;條件;i++) for(j=0;條件;j++) if(成立) 17樓:毋迎南彭菲 c語言裡if語句裡是可以巢狀for迴圈的(if語句裡可以放c語言裡的任意的執行語句)。 舉例說: char yn;int i;printf("需要列印1到10之間的所有奇數嗎(y/n)?\n"); scanf("%c",&yn); if(yn=='y'||yn=='y') else printf("那就不列印了\n"); 在c++中if語句和case語句哪一個執行效率更高 18樓:戎彗羊舌賓白 實際上case1啥也不幹,但是由於case1後面沒有break語句執行完case1會繼續執行case2,直到遇到break語句,同理如果顯示x,那就說明執行了case2因為case2後面沒有break語句所以程式會執行case3和case4,直到遇到break,**還不明白可以hi我 19樓:匿名使用者 case執行語句的效率高些,if語句的執行對系統的開銷大些 20樓:匿名使用者 case 夠直觀,但執行效率不及if高。 如果對執行速度有要求,建議使用if, 否則,還是使用case,因為它夠直觀。 if 條件1 if 條件2 if 條件3 if 條件n 當 條件1,條件2,直到 條件n,當所有的條件都為真,才執行 if 條件1 語句1 else if 條件2 語句2 if 條件3 語句3 if 條件n 語句n 當 條件1,條件2,直到 條件n,當所有的條件都為假,才執行 語句n.條件1 為真,... 有好多的 例如 1 一個人炫耀什麼,說明內心缺少什麼 2 一個人越在意的地方,就是最令他自卑的地方。3 人都有以第一印象定好壞的習慣,認為一個人好時,就會愛屋及烏,認為一個人不好時,就會全盤否認。4 人越是得意的事情,越愛隱藏,越是痛苦的事情越愛小題大作。5 這個世界既不是有錢人的世界,也不是有權人... if a 1 and a 2 and a 3.then 需要滿足所有條件則執行if if a 1 or a 2 or a 3.then 滿足其中個一就執行if if a 1 then按順序判斷條件,如滿足其中一條,則不執行下面的elseif elseif a 2 then elseif a 3 th...多個if語句和多個if else語句的區別
于丹的經典語句,人生經典語句
VB IF語句問題,vb中的if語句問題