首页 > 解决方案 > 如果是字符串或整数,则检查回文输入

问题描述

大家好,我想检查输入(char 或 int)polindrome 与否,但我不能这样做。你能帮助我吗 ?我有错误信息

"invalid conversation char to char*"

我认为这是一个简单的问题,但我已经无法解决。谢谢您的帮助。

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

int main()
{
    int r,sum=0,temp;
    char a;
    char *b = &a;
    printf("Enter a string or number\n");
    scanf("%c", &a);

    if ( isalpha( a ) )
    {
        b = a;
        strrev(b);
        if (strcmp(a, b) == 0)  
            printf("The string is a palindrome.\n");
        else    
            printf("The string isn't a palindrome.\n");
    
    }
    else if ( isdigit( a ) )
    {
        temp=a;    
        while(a>0)    
        {    
          r=a%10;    
          sum=(sum*10)+r;    
          a=a/10;    
        }    
        if(temp==sum)    
          printf("palindrome number ");    
        else    
          printf("not palindrome");   
        }    
    return 0;
}

标签: cstringinteger

解决方案


既然您提到您是一名学生并想学习 C,我不会编写代码,但会尝试为您指明正确的方向。

要解决这个问题,您需要:

  1. 获取字母数字字符串
  2. 检查它是否是回文(你有几个选项)

首先,要获取一个字符串,您的代码中有:

char a;
scanf("%c", &a);

提示:这只会给你一个角色。要获取字符串,首先需要分配一个数组而不是一个字符,然后使用带有不同参数的 scanf,而不是 %c。

这部分任务完全独立于第二部分。我建议首先确保这部分工作,然后再继续。您可以通过获取一个字符串然后立即打印它来做到这一点。通过这种方式,您可以看到您实际处理的内容。

一旦你有了你的字符串,继续分析它。您可以将其还原,然后与原始文件进行比较(这就是您的代码所建议的),但这样做可能更容易:

  1. 查找字符串长度
  2. 将字符串中的每个符号与其对称对应项进行比较。例如,如果字符串长度为 10,则需要将符号#0 与符号#9、符号#1 与符号#8 等进行比较。等等。提示:您需要在此处使用循环。

推荐阅读