C++每日程序练习5——通过两种方法反转一个数组

//反转一个数组

#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{
    //方法1、用指针进行反转
    int nums[] = {21,23,34,45,66};
    int numLens = sizeof(nums) / sizeof(int);
    //指针取值的话,默认等于取第一个值nums = nums[0]
    int* ptr_nums_start = nums;   //指针指向数组第一个元素
    int* ptr_nums_end = nums + numLens -1; //指针指向数组最后一个元素
    int temp;
    //cout << *ptr_nums_start << "\t" << *ptr_nums_end;
	//这里要区分数组长度为奇数和偶数的情况,如果为奇数,则满足ptr_nums_start = ptr_nums_end时跳出循环,如果为偶数,则满足ptr_nums_start = ptr_nums_end - 1时跳出循环
    while(ptr_nums_start != ptr_nums_end && ptr_nums_start != ptr_nums_end - 1){
        temp = *ptr_nums_end;//指针指的值互换
        *ptr_nums_end = *ptr_nums_start;
        *ptr_nums_start = temp;
        ptr_nums_start++;//指针指向加1
        ptr_nums_end--;
    }
    cout << "方法1运行结果为:" << endl;
    for(int i = 0; i < numLens; i++){
        //cout << *(ptr_nums_start+i) << '\t';
        cout << nums[i] << '\t';
    }
    cout << endl;//换行

    //方法2、用一般的方法进行反转
    int nums2[] = {21,23,34,99};
    int numLens2 = sizeof(nums2) / sizeof(int);
    int temp2;

    for(int i = 0;i < numLens2 - 2 *i; i++){
        temp = nums2[numLens2-1-i];
        nums2[numLens2-1-i] = nums2[i];
        nums2[i] = temp;
    }
    cout << "方法2运行结果为:" << endl;
    //int* ptr_num = nums2;//取nums数组第一个元素
    for(int i =0; i < numLens2;i++){//打印反转后的数组
        cout << nums2[i] << '\t';
        //cout << *(ptr_num + i) << '\t';//第二种打印数组方式
    }
    cout << endl;//换行
    return 0;
}

//运行结果

方法1运行结果为:
66      45      34      23      21
方法2运行结果为:
99      34      23      21

Process returned 0 (0x0)   execution time : 0.075 s
Press any key to continue.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值