神武2手游顶格子技巧:C语言 退出程序的控制问题?

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/06 13:43:40
//折半查找法,找出一个数在有序数组元素中的位置
#include"stdio.h"
#define N 5
void main()
{
int i,number,top,bott,mid,loca,a[N],flag=1,sign;
char c;
//下面是输入数据
printf("enter data:\n");
scanf("%d",&a[0]); //输入第一个数,不要放在下面的
while(i<N) 中输入,因为等下要有个数做比较
i=1;
while(i<N) //检查数是否已输入完毕
{
scanf("%d",&a[i]);
if(a[i]>=a[i-1]) //如果输入的数不小于前一个数
i++; //使数的序号加1
else
printf("enter data again:\n"); //要
求重新输入此数
}
printf("\n");
//下面是输出排列好的数据
for(i=0;i<N;i++)
printf("%3d",a[i]);
printf("\n");
//下面是利用折半查找法查找number在数组中的位置
while(flag)
{
printf("input number to look for:"); //问你
要查找哪个数
scanf("%d",&number); //输入要查找的数
sign=0; //sign=0代表该数尚未查找到
top=0; //top是查找的起始位置
bott=N-1; //bott是查找区间的最末位置
if((number<a[0]) || (number>a[N-1])) //要查的
数不在查找区间内
loca=-1; //loca=-1要查的
数不在正常范围内,注意,loca不是等于0
while((!sign) && top<=bott) //合适查找条件
{
mid=(top+bott)/2;
if(number==a[mid])
{
loca=mid;
printf("Has found %d,its position is %d\n",number,loca+1); //注意下标是从0开始的
sign=1; //查找完成
}
else if(number<a[mid]) //如果查找的
数小于中间元素的值
bott=mid-1; //只需要从下标为
top到mid-1的范围内查找
else //如果查找的数大于中间元素的值
top=mid+1; //只需要从下标为
mid到bott的范围内查找
}
if(sign==0 || loca==-1) //sign为0和loca等于-1,
表示查不到
printf("can not find %d.\n",number);
printf("continue or not(Y/N)?\n"); //问我们是
否要继续查找
c=getchar();
if(c=='n'||c=='N') //如果不需要查
找,结束程序运行
flag=0;
}
}
****************************************************************
问题就是最后的if(c=='n'||c=='N'),我输入N就能退出程序,但是输入n就不可以。奇怪了,其他就没什么,运行也通过了。
就这个问题,希望大家能帮帮忙,在此感谢大家了
本程序没有什么错的
只是一些小细节的问题
就是if(c=='n'||c=='N')的问题
当输入‘N’的时候运行可以结束,但是输入小写‘n’的时候却不能,我用的是Microsoft Visual C++ 6.0调试的

你写的好像没问题!

怎么不行阿,4过了,当然行

我试过了可以啊程序对着呢·

no