
c语言,求助大神! 从键盘上输入三个字符串,将这三个串从小到大排序。 20
展开全部
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;
}
试运行结果如下图:
展开全部
#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;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
三个字符串从小到大排序?老哥你确定不是数字?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询