参考答案:
#include
{ float score[10]={78,98,65,45,68,94,81,86,57,96},below[10],sum=0,aver; int i,j=0; printf(\个同学成绩为:\ for(i=0;i<10;i++) //输出数组中10个成绩 printf(\ \ for(i=0;i<10;i++) //求10个成绩之和 sum=sum+score[i]; aver=sum/10; // 求出平均值 for(i=0,j=0;i<10;i++) //遍历每个成绩 if(score[i]
运行结果:
(7) 请完善程序sy4-7.c,N 个有序整数数列已放在一维数组中,利用“折半查找算法”查找整数 m 在数组中的位置。若找到,则返回其下标值;反之,则返回\。 算法分析:
前提:数组中的元素已递增有序; 折半查找基本思路:查找过程中采用跳跃式方式查找,首先确定查找范围的下限为第一个元素的下标( low=0; ),上限为最后一个元素的下标( high=N-1; ),再折半计算出在此范围内的中间元素下标( mid=(low+high)/2; ) ;比较该中间元素a[mid]和查找数据m的关系有三种可能:若等于( m==a[mid] ),则找到结果,用k记其位置( k=mid; ),并结束查找( break; ) ;若大于( m>a[mid] ),则查找数据可能在中间元素的后半部分,修改查找范围的下限为mid+1(low=mid+1; );若小于( m
#define N 10 void main( )
{ int i,a[N]={-3,4,7,9,13,24,67,89,100,180},k,m,low,high,mid; //low,high-查找数组元素范围的下标 printf(\数组中的数据如下:\ for(i=0;i< N;i++) printf(\ printf(\ printf(\ scanf(\ low=0;high=9; //设置初始查找范围 while(low<=high) //有查找范围,进入循环 { mid=(low+high)/2; //求mid,查找范围的中间元素下标 if(m==a[mid]) //如果中间元素等于被查找数,找到,跳出循环 { k=mid; break; } else if(mhigh , 已经没有查找范围了 }
运行结果: