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;
} 展开
#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;
} 展开
5个回答
展开全部
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语言函数
展开全部
#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) 这个地方为什么要用 两个 **
追答
表示指针的指针,或者说传进来的是指针的地址。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
/*
字符串排序,
从而实现字符串的有序应用。
*/
#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]);
}
字符串排序,
从而实现字符串的有序应用。
*/
#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]);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
char temp[100];
temp==q1;
q1==q2;
q2==temp;
==换成=,=才是赋值运算符。
temp==q1;
q1==q2;
q2==temp;
==换成=,=才是赋值运算符。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询