#include<stdio.h>
#include<string.h>
void paixu(char *pa);
char name[10][20];
void main()
{
printf("输入");
for(int i=0;i<10;i++)
{
gets(name[i]);
}
paixu(name[0]);
}
void paixu(char *pa)
{
char x[20];
for(int j=0;j<9;j++)
{
for(int i=j+1;i<10;i++)
{
if(strcmp(pa+i,pa+j)<0)
{
strcpy(x,pa+i);
strcpy(pa+i,pa+j);
strcpy(pa+j,x);
}
}
}
for(int i=0;i<10;i++)
{
puts(pa+i);
}
}
这是一个输入十个国家的英文名,按升序排序后输出的函数。哪里错了!!!!!!
这个也是在你的基础上改的,指针
#include<stdio.h>
#include<string.h>
void paixu(char (*pa)[20]);
char name[10][20];
int main()
{
printf("输入:\n");
for(int i=0;i<10;i++)
{
gets(name[i]);
}
paixu(name);
return 0;
}
void paixu(char (*pa)[20]) //name为二维数组的地址,所以用行指针去对应赋值
{
char pb[20];
for(int j=0;j<9;j++)
{
for(int i=j+1;i<10;i++)
{
if(strcmp(*(pa+j),*(pa+i))>0) //注意是name[0]和name[1]的比较,所以加*
{
strcpy(pb, pa[j]);
strcpy(pa[j], pa[i]);
strcpy(pa[i], pb);
}
}
}
for(int i=0;i<10;i++)
{
puts(pa[i]);
}
}
#include<stdio.h>
#include<string.h>
void paixu(char pa[10][20]);
char name[10][20];
int main()
{
printf("输入:\n");
for(int i=0;i<10;i++)
{
gets(name[i]);
}
paixu(name);
return 0;
}
void paixu(char pa[10][20])
{
char pb[20];
for(int j=0;j<9;j++)
{
for(int i=j+1;i<10;i++)
{
if(strcmp(pa[j],pa[i])>0)
{
strcpy(pb, pa[j]);
strcpy(pa[j], pa[i]);
strcpy(pa[i], pb);
}
}
}
for(int i=0;i<10;i++)
{
puts(pa[i]);
}
}