将若干个字符串按升序排序后输出

int__c 2012-10-19 04:39:54
#include <iostream.h>
#include <string.h>
void Panxu(char *str[20],int n)
{
char *p;
for (int m=0;m<n-1;m++)
{
for (int i=0;i<n;i++)
{
if (strcmp(str[i],str[i+1])>0)
{
p=str[i];
str[i]=str[i+1];
str[i+1]=p;
}
}
}
}

void main()
{
int n, i;
cout<<"输入字符串数目n:"<<endl;
cin>>n;
char *p[20];
for (i=0;i<n;i++)
{
cout<<"输入字符串"<<endl;
cin>>p[i];
}
Panxu(p,n);
for (i=0;i<n;i++)
{
cout<<p[i]<<endl;
}
}

运行出现问题 求大神求教,怎么解决这个问题啊?
...全文
628 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
未注销 2012-10-22
  • 打赏
  • 举报
回复
#include <iostream>

#include <cstring>

using namespace std;


void Panxu(char *str[20],int n)
{
//char *p;
for (int m=0;m<n-1;m++)
{
for (int i=0;i<n-m-1;i++)
{
if (strcmp(str[i],str[i+1])>0)
{
char *p = new char[20];
strcpy(p, str[i]);
strcpy( str[i], str[i+1]);
strcpy(str[i+1], p);
}
}
}
}

void main()
{
int n, i;
cout<<"输入字符串数目n:"<<endl;
cin>>n;
char *p[20];
for (i=0;i<n;i++)
{
cout<<"输入字符串"<<endl;
p[i] = new char[100];
cin>>p[i];
}

Panxu(p,n);


for (i=0;i<n;i++)
{
cout<<p[i]<<endl;
}
}


改成这样。
ouyh12345 2012-10-19
  • 打赏
  • 举报
回复
p=str[i];
str[i]=str[i+1];
str[i+1]=p;

字符串拷贝用strcpy
yangtina 2012-10-19
  • 打赏
  • 举报
回复
你应该是刚学吧。很明显的没有命名空间啊,在第三行或main函数中加句using namespace std;

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧