一道简单题目c++~~

风中老狼 2012-05-14 12:45:47
用动态存储分配技术实现字符串的输入和排序。

1.定义一个指向字符串的指针数组,用一个函数完成n个不等长字符串的输入,根据实际输入字符串的长度用new运算符分配存储空间,依次使指针数组中的元素指向每一个输入的字符串。

2.定义一个完成n个字符串排序的函数,在排序过程中,要求只交换指向字符串的指针值,不交换字符串。

3.再定义一个函数,完成动态存储空间的释放工作。在主函数中调用上述函数完成字符串的输入、排序,将排序后的字符串输出,最后调用函数释放存储空间。



自己写的,各位看下有没有出错,特别是上面的第二个条件,一直对题目有点纠结(题目说交换指向字符串的指针值,就是交

换地址,地址不就是字符串么,后面又说不交换字符串,不知道啥意思,求高手指点)





#include<iostream>
using namespace std;
#include<string.h>
void fn1(char* a[],char str[]);
void fn2(char *array[]);
void fn3(char* array[]);
const int n=4;
void main()
{
//fn1,fn2,fn3分别对应3个条件
char* a[n];
char s[100];
fn1(a,s);
fn2(a);
for(int i=0;i<n;i++)
{
cout<<a[i]<<endl;
}
fn3(a);

}
void fn1(char* array[],char str[])//wenti 1
{
for(int i=0;i<n;i++)
{
cin>>str;
array[i]=new char[strlen(str)+1];
strcpy(array[i],str);
}

}
void fn2(char *array[])
{

char ss[100];
for(int i=0;i<n-1;i++)
for(int j=i+1;j<n;j++)
if(strcmp(array[i],array[j])>0)
{
strcpy(ss,array[j]);
strcpy(array[j],array[i]);
strcpy(array[i],ss);
}


}
void fn3(char* array[])
{
for(int i=0;i<n;i++)
delete []array[i];
}





...全文
325 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
小新蜡笔 2012-12-07
  • 打赏
  • 举报
回复
引用 6 楼 W170532934 的回复:
这题目和C++有个屁关系。 *ptr和ptr[]是一个东西。这里的ptr只是作为一个临时变量的作用。交换指针的时候暂存指针值的。
忒霸气了这也……
风中老狼 2012-05-14
  • 打赏
  • 举报
回复
麻烦了啊各位。。

看下第二个函数这样写是否符合题目要求
W170532934 2012-05-14
  • 打赏
  • 举报
回复
这题目和C++有个屁关系。
*ptr和ptr[]是一个东西。这里的ptr只是作为一个临时变量的作用。交换指针的时候暂存指针值的。
风中老狼 2012-05-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
要求:只交换指向字符串的指针值,不交换字符串。

这样写:
void fn2(char *array[])
{
char* ptr = NULL;
for(int i=0;i<n-1;i++)
for(int j=i+1;j<n;j++)
if(strcmp(array[i],array[j])>0)
{
ptr = array[i];
array……
[/Quote]

char* ptr 和char ptr[]不是同一个东西吗

风中老狼 2012-05-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
程序不第二个要求
直接交换就可以
ss=array[i];
array[i]=array[j];
array[j]=ss;
另外要用int main()
[/Quote]



啥意思~~没看懂
LittleCommit 2012-05-14
  • 打赏
  • 举报
回复
要求:只交换指向字符串的指针值,不交换字符串。

这样写:
void fn2(char *array[])
{
char* ptr = NULL;
for(int i=0;i<n-1;i++)
for(int j=i+1;j<n;j++)
if(strcmp(array[i],array[j])>0)
{
ptr = array[i];
array[i] = array[j];
array[j] = ptr;
}
}
Rotaxe 2012-05-14
  • 打赏
  • 举报
回复
程序不第二个要求
直接交换就可以
ss=array[i];
array[i]=array[j];
array[j]=ss;
另外要用int main()

64,648

社区成员

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

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