#include<stdio.h>int main(){ int a[10],i,j,t; printf("请输入十个数\n"); for(j=0;j<10;j++) scanf("%d",&a[j]); for(i=0;i<10;i++) { for(j=0;j<10-i;j++) { if(a[j]>a[j+1]) t=a[j];a[j]=a[j+1];a[j+1]=t; } for(j=0;j<10;j++) printf("%-5d",&a[j]); printf("\n"); }}
1 回答
已采纳
Absolute_Duo
TA贡献13条经验 获得超1个赞
你这个是冒泡排序吧,有两个问题:
1、 if(a[j]>a[j+1])
t=a[j];a[j]=a[j+1];a[j+1]=t;
这个if语句后面的内容应用{}括上
if(a[j]>a[j+1])
{ t=a[j];a[j]=a[j+1];a[j+1]=t; }
2、冒泡的二重循环应该是
for(i=1;i<10;i++) //如果i从0开始那么内循环为for(j=0;j<10;j++)则最后j=9然而a[j+1]就是a[10]超出数组范围
{
for(j=0;j<10-i;j++)
{
- 1 回答
- 0 关注
- 1069 浏览
添加回答
举报
0/150
提交
取消