C语言 计算1到N中数字1出现的个数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 计算1到N中数字1出现的个数相关的知识,希望对你有一定的参考价值。

算法分析:

1. 定义N 及用来统计的cnt, 用来循环的n;

2. 输入N ;

3. 将n从1到N循环, 对于每个n执行如下操作:

a) 循环取出n的每位数字值

b)判断该位是否为1, 如是则累加到cnt上。 

4. 输出结果。 

代码如下:

#include <stdio.h>
int main()

int n, N, cnt = 0;
scanf("%d",&N);//输入N值。
for(n = 1;n<=N; n ++)//循环执行

int t = n;
while(t)//循环取出每一位。

if(t%10 == 1) cnt++;
t/=10;


printf("%d\\n", cnt);//输出结果
return 0;
参考技术A #include <stdio.h>

int main() 
int i,N,t,cnt;
while(scanf("%d",&N) == 1) 
cnt = 0;
for(i = 1; i <= N; ++i) 
t = i;
while(t) 
if(t % 10 == 1) ++cnt;
t /= 10;


printf("cnt = %d\\n",cnt);

return 0;

本回答被提问者采纳
参考技术B 从最高位到个个位处理,如32102的千位上是2,那么万位会出现10000个1 万位取1,0到9999 千位上会出现4000 3000(万位是0到2,千位取1) + 1000(万位是0,千位是1,000到102) 个1 ,百位上会出现3203个1
#include <math.h>
#include <stdio.h>
int main()

int n;
scanf ("%d", &n);
int len = (int)(log10(n));
int a, b, c, ans = 0;
int now;
while (len != -1 )

now = 0;
a = pow(10, (double)(len + 1));
b = pow(10, (double)len);
c = (n % a) / b;
if (c == 1)
now += n % b + 1;
if (c > 1)
now += b;
now += n / a * b;
ans += now;
printf ("%d %d\n", len, now);
len -- ;

printf ("%d", ans);
return 0;
参考技术C 真无聊的编程题!

C语言试题九十二之输入数据有多行,第一行是一个整数n,表示测试用例的个数,后面跟着n行 ,每行包括一个由字母和数字组成的字符串

1、题目

输入
输入数据有多行,第一行是一个整数n,表示测试用例的个数,后面跟着n行,每行包括一个由字母和数字组成的字符串

输出
对于妈给测试用例,输出该字符串中数值的个数,每个输出占一行


样式输入:
2
cheaddfsa12345fdafda
cdadsd1234fdsfda
样式输出
5
4




2、温馨提示

C语言试题汇总里可用于计算机二级C语言笔试、机试、研究生复试中C程序设计科目、帮助C语言学者打好程序基础、C语言基础,锻炼您的逻辑思维和解决问题的能力,帮助你成为C语言笔试、机试解题高手,帮助你拿到C语言工作的offer,每一个题目都附带源代码和运行结果,让你不再有任何困惑,妈妈再也不担心我的C语言了。如果程序有任何看不懂或者哪个步骤不理解的地方都可以加我微信(15874274916)私聊我,或者有更好的思路解决办法都可以加我微私聊,一起探讨、希望可以正真的帮助到你,同时也可以扫下面的二维码关注我微信公众号,比如你还对生活、美食或者其它方面都感兴趣,都可以加微信交流,博主擅长讲解计算机相关方面的知识、如果大家对计算机方向、前端、移动端、服务端、数据结构、算法、网络、高数等等一些列方向比较迷茫或者不知道要学哪些?或者具体怎么学?或者其它方向有任何困惑都可以找我交流,谢谢大家关注。




以上是关于C语言 计算1到N中数字1出现的个数的主要内容,如果未能解决你的问题,请参考以下文章

如何用c语言判断222723272中数字2出现的次数

c语言中计算字符串中数字字符个数

任意输入n个数,计算它们的和,积及平均值.用c语言表示

用c语言编写程序 输入一个正整数n,求1到n的数中1出现的个数

C语言编程 计算一串字符中的数字个数

C语言编程实现:从N位数字串中删掉M个数使剩下的数字串所表示的数值最小。