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出现的个数的主要内容,如果未能解决你的问题,请参考以下文章