Problem : 输入3个字符串,按由小到大顺序输出
Time Limit: 1 Sec Memory Limit: 64 MB
Submit: 12467 Solved: 7150
Description
输入3个字符串(长度都小于80),按由小到大顺序输出。
Input
多组测试数据,每组输入三个字符串。
Output
按从小到大输出三个字符串。
Sample Input
oh
my
god
China
Beijing
Hangzhou
Sample Output
god
my
oh
Beijing
China
Hangzhou
这道题目开二维字符数组个人觉得方便..有些佬用C++的库函数也方便。我还不会,自己的思路是放利用三变量交换法,也就是最早开始做题abc三个数的大小比较
数组是“二级公民”(摘自刘大爷),所以有他特定的赋值函数。不能直接赋值。
如有些同学开二维数组,然后a[i]=temp;是不行的。
strcat():用于拼接两个字符串;
函数接受两个字符串作为参数。该函数把第二个字符串的备份附加到第一个字符串的末尾,并把拼接后的新字符串作为第一个字符串,第二个字符串不改变。strcat函数的类型是char*,strcat()函数返回的是第一个参数,即拼接第二个字符串后的第一个字符串的地址;
————————————————
版权声明:本文为CSDN博主「error0_dameng」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/error0_dameng/article/details/81535374
我们可以用这个函数来实现。另外要说的是注意清零。因为容器不清会炸并且不能达到转接某个字符串的目的(会混合的)。
自己重新试验了一下。strcpy(a,b)是直接放进去b并且自动把a清空了,所以代码能更简洁。
实践strcpy如下:#include<stdio.h>
#include<string.h>
int main(void)
{
char str[100]={"abcdef"};
char st[100]={"wokankan"};
strcpy(str,st);
printf("%s\n",str);
return 0;
}
最后直接输出的结果是 wokankan。所以大家可以把代码改了,不用那么复杂,可以简洁。
其实这题也不用二维数组,开三个字符数组就行了。
附上源代码(修改过的,我直接在blog里面打的,如果有bug麻烦自己de):
#include<stdio.h>
#include<string.h>
char str[100][100];
char t[100];
int main(void)
{
int k;
while((gets(str[0])&&gets(str[1])&&gets(str[2]))!=NULL)
{
memset(t,'\0',sizeof(t));
if(strcmp(str[0],str[1])>0)
{
strcpy(t,str[0]);
strcpy(str[0],str[1]);
strcpy(str[1],t);
memset(t,'\0',sizeof(t));
}
if(strcmp(str[0],str[2])>0)
{
strcpy(t,str[0]);
strcpy(str[0],str[2]);
strcpy(str[2],t);
memset(t,'\0',sizeof(t));
}
if(strcmp(str[1],str[2])>0)
{
strcpy(t,str[1]);
strcpy(str[1],str[2]);
strcpy(str[2],t);
memset(t,'\0',sizeof(t));
}
for(int i=0;i<3;i++)
printf("%s\n",str[i]);
}
return 0;
}