描述
小乐乐喜欢数字,尤其喜欢0和1。他现在得到了一个数,想把每位的数变成0或1。如果某一位是奇数,就把它变成1,如果是偶数,那么就把它变成0。请你回答他最后得到的数是多少。
输入描述:
输入包含一个整数n (0 ≤ n ≤ 109)
输出描述:
输出一个整数,即小乐乐修改后得到的数字。
示例1
输入:
222222
输出:
0
示例2
输入:
123
输出:
101
本题思路:首先在做这道题的时候我的第一想法是纯粹用int记录这个数然后一个一个数字拆解出来进行改变,然而这一思路很快被我所否定,我想到如果要拆数字的话,那么使用数组会更好,而且是字符数组(可以用strlen直接求数组长度),详情请看代码~~~~~~~~~~~~~~~~~~~~~~~~~~~
#include<stdio.h>
#include<string.h>
int main()
{
char num[50],i,f=0;
while((num[i]=getchar())!='\n')
{
i++;
}
num[i]='\0';
int len=strlen(num);
for(i=0;i<len;i++)
{
if((num[i]-'0')%2==0)
{
num[i]='0';
}
else
{
num[i]='1';
}
}
for(i=0;i<len;i++)
{
if(num[i]!='0')//如果不是0的话输出数字且继续前进
{
++f;
}
if(f==0) // 如果是前导0的话跳过输出继续前进
continue;
printf("%c",num[i]);
}
if(f==0) //如果全为0的话直接输出一个0
printf("0");
return 0;
}
这是一种解题方法,在看题解的时候我又发现了另外一种解法(某位不知名大佬写的)——————递归
#include <stdio.h>
int bian(long long n)
{
int b = n%10;
int c = b%2;
n = n/10;
if( n )
{
return 10 * bian(n) +c;
}
return c;
}
int main()
{
long long n = 0;
scanf("%lld",&n);
int a = bian(n);
printf("%d",a);
return 0;
}