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;
}

全部评论

相关推荐

07-02 18:09
门头沟学院 Java
苍穹外卖和谷粒商城这俩是不是烂大街了,还能做吗?
想去重庆的鸽子在吐槽:你不如把这俩做完自己搞明白再优化点再来问 何必贩卖焦虑
点赞 评论 收藏
分享
07-02 10:44
门头沟学院 C++
码农索隆:太实诚了,告诉hr,你能实习至少6个月
点赞 评论 收藏
分享
能干的三文鱼刷了10...:公司可能有弄嵌入式需要会画pcb的需求,而且pcb能快速直观看出一个人某方面的实力。看看是否有面试资格。问你问题也能ai出来,pcb这东西能作假概率不高
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务