m0_69358180 2022-09-06 19:59 采纳率: 100%
浏览 18
已结题

判断回文数的小程序代码问题

这是一个 “判断回文数” 的简单程序(如下),正在学习C语言的函数部分,所以这里定义了一个judge函数;
我的思路是先定义两个字符数组,一个用来储存原数组,一个用来储存反序数组,然后进行比较判断;
检验语法是没有什么问题(未报错),就是不知道哪里出问题了,然后导致一直无法正确判断回文数。试了好几个回文数“如12321”与“1 2 3 2 1”以及“cmc”与“c m c”,结果都是显示“不是回文数”,好像是并未进行理想判断。
谢谢回答[rose].

#include<stdio.h>
#include<string.h>

void judge(char cArray[100], char cArray1[100]);

int main()
{
char cArray[100], cArray1[100];
int iTemp=0;

puts("please enter a number");
gets(cArray);

judge(cArray,cArray1);

return 0;

}

void judge(char cArray[100],char cArray1[100])
{
int iNum, iTemp1;
iTemp1 = strlen(cArray);
for (iNum = 0; iNum <= iTemp1; iNum++)
{
cArray1[iTemp1 - iNum] = cArray[iNum];

}
if (cArray == cArray1)
    puts("是回文数");
else puts("不是回文数");

}

  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2022-09-06 20:29
    关注

    首先for (iNum = 0; iNum <= iTemp1; iNum++)有问题,不能<=,只能<
    另外,cArray==cArray1完全是错误用法,这是判断两个数组首地址是否相同,显然是不可能相同的。
    其实你只要对输入字符串的首尾字符逐个判断是否相同就行了,直至中间字符,如果都相同就是回文

    #include <stdio.h>
    #include <string.h>
    int main()
    {
        char s[1000];
        int i=0,j=0,len;
        scanf("%s",s);
        len = strlen(s);
        j = len-1;
        while(i<j)
        {
             if(s[i] != s[j])
                break;
              i++;
              j--;
        }
        if(i<j)
            printf("不是回文");
        else
            printf("是回文");
        return 0;
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月14日
  • 已采纳回答 9月6日
  • 创建了问题 9月6日

悬赏问题

  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?