思路:用strcmp函数两两比较,若是>0,就调用函数
函数:将两个字符串用strcpy函数交换(要用三次)
代码:
#include<stdio.h>
void change(char *i,char *j)//交换函数,传递指针
{
char arr[100] = {'\0'};//设置一个空数组
char *temp = arr;//指针指向空数组,免得指针乱指
strcpy(temp,i);//i将指向的地址放到temp中
strcpy(i,j); //下同
strcpy(j,temp);
}
int main()
{
char a[100],b[100],c[100];//三个字符型数组
char *i,*j,*k;//三个指针
printf("请输入三个字符串:\n");
gets(a);
gets(b);
gets(c);
i = a;//i指向数组a
j = b;//j指向数组b
k = c;//k指向数组c
if(strcmp(i,j)>0){//如果大于零
change(i,j);//调用函数
} //下同
if(strcmp(i,k)>0){
change(i,k);
}
if(strcmp(j,k)>0){
change(j,k);
}
printf("\n");
printf("%s<%s<%s\n",a,b,c);//输出三个字符串的比较
return 0;
}
输出结果:
请输入三个字符串:
zxy
ijk
abc
abc<ijk<zxy
以下为错误方法:
#include<stdio.h>
void change(char *i,char *j,char *k)//排序函数,传递指针,传送a,b,c的地址
{
char *temp;//空指针变量
if(*i > *j){
*temp = *i;//*i将指向的地址放到temp中
*i = *j;
*j = *temp;
}
else if(*j > *k){
*temp = *j;
*j = *k;
*k = *temp;
}
else if(*i > *k){
*temp = *i;
*i = *k;
*k = *temp;
}
}
int main()
{
char a[100],b[100],c[100];//三个整数
char *i,*j,*k;//三个指针
printf("请输入三个字符串:\n");
gets(a);
gets(b);
gets(c);
i = a;//i指向数组a
j = b;//j指向数组b
k = c;//k指向数组c
change(i,j,k);//调用排序函数,传递指针
printf("\n");
printf("%s<%s<%s\n",a,b,c);
return 0;
}
这样的函数只能将该数组的首元素传递进行交换,指针指向的是给数组的首地址,若是想要继续交换估计要设置一个循环然后p++;不过这样很麻烦.....交换的事让函数做好了
网友评论