题目的要求是给人名排序(人名是拼音)
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
while(strcmp(list[i].name,list[j].name)!=0){
if(list[i].name[0]>list[j].name[0]){
k=list[i],list[i]=list[j],list[j]=k;
break;
}
}
}
}
一直卡着,没变化
我想根据字符串首字符的ASC II值从小到大排序
代码中的k是我定义的一个结构体变量
```c
```_
一般应该是字符串按字典序排序,哪有只根据第一个字符排序的
双重循环下,排序不应该再有while了,改成if。用while就死循环了
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
if(strcmp(list[i].name,list[j].name)>0){
k=list[i],list[i]=list[j],list[j]=k;
}
}
}
修改如下:
for (i=0;i<n-1;i++)
{
for (j=0;j<n-1-i;j++)
{
if(strcmp(list[j].name,list[j+1].name) > 0)
{
k = list[j];
list[j]=list[j+1];
list[j+1]= k;
}
}
}
不要用while循环,直接这样即可
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
if(list[i].name[0]>list[j].name[0]){
k=list[i],list[i]=list[j],list[j]=k;
}
}
}