编写程序,冒泡出了点有关问题,请大家指教

编写程序,冒泡出了点问题,请大家指教#includestdio.hint turn(int *p){int i,j,tfor (i0i7i++){for

编写程序,冒泡出了点问题,请大家指教
#include<stdio.h>
int turn(int *p)
{
int i,j,t;
for (i=0;i<7;i++)
{
for(j=0;j<7-i;j++)
if(p[j+1]>p[j])
{
t=p[j+1]; p[j+1]=p[j]; p[j]=t;
}
for(i=0;i<8;i++)

printf("%3d",p[i]);
printf("\n");

}
}
main()
{
int s[8],a;
for(a=0;a<8;a++)

scanf("%d",&s[a]);
for(a=0;a<7;a++)
turn(s);
}
这道题目是任意输入8个数,然后按顺序排列出来,要用调用函数的,麻烦大家帮我指出为什么我这样会得不出直接的结果,谢谢咯

[解决办法]
for (i=0;i<7;i++)
{
for(j=0;j<7-i;j++)
......

如果对索引关系不能正确把握,就这么处理吧,简单、准确:
for (i=0;i<7;i++)
{
for(j=0;j<7;j++)
...
[解决办法]
这个循环:
for(int i=0;i<6;i++)
for(int j=i;j<7;i++)
就可以冒泡排序了
[解决办法]

探讨
这个循环:
for(int i=0;i<6;i++)
for(int j=i;j<7;i++)
就可以冒泡排序了

[解决办法]
你的程序问题挺多的
(1)for(i=0;i<8;i++)
printf("%3d",p[i]);
printf("\n");在循环中会连续输出
(2)后面for(a=0;a<7;a++)
turn(s);为什么循环调用
[#include<stdio.h>
int turn(int *p)
{
int i,j,t;
for( i=0;i<7;i++)
{
for(j=0;j<7-i;j++)

if(p[j+1]>p[j])

t=p[j+1]; p[j+1]=p[j]; p[j]=t;
}

}

return 0;
}
void main()
{
int s[8],a;
for(a=0;a<8;a++)
scanf("%d",&s[a]);
turn(s);
for(int i=0;i<8;i++)
printf("%3d",s[i]);

}
=C/C++][/code]
你写的冒泡是由大到小排序的,这样是对的了!