首页 > 试题广场 >

小乐乐改数字

[编程题]小乐乐改数字
  • 热度指数:53403 时间限制: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 <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)
#include <stdio.h>

int main()
{
    int n = 0;
    scanf("%d", &n);
    int i = 1;
    int j = 0;
    do
    {
        int t = n % 10 % 2;   //拿每一位取模
        j = j + (t * i);      //把每一位都加起来
        i *= 10;              //依次乘下去
    } while (n /= 10);
    printf("%d\n", j);
    return 0;
}

编辑于 2024-03-18 20:38:41 回复(0)
#include <stdio.h>

int main()
{
    int n, i = 1, b = 0;
    scanf("%d", &n);
    while(n)
    {
        if(n % 2 == 1)
        {
            b = b + i;
        }
        i = i * 10;
        n = n / 10;
    }
    printf("%d", b);
    return 0;
}
发表于 2024-03-02 21:24:57 回复(0)
#include <stdio.h>
#include <math.h>
int main() {
    int n;
    scanf("%d",&n);
    int i=0,num=0;
    while(n!=0){ //循环,从个位数到结束
        int y = n % 10; //从个位数开始
        y = (y%2==0)?0:1; //对2取余,为零取0,否则1
        num = num + y * pow(10,i++); // 从个位数开始累加
        n/=10; // 从十开始
    }
    printf("%d",num);
    return 0;
}
发表于 2024-02-22 20:56:36 回复(0)
#include <stdio.h>

int length(long n) {
  int len = 0;
  while (n > 0) {
    n /= 10;
    len++;
  }
  return len;

}

int main() {
  long n,num=0,pow =1;
  scanf("%ld", &n);

  int len = length(n);
  int a[len];
  // 得到每一位
  for (int i = 0 ;i<len; i++) {
    a[i] = n % 10;
    n /= 10;
  }

  // 处理数据
  for (int i = 0; i < len; i++) {
    if (a[i] % 2 == 0) a[i] = 0;
    else a[i] = 1;
  }
  // 还原数据
  for (int i = 0; i < len; i++) {
    num+=pow*a[i];
    pow*=10;
  }
  printf("%ld",num);

  return 0;
}
编辑于 2024-02-20 15:33:41 回复(0)

问题信息

上传者:牛客309119号
难度:
98条回答 3927浏览

热门推荐

通过挑战的用户

查看代码
小乐乐改数字