一个小程序中的疑问 多谢

一个小程序中的疑问 谢谢
#include <stdio.h>
int main()
{
  int i,j,p,q,s,a[10];
  printf("\n input 10 numbers:\n");
  for(i=0;i<10;i++)
  scanf("%d",&a[i]);
  for(i=0;i<10;i++)
  {
  p=i;
q=a[i];
  for(j=i+1;j<10;j++)
  if(q<a[j]) 
{
p=j;
q=a[j]; 
}
  if(i!=p) [color=#FF0000][/color]这个if语句程序段的每一步的作用是什么?  
  {
s=a[i];
  a[i]=a[p];
  a[p]=s; 
}
  printf("%d ",a[i]);
  }
}





------解决方案--------------------
程序将一组数按降序排列
你说的if语句的那一段是 先判断i不等于p是否成立,如果成立则进入if语句段
实现了a[i]和a[p]值的交换。。