2024-06-06 02:30:58
C的字符串是用字符数组操作的,所以排序应该用指针数组完成,以避免字符串拷贝。由于只有3个字符串,用直接操作的办法而不用循环以避免不必要的开销;输入函数选用fgets,既可以方便地控制输入长度不越界,又能允许字符串中存在空格。代码如下:
#include "stdio.h"
#include "string.h"
int main(int argc,char *argv[]){
char s[3][200],*ps[3],*p;//声明指针数组ps以进行指针排序
printf("Input 3 strings('Enter' separated)...\n");//回车隔开以允许含空格
fgets(ps[0]=s[0],200,stdin);//使用fgets以控制字符串输入长度
fgets(ps[1]=s[1],200,stdin);
fgets(ps[2]=s[2],200,stdin);
if(strcmp(ps[0],ps[1])>0)//由于只有3个字符串,所以直接比较交换指针而不用循环
p=ps[0],ps[0]=ps[1],ps[1]=p;
if(strcmp(ps[0],ps[2])>0)
p=ps[0],ps[0]=ps[2],ps[2]=p;
if(strcmp(ps[1],ps[2])>0)
p=ps[1],ps[1]=ps[2],ps[2]=p;
printf("\nAfter ordering:\n%s%s%s",ps[0],ps[1],ps[2]);//直接输出排序后的字符串
printf("\n");
return 0;
}
试运行结果如下图:
2024-06-06 01:15:18
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char a[128],b[128],c[128];
scanf("%s%s%s",a,b,c);
char t[128];
if(strcmp(a,b)>0)
{
strcpy(t,a);
strcpy(a,b);
strcpy(b,t);
}
if(strcmp(b,c)>0)
{
strcpy(t,b);
strcpy(b,c);
strcpy(c,t);
}
if(strcmp(a,b)>0)
{
strcpy(t,a);
strcpy(a,b);
strcpy(b,t);
}
puts(a);
puts(b);
puts(c);
system("pause");
return 0;
}
2024-06-06 01:41:04