main()
{
int i,j,p,q,s,n,a[11]={127,3,6,28,54,68,87,105,162,18};/*定义i,j,q,p,s,n和a[11],并对a数组赋值*/
for(i=0;i<10;i++)
{p=i;q=a[i];/* 用p存储i的数值,也就是记住数组的下标。用q记录a[i]的数值,用作比较 */
for(j=i+1;j<10;j++)
if(q
if(p!=i)/* 如果p值不等于原来的i,也就是说数值经过改动,就转换a[i]和a[j]的数据 */
{
s=a[i];
a[i]=a[p];
a[p]=s;
}
printf("%d ",a[i]); /* 打印a[i]的值 */
}
/*数组排序完毕,升序排列 */
printf("\ninput number:\n");
scanf("%d",&n);/* 输入n的值*/
for(i=0;i<10;i++) /* n值与数组中的数值逐一比较 */
if(n>a[i])
{for(s=9;s>=i;s--) a[s+1]=a[s];/* 如果n值大于数组中某一数值 */
break;}/*将数组的数值向后移一位,并跳出循环*/
a[i]=n;/*将原来的a[i]值,重新赋为n值。*/
for(i=0;i<=10;i++)
printf("%d ",a[i]);
printf("\n");/* 打印被重新赋值的数组*/
}
/*这段程序的作用是把原来的数组升序排列,并输入一个新的数值加入到合适的位置 */
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第2个:main()
{
char st[20],cs[5][20];
int i,j,p;
printf("input country's name:\n");
for(i=0;i<5;i++)
gets(cs[i]); /* 逐一输入姓名,大小为单次输入最大20个字符 */
printf("\n");
for(i=0;i<5;i++)
{ p=i;strcpy(st,cs[i]);/* 拷贝姓名到数组st中*/
for(j=i+1;j<5;j++)
if(strcmp(cs[j],st)<0) {p=j;strcpy(st,cs[j]);}/*用st逐一与数组字符元素比较,如果st大于cs中的字符,就把st重新赋值为cs[j],并把哨兵变量p重新赋值为cs[j]的下标j*/
if(p!=i)
{
strcpy(st,cs[i]);
strcpy(cs[i],cs[p]);
strcpy(cs[p],st);
}/*交换字符数组cs的数值 */
puts(cs[i]);}printf("\n"); /* 打印交换后的字符串 */
}
/*这个程序的作用是把一个字符数组(5行)赋值,并升序排列。主要运用的是函数strcpy,strcmp */
####################################3
解释得不一定正确,但出发点是正确的。谨作参考。