C语言编程排序问题(冒泡法)

来源:百度知道 编辑:UC知道 时间:2024/06/11 16:21:48
请求各位该程序看下有何错误?为何每次输出都是照原来的顺序输出,而不是按从小到大的顺序输出?
...........(省略)
main()
{
int i,j,k,t,a[8];
for(i=0;i<8;i++)
scanf("%d ",&a[i]);
for(t=1;t<8;t++)
for(j=1;j<8-t;j++);
{if(a[i]>a[i+1])
t=a[i];
a[i]=a[i+1];
a[i+1]=t;}
for(i=1;i<8;i++)
printf("%d ",a[i]);

正确的程序如下:
正确的程序如下:
#include "stdio.h"
void main()
{
int i,j,t,a[8];/*变量K没用*/
for(i=0;i<8;i++)
scanf("%d",&a[i]);/*%d后不能加空格*/
for(j=1;j<8;j++)/*此处你用的变量t和下面换位的t产生冲突*/
{
for(i=0;i<8-j;i++)/*for循环后不能加";"*/
{
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
}
for(i=0;i<8;i++)/*输出时i的初值也得从0开始*/
printf("%d ",a[i]);
}

应该是这样的:
#include <iostream.h>
main()
{
int i,j,a[8],t=0;
for(i=0;i<8;i++)
scanf("%d",&a[i]);
for(i=0;i<8;i++)
{
for(j=i+1;j<8;j++)
{
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
for(i=0;i<8;i++)
printf("%d ",a[i]);
}

两哥们的都对呵我就不想重复了。

#include <stdio.h>
int main