break函数问题
不明白的地方在代码红色标记处。下面有运行截图,大牛帮忙分析下。#include<stdio.h>
#include<stdlib.h>
int main()
{
int n, *p, i, j, temp, temp1;
while(1)
{
printf("请输入N,进行N个数的排序插入\n");
scanf("%d",&n);
p=(int *)malloc(sizeof(int) *(n+1));
for(i=0;i<n;i++)
scanf("%d",p+i);
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{
if(p[i]>p[j])
{
temp=p[i];
p[i]=p[j];
p[j]=temp;
}
}
printf("请输入你要插入的数\n");
int a;
scanf("%d",&a);
if(a>p[n-1])
p[n]=a;
else{
for(i=0;i<n;i++)
if(p[i]>a)
{
temp=p[i];
p[i]=a;
for(j=i+1;j<=n;j++)
{
temp1=temp;
temp=p[j];
p[j]=temp1;
}
break; //这里break就是当if语句执行完跳出for循环,能够实现正常的插入
}
//break //这里的break应该是for循环执行完,跳出else。但是为啥会没有值输出,而且程序就直接结束了,就是这里不明白
}
for(i=0;i<=n;i++)
printf("%d ",p[i]);
printf("\n");
free(p);
}
return 0;
}
[此贴子已经被作者于2017-3-23 13:30编辑过]