解题思路:
通过数组存储用户输入的字符串,N代表字符串个数,STR_LEN代表最大字符串长度。然后写两个函数完成解题,一个是排序函数,利用选择法排序(可以利用其他更高效的排序法),另一个是交换字符串函数。
注意事项:
在交换函数里面新建另一个字符串当做一个空字符串来交换需要交换的字符串。
参考代码:
#include <stdio.h>
#include <string.h>
#define STR_LEN 100//字符串长度
#define N 3//字符串个数
void swap(char str1[STR_LEN+1],char str2[STR_LEN+1]);//字符串交换函数
void sort(char str[N][STR_LEN+1]); //字符串排序函数
void main()
{
char str[N][STR_LEN+1];
int i;
for (i=0;i<N;i++)
{
gets(str[i]);//得到N个字符串,通过数组存储
}
sort(str);
for (i=0;i<N;i++)
{
printf("%s\n",str[i]);
}
}
void sort(char str[N][STR_LEN+1])
{
int min=0,i,j;
for (i=0;i<N;i++)
{
min=i;
for (j=i+1;j<N;j++)
{
if (strcmp(str[min],str[j])>0)
{
min=j;
}
}
if (min!=i)
{
swap(str[i],str[min]);
}
}
}
void swap(char str1[STR_LEN+1],char str2[STR_LEN+1])
{
char tmp_str[STR_LEN+1];
strcpy(tmp_str,str1);
strcpy(str1,str2);
strcpy(str2,tmp_str);
}
0.0分
0 人评分
#include<stdio.h> #include<string.h> void swap(char*x,char*y) {int h; h=*x; *x=*y; *y=h;} int main() { int m,n; char *p1,*p2,*p3; char a[100]="\0",b[100]="\0",c[100]="\0"; scanf("%s%s%s",a,b,c); p1=a; p2=b; p3=c; if(strcmp(a,b)>0) swap(p1,p2); if(strcmp(a,c)>0) swap(p1,p3); if(strcmp(b,c)>0) swap(p2,p3); printf("%s\n%s\n%s\n",a,b,c); }为啥显示答案错误? 我自己验证是对的哇