按学号由小到大顺序输入学生的学号和成绩,从键盘任意输入一个学号,然后查找其成绩

#include<stdio.h>
int binsearch(long a[],int n,long x);
int main()
{   const int N=40;
	long num[N],x;
	int i,n,pos;
	float score[N];
	printf("please enter the total number:");
	scanf("%d",&n);
	printf("please enter the total and score:\n");
	for(i=0;i<n;i++)
	{ 
	   scanf("%ld%f",&num[i],&score[i]);
	}
	printf("please enter the searching number:");
	scanf("%ld",&x);
	pos=binsearch(num,n,x);
	if(pos!=0)
	{
		 printf("score=%4.0f\n",score[pos]);*调用函数已经找到该学号的下标*
	}
	else
	{ 
	     printf("not found!\n");
	}
	return 0;	
}
int binsearch(long a[],int n,long x)
{
	 int mid;
	 int low=0;
	 int high=n-1;
	 while(low<=high)
	 {
	 	 mid=(high+low)/2;
	 	 if(x>a[mid])
	 	 { 
	 	    low=mid+1;
		  }
		  else if(x<a[mid])
		  {
		  	 high=mid-1;
		  }
		  else
		  {
		  	return mid;*返回的其实是下标*
		  }
	 }
	 return -1;
}
上一篇:归并排序算法的C++实现


下一篇:leetcode-373:查找和最小的 K 对数字