输入3个字符串,按从小到大顺序输出。 用指针方法
输入3个字符串,按从小到大顺序输出。 //先用程序对三个数进行从小到大排序,然后修改程序#include<stdio.h>
#include<string.h>
int main()
{void swap(char *pt1,char *pt2);
char a[20],b[20],c[20];
char *p1,*p2,*p3;
printf("请输入三个字符串:");
gets(a);
gets(b);
gets(c);
//或用scanf("%s,%s,%s",a,b,c);
p1=&a[0];p2=&b[0];p3=&c[0];//三个指针分别指向三个字符数组
if(strcmp(*p1,*p2)>0)swap(p1,p2);//if(strcmp(a,b)>0)swap(a,b); //比较两个字符串的大小,为什么用前一句的时候会出现警告呢
警告内容:
E:\教学——梁锐\C语言程序设计 梁锐\15级电科\随堂题库\2-1-1.c(13) : warning C4047: 'function' : 'const char *' differs in levels of indirection from 'char '
E:\教学——梁锐\C语言程序设计 梁锐\15级电科\随堂题库\2-1-1.c(13) : warning C4024: 'strcmp' : different types for formal and actual parameter 1
E:\教学——梁锐\C语言程序设计 梁锐\15级电科\随堂题库\2-1-1.c(13) : warning C4047: 'function' : 'const char *' differs in levels of indirection from 'char '
E:\教学——梁锐\C语言程序设计 梁锐\15级电科\随堂题库\2-1-1.c(13) : warning C4024: 'strcmp' : different types for formal and actual parameter 2
这是么意思呢?搞不懂
if(strcmp(a,c)>0)swap(a,c);//if(strcmp(*p1,*p3)>0)swap(*p1,*p3);
if(strcmp(b,c)>0)swap(b,c);// if(strcmp(*p2,*p3)>0)swap(*p2,*p3);
printf("由小到大排列:%s\n%s\n%s\n",a,b,c);
return 0;
}
void swap(char *pt1,char *pt2)
{ char t[20];
strcpy(t,pt1);
strcpy(pt1,pt2);
strcpy(pt2,t);
//t=*pt1;*pt1=*pt2;*pt2=t;
}