不用(a+b)/2求兩數平均值算法
#include<stdio.h> #include<stdlib.h> void average(int a, int b) { while (a < b) { a = a + 1; b = b - 1; } while (a > b) { a = a - 1; b = b + 1; } if (a == b) printf("平均值爲:%d\n", a); } int main() { int a = 0; int b = 0; scanf("%d%d",&a, &b); average(a,b); system("pause"); return 0; }
//以上算法容易產生溢出,用簡單的算法便可解決ide
#include<stdio.h> #include<stdlib.h> int main() { int a = 0; int b = 0; int avg = 0; printf("請輸入要算平均值的數:\n"); scanf("%d%d", &a, &b); avg = a - (a - b) / 2;//或者avg=a&b+(a^b)>>1; printf("avg=%d", avg); system("pause"); return 0; }