//通过键盘给一个数组赋值,然后反序输出

habike 2012-03-08 12:55:06
//通过键盘给一个数组赋值,然后反序输出的程序,除了我这种原数组不变,将值反序赋给另一个数组,即a[5]={1 1 3 4 5} 程序执行后 b[5]={5 4 3 1 1}
#include <iostream>
#include <stdlib.h>
using namespace std;
void main()
{
//通过键盘给数组num赋值
const int size=5;
int i;
int nums[size];
int sum=0;
cout << "Please enter " << size << " nums" <<endl;
for(i=0; i<size; i++)
{
cin >> nums[i];
}
int o;
int fan_nums[size];
for(i=size-1,o=0; i>=0,o<size; i--,o++)
{fan_nums[o]=nums[i];
cout << "fan_nums" << "[" << o << "]" << " is " << fan_nums[o] << endl;
}

}


有没有那种改完后原数组的值也改变的程序,即a[5]={1 1 3 4 5} 程序执行后 a[5]={5 4 3 1 1}
...全文
223 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiyoulaoyuanjia 2012-03-08
  • 打赏
  • 举报
回复
抽了个空帮你写了一个!
#include <iostream>
using namespace std;

//置换
void exchange(int &a,int &b)
{
if(a!=b)
{
a = a + b;
b = a - b;
a = a - b;
}
}

// 逆序
// a-逆序数组 begin开始序号 end结束序号
void reserve(int a[],int begin,int end){
while(begin<=end){
exchange(a[begin],a[end]);
begin++;
end--;
}
}

// 打印数组
void print(int a[],int n){
int i=0;
for(;i<n;i++){
cout<<a[i]<<" ";
}
cout<<endl;
}


int main()
{
int a[]={1,2,3,4};
cout<<"输入前"<<endl;
print(a,sizeof(a)/sizeof(a[1]));
reserve(a,0,sizeof(a)/sizeof(a[1])-1);
cout<<"逆转后"<<endl;
print(a,sizeof(a)/sizeof(a[1]));
return 0;
}

hustGnollWood 2012-03-08
  • 打赏
  • 举报
回复
这样改就可以了:只定义了一个变量a用来做变量之间的数值交换


#include <iostream>
#include <stdlib.h>
using namespace std;
void main()
{
//通过键盘给数组num赋值
const int size=5;
int i;
int nums[size];
int temp;
cout << "Please enter " << size << " nums" <<endl;
for(i=0; i<size; i++)
{
cin >> nums[i];
}


for(i=0; i<=int(size/2)-1;i++)
{
temp=nums[i];
nums[i]=nums[size-1-i];
nums[size-1-i]=temp;
}

for(i=0; i<size; i++)
{
cout<<nums[i]<<endl;
}

}
面包大师 2012-03-08
  • 打赏
  • 举报
回复
	for(i=size-1,o=0; i>=0,o<size; i--,o++)
{
if (o<size/2)
{
fan_nums[o]=nums[i];
nums[i]=nums[o];
nums[o]=fan_nums[o];
}
else
{
fan_nums[o]=nums[o];
}
cout << "fan_nums" << "[" << o << "]" << " is " << fan_nums[o] << endl;
}
mt619722122 2012-03-08
  • 打赏
  • 举报
回复
写个两个数交换但不占用额外空间的小算法给你
void exchange(int &a,int &b)
{
if(a!=b)
{
a = a + b;
b = a - b;
a = a - b;
}
}

不用额外空间 交换了a b的值,数组自己首位交换下就可以实现了

64,648

社区成员

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

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