4

[C语言练习题 ]把一个数的奇数位变成1,偶数位变成0,怎么写?

 2 years ago
source link: https://blog.51cto.com/xingyuli/5341819
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

题目来源:

https://www.nowcoder.com/practice/fcd30aac9c4f4028b23919a0c649824d?tpId=107&&tqId=33397&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking

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

输入描述:

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

输出描述:

输出一个整数,即小乐乐修改后得到的数字。

222222

完成代码:

#include
#include
int main()
{
int a = 0;
scanf("%d", &a);

int b = 0;//记录a的每一位数字
int sum = 0;
int i = 0;
while (a != 0)
{
//得到a的每一位
b = a % 10;
if (b % 2 == 1)
{
b = 1;
}
else
{
b = 0;
}
sum += b * pow(10, i++);
a /= 10;
}
printf("%d", sum);
return 0;
}

分析题目:

[C语言练习题 ]把一个数的奇数位变成1,偶数位变成0,怎么写?_C语言_02

 根据这三步走,我们就可以解决这个问题。

首先我们第一步:

[C语言练习题 ]把一个数的奇数位变成1,偶数位变成0,怎么写?_C语言_04

 这里我们用9999演示:

[C语言练习题 ]把一个数的奇数位变成1,偶数位变成0,怎么写?_代码实现_06

 代码表示:

while (a != 0)
{
//得到a的每一位
b = a % 10;

a /= 10;
}

 第二步:

对拿出的每一位进行转换,题目要求

[C语言练习题 ]把一个数的奇数位变成1,偶数位变成0,怎么写?_C语言_09

 判断一个数字是奇数还是偶数,我们只需要给这个数字模2,看是否等于0即可,等于0证明是偶数,不是0证明是1。同理如果模二等于1,证明这个数字是奇数,否则则是偶数。

在这里我选择使用后者吧:

代码实现:

//数字转换
if (b % 2 == 1)
{
b = 1;
}
else
{
b = 0;
}

最后一步:

整合输出,输出的方法用的是分步累加的方法,由于我们取数字的方法是从个位开始取,依次十位,百位,千位........因为我们最后得到的数字要处理的时候我们选择使用给每一位乘上这一位相对应的10的幂次方。

[C语言练习题 ]把一个数的奇数位变成1,偶数位变成0,怎么写?_代码实现_12

 因此在这里我们调用了pow函数

代码实现:

sum += b * pow(10, i++);

我们再看一遍完整代码:

[C语言练习题 ]把一个数的奇数位变成1,偶数位变成0,怎么写?_C语言_15

 结果测试:

222222

 

[C语言练习题 ]把一个数的奇数位变成1,偶数位变成0,怎么写?_代码实现_18

 最后我们通过提交测试牛客网也是可以过得去的

[C语言练习题 ]把一个数的奇数位变成1,偶数位变成0,怎么写?_C语言_20

通过本题的练习,我对pow函数进行了复习巩固,也知道了如何将拿出来的每一位数字进行整合输出,这是最关键的。

有兴趣的小伙伴可以自己在电脑上练习练习哦~

(本篇完)


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK