标签:10 PAT int 个位数 number C语言 这道题 得到 1006
今天的这道题呢就放松一下了,难度也不大,比较简单。
不过为了让整个流程都比较明朗,对于这道题虽然我只花了一丢丢时间就完成了,但是还是得详细讲一讲。
这道题的大致要求是:用字母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上面提交。
结果正确!
总结
这道题难度很低,通过率也都蛮高的,主要记住一点即可,由简到繁,让题变得简单。
标签:10,PAT,int,个位数,number,C语言,这道题,得到,1006 来源: https://blog.csdn.net/qq_42615643/article/details/118595857
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。