C语言程序设计 姓名排序

#include<stdio.h>
#include<string.h>
void main(void)
{
int i,j,k;
char name[10][80],temp[80];
//printf("please enter :");
for(i=0; i<10; i++)
gets(name[i]); /* 输入姓名数组 */
for(i=0; i<9; i++) /* 排序 */
{
k = i;
for(j=i+1; j<10; j++)
if(strcmp(name[k],name[j])>0)
k = j;
if(k!=i)
{
strcpy(temp,name[i]);
strcpy(name[i],name[k]);
strcpy(name[k],temp); /* 交换 */
}
}
for(i=0; i<10; i++)
puts(name[i]); /* 输出姓名数组 */
}

为什么中间那部分 k=i的时候不再if里面,下面k!=i就在if里了?还有name[i]和name[k]也没有判断大小啊为什么就要叫唤呢求告诉谢谢....

k==i 说明排序前k,i指向一个人的id,排序后还是指向一个人,所以没必要交换

strcmp(name[k],name[j])>0 strcmp 字符串比较函数,
这是一个选择排序算法,每趟求出最大人名的下标,并交换
温馨提示:答案为网友推荐,仅供参考