本文主要是介绍牛客网刷题 | BC116 [NOIP2013]记数问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目前主要分为三个专栏,后续还会添加:
专栏如下: 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;
}
这篇关于牛客网刷题 | BC116 [NOIP2013]记数问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!