【求助】关于程序跳过语句的问题啊!!!!
在输入部分的第二个scanf语句 为何不会执行???? 求解!!
/*-----------------------
时间:2014年3月28日 20:24:46
目的:将一系列的数字,从大到小排列
------------------------*/
#include
#include
main(void)
{
int i=0,k=1; //循环变量
int num[100];//排序数组
int temp;//中间变量
int n=0;//计数变量
char end='y';
printf("-----------此程序可以对一组正整数数值进行排序------------\n");
puts("\n\n");
printf("输入0将结束输入!\n");
putchar('\n');
//输入部分
for(i=0;i<100;i++)
{
printf(">>>请输入第%3d个数:",i+1);
scanf("%d",&num[i]);
if(0 == num[i])
{
printf(">>>您输入了数字0,是否将其作为结束标志?(Y/N)\n");
scanf("%c",&end);
if('Y'==end || 'y'==end)
{
i = 100;
break;
}
}
n = i+1;
}
putchar('\n');
//排序部分
for(i=0; i
{
for(k=i+1; k
if( num[i]
{
temp = num[i];
num[i] = num[k];
num[k] = temp;
}
}
//输出部分
printf("最后数列为:");
for(i=0; i
printf("%d ", num[i]);
putchar('\n');
return 0;
}
------解决方案--------------------
printf(">>>您输入了数字0,是否将其作为结束标志?(Y/N)\n");
因为这句printf输出了一个换行符,换行被后面的scanf语句当做输入了
在第二句scanf语句前面加一句getchar();
------解决方案--------------------
在第二个scanf之前加上getchar()来接收第一个scanf的回车字符
for(i=0;i<100;i++)
{
printf(">>>请输入第%3d个数:",i+1);
scanf("%d",&num[i]);
if(0 == num[i])
{
printf(">>>您输入了数字0,是否将其作为结束标志?(Y/N)\n");
getchar();//接收第一个scanf的回车字符
scanf("%c",&end);
if('Y'==end
------解决方案--------------------
'y'==end)
{
i = 100;
break;
}
}
n = i+1;
}
putchar('\n');