定义一个二维的字符串数组,然后对它进行访问排序用c语言怎么写?

如题所述

#include <stdio.h>
#include<string.h>

main()
{ char str[10][20],temp[20];
int i,k;
/*输入字符串*/
for(i=0;i<10;i++)
{ printf("%i=d: ",i);
scanf("%s",str[i]); } /*二维数组的一维表达方式是第 i 行的首地址*/

/*为字符串排序*/
for(i=0;i<9;i++)
for(k=i+1;k<10;k++)
{ if(strcmp(str[i],str[k])==1) /*strcmp返回值为1,第一参数 大于 第二参数*/
{ strcpy(temp,str[i]); strcpy(str[i],str[k]); strcpy(str[k],temp); }
printf("i=%d k=%d\n",i,k); }
/*输出排序结果*/
for(i=0;i<10;i++)
printf("\n%s",str[i]);
system("pause");
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-06-05
恩,指针也可以啊,需要的时候交换指针就可以了的,代码如下:

#include
<stdio.h>
#include
<string.h>
#include
<stdlib.h>
int
main()
{

char
*str[2][2]={"1234","5678","5563","7899"};

int
i,j;

for(i=0;i<4;i++)

{

for(j=0;j<3-i;j++)

{

if(strcmp(str[j/2][j%2],str[(j+1)/2][(j+1)%2])>0)

{

char
*t;

t=str[j/2][j%2];

str[j/2][j%2]=str[(j+1)/2][(j+1)%2];

str[(j+1)/2][(j+1)%2]=t;

}

}

}

for(i=0;i<4;i++)

{

printf("%s\n",str[i/2][i%2]);

}

system("pause");

return
0;
}
第2个回答  2012-03-30
#include "stdio.h"
#include "string.h"
int jiaohuan(const void*a,const void*b)
{
return strcmp((char *)a,(char*)b);

}
int main()
{
int n,i;
char a[100][100]={'0'};
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%s",&a[i]);
qsort(a,n,sizeof(a[0]),jiaohuan);
for(i=0;i<n;i++)
printf("%s\n",a[i]);
}

楼主接受吧
第3个回答  2012-03-25
for(){
for(){
//数组每一个
}
}
相似回答