(来自 牛客网 编程初学者入门训练)
1.问题:
(链接呈上:改数字)
描述
小乐乐喜欢数字,尤其喜欢0和1。他现在得到了一个数,想把每位的数变成0或1。如果某一位是奇数,就把它变成1,如果是偶数,那么就把它变成0。请你回答他最后得到的数是多少。
输入描述:
输入包含一个整数n (0 ≤ n ≤ 10^9)
输出描述:
输出一个整数,即小乐乐修改后得到的数字。
示例1
输入:
222222输出:
0
2.思路:
首先 输入一个整数,根据题意,需要使用 / 和 % 以及 while循环 的配合将整数分成各个数字进行奇偶判断(()%2 是否==0),若是 奇数则令新变量为1,偶数则为0
其次 主要的一点便是 最终数字的呈现是各个位数最后所得变量凑在一起的一个整数,所以此时需要有一个整数输出(而不是以数组形式输出!),这个整数来源于:各个位上的所得数*pow的和来呈现,而pow需要使用次方数(所在位数-1),所在位数用count记录
3.代码:
#include<stdio.h>
#include<math.h>
int main()
{
long int n = 0;
//printf("请输入一个整数n:");
scanf("%ld", &n);
//long int ret=Change(n);
//printf("修改后结果为:");
long int m = 0;
long int sum = 0;
long int ret = 0;
float count = 0;
while(n)//注意用while 用for需要知道整数有多少个数字组成 需要再求其
{
m = n % 10;//从最后一位开始
n /= 10;
if (0 == (m % 2))//偶数-能够被2整除 余数为0!
{
count++;
ret = 0;
sum += ret*(long int )(pow(10, (count - 1)));//注意组合时:不用数组 而是用指数形式计算!!
//pow(float x,float y)
}
else
{
count++;
ret = 1;
sum += ret * (long int)(pow(10, (count - 1)));
}
}
printf("%ld\n", sum);
return 0;
}
4.注意:
pow(float x, float y) float形式,所以此题涉及强制类型转换!