首页 > 试题广场 >

小乐乐改数字

[编程题]小乐乐改数字
  • 热度指数:59440 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

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


输入描述:

输入包含一个整数n (0 ≤ n ≤ 109)



输出描述:
输出一个整数,即小乐乐修改后得到的数字。
示例1

输入

222222

输出

0
示例2

输入

123

输出

101
#include <stdio.h>
int main() {
    int n;
    scanf("%d", &n);
   
    // 处理 n = 0 的情况
    if (n == 0) {
        printf("0\n");
        return 0;
    }
   
    int arr[10]; // 存储每一位转换后的结果(最多10位)
    int num = 0; // 位数计数器
   
    // 分解每一位并转换
    while (n) {
        int digit = n % 10;
        arr[num] = (digit % 2 == 0) ? 0 : 1;
        num++;
        n /= 10;
    }
   
    // 将数组中的数字组合成整数(注意:arr[0] 是原数的个位)
    int result = 0;
    for (int i = num - 1; i >= 0; i--) {
        result = result * 10 + arr[i];
    }
   
    printf("%d\n", result);
    return 0;
}
发表于 2026-04-07 22:39:17 回复(0)
#include <stdio.h>
#include <stdlib.h>

int main() {
    char *str;
    int i = 0;
    int sum = 0;
    scanf("%ms", &str);

    while (str[i]) {
        if (str[i] % 2 == 0)
            str[i++] = '0';
        else
            str[i++] = '1';
    }

    printf("%d\n", atoi(str));

    free(str);
    return 0;
}
最简单的方法
发表于 2025-12-25 11:19:18 回复(1)
#include <stdio.h>

int main() {
    int n=0;
    scanf("%d",&n);
    int x=n;
    int mask=1;
    while(x>9){
        x/=10;
        mask*=10;
    }
    int sum=0;
    do{
        int d=n/mask;
        if(d%2==0){
            d=0;
        }else{
            d=1;
        }
        sum+=d*mask;
        n%=mask;
        mask/=10;

    }while(mask>0);
    printf("%d",sum);
    return 0;
}
发表于 2025-09-09 16:23:51 回复(0)
#include <stdio.h>

int main() {
    long long int n;
    scanf("%lld",&n);
    int r,i=0,c[10],flag=1;
    long long int a=n;
    while(a!=0) {
        r=a%10;
        if(r%2==0) {
            c[i]=0;
        }
        else {
            c[i]=1;
        }
        a=a/10;
        i++;
    }
    int cnt=i-1,j=0;
    for(i=cnt;i>=0;i--){
        if(c[i]!=0){
            flag=0;
            break;
        }
        else
            j++;
    }
    if(flag)
        printf("0");
    else
        for(i=cnt-j;i>=0;i--)
            printf("%d",c[i]);
    return 0;
}
发表于 2025-08-10 09:59:01 回复(0)
#include <stdio.h>
#include <stdlib.h>
int main() {
    int a, b,i=0,t,k;
    char fit[10];
    scanf("%s",fit);
    //printf("%s",fit);
   
    for(i=0;fit[i]!='\0';i++) {
        t=fit[i];
       
        if(t%2!=0){
            fit[i]='1';}
        else
        {
            fit[i]='0';
        }
    }
    int sum = atoi(fit);
    printf("%d", sum);
   
   

    return 0;
}
发表于 2025-07-25 23:25:44 回复(0)
#include <stdio.h>
#include <string.h>
int main() {
    char arr[10] = { 0 };
    scanf("%s", arr);
    int size = strlen(arr);//计算数组的长度
    int i = 0;
    for (i = 0; i < size; i++) {
        if (arr[i] % 2 != 0) {//此位置是奇数
            arr[i] = '1';
        }
        else {
            arr[i] = '0';
        }
    }
    int f = 0;
    for (i = 0; i < size; i++) {
        if (arr[i] != '0') {
            f = 1;
        }
        if (f) {
            printf("%c",arr[i]);
        }
    }
    if (f == size) {
        printf("0");
    }
    return 0;
}
发表于 2025-04-30 20:53:25 回复(0)
#include <stdio.h>

//根据输入的数判断奇偶,存入数组,返回数组的长度
int func(int a,int arr[]) {
    int i=0;
    while (a) {
        if ((a % 10) % 2 != 0) {
            arr[i] = 1;
            a /= 10;
            i++;
        } else {
            arr[i] = 0;
            a /= 10;
            i++;
        }

    }
    return i;
}

//将数组的数字转换成一个数,i表示数组的长度
void change(int i,int arr[]){
    int result = 0;
    for (int a = i - 1; a >= 0; a--) {
        result = result * 10 + arr[a];
    }
    printf("%d", result);
}

int main() {
    int a;
    int arr[10];
    scanf("%d", &a);
    int res=func(a,arr);
    change(res,arr);
    return 0;
}
发表于 2025-03-13 13:47:46 回复(0)
#include <math.h>
#include <stdio.h>
int main() {
    int i = 0;
    int ret = 0;
    int n = 0;
    scanf("%d", &i);
    while (i) {
        int j = i % 10;
        i /= 10;
        int bite = 0;
        if (j % 2 == 1)
            bite = 1;
        ret = ret + bite * (int)pow(10, n++);
    }
    printf("%d", ret);
    return 0;
}
发表于 2025-03-04 19:29:37 回复(0)
#include <math.h>
#include <stdio.h>
int main()
{
    int n = 0 ;
    scanf("%d",&n);
    int arr[9] = {0};
    int i = 0, j = 0;
//用循环判断各个位置的奇偶,并将对应位置转换为0或1存在数组中
//其中,个位存于arr[0],十位存于arr[1],以此类推    
    for (i = 0; i < 9; ++i)
    {
        if(n%2 == 0)
        {
            arr[i] = 0;
        }
        else if(n%2 == 1)
        {
            arr[i] = 1;
        }
        n = (n - n % 10) / 10;
        j++;
//j用来记录输入n的位数
        if (0 == n)
        {
            break;      
        }
    }
//还原出要求的数
    int m = 0;
    while (j)
    {
        m = m + arr[j-1]*pow(10,j-1);
        j--;
    }
    printf("%d\n",m);
    return 0;
}

发表于 2025-01-05 16:01:43 回复(0)
#include<stdio.h>
#include<math.h>
int main()
{
    int n = 0;
    int i = 0;
    scanf("%d", &n);
    int sum = 0;
    while (n > 0)
    {
        int ret = n % 10;
        if (ret % 2 == 0)
        {
            ret = 0;
        }
        else
        {
            ret = 1;
        }
        sum += ret * (int)pow(10, i);
        i++;
        n = n / 10;
    }
    printf("%d\n", sum);
    return 0;
}
发表于 2024-10-26 16:10:45 回复(0)
#include <stdio.h>
#include <stdlib.h>
int main() {
    int i = 0;
    char num[10];
    scanf("%s", num);
    while (num[i] != '\0') {
        if (num[i] % 2 == 0) {
            num[i] = '0';
        }
        else {
            num[i] = '1';
        }
        i++;
    }
    int sum = atoi(num);
    printf("%d", sum);
    return 0;
}


发表于 2024-10-12 23:05:00 回复(0)
#include <stdio.h>
#include <math.h>
int main() {
    int  b,c=0,d,n=0;
    scanf("%d",&b);
    while (b!=0) {
        if (b%10==0) {
            d=0;
        }
        else {
        if ((b%10)%2==0) {
            d=0;
        }
        else {
            d=1;
        }
       
        }
        b=b/10;
        c=c+d*pow(10, n);
        n++;
    }
    printf("%d",c);
    return 0;
}
发表于 2024-09-06 13:53:34 回复(0)

#include<math.h>
#include <stdio.h>
int main()
{
    int n = 0;
    scanf("%d", &n);
    int tmp = 0;
    int s = 1;
    int sum = 0;
    int i = 0;
    while (n)
    {
        tmp = n % 10;
        if (tmp % 2 != 0)
        {
            tmp = 1*pow(10,i);
            i++;
        }
        else
        {
            tmp = 0*pow(10,i);
            i++;
        }
        sum = tmp + sum;
        n= n / 10;
    }
    printf("%d", sum);
    return 0;
}


发表于 2024-08-05 16:55:07 回复(0)
#include<stdio.h>
int main()
{
long long a=0,c=1;
long long b=1,sum=0;
scanf("%d",&a);
while(c!=0)
{
    b=b*10;
c=a/b;
}//确定a的量级 即a是几位数的

b=b/10;  //使ab同一个量级
while(b!=0)
{

if(((a/b)%2)==0) sum=sum+0*b;
else{sum=sum+1*b;}
b=b/10;

}
printf("%lld\n",sum);

    return 0;
}
发表于 2024-07-30 11:44:32 回复(0)
这个应该怎么修改呀
#include <stdio.h>

int main() {
    int a,b,c=0;
    scanf("%d",&a);
    while(b!=0)
    {
        b=a%10;
        a=a/10;
        if(b%2==0)
        c=10*c+0;
        else c=10*c+1;
    }
    printf("%d",c);
    return 0;
}


发表于 2024-07-12 08:03:59 回复(0)
那是1还是0
发表于 2024-04-28 19:18:30 回复(0)
#include<stdio.h>
int main()
{
    int n = 0;
    scanf("%d", &n);
    int s = 1;
    int num = n;
    while (n>=s)
    {
        int a = num % 10;
        num = num / 10;
        if (a % 2 == 0)
        {
            n = n - a * s;
        }
        else
            n = n - (a - 1)* s ;
        s *= 10;
    }
    printf("%d\n", n);
    return 0;
}
发表于 2024-04-06 17:18:55 回复(0)

问题信息

上传者:牛客309119号
难度:
103条回答 5282浏览

热门推荐

通过挑战的用户

查看代码
小乐乐改数字