新微赢技术网
标题:
字符串排序的疑惑?
[打印本页]
作者:
林枫
时间:
2009-11-3 04: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出现错误)
//这个程序究竟出现了什么错误呢?我百思不得其解呀!求大家帮忙呀?
作者:
淺藍銫dē爱
时间:
2009-11-3 04:16
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出现错误)
//这个程序究竟出现了什么错误呢?我百思不得其解呀!求大家帮忙呀?
作者:
爱(じΩvê)
时间:
2009-11-3 04: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;
// 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
字符串排序的疑惑?
#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
cout<<*a[Size];//这里要输出最后一个元素!
最后下个下标是size=4
而*A[]最大下标是3~!
固然是错的!
如果这样引用,只能输出一个 'a' ~~~
作者:
︶ぺ雨湮ㄣ
时间:
2009-11-3 04:16
对谢谢楼主的提示:
但我觉得问题并不在这里!(退一步讲,即便这里有错误,那它可能输出错误的结果,但我这个程序连什么也不输出)
所以问题一定在呢个红色区域呢!但我就是不知道!
作者:
liu
时间:
2009-11-3 04:16
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
#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");
}
复制代码
欢迎光临 新微赢技术网 (http://bbs.weiying.cn/)
Powered by Discuz! X3.2