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

我想看看自己的思路和答案的区别!帮一下忙
搜索更多相关主题的帖子: 标准答案 程序设计 
2007-03-05 18:31
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
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
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
zwlcdh
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-2-8
收藏
得分:0 
我又瞎想了一个,这样可不可以!
#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;
if(k!=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(int argc,char *argv[])
{
sort(argv,argc);
print(argv,argc);
} /*只是主函数变一下*/

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

2007-03-06 21:23
zwlcdh
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-2-8
收藏
得分:0 
11L
char c[N][80];这样不浪费内存单元马?
我是想建个一个指针数组,输入字符时不会浪费内存单元,
也就是说每个字符串之间应该是紧密排列的。不知道应该怎么编写输入这段!!
2007-03-06 21:28
zwlcdh
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-2-8
收藏
得分:0 

对对,楼上说得对,又发现错误拉!

2007-03-07 16:30
zwlcdh
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-2-8
收藏
得分:0 
不要意思!还是不能啊!!!~!!怎么弄?
2007-03-07 22:02
快速回复:求c程序设计一道题的标准答案~!
数据加载中...
 
   



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

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