原题链接:C语言程序设计教程课后习题5.7

大致思路:


  * 对输入的数据做取余运算,在所取对应位的余数不为零时,输出位数、每位数的数值,及反序的数。


  * 值得注意的是,要区分好逻辑关系,当输入的数大于5位时,就不符合题目条件,就得重新输入一个符合条件的数。

  * 如下是我参考别人的代码,然后改了部分逻辑关系,自己加了部分,总体还是符合逻辑要求,只是代码有很大部分重复,我想过用函数或者数组来简化重复的代码,只是暂时还没想好。

  * 如果大家有什么更好的想法,欢迎在评论区分享

   


参考代码:

#include<stdio.h>  
int main()  
{  
    int a,g,s,b,q,w,m;  
    scanf("%d",&a); 
    if(a<0||100000<=a)
        printf("请重新输入");
    else{
        w=a%100000/10000;  
        q=a%10000/1000;  
        b=a%1000/100;  
        s=a%100/10;  
        g=a%10; 
        if(w!=0){
            m=g*10000+s*1000+b*100+q*10+w;
            printf("5\n%d %d %d %d %d\n%d",w,q,b,s,g,m) ; 
        }
        else if(q!=0) {
            m=g*1000+s*100+b*10+1;
            printf("4\n%d %d %d %d\n%d",q,b,s,g,m) ;  
        }
        else if(b!=0) {
            m=g*100+s*10+b;
            printf("3\n%d %d %d\n%d",b,s,g,m) ;  
        }
        else if(s!=0){
            m=g*10+s;
            printf("2\n%d %d\n%d",s,g,m) ; 
        }
        else {
            m=g;
            printf("1\n%d\n%d",g,m) ; 
        }
    }
}


点赞(1)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 1 条评论

王九蛋 5年前 回复TA
嗯嗯,学习了一下你的代码,我在想,它是默认整数是正整数吗?