输入三个字符串,按由大到小的顺序输出。请问哪里出了问题。输出的和输入的不一样
#include<stdio.h>#include<string.h>
int main()
{
void swap(char *s1,char *s2);
char s1={0},s2={0},s3={0};
int a,b,c;
printf("Please enter the data:\n");
gets(s1);
gets(s2);
gets(s3);
printf("这三个字符串为:\n");
puts(s1);
puts(s2);
puts(s3);
printf("\n");
a=strlen(s1);
b=strlen(s2);
c=strlen(s3);
if(a<b)swap(s1,s2);
if(a<c)swap(s1,s3);
if(b<c)swap(s2,s3);
printf("Now the string is:\n");
printf("%s\n",s2);
printf("%s\n%\n%s\n",s1,s2,s3);
return 0;
}
void swap(char *s1,char *s2)
{
char s;
s=*s1;
*s1=*s2;
*s2=s;
} 你想用指针操作
看代码,自己琢磨
#include<stdio.h>
#include<string.h>
int main()
{
void swap(char **p1,char **p2);
char s1={0},s2={0},s3={0};
int a,b,c;
char *p1, *p2, *p3;
p1=s1;
p2=s2;
p3=s3;
printf("Please enter the data:\n");
gets(s1);
gets(s2);
gets(s3);
printf("这三个字符串为:\n");
puts(s1);
puts(s2);
puts(s3);
printf("\n");
a=strlen(s1);
b=strlen(s2);
c=strlen(s3);
if(a<b)swap(&p1,&p2);
if(a<c)swap(&p1,&p3);
if(b<c)swap(&p2,&p3);
printf("Now the string is:\n");
printf("%s\n%s\n%s\n",p1,p2,p3);
return 0;
}
void swap(char **p1,char **p2)
{
char *temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
页:
[1]