7-16 PTA 含8的数字的个数

现代人对数字越来越讲究,都喜欢含有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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值