#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;
}运行结果如图,程序的目的是想按字典顺序排列国家的名字,我编的程序问题在于只交换了第一个字母,而不是交换指向字符串的指针,不是通过数组的首地址可以调用出数组元素吗,那为什么还是只交换一个字母,问题到底出在哪里?求详细解答!
3 回答
Object_is_null
TA贡献1条经验 获得超0个赞
void swap(char *ptr1,char *ptr2)
{
char temp[N];
strcpy(temp,ptr1);
strcpy(ptr1,ptr2);
strcpy(ptr2,temp);
}
//用一个字符数组做中间变量
- 3 回答
- 0 关注
- 1790 浏览
添加回答
举报
0/150
提交
取消