c - 如果是字符串或整数,则检查回文输入
问题描述
大家好,我想检查输入(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;
}
解决方案
既然您提到您是一名学生并想学习 C,我不会编写代码,但会尝试为您指明正确的方向。
要解决这个问题,您需要:
- 获取字母数字字符串
- 检查它是否是回文(你有几个选项)
首先,要获取一个字符串,您的代码中有:
char a;
scanf("%c", &a);
提示:这只会给你一个角色。要获取字符串,首先需要分配一个数组而不是一个字符,然后使用带有不同参数的 scanf,而不是 %c。
这部分任务完全独立于第二部分。我建议首先确保这部分工作,然后再继续。您可以通过获取一个字符串然后立即打印它来做到这一点。通过这种方式,您可以看到您实际处理的内容。
一旦你有了你的字符串,继续分析它。您可以将其还原,然后与原始文件进行比较(这就是您的代码所建议的),但这样做可能更容易:
- 查找字符串长度
- 将字符串中的每个符号与其对称对应项进行比较。例如,如果字符串长度为 10,则需要将符号#0 与符号#9、符号#1 与符号#8 等进行比较。等等。提示:您需要在此处使用循环。
推荐阅读
- python - 从 itertool 创建的变量 python 获取迭代器值
- sql-server - 无法将元数据部署到 Analysis Services
- excel - 如何将 SharePoint Excel 文件连接到 SSIS Excel 源?
- r - 找到多项式线性部分的最佳拟合线
- javascript - Uncaught (in promise) TypeError: profile.map is not a function in React.js
- reactjs - 根据 setState 更改 Ant Design 按钮禁用布尔值
- javascript - for循环抛出错误中数组的索引变量
- autodesk-forge - 如何在 hyperion 工具容器中显示图表
- python - Nameko - 在 '__init__.py' 中找不到参考 'config'
- java - Scala Map 的隐式转换