题目描述
小乐乐喜欢数字,尤其喜欢0和1。他现在得到了一个数,想把每位的数变成0或1。
如果某一位是奇数,就把它变成1,如果是偶数,那么就把它变成0。请你回答他最后得到的数是多少。
请在这里输入引用内容
输入描述:
输入包含一个整数n (0 ≤ n ≤ 109)
请在这里输入引用内容
输出描述:
输出一个整数,即小乐乐修改后得到的数字。
解题思路:
将输入读取为字符串,判断如果是偶数则为0,奇数为1,最后输出,但是要判断第一个1出现的位置。
首先进行取模运算,判断最后一个数字是否为奇数或者偶数
是偶数或者奇数 将它替换成0或者1
其实这个没有替换数字,只是它符合基数的时候返回了1,给出了一种替换数字的错觉。
# include <stdio.h>
int mod(unsigned int n)
{
//如果n大于9,也就是说n至少是两位数
if (n>9)
{
//递归处理n的每一位。举例:123会被拆分为12和3,分别处理
return 10 * mod(n/10)+mod(n%10);
}
else
{
// 如果n除以2的余数是1,即n是奇数
if(n%2==1)
{
return 1;
}
//否则 n 是偶数
else
{
return 0;
}
}
}
int main ()
{
int m = 0;
scanf("%u",&m);
printf("%u",mod(m));
return 0;
}
官方代码:
#include<iostream>
#include<string>
using namespace std;
int main()
{
char c[10] = {};//将数字读为字符char
cin >> c;
int n = strlen(c);//长度
for (int i = 0; i < n; i++)
{
if (c[i] % 2 == 0)//偶数为0
c[i] = '0';
else
c[i] = '1';奇数为1
}
int f = 0; //做标记,找出第一个1的位置
for (int i = 0; i < n; i++)
{
if (c[i] != '0')
++f;//不等于0就继续向前
if (f == 0)
continue ;
cout << c[i];
}
if (f == 0) //输出一个零,或者非零后的所有数字
cout << '0' << endl;
cout << endl;
}
Hello,各位读者朋友们你们好,欢迎来到 从0至1 的CSDN博客。
一个喜欢文学的理科男,欢迎大家关注我的矩阵平台!
欢迎关注我的短视频矩阵:
微信公众平台:从0至1
今日头条:从0至1
百家号(百度APP):小飞从0至1
抖音:从0至1
小红书:从0至1
知乎:从0至1
CSDN:https://blog.csdn.net/m0_64000959?spm=1000.2115.3001.5343
Gitee:https://gitee.com/from-0-to-1
后续继续更新......