C编程问题,请帮忙

来源:百度知道 编辑:UC知道 时间:2024/04/30 04:50:14
本题一个用起泡法对10个数进行排序,为什么输出的答案老不对#include<stdio.h>
void main()
{ int a[10];
int i,j,t;
printf("input 10 numbers\n");
scanf("%d",&a[i]);
printf("\n");
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(a[i]>a[i+1])
{t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf("the sorted numbers:\n");
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
}

#include<stdio.h>
void main(){
int a[10];
int i,j,t;
printf("input 10 numbers\n");
/*=========错在这里,不用循环怎么输入10个数==========*/
scanf("%d",&a[i]);
/*===================================================*/
printf("\n");
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(a[i]>a[i+1]) {t=a[i];a[i]=a[i+1];a[i+1]=t;}
printf("the sorted numbers:\n");
for(i=0;i<10;i++) printf("%d\t",a[i]); /*这里应用\t或空格把数分开*/
printf("\n");
}

输入有问题像楼上所说的.但是这个循环也错了.就从数据的个数上来讲也部队啊,这下面的分明是对9个数操作啊.
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(a[i]>a[i+1])
{t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
应该为
for(j=0;j<10-1;j++)
for(i=j+1;i<10;i++)
if(a[i]>a[i+1])
{t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}

好好想想,你的到底是什么错....

楼上的眼睛很亮哦,一下就看出是输入时