C语言 用指针方法 输入3个字符串 按由小到大顺序输出。 我的sort函数后面不会写了,求助阿
3voidsort(char*a,char*b,char*c)4{5inti=0,j=0,k=0;6intmax,min;7for(;*a!=0;a++)8i++;9fo...
3 void sort (char *a,char *b,char *c)
4 {
5 int i=0,j=0,k=0;
6 int max,min;
7 for(;*a!= 0;a++)
8 i++;
9 for(;*b!= 0;b++)
10 j++;
11 for(;*c!= 0;c++)
12 k++;
13
14 }
15
16 int main (int argc,char *argv[])
17 {
18 char a[100];
19 char b[100];
20 char c[100];
21
22 scanf("%s",a);
23 scanf("%s",b);
24 scanf("%s",c);
25
26 sort(a,b,c);
27
28 printf("%s ",a);
29 printf("%s ",b);
30 printf("%s ",c);
31
32 putchar('\n');
33
34 return 0;
35 } 展开
4 {
5 int i=0,j=0,k=0;
6 int max,min;
7 for(;*a!= 0;a++)
8 i++;
9 for(;*b!= 0;b++)
10 j++;
11 for(;*c!= 0;c++)
12 k++;
13
14 }
15
16 int main (int argc,char *argv[])
17 {
18 char a[100];
19 char b[100];
20 char c[100];
21
22 scanf("%s",a);
23 scanf("%s",b);
24 scanf("%s",c);
25
26 sort(a,b,c);
27
28 printf("%s ",a);
29 printf("%s ",b);
30 printf("%s ",c);
31
32 putchar('\n');
33
34 return 0;
35 } 展开
展开全部
字符串比较有专门的字符串处理函数 strcmp()
# include<string.h>
void sort (char *a,char *b,char *c)
{
char *max,*temp ;
max=a;
if(strcmp(a,b)>0)
{
max=a;
}
else
{
temp=a; a=b;b=temp;
max=a;
}
if (strcmp(a,c)>0)
{
if (strcmp(b,c)<0)
temp=c; c=b;b=temp;
}
else
{
temp=a; a=c;c=temp;
}
printf("%s ",a);
printf("%s ",b);
printf("%s ",c);
}
# include<string.h>
void sort (char *a,char *b,char *c)
{
char *max,*temp ;
max=a;
if(strcmp(a,b)>0)
{
max=a;
}
else
{
temp=a; a=b;b=temp;
max=a;
}
if (strcmp(a,c)>0)
{
if (strcmp(b,c)<0)
temp=c; c=b;b=temp;
}
else
{
temp=a; a=c;c=temp;
}
printf("%s ",a);
printf("%s ",b);
printf("%s ",c);
}
追问
我写的那个是不是没法向后写了阿?
追答
不明白你的意思啊,不过 也可以用for循环一位一位的比较,字符串处理函数strcmp() 就是这样实现的
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果不用strcmp函数而一位一位地比较,将会非常麻烦。首先要在main函数求出每个字符串的长度,再把这些长度值作为实参传给形参,这样就有六个参数了!还要在sort函数定义一个中间变量,使用冒泡排序法又要定义两个变量,这样总共就有9个变量,太多了,看得头晕到时很容易出错。
下面程序能够实现以下功能:
1.能输入任意个任意长度的字符串
2.将这些字符串按升序排列并输出
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 3 //请在此修改你想要输入的字符串的个数
int main()
{
int i;
char *p[N];
for(i=0;i<N;i++)
{
p[i]=(char *)malloc(sizeof(char));
scanf("%s",p[i]);
}
printf("********\n");
int j,k;
char *temp;
for(i=0;i<N;i++)
{for(j=0;j<N-1;j++)
{if(strcmp(p[j],p[j+1])>0)
{temp=p[j];p[j]=p[j+1];p[j+1]=temp;}
}
}
for(i=0;i<N;i++)
printf("%s\n",p[i]);
return 0;
}
下面程序能够实现以下功能:
1.能输入任意个任意长度的字符串
2.将这些字符串按升序排列并输出
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 3 //请在此修改你想要输入的字符串的个数
int main()
{
int i;
char *p[N];
for(i=0;i<N;i++)
{
p[i]=(char *)malloc(sizeof(char));
scanf("%s",p[i]);
}
printf("********\n");
int j,k;
char *temp;
for(i=0;i<N;i++)
{for(j=0;j<N-1;j++)
{if(strcmp(p[j],p[j+1])>0)
{temp=p[j];p[j]=p[j+1];p[j+1]=temp;}
}
}
for(i=0;i<N;i++)
printf("%s\n",p[i]);
return 0;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这个函数什么功能都实现不了。
换别的吧strcmp
换别的吧strcmp
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询