C语言 用指针方法 输入3个字符串 按由小到大顺序输出。 我的sort函数后面不会写了,求助阿

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 }

看你这个函数写的应该是比字符串长度.而不是大小.字符串大小的比较可分为,字符串所有单个字符的值加起来比大小,还有就是从第一个字母开始算,大的优先大.不知道你要比较哪种..其实都不难,你看看书,查查资料就很容易写了.最好是先用C语言提供的函数来写,现在就来用指针的话,你可能会更混乱.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-22
字符串比较有专门的字符串处理函数 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);
}追问

我写的那个是不是没法向后写了阿?

追答

不明白你的意思啊,不过 也可以用for循环一位一位的比较,字符串处理函数strcmp() 就是这样实现的

本回答被网友采纳
第2个回答  推荐于2017-09-25
如果不用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;
}本回答被提问者采纳
第3个回答  2012-03-23
你这个函数什么功能都实现不了。
换别的吧strcmp