现代人对数字越来越讲究,都喜欢含有8的数字。现要你编程计算a至b之间的含有数字8的数的个数(比如181,88,8,28这些数都含有数字8,而21,45,49等没有含有数字8)。
输入格式:
在一行中输入两个正整数a和b,用一个空格隔开。0<a<=b<100000。
输出格式:
输出a和b之间含有8的数的个数。包括a和b。
思路分享:
叠甲:萌新,语句基本学会一点做一点相关题目,史山请见谅,因为站内大佬发的有点看不懂,请轻喷。
本例为while循环和if搭配的实践,同时也包含如何拆分正整数各位数的经典方法,也有双目运算符"或"的使用方法。
具体代码用途已注释,如有其他见解欢迎评论区留言。
#include<stdio.h>
int main()
{
int n1,n2,a,b,c,d,e,g,i=0;
scanf("%d %d",&n1,&n2);
g=n1;//本题拿n1直接计算也可以,但某些题输出内容中也包含输入内容,还是要赋值计算//
//故直接赋值计算方便容错//
while (g<=n2)//超出范围自动停止,故不需要用判定停止的语句//
{
a=(g/10000);//万位//
//因小于十万,所以最大不超过9.9999万。同时因为均为整型,//
//小数会被省略,故除以一万会得到万位数字//
b=((g/1000)-(a*10));//千位//
//除以1000会得到万位和千位,此时只要减去万位就可以得到千位//
//但因为万位在千位前面,需要万位乘十来减//
c=((g/100)-b*10-a*100);//百位//
d=((g/10)-c*10-b*100-a*1000);//十位//
e=((g/1)-d*10-c*100-b*1000-a*10000);//个位均与万位千位同理//
g++;//运算是n1和n2内区间的数,g被赋予n1的值,此时g增加,缩小这个区间//
//通过缩小区间来运算区间内的数//
if ((a==8)||(b==8)||(c==8)||(d==8)||(e==8)){
//只要这个数任意一位有8就满足题目条件,此时i作为计数板就可以+1了//
i++;
}
}
printf("%d",i);
return 0;
}
标签:数字,16,int,含有,个数,PTA,while,n1
From: https://blog.csdn.net/skadi2024/article/details/142108142