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

#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
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-08-20 23:17
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
以下是引用lixang在2006-8-20 21:34:11的发言:

#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出现错误)
//这个程序究竟出现了什么错误呢?我百思不得其解呀!求大家帮忙呀?


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-08-20 23:22
dxfantasy
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-8-20
收藏
得分: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;
// int i=1;
for(int i=m+1;i<Size;i++)//排序
{
if(strcmp((char*)a[j],(char*)a[i])<0)
{
cout<<a[j]<<" "<<a[i]<<endl;
char *b=a[j],*c=a[i],*d=" ";
strcpy(d,c);
strcpy(c,b);
strcpy(b,d);
cout<<a[j]<<" "<<a[i]<<endl;
}
}
// cout<<(char*)a[j]<<" ";
}
// cout<<*a[Size-1];
}

void main()
{
char* A[]={"abce","abcd","abccd","abcce"};
int size=sizeof(A)/sizeof(char *);
str_sort(A,size);
//cout<<*A<<endl;
for(int ii=0;ii<size;ii++)
cout<<A[ii]<<endl;
}

这个是我写的,也许对LZ的意思有误解!
但是你的错误是出在

*a[i]=*a[j];
*a[j]=*a[i];

推荐使用strcpy这个函数!

[此贴子已经被作者于2006-8-21 0:38:12编辑过]


2006-08-21 00:37
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
dxfantasy
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-8-20
收藏
得分:0 
cout<<*a[Size];//这里要输出最后一个元素!

最后下个下标是size=4
而*A[]最大下标是3~!
固然是错的!

如果这样引用,只能输出一个 'a' ~~~

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

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

2006-08-21 12:24
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-08-21 17:04
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
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 
[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-08-21 17:44
快速回复:字符串排序的疑惑?
数据加载中...
 
   



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

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