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
收藏
分享
牛客网
牛客企业服务