题解 | #小乐乐改数字#

小乐乐改数字

https://www.nowcoder.com/practice/fcd30aac9c4f4028b23919a0c649824d

#include <stdio.h>

int main() {
    int num, result = 0, digit = 1;
    scanf("%d", &num);
    
    while (num > 0) {
        int remainder = num % 10; // 取出最低位的数字
        int bit = remainder % 2; // 判断奇偶性
        result += bit * digit; // 将奇偶性转换为0或1,并加到结果中
        digit *= 10; // 更新位数
        num /= 10; // 去掉最低位
    }
   
    printf("%d", result);
    return 0;
}

中等题确实有难度,首先刚开始在他的输出上理解错误了,我以为只是对每一位去进行判断,当输入22222时,结果是0,我又以为是数字前后位相等时,只用输出1位数字就行,把相同的数给忽略,后面正常输出。思绪逐渐极端,开始拆东墙补西墙。以下为原先代码。

#include <stdio.h>
#include <math.h>

int main() {
    int num,sum=0,i=0,j,k;
    int t;      //依次提取的每一位数
    scanf("%d",&num);
    k=num;
//判断输入了几位数
    while (k) { 
        k=k/10;
        i++;
    }
//生成和输入相同位数的1
    for(j=i-1;j>=0;j--){
       sum+=(int)(i/pow(10,j))*1;
    }
        j=0;
//判断输入的数
    if(num==sum){      //如果输入的数全为1时,输出一个数1
        printf("1");
    }else if(num==sum*2){   //如果输入的数全为2时,输出一个数2
        printf("0");
    }else {                 //如果输入的数不是全部相同,则输出奇偶数对应的1和0
        for(j=i-1;j>=0;j--){
       t=(int)(num/pow(10,j))%10;
        if(t%2==1){
        printf("1");
       }else if(t%2==0){
        printf("0");
       }    
    }
    }
    return 0;
}

全部评论

相关推荐

机械打工仔:不管啥专业,找工作改简历的第一课先把你那排版改了,简历上不要写个人简历四个字,找你要简历的谁不知道这个是简历?而且还占那么多空间,直接把自己名字和基础信息写上面,整体字体大一些。 还有这种经典两页简历一页大空白,导出PDF的时候多了一页几乎全是白的你自己看着不难受吗随手的事为啥不能改掉呢,这是态度问题,你试想一下你是HR你打开简历看到格式都没调整过会是什么感受?你自己都不重视你的简历,HR更不会在意。 然后内容你那个做两年咖啡就别往里写了,简历在精不在多,你在往你的简历里打字的时候就要想好这东西对你要找的工作有没有帮助。自我评价写一行就行了,不如给专业技能单开一栏。核心课程均分90这个真别写了,把你上过的有用的专业课列出来也行。有很多地方废话很多的精炼一下,比如你校内项目第一个写的那些,全然没有重点。 好好修改一下,我看你内容也挺优秀的,别被一个随便做的简历耽误了,我一个同专业的打工人看了都揪心更别说一天看几百份简历的HR
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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