为啥
本帖最后由 一世轻尘 于 2020-12-20 16:26 编辑#include<stdio.h>
#include<stdlib.h>
int main()
{
int n,i,j,temp;
int*p;
printf("请输入一个整数n:\n");
scanf("%d",&n);
p=(int*)malloc(n*sizeof(int));
printf("请输入n个整数:\n");
for(i=0;i<n;i++)
{
scanf("%d",&p);
}
for(i=0;i<n;i++)
{
printf("%d ",p);
}
printf("\n");
for(j=0;j<n-1;j++)
for(i=0;i<n-1-j;i++)
{
if(p>p)
{
temp=p;
p=p;
p=temp;
}
}
for(i=0;i<n;i++)
printf("%d ",p);
return 0;
}擦,我又来了,如果这样把j<n-1,i<n-1-j改为j<n,i<n-j为啥会出现这个结果,而改为j<n,i<n-1就又能正常排序了 去掉第15行到第18行,这四行没有意义,程序没有问题 风过无痕1989 发表于 2020-12-20 16:36
去掉第15行到第18行,这四行没有意义,程序没有问题
问题在这 一世轻尘 发表于 2020-12-20 16:38
问题在这
我晕,你少了一副花括号
for (j = 0;j < n - 1;j++)
{ // 少了花括号
for (i = 0;i < n - 1 - j;i++)
{
if (p > p)
{
temp = p;
p = p;
p = temp;
}
}
} // 少了花括号 风过无痕1989 发表于 2020-12-20 16:40
我晕,你少了一副花括号
不少的,里面就一个for循环,可以不加的,而且加了也不对,排序后第一个还是0 一世轻尘 发表于 2020-12-20 16:38
问题在这
for (j = 0;j < n;j++)
{
for (i = 0;i < n - j;i++)
{
if (p [ i ] > p[ i + 1 ])
对于输入10个整数,可以看出,i = 9 时,p[ i + 1 ] = p = p 越界了
页:
[1]