解题思路:首先,题目的要求是持续输入,其次,我们需要分离百分位,十分位,个位数,进行重新组合
注意事项: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 人评分
2006年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:907 |
C语言程序设计教程(第三版)课后习题9.3 (Java代码)浏览:1024 |
C语言训练-大、小写问题 (C语言代码)浏览:791 |
【偶数求和】 (C语言代码)浏览:587 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:349 |
罗列完美数 (C语言代码)浏览:517 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:569 |
C语言程序设计教程(第三版)课后习题12.2 (C语言代码)浏览:838 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:609 |
众数问题 (C语言代码)浏览:717 |