发布网友 发布时间:2022-04-24 12:02
共6个回答
热心网友 时间:2022-04-23 15:40
for(j=0;j<10;j++)
这一句 有问题。改为 for(j=0;j<8;j++)
注意 a中只有9项,a[n]最大只能是a[8];
#include<stdio.h>
void main()
{
int a[10]={8,9,1,6,4,2,7,3,5};
int i,j,k;
for(i=0;i<9;i++)
{
for(j=0;j<8;j++)
{
if(a[j]>a[j+1])
{
k=a[j];
a[j]=a[j+1];
a[j+1]=k;
}
}
}
for(j=0;j<9;j++)
{
printf("%d ",a[j]);
}
printf("\n");
}
这是修改过的正确的。
热心网友 时间:2022-04-23 16:58
#include<stdio.h>
void main()
{
int a[9]={8,9,1,6,4,2,7,3,5};
int i,j,k;
for(i=0;i<9;i++)
for(j=i+1;j<9;j++)
{
if(a[i]>a[j])
{
k=a[i];
a[i]=a[j];
a[j]=k;
}
}
for(j=0;j<9;j++)
{
printf("%d ",a[j]);
}
printf("\n");
}
对比一下自己的程序吧 你原来多设了一个数 但是你只有9个冒泡的时候要用双重循环
热心网友 时间:2022-04-23 18:33
首先,你的冒泡排序有问题,冒泡排序是大数沉底,两重循环,丢了9是因为
for(j=0;j<10;j++)这句,以下是改好的程序
#include<stdio.h>
void main()
{
int a[10]={8,9,1,6,4,2,7,3,5};
int i,j,k;
for(i=0;i<=8;i++)
for(j=0;j<=7-i;j++)
{
if(a[j]>a[j+1])
{
k=a[j];
a[j]=a[j+1];
a[j+1]=k;
}
}
for(j=0;j<9;j++)
{
printf("%d ",a[j]);
}
printf("\n");
//getch();
}
热心网友 时间:2022-04-23 20:24
数组元素进行比较的时候,下标不对。
#include<stdio.h>
void main()
{
int a[10]={8,9,1,6,4,2,7,3,5};
int i,j,k;
for(i=0;i<8;i++)
for(j=i;j<8;j++)
{
if(a[j]>a[j+1])
{
k=a[j];
a[j]=a[j+1];
a[j+1]=k;
}
}
for(j=0;j<9;j++)
{
printf("%d ",a[j]);
}
printf("\n");
//getch();
}
热心网友 时间:2022-04-23 22:32
#include<stdio.h>
void main()
{
int a[10]={8,9,1,6,4,2,7,3,5};
int i,j,k;
//for(i=0;i<8;i++)
for(j=0;j<10;j++)
{
if(a[j]>a[j+1])
{
k=a[j];
a[j]=a[j+1];
a[j+1]=k;
}
}
for(j=0;j<9;j++)=>for(j=0;j<10;j++) 9在j[9]中
{
printf("%d ",a[j]);
}
printf("\n");
//getch();
}
热心网友 时间:2022-04-24 00:57
9 被你冒到a[10]去了 a[10]都不存在~
for(j=0;j<10;j++) // 改成for(j=0;j<8;j++)