| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2375 人关注过本帖
标题:输入3个字符串由小到大的顺序输出,可只能输出2个字符串,刚刚学习
只看楼主 加入收藏
zcf_0
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-11-21
收藏
 问题点数:0 回复次数:11 
输入3个字符串由小到大的顺序输出,可只能输出2个字符串,刚刚学习
swap(char *q1,char *q2)
{
 char *q3[20];
 strcpy(q3,q1);strcpy(q1,q2);strcpy(q2,q3);
}
main()
{
 char *a="sdgg",*b="asf",*c="yhjf" ;
if(strcmp(a,b)>0) swap(a,b);
if(strcmp(b,c)>0) swap(b,c);
if(strcmp(a,c)>0) swap(a,c);
printf("%s\n",a);
printf("%s\n",b);
printf("%s\n",c);
}        运行结果为  asf        sdgg     , (yhif没有输出,不知道为什么请多指教。)
搜索更多相关主题的帖子: 字符 顺序 由小到大 char swap 
2008-01-07 23:16
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
收藏
得分:0 
/*这个比六次(超过4个串以上再用排序法)*/
#include<stdio.h>
#include<string.h>

int main(main)
{
char *a="sdgg",*b="asf",*c="yhjf" ;

if((strcmp(a,b)>0)&&(strcmp(b,c)>0))
     printf("a=%s b=%s c=%s\n",c,b,a);
else if((strcmp(b,c)>0)&&(strcmp(c,a)>0))
     printf("a=%s b=%s c=%s\n",a,c,b);
else if((strcmp(c,a)>0)&&(strcmp(a,b)>0))
  printf("a=%s b=%s c=%s\n",b,a,c);  
else if((strcmp(a,c)>0)&&(strcmp(c,b)>0))
  printf("a=%s b=%s c=%s\n",b,c,a);
else if((strcmp(c,b)>0)&&(strcmp(b,a)>0))
  printf("a=%s b=%s c=%s\n",a,b,c);  
else
  printf("%s %s %s\n",c,a,b);
  return 0;

}

[[italic] 本帖最后由 xianshizhe111 于 2008-1-8 00:07 编辑 [/italic]]
2008-01-07 23:57
zcf_0
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-11-21
收藏
得分:0 
谢谢
    可我的程序错在哪,请指教。
2008-01-08 00:16
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
收藏
得分:0 
那个函数有问题
有很多问题
以后写程序时把头文件写上
#include<stdio.h>
#include<string.h>
2008-01-08 01:45
way3
Rank: 1
来 自:湖南
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-12-8
收藏
得分:0 
这个问题有待研究呀.

[[italic] 本帖最后由 way3 于 2008-1-8 03:06 编辑 [/italic]]
2008-01-08 02:45
way3
Rank: 1
来 自:湖南
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-12-8
收藏
得分:0 
第二在指针使用之前须进行初始化,而这里就没有,
第三就是有待研究.我按你的意思写了一下:
#include "stdio.h"
#include "string.h"
swap(char *q1,char *q2)
{
char *q3="sfdsf"; /* 这里是先进行初始化*/
strcpy(q3,q1);strcpy(q1,q2);strcpy(q2,q3);
}
main()
{char *a="sdgg",*b="asfd",*c="yhjf" ;
         /*在这里,a,b,c占的字符个数就一定要相等了,否则是输不出"yhjf"的,这就是我所说的第三个问题 */
if(strcmp(a,b)>0) swap(a,b);
if(strcmp(b,c)>0) swap(b,c);
if(strcmp(a,c)>0) swap(a,c);
printf("%s\n",a);
printf("%s\n",b);
printf("%s\n",c);
}  

 /*注意这个程序是通不过VC++6.0的,在turbo c 2.0/3.0中运行良好*/

[[italic] 本帖最后由 way3 于 2008-1-8 03:03 编辑 [/italic]]
2008-01-08 03:02
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
收藏
得分:0 
/*提示*/
swap(char *q1,char *q2)
{
char *q3[20];
strcpy(q3,q1);strcpy(q1,q2);strcpy(q2,q3);
}
main()
{
char *a="sdgg",*b="asf",*c="yhjf" ;
if(strcmp(a,b)>0) swap(a,b);/*你想想看在这里你把a,b的值交换了也就是把(字符串内部的值交换了 *a="asf",*b="sdgg"*/
if(strcmp(b,c)>0) swap(b,c);/*这次调用它就不是原来的(b 和 c)的比较了 而实际上是(a与c)的比较*/
if(strcmp(a,c)>0) swap(a,c);/*这个也一样*/
printf("%s\n",a);
printf("%s\n",b);
printf("%s\n",c);
}
2008-01-08 13:09
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
支持楼上的观点,支持6#的第一个观点,但是为什么vc++6.0运行不了程序呢?有谁知道吗?
2008-01-08 13:57
way3
Rank: 1
来 自:湖南
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-12-8
收藏
得分:0 
我的想法错了,不要被误导呀.xianshizhe111 的想法够正确.
2008-01-08 19:14
zcf_0
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-11-21
收藏
得分:0 
谢谢 xianshizhe111 非常感谢。谢谢way3,谢谢大家。
2008-01-08 19:44
快速回复:输入3个字符串由小到大的顺序输出,可只能输出2个字符串,刚刚学习
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029125 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved