输入十个数,用冒泡法对其按照从大到小的顺序排列,然后输出。

2025-03-06 17:48:19
推荐回答(3个)
回答1:

你这程序有错,而且是从小到大的顺序排列,先改过来,如下(从小到大顺序排列):
int a[11];
int i,n,t;
printf("input 10 numbers:\n");
for(i=1;i<=10;i++)//这里是循环接收输入的10个数字,存储到数组a中
scanf("%d",&a[i]);
printf("\n");

for(n=1;n<=9;n++) //外部循环
for(i=1;i<=10-n;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=1;i<11;i++) //循环输出已经排列好顺序的数组,如果要从大到小排列就可以在这里把条件改了
{
printf("%3d\n",a[i]);//这里的格式应是%3d,你程序这里错了
}

回答2:

#include
main()
{int a[11]; //定义数组a[11]
int i,n,t;
printf("input 10 numbers:\n"); //输入10个int数字
for(i=1;i<=10;i++) //数组从0开始
scanf("%d",&a[i]);
printf("\n");
//for(n=1;n<=9;n++)
for(i=1;i<=10-n;i++)
if(a[i]>[i+1];)
{t=a[i];a[i]=a[i+1];a[i+1]=t;} //若if为真,a[i+1]与a[i]交换
printf("the sorted numbers:\n");
for(i=1;i<11;i++)
printf("3d%",a[i]); //输出排好序的数字

}

回答3:

#include
main()
{int a[11];//声明能容纳11个元素的int形数组
int i,n,t;
printf("input 10 numbers:\n");//打印提示信息
for(i=1;i<=10;i++)//i从1-10循环10次
scanf("%d",&a[i]);//随着i的值的改变,从键盘接受10个数,存到数组a[11]中
printf("\n");
for(n=1;n<=9;n++)//冒泡循环开始,外循环
for(i=1;i<=10-n;i++)//内循环
if(a[i]>[i+1];)//找出较大的值
{t=a[i];a[i]=a[i+1];a[i+1]=t;}//将交换找到的那两个值,以保证较小的数字在前
printf("the sorted numbers:\n");
for(i=1;i<11;i++)
printf("3d%",a[i]);//遍历打印结果
}
用二重循环实现,外循环变量设为n,内循环变量设为i。外循环重复9次,内循环依次重复9,8,...,1次。每次进行比较的两个元素都是与内循环j有关的,它们可以分别用a[i]和a[i+1]标识,n的值依次为1,2,...,9,对于每一个n,i的值依次为1,2,...10-n。