C语言_int数据存入字符数组

本文介绍了一个使用C语言编写的简单程序,用于判断输入的正整数是否为回文数。通过将整数转换为字符数组,并从两端向中间逐个比较字符的方法来实现这一功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前情提要

在写educoder的小练习,

本关任务:从键盘上输入一个正整数,判断其是否是回文数。若是回文数,输出该数,若不是回文数,输出0。所谓回文数是指顺序读与反序读都是一样的数,如121,25852。

相关知识
为了完成本关任务,你需要掌握:1.如何获取数字拆分,2.如何遍如何存储数据,3、如何判断回文数。

编程要求
根据提示,在右侧编辑器补充代码。

测试说明
平台会对你编写的代码进行测试:

测试输入:121
预期输出:
121

开始你的任务吧,祝你成功!

代码

#include <stdio.h>
int main ()
{   
    char a[100001];
    int i = 0;
    int sym = 0;
    //先读入整形 再转换成字符变量
    int num;
    int t;
    int j;
    scanf("%d",&num);
     while(num>0){
        t = num%10;
        a[i] = t;
        num/=10;
        i++;
       
    }
    i--;
    
    
for(int n=0; n<i/2 + 1; n++){
    //从数字第一个数与最后一个数向中间比较
    int m = i - n;
    //printf("%c %c\n",a[n],a[m]);
    if(n<m)  //比较结束条件是 n>=m
    {
        if(a[n]!=a[m]){   //读取到两数不等 记录 跳出循环
            sym = 1;
            break;
        }
    }
}

if(sym == 0)
    {

        for( int j=0; j<=i; j++)
            printf("%d",a[j]);

    }



else printf("0");

    return 0;
}

我的思路是读入整型数据将其拆分放入数组,然后两边开始比较是否相等.

int数据放入char数组

char a[1];
int i = 1;
a[0] = 1;

是一种糟糕的做法 它存储的是ascii码所对应的字符;
也就是说,字符数组的输出部分也应该用%d占位符,来输出字符对应的ascii码
(我一开始以为存入会自动强制类型转换为char的123 实际上是强制类型转换为ascii对应的字符 )
至于为啥想用char,是一开始想逐个读入数字,用字符数组比较好处理,但是不会写连续读入的条件.

连续读入字符

用getch() 和 getche()函数能轻易实现

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值