题目:
//上机实验题1--统计求最大最小元素的平均比较次数 /*随机产生10个1~20的随机整数,设计一个算法找其中最大元素和最小元素,并统计元素之间的比较次数*/ #include<stdio.h> #include<stdlib.h> #include<time.h> #define MAXN 10 void randa(int a[],int n){ int i; for(i=0;i<n;i++) a[i] = rand()%20+1; } void MaxMin(int a[],int n,int &comp){ int i,max,min; max = min =a[0]; comp=0; for(i=1;i<n;i++){ comp++; if(a[i]>max) max = a[i]; else{ comp++; if(a[i]<min){ min = a[i]; } } } for(i=0;i<n;i++) printf("%3d",a[i]); printf(" :最大值 = %d,最小值 = %d,比较次数 = %d",max,min,comp); } int main(){ int a[MAXN]; int m,count=0,comp,sumcomp; srand((unsigned)time(NULL)); // for(m=1;m<=10;m++) { printf(" 第%2d组:",++count); randa(a,10); MaxMin(a,10,comp); sumcomp += comp; } printf(" 平均比较次数 = %g",1.0*sumcomp/10); }