#include<stdio.h>
#include<string.h>
#define?MAX_LEN?10
#define?N?150
void?sortstring(char?*ptr[],int?n);
void?swap(char?*ptr1,char?*ptr2);
int?main()
{
int?i,n;
char?name[N][MAX_LEN];
char*pstr[N];
printf("how?many?countries?:");
scanf("%d",&n);
getchar();
printf("input?their?names\n");
for(i=0;i<n;i++)
{
pstr[i]=name[i];
gets(pstr[i]);
}
sortstring(pstr,n);
printf("after?sorted\n");
for(i=0;i<n;i++)
{
puts(pstr[i]);
}
return?0;
}
void?sortstring(char?*ptr[],int?n)
{
int?i,j;char?*temp=NULL;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(strcmp(ptr[j],ptr[i])<0)
{
swap(ptr[j],ptr[i]);
}
}
}
}
void?swap(char?*ptr1,char?*ptr2)
{
char?temp;
temp=*ptr1;
*ptr1=*ptr2;
*ptr2=temp;
}運(yùn)行結(jié)果如圖,程序的目的是想按字典順序排列國(guó)家的名字,我編的程序問(wèn)題在于只交換了第一個(gè)字母,而不是交換指向字符串的指針,不是通過(guò)數(shù)組的首地址可以調(diào)用出數(shù)組元素嗎,那為什么還是只交換一個(gè)字母,問(wèn)題到底出在哪里?求詳細(xì)解答!
3 回答

Object_is_null
TA貢獻(xiàn)1條經(jīng)驗(yàn) 獲得超0個(gè)贊
void swap(char *ptr1,char *ptr2)
{
????char temp[N];
????strcpy(temp,ptr1);
????strcpy(ptr1,ptr2);
????strcpy(ptr2,temp);
}
//用一個(gè)字符數(shù)組做中間變量

qq_一尾沉默的魚(yú)_0
TA貢獻(xiàn)1條經(jīng)驗(yàn) 獲得超0個(gè)贊
把swap函數(shù)中的temp都換成*temp試試。char只能定義一個(gè)字符,不能操作字符串。
- 3 回答
- 0 關(guān)注
- 1846 瀏覽
添加回答
舉報(bào)
0/150
提交
取消