@author:Bzdhxs_nt;
@date:2020/11/4;
起因: 一道来自学校新生的OJ练习
简单描述就是 输入一个n(0<=n<=9),在1 到 2020有多少个n这个字符。
那么我们就要取出每个数每一位的数是多少 。在此之前我只会用一般的%和 /来处理,但是面对此题太麻烦!
现给出用while语句来去一个数的方法:
while(x)
{
t = x%10;
x /= 10;
}
分析
while(x)
{
t = x%10; //用10取余来得到x的个位 ,并赋值给t;
//用个printf就取出个位!
x /= 10; //整除10获得失去个位的x1;
//后循环进行,当x只剩一位时,
} //被取余10得到最高位,被整除10得到x = 0,
//while 循坏结束 从个 十 百 ...的顺序
//取出每位。
特点 简介 方便 但得到的是 排序的倒序。因而可以用于把一个数调换顺序,这样就很方便!
最后给出此题的 源代码:
/* 利用while循环分离数的每位
@author:Bzdhxs_nt;
@date:2020/11/4; */
#include<stdio.h>
int main()
{
int n,t;
scanf("%d",&n);
int s=0;
for(int x = 1;x <= 2020;x++)//遍历
{
int b = x;
while(b) //遍历 1 到 2020,即b;
{
t = b%10; // 用取余取出b的每位赋值给t
if(t == n) s++;//当t== n时给s加一最后用s来输出要求的N的数量
b /= 10;
}
}
printf("%d",s);
return 0;
}
若有不正确的还望指出!
感谢学长的指导,让我解决此题。
欢迎与我讨论。