设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 742|回复: 7
打印 上一主题 下一主题

字符串排序的疑惑?

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-3 04:16:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#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出现错误)
//这个程序究竟出现了什么错误呢?我百思不得其解呀!求大家帮忙呀?
2#
发表于 2009-11-3 04:16:31 | 只看该作者
2006-8-20 23:17:22 wfpb

等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
第 3 楼   得分: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)<0)
{
char temp;
temp=*a;
*a=*a[j];
*a[j]=*a;
}
}//应该是这个循环有问题,你的排序的想法和这个地方有点出路吧
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出现错误)
//这个程序究竟出现了什么错误呢?我百思不得其解呀!求大家帮忙呀?
回复 支持 反对

使用道具 举报

3#
发表于 2009-11-3 04:16:32 | 只看该作者
#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这个函数!
回复 支持 反对

使用道具 举报

4#
发表于 2009-11-3 04:16:33 | 只看该作者
字符串排序的疑惑?
#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出现错误)
//这个程序究竟出现了什么错误呢?我百思不得其解呀!求大家帮忙呀?
回复 支持 反对

使用道具 举报

5#
发表于 2009-11-3 04:16:34 | 只看该作者
cout<<*a[Size];//这里要输出最后一个元素!

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

如果这样引用,只能输出一个 'a' ~~~
回复 支持 反对

使用道具 举报

6#
发表于 2009-11-3 04:16:35 | 只看该作者
对谢谢楼主的提示:
但我觉得问题并不在这里!(退一步讲,即便这里有错误,那它可能输出错误的结果,但我这个程序连什么也不输出)
所以问题一定在呢个红色区域呢!但我就是不知道!
回复 支持 反对

使用道具 举报

7#
发表于 2009-11-3 04:16:37 | 只看该作者
2006-8-21 17:04:00 lixang

等 级:中级会员
帖 子:229
专家分:0
注 册:2006-7-15
第 9 楼   得分: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)<0)
{
char temp;
temp=*a;
*a=*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出现错误)
//这个程序究竟出现了什么错误呢?我百思不得其解呀!求大家帮忙呀?
回复 支持 反对

使用道具 举报

8#
发表于 2009-11-3 04:16:38 | 只看该作者

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. void str_sort(char*a[], int Size)
  5. {
  6. for(int m=0;m<Size-1;m++)
  7. {
  8. int j=m;
  9. for(int i=m+1;i<Size;i++)
  10. {
  11. if(strcmp((char*)a[j],(char*)a[i])<0)
  12. {
  13. char *temp;
  14. temp=a[i];
  15. a[i]=a[j];
  16. a[j]=temp;
  17. }
  18. }
  19. cout<<a[j]<<' ';
  20. }
  21. cout<<a[Size-1]<<endl;
  22. }

  23. int main()
  24. {
  25. char* A[]={"abce","abcd","abccd","abcce"};
  26. int size=sizeof(A)/sizeof(char *);
  27. str_sort(A,size);
  28. cout<<size<<endl;
  29. system("pause");
  30. }
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-18 22:49 , Processed in 0.085966 second(s), 9 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表