|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
/***********************************
**********输入三个字符串************
***********由小到大输出*************
***********************************/
#include <stdio.h>
#include <string.h>
void main()
{
void swap(char *p1, char *p2);
char a1[20], a2[20], a3[20];
char *p1, *p2, *p3;
printf("请输入三个字符串: \n");
gets(a1);gets(a2);gets(a3);
p1 = a1;p2 = a2;p3 = a3;
printf("\n 这三个字符串由小到大的顺序为:\n");
if( strcmp(a1, a2) > 0 )
{
swap(p1, p2);
}
if( strcmp(a1, a3) > 0 )
{
swap(p1, p3);
}
if( strcmp(a2, a3) > 0 )
{
swap(p2, p3);
}
printf("%s\n%s\n%s\n", a1, a2, a3);
}
void swap(char *p1, char *p2)
{
char temp[20];
strcpy(temp, p1);
strcpy(p1, p2);
strcpy(p2, temp);
}
按照课后习题答案打出来的, 可是运行结果不正确,求大神们指点。菜鸟刚开始飞
本帖最后由 orino 于 2018-1-16 20:46 编辑
你这个由小到大的定义是什么?比长度大小还是比字符大小?strcmp比较的字符大小,例如比较的两个字符串a和b,分别从第一个字符开始比,a[0]和b[0]比较,如果a[0]>b[0]返回>0的值,小于则返回<0的值,相等的话继续比较下一个a[1]和b[1],直到全部比完都相等,则返回0。具体返回值取决于C的实现,VC返回值直接是a[i]-b[i]的值。
举例说明strcmp
"abcd" < "xyz"
a的ASCII小于x
"XYZ" <"abcd"
X的ACSII小于a
|
|