输入0的时候会显示一个错误窗口,其他数字都正常

只有输入0的时候有问题,很奇怪

img


这是我的代码
#include"stdio.h"
int dichotomy(int num[],int zuo,int you,int key);
int main()
{
int marks[101];
int i=0;
int n;
int mark;
int rank;
for(n=0,i=100;n<=100,i>=0;n++,i--)
{
marks[n]=i;
}

printf("请输入您的成绩:\n");
scanf("%d",&mark);
if(mark<=100&&0<=mark) 
{
rank=dichotomy(marks,0,100,mark)+1;
printf("您的排名为:%d\n",rank);

}
else
{
printf("您的成绩输入有误,请退出程序重新输入");
}
return 0;
}
int dichotomy(int num[],int zuo,int you,int fen)
{
int mid;
while(zuo<=you)
{
mid=(zuo+you)/2;
if(fen>num[mid])
{
you=mid-1;
}
else if(fen
{
zuo=mid+1;
}
else if(fen=num[mid])
{
return mid;
}
}
return -1;
}

1.else if(fen=num[mid])
这里判断写成赋值了,但是不是很严重的问题。因为前面已经判断了小于和大于,如果既不小于又不大于,那只能是等于了,所以这里直接写else即可,不需要再写条件,写成赋值其实也不影响逻辑。
2.n<=100,i>=0这是个逗号表达式,只有i>=0在起作用,n<=100不起作用,你想都起作用,应该写n<=100&&i>=0
3.你都已经知道输入0会有问题,那断点跟,看代码到底走哪里去了呀

else if(fen==num[mid])

img


没有=比较的,else if(fen=num[mid])要改成else if(fen==num[mid])