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;
}
查看1道真题和解析
