栾静怡


私信TA

用户名:uq_69767536335

访问量:149

签 名:

小楫轻舟,已然梦入芙蓉浦。

等  级
排  名 4171
经  验 1743
参赛次数 1
文章发表 18
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

好好学习 天天向上 。

解题思路:首先,题目的要求是持续输入,其次,我们需要分离百分位,十分位,个位数,进行重新组合

注意事项: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;

}

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

 

0.0分

0 人评分

  评论区

  • «
  • »