C语言——将一个数中的每位数改成0或1
题目是这样的:输入一个整数,把其中每一位数改成0或一,其中偶数改为0,奇数改为1
我认为应该来个三步骤:一、判断一个位数的奇偶,并改其值;二:放入循环中,改每位数的值;三:利用库函数pow输出结果
其一
#include <stdio.h> int main() { int k; scanf("%d", &k);//输入一个个位数 if (k % 2 != 0) { k = 1; printf("%d", k); } else { k = 0; printf("%d", k); } return 0; }
显然利用分支结构可达到我们的目的,主要是其二与其三,这有一定难度
其二
上文说难,那难在哪呢?首先,如何把每一位取出来;其次,循环条件写什么。接下来我用代码来解读一下
#include<stdio.h> int main(){ long n,m,k; scanf("%ld",&n); while(n){//n!=0为真,n==0就为假,用来终止循环 m=n%10;//取末位 if (m % 2 != 0) {//m % 2 判断奇偶性 k = 1; } else { k = 0; } n/=10; } return 0; }
完成以上操作后,该如何输出,这就是其三的一个难点
其三
这里引入一个库函数pow,这是对某个数求n次幂的函数
#include<stdio.h> #include<math.h> int main(){ long n,m,k,result,i; scanf("%ld",&n); while(n){ m=n%10; if (m % 2 != 0) { k = 1; } else { k = 0; } result=result+k * pow(10, i++); n/=10; } printf("%ld",result); return 0; }