程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> 三數據比較大小

三數據比較大小

編輯:關於C
  這裡主要是討論算法的實現,看似簡單,其實不同算法的實現思想不一樣。 假設一個很普通的例子,輸入a,b,c三個整數,按升序排列。 方法一:a,b,c兩兩比較,有6種組合,用if ...else if實現,如下: #include<stdio.h> int main(){ int a, b, c; scanf("%d%d%d", &a, &b, &c); if(a <= b && b <= c)  printf("%d %d %d\n", a, b, c); else if(a < = c && c <= b)  printf("%d %d %d\n", a, c, b); else if(b < = a && a <= c) printf("%d %d %d\n", b, a, c); else if(b < = c && c <= a) printf("%d %d %d\n", b, c, a); else if(c < = a && a <= b) printf("%d %d %d\n", c, a, b); else if(c < = b && b <= a) printf("%d %d %d\n", c, b, a); return 0; }   方法二:覺得上面的分支太多,先a,b比較,如果a>b,則交換;再a,c比較,如果a>c,則交換;最後b,c比較,如果b>c則交換。 #include<stdio.h> int main(){ int a, b, c, t; scanf("%d%d%d",&a, &b, &c); if(a > b){t = a; a = b; b = t;} if(a > c){t = a; a = c; c = t;} if(b > c){t = b; b = c; c = t;} printf("%d %d %d\n",  a, b, c); return 0; }   方法三:設定當前最小值x和最大值z,初始化值均為a,隨著比較的進行,最小值和最大值慢慢更新。變成最後的真實的最大最小值。知道最小最大值,那麼中間值y可以算出來的。 #include<stdio.h> int main(){ int a, b, c, x, y, z; scanf("%d%d%d", &a, &b, &c); //min x;max z x = a; if(b < x) x = b; if(c < x) x = c; z = a; if(b > z) z = b; if(c > z) z = c; y = a + b + c - x - z; printf("%d %d %d\n",  x,  y,  z); return 0; }   另外附帶一題: 輸入正整數n<=30,輸出一個n層的倒三角。例如n=5時,輸出如下: * * * * * * * * *    * * * * * * *      * * * * *        * * *          *  我的實現如下: #include <stdio.h> int main(){ int i, t, j, k; scanf("%d",&i);   for(t = i;  t >= 1; t--){ //先輸出2個空格字符 for(k = i - t;  k > 0;  k--) { printf("  "); }   //後輸出"* "字符 for(j = 2*t - 1; j>=1; j--){ printf("* "); }   //換行        printf("\n"); }       return 0; }  
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved