找错
#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;j++)
for(i=0;i<n-j;i++)
{
if(p>p)
{
temp=p;
p=p;
p=temp;
}
}
for(i=0;i<n;i++)
printf("%d ",p);
return 0;
} 本帖最后由 jitianmoshen 于 2020-12-20 16:02 编辑
dsadas jitianmoshen 发表于 2020-12-20 15:54
怎么会是n-1,每次循环都要比较n-1次?比较n-1-j次才对 外层循环是j<n-1,n个数只要循环n-1次 for(j=0;j<n;j++)//这里
for(i=0;i<n-j;i++)
{
if(p>p)
{
temp=p;
p=p;
p=temp;
}
}
这里错了,应该是从1开始的
修改后为
#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=1;j<n;j++)
for(i=0;i<n-j;i++)
{
if(p>=p)
{
temp=p;
p=p;
p=temp;
}
}
for(i=0;i<n;i++)
printf("%d ",p);
return 0;
}
页:
[1]