C语言问题 输入三个字符串,按由小到大的顺序输出

为什么我这个顺序输入输出啊,指针新手,实在不知道该怎么办了,可能程序错误太多了,还见谅
#include <stdio.h>
#include <string.h>
void swap(char * q1,char * q2)
{
char temp[100];
temp==q1;
q1==q2;
q2==temp;
}
void exchange(char * p1,char * p2,char *p3)
{
if(strcmp(p1,p2)>0) swap(p1,p2);
if(strcmp(p1,p3)>0) swap(p1,p3);
if(strcmp(p2,p3)>0) swap(p2,p3);
}
int main()
{
char a[100],b[100],c[100],* p1,* p2,* p3;
gets(a);
gets(b);
gets(c);
p1=a;
p2=b;
p3=c;
exchange(p1,p2,p3);
printf("%s\n%s\n%s\n",p1,p2,p3);
return 0;
}

1、修改代码

char temp[100];

temp==q1;

q1==q2;

q2==temp;

==换成=,=才是赋值运算符。

2、换用其他方法

可以使用三个数组,或者是一个二维数组来存储字符串,同时定义一个指针数组,指向三个字符串的首地址,然后对指针数组进行排序。

扩展资料:

C语言ldexp()函数:返回x乘以2的exponent次方(次幂)的值

C语言labs()函数:求整数的绝对值(针对long类型)

C语言isgraph()函数:判断一个字符是否是图形字符

C语言isdigit()函数:判断一个字符是否为数字

int abs(int i) 返回整型参数i的绝对值

double cabs(struct complex znum) 返回复数znum的绝对值

double fabs(double x) 返回双精度参数x的绝对值

参考资料来源:百度百科-c语言

参考资料来源:百度百科-C语言函数

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-19
#include <stdio.h>
#include <string.h>

void swap(char **q1,char **q2)
{
    char *temp;  // 用 temp[100] 是不能赋值成功的
    temp = *q1;  // 赋值用 = 而不是 ==
    *q1  = *q2;
    *q2  = temp;
}
void exchange(char **p1,char **p2,char **p3)
{
if(strcmp(*p1,*p2)>0) swap(p1,p2);
if(strcmp(*p1,*p3)>0) swap(p1,p3);
if(strcmp(*p2,*p3)>0) swap(p2,p3);
}
int main()
{
char a[100],b[100],c[100],* p1,* p2,* p3;
gets(a);
gets(b);
gets(c);
p1=a;
p2=b;
p3=c;
    // 用指针的指针才能改变原始指针内容,不然只是复制了指针内容到exchange中,
    // 带不出修改后的结果到主函数中。
exchange(&p1,&p2,&p3);
printf("%s\n%s\n%s\n",p1,p2,p3);
return 0;
}

追问

char **q1,char **q2) 这个地方为什么要用 两个 **

追答

表示指针的指针,或者说传进来的是指针的地址。

本回答被提问者采纳
第2个回答  2010-06-15
/*
字符串排序,
从而实现字符串的有序应用。
*/

#include <stdio.h>
#include <string.h> //strcmp(str1, str2);
//strcpy(str1, str2);
void main()
{
const int N = 30;
char name[N][10]; //存储名字
char temp[10]; //中间量
int i, j, k, n;
printf("请输入字符串数:");
scanf("%d", &n);
for(i = 0; i < n; i++)
{
scanf("%s", name[i]);
}
for(i = 0; i < n; i++) //排序
{
for(j = n - 1; j > i; j--)
{
k = j - 1;
if(strcmp(name[j], name[k]) < 0) //比较和交换
{
strcpy(temp, name[j]);
strcpy(name[j], name[k]);
strcpy(name[k], temp);
}
}
}
printf("=============\n");
for(i = 0; i < n; i++)
printf("%s\n", name[i]);
}
第3个回答  2014-03-25
char temp[100];
temp==q1;
q1==q2;
q2==temp;
==换成=,=才是赋值运算符。
第4个回答  2021-01-04

C语言大小字母输出

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网