输入3个字符串,按由小到大的顺序输出。(用指针方法处理)
#include<stdio.h>
#include<string.h>
int main()
{
char str1[10],str2[20],str0[10];
printf("please input 3 strings");
gets(str1);
gets(str2);
gets(str0);
if(strcmp(str1,str2)>0)swap(str1,str2);/*字符串比较函数*/
if(strcmp(str2,str0)>0)swap(str2,str0);
if(strcmp(str1,str0)>0)swap(str1,str0);
printf("Now the otrder is:")
printf("%s\n%s\n%s"\nstr1,str2,str0);
return 0;
}
void swap(char*p1,*p2)
{
char str[10];
strcpy(str,p1);
strcpy(p1,p2);
strcpy(p2,str);
}
扩展资料:
strcpy用法:
1、strcpy(a+1,b+2)相当于将a[1]及它后面的内容复制为b[2]及它后面的内容。b[2]及后面为“2”,因此复制后a为“a2”;
2、strcat(a,c+1)相当于在a的末尾加上c[1]及其后面的部分,也就是“yz”。故运行后a为“a2yz”
strcpy把从src地址开始且含有'\0'结束符的字符串复制到以dest开始的地址空间,返回值的类型为char*。
strcat把src所指向的字符串(包括“\0”)复制到dest所指向的字符串后面(删除*dest原来末尾的“\0”)。
你是不是对字符串比大小不太了解啊?
“ABC">"ABBOIJUOIUJ”,因为C>B,所以第二个字符串第二个B后面就算有几亿个字符,也比第一个字符小。
字符串比大小是逐个字符比较的。小写>大写,如a>A;从A到Z一次增大。
例如:abc,abbc,aabzzzzzz比大小,
1步.先比较第一个字符,大家都是a,不能比较出来,就看下一个字符,
2步.aabzzzzzz的第二个字符是a,其他的第二个字符都是b,那后面就不比了,aabzzzzzz就是最小了,哪怕它再长,也是最小;
3步.还剩abc和abbc比大小,同理,abc第三个字符是c,比abbc的第三个字符b大,所以abc>abbc
最后结果是:aabzzzzzz<abbc<abc
这是字符串比大小的过程。我不知道你理解的字符串比大小是怎么比的。
如果你觉得结果是aabzzzzzz>abbc>abc,那就从长度上做文章吧!
默认的比大小规则是我说的那种。不知对你有帮助没。你的程序是对的!
#include <stdio.h>
#include "string.h"
int main(void){
char s[4][21],i,(*p)[21];
for(p=s,i=0;i<3;scanf("%s",(*(p+i++))));
if(strcmp(*p,*(p+1))>0)
strcpy(s[3],*p),strcpy(*p,*(p+1)),strcpy(*(p+1),s[3]);
if(strcmp(*p,*(p+2))>0)
strcpy(s[3],*p),strcpy(*p,*(p+2)),strcpy(*(p+2),s[3]);
if(strcmp(*(p+1),*(p+2))>0)
strcpy(s[3],*(p+1)),strcpy(*(p+1),*(p+2)),strcpy(*(p+2),s[3]);
printf("%s %s %s\n",p,p+1,p+2);
return 0;
}