#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int n;//国家数量
int i=0;
char *a;
scanf("%d",&n);
char *pcountry=NULL;
for(i=0;i<n;i++)
{
pcountry=malloc(10);
scanf("%s",(pcountry+i));//输入每个国家的英文名称
}
for(i=0;i<n;i++)
{
if(strcmp(pcountry,pcountry+1)<0)
continue;
else
{
*a=*pcountry;
pcountry=(pcountry+1);
*pcountry=a;
}
}
for(i=0;i<n;i++)
{
printf("%s",(pcountry+i));//把国家名称按字典顺序输出
}
return 0;
}
程序逻辑因为你的国家变量不是数组这个是混乱了。
pcountry=malloc(10);
scanf("%s",(pcountry+i));//输入每个国家的英文名称
把pcountry当数组用了。
供参考:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int n;//国家数量
int i = 0, j = 0;
char a[16] = {0};
char pcountry[100][16]={0};
scanf("%d", &n);
for (i = 0; i < n; i++)
{
//pcountry = (char*)malloc(sizeof(char) * 10);
scanf("%s", pcountry+i);//输入每个国家的英文名称
}
for (i = 0; i < n - 1; i++)
{
for (j = 0; j < n - i - 1; j++)
if (strcmp(pcountry[j], pcountry[j+1]) < 0)
continue;
else
{
strcpy(a, pcountry[j]);
strcpy(pcountry[j], pcountry[j + 1]);
strcpy(pcountry[j+1], a);
//*a = *pcountry;
//pcountry = (pcountry + 1);
//*pcountry = a;
}
}
for (i = 0; i < n; i++)
{
printf("%s ", (pcountry + i));//把国家名称按字典顺序输出
}
return 0;
}