学习C语言编写求回文数代码后的程序运行问题。

代码为:#include<stdio.h>intmain(void){intval;intsum=0;intm;printf("请输入一个需要判断的数:\n");scan... 代码为:
# include <stdio.h>

int main(void)
{
int val;
int sum = 0;
int m;

printf("请输入一个需要判断的数:\n");
scanf("%d\n", &val);

m = val;

while (m)
{
sum = sum * 10 + m%10;
m/=10;
}

if (sum == val)
printf("Yes!\n");
else
printf("No!\n");

return 0;
}
问题1.在调试过程中,自己试数时由小到大,直到12345654321这个数字判断的结果为不是回文数,比它大的数也无法判断。请问这是什么原因?要判断的话应该如何更改代码?

2.我想可能是数太长,则无法存储于变量中,然后我把int val;int sum = 0;int m;改为long int val; long int sum = 0; long int m;再把scanf("%d\n", &val);改为了scanf("%ld\n", &val);还是无法判断,请问字节和存储数值的大小的关系具体是什么样的?
展开
 我来答
三天打鱼N
2019-10-12 · TA获得超过1540个赞
知道大有可为答主
回答量:2032
采纳率:74%
帮助的人:604万
展开全部
你应该用char数组来判断回文 任意长度都可以
然后 int 和long 类型一般都是32位的 所以他们的结果是一样的 要64位 可以定义为 long long 类型
long long 变量;
更多追问追答
追答
输入格式符号 %ld
追问
1.我的cpu是64位的,请问int和long int存储一个数所占内存长度有何不同?
2.int和long int存储数值的范围有什么不同?希望能具体到数值。
3.若要在原有的基础上改的话应该怎么改?
4.然后如果不这样写话,有什么更好的写法?
意法半导体(中国)投资有限公司
2023-06-12 广告
单片机汇编程序是用汇编语言编写的程序,用于控制单片机的操作。汇编语言是一种比较接近计算机硬件语言的低级语言,相对于高级语言来说更容易理解和实现。下面是单片机汇编程序的基本步骤:1. 将代码和数据汇编到规定的段中。2. 在存储器中用未初始化的... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式