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

为什么我这个顺序输入输出啊,指针新手,实在不知道该怎么办了,可能程序错误太多了,还见谅#include<stdio.h>#include<string.h>voidswa... 为什么我这个顺序输入输出啊,指针新手,实在不知道该怎么办了,可能程序错误太多了,还见谅
#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;
}
展开
 我来答
四舍五不入6
高粉答主

2020-02-05 · 醉心答题,欢迎关注
知道答主
回答量:147
采纳率:100%
帮助的人:2.2万
展开全部

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语言函数

yzviolet
推荐于2017-09-19 · TA获得超过2578个赞
知道大有可为答主
回答量:1196
采纳率:0%
帮助的人:995万
展开全部
#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) 这个地方为什么要用 两个 **
追答
表示指针的指针,或者说传进来的是指针的地址。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Worldwill
2010-06-15 · TA获得超过357个赞
知道小有建树答主
回答量:219
采纳率:0%
帮助的人:167万
展开全部
/*
字符串排序,
从而实现字符串的有序应用。
*/

#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]);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
孔子有云
2014-03-25 · 超过35用户采纳过TA的回答
知道答主
回答量:103
采纳率:0%
帮助的人:87.7万
展开全部
char temp[100];
temp==q1;
q1==q2;
q2==temp;
==换成=,=才是赋值运算符。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Python锦河
2021-01-04
知道答主
回答量:96
采纳率:0%
帮助的人:4.4万
展开全部

C语言大小字母输出

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式