C语言每日一题——小乐乐改数字(牛客网)

问题描述:小乐乐喜欢数字,尤其喜欢0和1。他现在得到了一个数,想把每位的数变成0或1。如果某一位是奇数,就把它变成1,如果是偶数,那么就把它变成0。请你回答他最后得到的数是多少。

示例1

输入:

222222
输出:

0

示例2

输入:

123

复制输出:

101
#include<stdio.h>
int main()
{
    int a, b, c, i, n;                      //定义四个变量
    int d = 0;          
    scanf("%d", &n);                         //d来接收输入的数值
    a = b = n;                             // a和b都等于输入的数值
    for (i = 1; b != 0; i=i * 10)          //i等于1,每次给乘10,因为每次判断个位的值,分别按个位,十位在d中排放,当b等于0时,即n从个位取到最高位时,for语句结束
    {
        c = a % 10;                             //对10取余就是取各位数字,c等于个位如12345 c=5
        b = b / 10;                             // b是除过个位剩下的数字,列如12345 b=1234
        a = b;                                  // a=1234
        if (c % 2 == 0)                           //判断c对2取余是否为0,判断这个数是计数还是偶数
        {
            c = 0;                                // 若为偶数c等于0,
        }
        else
            c = 1;                                // 若为奇数c等于1
        d= c*i+d;                                  // d等于每次循环的个位数乘i再加它上一次的值
    }
    printf("%d", d);                       // 打印结果
    return 0;
}

 注意:本题输出是从个位开始将每个位上面判断的数字按位加和,而不是直接加和

猜你喜欢

转载自blog.csdn.net/weixin_49449676/article/details/123981475