| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1809 人关注过本帖
标题:求c程序设计一道题的标准答案~!
只看楼主 加入收藏
zwlcdh
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-2-8
收藏
 问题点数:0 回复次数:21 
求c程序设计一道题的标准答案~!
谭浩强的书,P278 10。2题
输入3个字符串,按由小到大的顺序输出!

我想看看自己的思路和答案的区别!帮一下忙
搜索更多相关主题的帖子: 标准答案 程序设计 
2007-03-05 18:31
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
strcmp().

倚天照海花无数,流水高山心自知。
2007-03-05 19:13
davidloves
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2007-1-6
收藏
得分:0 

就用这个字符串比较函数就OK


2007-03-05 19:24
zwlcdh
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-2-8
收藏
得分:0 
我想知道如何编写输入3个字符串,不浪费一点内存。
例如书上有个例子
char *name[]={"Follow me","bsic","great wall","fortran"};
这样没有浪费内存单元。
如果改用scanf函数输入这些字符串,要怎么编写啊!?
以下是我想象的程序,不知道对不对
char *name[3];
int i;
for(i=0;i<3;i++)
scanf("%s",____);
/*这个____里不知道要写什么!*/
我刚开始看指针,不知道用的对不对,希望大家指教!

[此贴子已经被作者于2007-3-5 19:37:22编辑过]

2007-03-05 19:36
davidloves
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2007-1-6
收藏
得分:0 
scanf("%s",name[i]);  /*因为你定义了数组指针,因此你数组的每一个元素都是一个指针,所以可以直接指向读入的字符串的首地址*/

2007-03-05 19:40
zwlcdh
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-2-8
收藏
得分:0 

用strcmp函数我已经编出排序和输出函数了!

就是不太清楚,要怎么利用指针数组作这道题!

2007-03-05 19:40
zwlcdh
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-2-8
收藏
得分:0 
如果用15楼说的,我把程序都写下来是这样:
#include<stdio.h>
void sort(char *name[],int n)
{char *temp;
int i,j,k;
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
if(strcmp(name[k],name[j])>0) k=j; /*i也错了,改成j*/
if(k!=i) /*这里是i,我改过来*/
{temp=name[i];name[i]=name[k];name[k]=temp;}
}
}
void print(char *name[],int n)
{int i;
for(i=0;i<n;i++)
printf("%s\n",name[i]);
}
void main()
{char *name[3];
int k;
for(k=0;k<3;k++)
scanf("%s",name[k]);

sort(name,3);
print(name,3);
}
可是这样编译没有错,但是结果...
不知道是不是红的程序部分还是有问题啊!!

[此贴子已经被作者于2007-3-7 16:31:59编辑过]

2007-03-05 19:54
davidloves
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2007-1-6
收藏
得分:0 
k=i;
for(j=i+1;j<n;j++)
if(strcmp(name[k],name[i])>0) k=j;

/*你k=i, 这里你用strcmp想比较什么呢?*/

2007-03-05 20:21
zwlcdh
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-2-8
收藏
得分:0 
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
if(strcmp(name[k],name[i])>0) k=j;/*这里没有错吧!*/
if(k!=i)/*不好意思这里是i*/
{temp=name[i];name[i]=name[k];name[k]=temp;}
}

[此贴子已经被作者于2007-3-5 21:54:01编辑过]

2007-03-05 21:50
zwlcdh
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-2-8
收藏
得分:0 

好心人帮一下忙把!我都想一天了!!!怎么输入这3组字符串,不浪费内存单元??

2007-03-05 21:56
快速回复:求c程序设计一道题的标准答案~!
数据加载中...
 
   



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

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