```c
int a[4] ;
int i,j;
int temp;
printf("请输入4个数: ");
for( i = 0; i < 4; i++ )
{
scanf("%d",&a[i]);
}
for( i = 0; i < 4; i++ )
{
for( j = 0; j < (4-i); j++ )
if( a[j] > a[j+1] )
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
printf("这4个数由小到大的排列顺序如下:");
for( i = 0; i < 4; i++ )
{
printf("%d ",a[i]);
}
printf("\n");
system("pause");
return 0;
```谁可以帮我解释解释 中间的 那几个循环啊
for( i = 0; i < 4; i++ )
{
scanf("%d",&a[i]);
}
//是输入数据。连续输入,
中间是程序的灵魂,整个题的算法,就是题目要求,比较大小
先看里面的for,下面的循环体是前面的数和后面的数比较大小, if 里面是两个数的交换,如果前面的数大就交换两个数,可以知道,这个循环执行完之后,最大的数是放在了最后面,里面的循环实现的是每次循环,找到前面最大的数,放到最后面,之所以条件是j < (4-i); 那是因为每次循环已经把最大的数放到后面了,最后面的数就不用去比较了,这是很经典的冒泡排序
for( i = 0; i < 4; i++ )
{
for( j = 0; j < (4-i); j++ )
if( a[j] > a[j+1] )
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
for( i = 0; i < 4; i++ )
{
printf("%d ",a[i]);
}
//最下面是输出,和输入一样的