找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 751|回复: 7

字符串排序的疑惑?

[复制链接]
发表于 2009-11-3 04:16:30 | 显示全部楼层 |阅读模式 IP:江苏扬州
#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出现错误)
//这个程序究竟出现了什么错误呢?我百思不得其解呀!求大家帮忙呀?
发表于 2009-11-3 04:16:31 | 显示全部楼层 IP:江苏扬州
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出现错误)
//这个程序究竟出现了什么错误呢?我百思不得其解呀!求大家帮忙呀?
回复

使用道具 举报

发表于 2009-11-3 04:16:32 | 显示全部楼层 IP:江苏扬州
#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这个函数!
回复

使用道具 举报

发表于 2009-11-3 04:16:33 | 显示全部楼层 IP:江苏扬州
字符串排序的疑惑?
#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出现错误)
//这个程序究竟出现了什么错误呢?我百思不得其解呀!求大家帮忙呀?
回复

使用道具 举报

发表于 2009-11-3 04:16:34 | 显示全部楼层 IP:江苏扬州
cout<<*a[Size];//这里要输出最后一个元素!

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

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

使用道具 举报

发表于 2009-11-3 04:16:35 | 显示全部楼层 IP:江苏扬州
对谢谢楼主的提示:
但我觉得问题并不在这里!(退一步讲,即便这里有错误,那它可能输出错误的结果,但我这个程序连什么也不输出)
所以问题一定在呢个红色区域呢!但我就是不知道!
回复

使用道具 举报

发表于 2009-11-3 04:16:37 | 显示全部楼层 IP:江苏扬州
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出现错误)
//这个程序究竟出现了什么错误呢?我百思不得其解呀!求大家帮忙呀?
回复

使用道具 举报

发表于 2009-11-3 04:16:38 | 显示全部楼层 IP:江苏扬州

  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. }
复制代码
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-30 17:31 , Processed in 0.124774 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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