目前主要分为三个专栏,后续还会添加:
专栏如下: C语言刷题解析 C语言系列文章 我的成长经历
感谢阅读!
初来乍到,如有错误请指出,感谢!
描述
试计算在区间1 到n 的所有整数中,数字x(0 ≤ x ≤ 9)共出现了多少次?
例如,在1到11 中,即在1、2、3、4、5、6、7、8、9、10、11 中,数字1 出现了4 次。
输入描述:
输入共1行,包含2个整数n、x,之间用一个空格隔开。
输出描述:
输出共1行,包含一个整数,表示x出现的次数。
思路 :
输入两个数字 一个是你想要在多少之内查询的数字
另一个是 你想查询的数字几 我一开始理解成了 【在这两个数字区间之内】
理清了思路 就很简单了 先定义两个变量
一个是打印多少之内的数字 另一个是判断是否与这个数字相等
代码 1:
#define _CRT_SECURE_NO_WARNINGS
/*思路 : 输入两个数字 一个是你想要在多少之内查询的数字
另一个是 你想查询的数字几 我一开始理解成了 【在这两个数字区间之内】
理清了思路 就很简单了 先定义两个变量
一个是打印多少之内的数字 另一个是判断是否与这个数字相等
*/
# include <stdio.h>
int main()
{
int input = 0;
int input2 = 0;
int count = 0;//计数器
scanf("%d %d", &input, &input2);//用户输入多少范围之内的数字
int i = 0;
for (i = 0; i <= input; i++)//循环打印在这之内的数字
{
int k = i;
//如果不讲i的值赋给k,那么i的值将会在while语句中改变
//而影响for循环使用,i将变为0,重新被赋值为1进入死循环
while (k > 0)
{
if (input2 == k % 10)
{
count++;
//k = k / 10;//像11 22 33 这样的数字
//不能放在括号里面 放到括号里面之后就是死循环
//因为k/10可把k变为0 也可以求出像11 22 33 这样的数字
//而放在括号外面就可以了 也可以不加这个大括号
}
k = k / 10;//像11 22 33 这样的数字
}
}
printf("%d", count);
return 0;
}
代码 2 :
#include <stdio.h>
int main()
{
int n, x;
int count = 0;
scanf("%d %d", &n, &x);
for (int i = 1; i <= n; i++)//每一次循环判断一个数,直到n为止
{
int a = i;
while (a)//利用while循环判断每一位数字,直到a等于0,
{
if (a % 10 == x)//如果个位上的数字是x,count加一
count++;
a /= 10;//将个位上的数字去除,十位上的数字变成个位上的数字
}
}
printf("%d", count);
return 0;
}