当前位置: 首页 > news >正文

CExercise_07_1指针和数组_5检查一个整数数组是否是回文,即正序与倒序相同

题目:

5.编写一个函数,检查一个整数数组是否是回文,即正序与倒序相同。例如[1,2,3,2,1]就是回文的。要求使用指针的算术运算,不要使用取下标[]运算符。


关键点

想明白回文数组为偶数是start<end,比到一半就完全确定了.到两者相等只有一个的奇数数组时,也确定是回文数了. 所以判断条件start<end.指针指向的数对称相等. 所以回文数比完了一半,没有出现false,就确定为true.


分析:


代码

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdbool.h>

/*
    编写一个函数,检查一个整数数组是否是回文,即正序与倒序相同。
    例如[1,2,3,2,1]就是回文的。要求使用指针的算术运算,不要使用取下标[]运算符。

    整个实现的过程非常类似于数组逆序
    用两个指针指向数组开头和末尾
    然后两个比较指针指向的元素,若任意元素不相等,就不是回文数组
*/
bool is_palindrome(int *arr, int len) {//int *arr指向首元素数组的指针.
    int *start = arr;          // 指向数组首元素
    int *end = arr + len - 1; // 指向数组尾元素

    // 首尾指针未相遇,那就继续移动指针比较两个元素的值
    while (start < end) {
        if (*start != *end) { // 如果两个指针指向的元素不相等,则不是回文数组
            return false;
        }
        start++;
        end--;
    }
    return true; // 所有对应元素检查结束,都相等,则是回文数组
}

int main(void) {
    int arr1[] = { 1, 2, 3, 2, 1 };
    int arr2[] = { 1, 2, 3, 4, 5 };

    printf("arr1 is %s\n", is_palindrome(arr1, 5) ? "是回文数组" : "不是回文数组");
    printf("arr2 is %s\n", is_palindrome(arr2, 5) ? "是回文数组" : "不是回文数组");

    return 0;
}
	

在这里插入图片描述


解决方案总结:

相关文章:

  • 【C#知识点详解】LinkedList<T>储存结构详解
  • Spring Boot接口返回Long类型的数据时丢失精度的全局处理
  • LCR 131. 砍竹子 I
  • 什么是混合搜索Hybrid Search?
  • Python 小练习系列 | Vol.14:掌握偏函数 partial,用函数更丝滑!
  • 和DeepSeek聊高速公路定向广播
  • NO.79十六届蓝桥杯备战|数据结构-扩展域并查集-带权并查集|团伙|食物链|银河英雄传说(C++)
  • CesiumEarth v1.12 更新,支持安卓平板离线浏览3DTiles格式的三维倾斜模型
  • 【计网】作业4
  • 树和图论(详细整理,简单易懂!)
  • AutoGLM沉思使用方式
  • 【已完结STM32】--自学江协科技笔记汇总
  • WHAT - React 元素接收的 ref 详解
  • 最新Spring Security实战教程(九)前后端分离认证实战 - JWT+SpringSecurity无缝整合
  • 进程间通信-共享内存
  • 辛格迪客户案例 | 河南宏途食品实施电子合约系统(eSign)
  • Wideband Sparse Reconstruction for Scanning Radar论文阅读
  • Linux网络配置与测试
  • 鸿蒙小案例-京东登录
  • 记录IBM服务器检测到备份GPT损坏警告排查解决过程
  • 特朗普称美军舰商船应免费通行苏伊士运河,外交部:反对任何霸凌言行
  • 碧桂园服务:拟向杨惠妍全资持有的公司提供10亿元贷款,借款将转借给碧桂园用作保交楼
  • 机器人助力、入境游、演出引流:假期纳客千万人次城市有高招
  • 我国科研团队发布第四代量子计算测控系统
  • 独家专访|白先勇:我的家乡不是哪个地点,是中国传统文化
  • 贵州黔西游船倾覆事故70名落水人员在院救治,均为轻伤