你前面有一个 a=getchar();,输入完a的字符之后一按回车,a就被赋了你输入的那个字符,剩一个回车字符,就传到Scanf函数里去了,看起来就是被跳过了
创新互联建站是一家集网站建设,通渭企业网站建设,通渭品牌网站建设,网站定制,通渭网站建设报价,网络营销,网络优化,通渭网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
void selection_sort(int array[],int n)
{
int i;
int max;
if (n == 1)//------------------
{
return;
}
else if(n == 2)//------------------
{
if (array[0] array[1])
{
max = array[0];
array[0] = array[1];
array[1] = max;
}
return;
}
else
{
if (array[0] array[1])
{
max = array[0];
}
else
{
max = array[1];
}
for(i = 2; i n; i++)
{
if (array[i] max)
{
max = array[i];
}
}
for (i = 0; i n; i++)
{
if (max == array[i])
{
array[i] = array[n];
array[n] = max;
n--;
goto done;
}
}
}
done:
selection_sort(array,n - 1);
}
你猜的没错,是会多出一个回车的,因为scanf_s("%d",i);只获取了输入流中的整数,跳到第一个gets函数时,它会获得之前剩下的回车,如果输入流为空,那么它会等待用户输入。
修改方式:你在goto start;之前加上一个getchar();来获取那个回车符,然后再跳转。
中间变量溢出。C语言是一种计算机程序设计语言,因为中间变量溢出导致在主函数定义好另一个函数后跳过运行的,是可以作为系统设计语言,编写工作系统应用程序。