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日

悬赏问题

  • ¥15 工创大赛太阳能电动车项目零基础要学什么
  • ¥20 limma多组间分析最终p值只有一个
  • ¥15 nopCommerce开发问题
  • ¥15 torch.multiprocessing.spawn.ProcessExitedException: process 1 terminated with signal SIGKILL
  • ¥15 QuartusⅡ15.0编译项目后,output_files中的.jdi、.sld、.sof不更新怎么解决
  • ¥15 pycharm输出和导师的一样,但是标红
  • ¥15 想问问富文本拿到的html怎么转成docx的
  • ¥15 我看了您的文章,遇到了个问题。
  • ¥15 GitHubssh虚拟机连接不上
  • ¥15 装完kali之后下载Google输入法 重启电脑后出现以下状况 且退不出去 桌面消失 反复重启没用