PAT乙级1006,用C语言进行编程,换个格式输出整数
2021/7/9 9:06:39
本文主要是介绍PAT乙级1006,用C语言进行编程,换个格式输出整数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
今天的这道题呢就放松一下了,难度也不大,比较简单。
不过为了让整个流程都比较明朗,对于这道题虽然我只花了一丢丢时间就完成了,但是还是得详细讲一讲。
这道题的大致要求是:用字母B表示百位,用字母S表示十位,用123...n来表示不为零的个位数字(n<10),例如234输出得到为BBSSS1234。
审题分析,理清逻辑,流程图
流程图如图所示,得到流程图之后其实思路还是蛮清晰的,就是对百位、十位、个位进行一个分别计数。
对于这道题呢,其实很简单,就是由简到繁。
既然要求对百位、十位、个位分别按要求计数,那我们就由简到繁,先对个位来进行思考。
思考个位,一般我们在计算个位数的时候是如何得到的呢。
给定一个整数19,很直观,个位数就是9,我们要得到9一般是不是会用19去除以10,得到的余数就是9,而余数符号是%,也就是mod。
所以个位数就很容易得到,那就是19%10。
其次,在得到个位数为9之后,就需要输出123456789,那就更简单了,只需要用一个for循环,然后把这个值按照顺序输出不就行了么。
代码实现
#include <stdio.h> int main() { int number = 0; //初始化一个正整数 int n = 0;//个位数 scanf("%d", &number); //输入该正整数 n = number%10; //个位数的数字 for(int i = 1; i <= n; i++){ printf("%d", i); } }
结果如下:
可以看到,我给了一个测试值139,当然这是只实现了个位数的,很明显得到了123456789。
在解决了个位数的问题之后,那十位数与百位数也是同样的道理。
一般我们要得到十位数,比方说之前给出的测试值139,是不是只需要先除以10得到一个13的整数,然后再求余数就可以得到3了,之后再根据3的数量得到字母S的个数。
对于百位数也是同理,只需要先除以100得到一个1的整数,然后再求余数就可以得到1了,之后再根据1的数量得到字母B的个数。
话不多说,给出代码:
#include <stdio.h> int main() { int number = 0; //初始化一个正整数 int n = 0;//个位数 int m = 0;//十位数 int a = 0;//百位数 scanf("%d", &number); //输入该正整数 n = number%10; //个位数的数字 m = number/10%10; //十位数的数字 a = number/100%10; //百位数的数字 for(int i = 0; i < a; i++){ printf("B"); } for(int i = 0; i < m; i++){ printf("S"); } for(int i = 1; i <= n; i++){ printf("%d", i); } }
测试结果
我试着测试了两次:
在Xcode上是完美运行的。
之后再去PAT上面提交。
结果正确!
总结
这道题难度很低,通过率也都蛮高的,主要记住一点即可,由简到繁,让题变得简单。
这篇关于PAT乙级1006,用C语言进行编程,换个格式输出整数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享