请教关于C语言编程的问题!谢谢

[复制链接]
查看11 | 回复1 | 2008-12-21 08:56:26 | 显示全部楼层 |阅读模式
问题:有15个数按由小到大的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数组中第几个元素的值.
源程序如下:
#include
#define N 15
main()
{int i,number,top,mid,bott,loca,j,a[N],flag=1,sign=1;
char c;
printf("enter date:\n");
scanf("%d",&a[0]);
i=1;
while(i=a[i-1])

i++;
else
printf("enter this data again:");
}
printf("\n");
for(i=0;ia[N-1]))

loca=-1;
while((sign==1)&&(top<=bott))

{mid=(bott+top)/2;

if(number==a[mid])

{loca=mid;

printf("find %d,its position is %d \n",number,loca+1);

sign=0;

}

else if(number<a[mid])

bott=mid-1;

else

top=mid+1;

}
if(loca==-1||sign==1)

printf("not found.\n");
printf("continue or not(Y/N)?");
scanf(" %c",&c);
if(c=='N'||c=='n')

flag=0;
}

getch();
}
疑问:倒数第六行的"scanf(" %c",&c)"语句中%c前的空格的作用是什么?为什么不加空格就不能实现.
请高手详细指点,谢过!

回复

使用道具 举报

千问 | 2008-12-21 08:56:26 | 显示全部楼层
我仔细看了一下你前面的代码,然后觉得问题应该是在这里:类似scanf("%d",&n)的输入函数,输入 一个整数后,总是需要有回车或者空格 来结束这个整数的输入n只是收入了输入的整数,而不包括最后的回车或者空格回车或者空格依旧保存在系统的输入流里面当你用scanf("%c",&c); 时,在接受你输入的字符前,已经将回车或者空格存在了c中,所以实现不了预期想的有了scanf(" %c",&c);中的空格,说明不管前面输入流里面有什么,先要求用户输入空格,此时刚才的回车和空格不会自动赋值到c上,而是你自己输入的值。我以前一般是这样做来避免不必要的麻烦的:scanf("%d",D);getch...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行