解题思路:首先,题目的要求是持续输入,其次,我们需要分离百分位,十分位,个位数,进行重新组合【这里方法真的很多】

注意事项:1.要能持续输入输出; 2.输入100,要能输出001; 3.注意输出方式和占位符号要相互匹配; 4.注意输出之后要换行(因为题目说,输出三个整数占一行表示答案,即答案自己单独占一行 )


参考代码:

//方法一:

#include<stdio.h>

int main()

{

     int num ,a ,b ,c ;

     while(scanf ("%3d", & num )!= EOF )

/*我的出错点1: 没有认真审题,没看到题目给出的输入格式是有多组输入数据,所以完全没用持续输入,例如持续输入函数 while( scanf ( " %  ", &  ) ! =EOF ) */

/*我的出错点2:在这里画蛇添足加一个 ;  如果加了;就会把这个语句和循环体分开了,然后只能等我全部输入完,才能输出,并且只能输出我输入的最后一个三位数。*/

/*另外,这里不用"%3d", 直接用"%d"也可以, 只不过因为我后面输出的是c *100+ b*10 +a,所以用“%3d"会更好而已。

因为我的输出方式,所以如果输入一组三位数数据,例如直接输入123456,在中间不按回车的情况下,用“%3d"可以完美输出,用”%d"就会无法正确输出我们想要的结果。但是如果我用 printf( "%d%d%d" , c , b , a ); 输出就可以完美解决 "%d" 带来的可能输出不正确问题 。*/

/*补充说明,想要停止输入可以在自己输入的最后三位数后面用enter键回车,然后同时按CTRL和Z(电脑是Windows系统控制下),然后再次回车*/

     {

         a = num / 100;

//分离出百分位

         b = num / 10 % 10;

//分离出十分位,例如,如果num=178, 那么num/10=17,17%10=7

         c = num % 10;

//分离出个位数

         printf ( "%03d\n" ,c *100+ b*10 +a );

/*这里用“%03d", 其中用”03“是因为默认补充空位方式是用空格,而我们要确保输入100,会输出001,所以我们要告诉系统我想要用0补充空位 */

/*当然,也可以用"%d", 但理由和上面输入时说的一样*/

/*题目要求,输出三个整数占一行表示答案,即答案自己单独占一行,所以输出的时候一定一定要加 "\n" */

     }

     return 0;

}

/*感谢题解里的前辈们,让我发现了我的错误,自己写的代码一直无法输出自己想要的答案,还不知道原因的感觉真的还挺难受的*/


/*方法二:我最开始想到的方法

#include<stdio.h>


int main ( )

{

    int i = 0, a = 0, b = 0, c = 0;

    while (~scanf("%d", &i) )

    {

        a = i / 100;  // 分离百位数

        c = i % 10;   // 分离个位数

        //下面我想要分离十位数

        b = (i - a * 100 - c);  //这里分离出有 几个十

        b = b / 10;     //这里成功分离出 十位数

        printf("%d%d%d\n", c, b, a);

    }

    return 0;

}

*/

点赞(0)
 

0.0分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论