void main()
{int high = 9,low = 0,m,k,a[10]={1,2,3,4,5,6,7,8,9,10}//hing和low赋初值
scanf("%d",&k)
while (high>=low)//>=
{
m=(high+low)/2
if(k<a[m]) high=m-1//比较的是数值而不是下标
else if(k>a[m]) low=m+1
else
{
printf("yes")
return//这两句地方放错了
}
}
printf("no")
return//if语句去掉
}
#include <stdio.h>#include <string.h>
int Binarysearch(int w[],int n,int x) {
int m,high = n - 1,low = 0
while(low <= high) {
m = (low + high)/2
if(x == w[m]) return m
else if(x > w[m]) high = m - 1
else low = m + 1
}
return -1
}
int main() {
int i,j,n,t,index,scr
char name[1000][23],tmp[23]
int score[1000]
printf("输入要统计的学生个数:")
scanf("%d",&n)
for(i = 0i < n++i) {
scanf("%s%d",name[i],&score[i])
}
for(i = 0i < n - 1i++) {
for(j = 0j < n - i - 1 j++) {
if(score[j] < score[j + 1]) {
t = score[j]
score[j] = score[j + 1]
score[j + 1] = t
strcpy(tmp,name[j])
strcpy(name[j],name[j + 1])
strcpy(name[j + 1],tmp)
}
}
}
printf("学生姓名和C语言课程的成绩从高到低输出:\n")
for(i = 0i < n++i)
printf("%s\t%d\n",name[i],score[i])
printf("\n输入要查找的成绩:")
scanf("%d",&scr)
index = Binarysearch(score,n,scr)
if(index >= 0) printf("%s\t%d\n",name[index],score[index])
return 0
}