| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 989 人关注过本帖
标题:字符串排序的疑惑?
取消只看楼主 加入收藏
lixang
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2006-7-15
收藏
 问题点数:0 回复次数:5 
字符串排序的疑惑?

#include <iostream.h>
#include <string.h>

void str_sort(char*a[], int Size)
{
for(int m=0;m<Size-1;m++)
{
int j=m;
for(int i=m+1;i<Size;i++)//排序
{
if(strcmp((char*)a[j],(char*)a[i])<0)
{
char temp;
temp=*a[i];
*a[i]=*a[j];
*a[j]=*a[i];
}
}
cout<<*a[j]<<' ';
}
cout<<*a[Size];
}

void main()
{
char* A[]={"abce","abcd","abccd","abcce"};
int size=sizeof(A)/sizeof(char *);
str_sort(A,size);
cout<<size<<endl;
}
//在Vc++测试中程序没出现错误,也没有任何警告,但最后什么也没有(最后出来一个面板提示exe出现错误)
//这个程序究竟出现了什么错误呢?我百思不得其解呀!求大家帮忙呀?

搜索更多相关主题的帖子: 字符 
2006-08-20 21:34
lixang
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2006-7-15
收藏
得分:0 

字符串排序的疑惑?
#include <iostream.h>
#include <string.h>

void str_sort(char*a[], int Size)
{
for(int m=0;m<Size-1;m++)//我估计程序错在了红色区域,但是我无论如何都未能修正,望大家帮助!
{
int j=m;
for(int i=m+1;i<Size;i++)//排序
{
if(strcmp((char*)a[j],(char*)a[i])<0)
{
char temp;
temp=*a[i];
*a[i]=*a[j];
*a[j]=temp;
}
}
cout<<*a[j]<<' ';
}
cout<<*a[Size];//这里要输出最后一个元素!
}

void main()
{
char* A[]={"abce","abcd","abccd","abcce"};
int size=sizeof(A)/sizeof(char *);
str_sort(A,size);
cout<<size<<endl;
}
//在Vc++测试中程序没出现错误,也没有任何警告,但最后什么也没有(最后出来一个面板提示exe出现错误)
//这个程序究竟出现了什么错误呢?我百思不得其解呀!求大家帮忙呀?

2006-08-21 10:56
lixang
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2006-7-15
收藏
得分:0 
对谢谢楼主的提示:
但我觉得问题并不在这里!(退一步讲,即便这里有错误,那它可能输出错误的结果,但我这个程序连什么也不输出)
所以问题一定在呢个红色区域呢!但我就是不知道!

[此贴子已经被作者于2006-8-21 17:16:23编辑过]

2006-08-21 12:24
lixang
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2006-7-15
收藏
得分:0 

我觉得问题关键不在你们说的那里!你门说的那只是错误的部分是(次要错误)
我现在把程序中cout<<*a[Size];删除,但程序依然是不能运营的!

字符串排序的疑惑?
#include <iostream.h>
#include <string.h>

void str_sort(char*a[], int Size)
{
for(int m=0;m<Size-1;m++)//我估计程序错在了红色区域,但是我无论如何都未能修正,望大家帮助!
{
int j=m;
for(int i=m+1;i<Size;i++)//排序
{
if(strcmp((char*)a[j],(char*)a[i])<0)
{
char temp;
temp=*a[i];
*a[i]=*a[j];
*a[j]=temp;
}
}
cout<<*a[j]<<' ';
}
// 去除cout<<*a[Size];//这里要输出最后一个元素!
}

void main()
{
char* A[]={"abce","abcd","abccd","abcce"};
int size=sizeof(A)/sizeof(char *);
str_sort(A,size);
cout<<size<<endl;
}
//在Vc++测试中程序没出现错误,也没有任何警告,但最后什么也没有(最后出来一个面板提示exe出现错误)
//这个程序究竟出现了什么错误呢?我百思不得其解呀!求大家帮忙呀?

2006-08-21 17:22
lixang
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2006-7-15
收藏
得分:0 
以下是引用woodhead在2006-8-21 17:44:36的发言:
[CODE]
#include <iostream>
#include <string>

using namespace std; //你给我的程序加了一句代码:便能正常运行了!而且正确!!
//能告诉我的程序为什么一加这个便成功了呢?
void str_sort(char*a[], int Size)
{
for(int m=0;m<Size-1;m++)
{
int j=m;
for(int i=m+1;i<Size;i++)
{
if(strcmp((char*)a[j],(char*)a[i])<0)
{
char *temp;
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
cout<<a[j]<<' ';
}
cout<<a[Size-1]<<endl;
}

int main()
{
char* A[]={"abce","abcd","abccd","abcce"};
int size=sizeof(A)/sizeof(char *);
str_sort(A,size);
cout<<size<<endl;
system("pause");你加的这个代码可有可无!但我不明白这作用是什么!
}[/CODE]

你太厉害拉!仅仅加一句话,就成功了!谢谢!

[此贴子已经被作者于2006-8-21 20:20:17编辑过]

2006-08-21 20:17
lixang
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2006-7-15
收藏
得分:0 
以下是引用wfpb在2006-8-21 20:21:45的发言:
你可不可以看仔细点,楼上的?
他是把循环里面的内容改了
那个using namespace std;是使用空间名。//如果没有这句话程序将什么也不显示?为什么呢?
system("pause");是由于woodhead的编译器是DEV-C++,加这个是暂停程序。//为何要暂停呢?是不是没必要!呢?

2006-08-21 21:25
快速回复:字符串排序的疑惑?
数据加载中...
 
   



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

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