m0_62927409 2022-01-02 19:58 采纳率: 81%
浏览 33
已结题

请问一下怎么在字符中用一个指针从前,一个指针从后面

有趣的“回文”检测(用指针实现)
英文中有很多的回文词,回文词的拼法十分有趣,无论是从前往后拼读,还是从后往前拼读,他们的拼法和词义都不变。例如:dad(爸爸),mum(妈妈),noon(中午),eve(前夕),eye(眼睛),pop(流行),deed(行为),level(水平)等。简单地说,“回文”就是指顺读和倒读都一样的字符串。现在请你编程输入一个单词,判断它是否是回文。
要求:
(1)设置两个指针pStart和pEnd,让pStart指向字符串首部,让pEnd指向字符串尾部。
(2)利用循环从字符串两边对指针所指字符进行比较,当对应的两字符相等且两指针未超越对方时,使指针pStart向前移动一个字符位置(加1),使指针pEnd向后移动一个字符位置(减1),一旦发现两字符不等或两指针已互相超越(不可能是回文),则立即停止循环。
(3)根据退出循环时两指针的位置,判断字符串是否为回文。
程序的两次运行结果如下:
第1次
Input string:ABCCBA↙
Yes!
第2次
Input string:student↙
No!
输入格式: 字符串输入用gets()函数
输出格式:
输入提示信息:"Input string:"
输出信息,不是回文:"No!\n"
输出信息,是回文:"Yes!\n

  • 写回答

1条回答 默认 最新

  • 南七灵 2022-01-02 20:08
    关注
    
    #include<stdio.h>
    #include<string.h>
    int main()
    {
        int i, count = -1;     //count的初值为 -1,算出count具体的值后,方便与数组的下标相对应
        char word[20];
        char* pStart, * pEnd;
        printf("Input string:");
        gets_s(word);
        for (i = 0; word[i] != '\0'; i++)   //count记录的是数组中的有效字符
            count++;
        pStart = word;   //pStart指向word数组名,相当于指向首元素     因为数组名本身就是地址,所以本式中不用加 &
        pEnd = &word[count];   //pEnd指向word数组中'\0'前的字符       但此式中word[count]本身是一个值,所以要加&,传递地址
        for (i = 0; i <= count; i++)
        {
            if (*(pStart + i) == *(pEnd - i))
            {
                if (i > (count - i))     //因为对应的字符不相等时会跳出循环,所以两指针超越对方的情况只在单词回文时出现
                {
                    printf("Yes!\n");
                    break;
                }
                else continue;     //持续遍历数组,直到所有对应的字符比较完毕
            }
            else if (*(pStart + i) != *(pEnd - i))
            {
                printf("No!\n");
                break;
            }
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月10日
  • 已采纳回答 1月2日
  • 创建了问题 1月2日

悬赏问题

  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装
  • ¥40 复杂的限制性的商函数处理