| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 492 人关注过本帖
标题:【疑问】 一个小程序中的
只看楼主 加入收藏
houmin0036
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2013-1-15
结帖率:37.5%
收藏
已结贴  问题点数:19 回复次数:7 
【疑问】 一个小程序中的
#include <stdio.h>
int main()
{
int sort (char *name[], int n);
int print (char *name[], int n);
//定义一个指针数组name,每一个元素指向一串字符.
char *name[] = {"Follow me", "BASIC", "Great Wall", "FORTRAN", "Computer design"};

int n=5;
sort (name, n);
print(name, n);
}


#include <string.h>
int sort (char *name[], int n)
{
int i, j, k;
char *t;

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)
{
t = name[i];
name[i] = name[k];
name[k] = t;
}
}
return (name, n);
}




#include <stdio.h>
int print (char *name[], int n)
{
int i;
for (i=0; i<n; i++)
{
printf("%s\n", name[i]);
}
}


关于这里if (strcmp(name[k], name[j])>0)我看书上讲得是:name[k]和name[j]是第k个和第j个字符串的起始地址.   那么这个if语句中的strcmp是在判断它们地址的大小吗? 这不对啊  strcmp应该是判断字符串的呀  正确的理解是什么?
搜索更多相关主题的帖子: design include 
2013-03-27 22:00
wang25435
Rank: 2
等 级:论坛游民
帖 子:21
专家分:16
注 册:2013-3-10
收藏
得分:5 
name[k]是起始地址
但用上strcmp函数后就是比较它们指向字符串的字典顺序了
2013-03-27 22:06
houmin0036
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2013-1-15
收藏
得分:0 
回复 2楼 wang25435
提供下参考资料  好吗
2013-03-27 22:08
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:5 
参考就是查strcmp的用法!!!

总有那身价贱的人给作业贴回复完整的代码
2013-03-27 22:21
锋了
Rank: 7Rank: 7Rank: 7
来 自:向日葵幼儿园
等 级:黑侠
威 望:2
帖 子:306
专家分:586
注 册:2012-10-27
收藏
得分:5 
strcmp()的参数是指针类型,比较的是指针所指对象的值
2013-03-27 22:35
尹金魁2031
Rank: 3Rank: 3
来 自:河南省南阳市
等 级:论坛游侠
帖 子:156
专家分:162
注 册:2012-12-29
收藏
得分:5 
#include <stdio.h>
int main()
{
int sort (char *name[], int n);
int print (char *name[], int n);
//定义一个指针数组name,每一个元素指向一串字符.
char *name[] = {"Follow me", "BASIC", "Great Wall", "FORTRAN", "Computer design"};

int n=5;
sort (name, n);
print(name, n);
return 0;//楼主这是在你的基础上修改的,你的编译不通过
}


#include <string.h>
int sort (char *name[], int n)
{
int i, j, k;
char *t;

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)
{
t = name[i];
name[i] = name[k];
name[k] = t;
}
}
return (name, n);
}




#include <stdio.h>
int print (char *name[], int n)
{
int i;
for (i=0; i<n; i++)
{
printf("%s\n", name[i]);
}
return 0;//楼主,你的代码有点小误,这是修改的部分
}
2013-03-27 22:41
尹金魁2031
Rank: 3Rank: 3
来 自:河南省南阳市
等 级:论坛游侠
帖 子:156
专家分:162
注 册:2012-12-29
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
这是修改后的运行结果。
2013-03-27 22:42
尹金魁2031
Rank: 3Rank: 3
来 自:河南省南阳市
等 级:论坛游侠
帖 子:156
专家分:162
注 册:2012-12-29
收藏
得分:0 
stramp是字符串比较函数,他不是比较地址,而是比较字符中的字母的大小,按照ascii代码形势比较的,例如A为65,a为97.if (strcmp(name[k], name[j])>0)表示如果前面的字符串比后面的大的话,进行操作:把大的字符串与小的字符串互换。使用选择法从小到大排序的。
2013-03-27 22:59
快速回复:【疑问】 一个小程序中的
数据加载中...
 
   



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

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