c - 如何修复此代码以使用指针检查数字是否为回文?
问题描述
我对 C 很陌生。我真的不明白如何正确处理指针。我知道它可以在没有指针的情况下完成,但我必须使用它们
#include <stdio.h>
#include <stdlib.h>
void palindrome(int *n)
{
int ok=0,*p,*m;
m=n;
while(*n!=0)
{
*p=*p*10+*n%10;
*n=*n/10;
}
if (*m==*p) ok=1;
if (*m!=*p) ok=0;
if (ok==1)
printf("Number is palindrome.");
if (ok==0)
printf("Number is not palindrome");
}
int main()
{
int n;
printf("Give value to n: ");
scanf("%d",&n);
palindrome(n);
}
预期结果将是,例如,数字 212 是回文,数字 312 不是回文
解决方案
这是代码。我认为您应该在实际使用指针之前尝试了解指针的工作原理。我不想为您提供代码,但由于您是新手,所以我提供了一个工作代码。尝试了解它是如何工作的,而不是仅仅将此代码复制粘贴到您必须放置的位置。
#include <stdio.h>
#include <stdlib.h>
void palindrome(int *n)
{
int ok=0;
int *p = (int *)malloc(sizeof(int));
int *m = (int *)malloc(sizeof(int));
*p=0;
*m=*n;
while(*n!=0)
{
*p=*p*10+*n%10;
*n=*n/10;
}
if (*m==*p) ok=1;
if (*m!=*p) ok=0;
if (ok==1)
printf("Number is palindrome.");
if (ok==0)
printf("Number is not palindrome");
}
int main()
{
int n;
printf("Give value to n: ");
scanf("%d",&n);
palindrome(&n);
return 0;
}
推荐阅读
- javascript - HowTo Google 登录 - 理解、安全 - 如何处理数据
- c++ - 在 C++ 模板函数中接收相同类型的可变参数大小的原始数组
- nuxt.js - 使用 nuxt.js 一次生成两个静态应用程序
- mysql - 查询(HAVING 子句)在 Mysql 版本 5.7 和 8.0 之间的行为不同
- amazon-cloudwatchlogs - 使用 cloudwatch 代理时如何解决“无效序列令牌”?
- keras - GridSearchCV、管道和功能模型
- python - 如何从 URL 中有日期的多个页面中提取数据?
- java - 如何在 natTable 中对配置标签进行排序?(有没有一种简单的方法可以从 nattable 中获取相对坐标?)
- javascript - 带有不跟随缩放的垂直可拖动项目符号的 AmCharts4 折线图
- visual-studio-code - 如何让 VSCode IntelliSense 忽略 *.i 文件?