首页 > 试题广场 >

小乐乐改数字

[编程题]小乐乐改数字
  • 热度指数:58088 时间限制: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>
#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 回复(0)
#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)
//分析前面某个兄弟的递归写法

int flag = 0;
//不用生成1之前的0
//不能放在递归函数里面,会被初始化成零,则1后面的零就不会被写入
void fun(int num)
{
	if (num >= 10)
		//如果是num>10,10&1就为零了
	{
		fun(num / 10);
	}
	//如果输入1234则生成
	//1234
	//123
	//12
	//1	这些数,进到下面的判断,在返回一个值

	if (num & 1)
		//奇数的二进制第一位为1;偶数的二进制第一位一定为0
		//判断个位数是否为奇数
	{
		printf("1");
		flag = 1;
	}
	else
	{
		if (flag)
                   //如果前面没有一就不输出,有1时falg为1,就会输出0
			printf("0");
	}
}

int main()
{
	int n = 0;
	scanf("%d", &n);
	fun(n);
	return 0;
}

发表于 2024-03-30 11:57:54 回复(1)

问题信息

上传者:牛客309119号
难度:
102条回答 4963浏览

热门推荐

通过挑战的用户

查看代码
小乐乐改数字