蓝桥杯练习 算法训练 1的个数

本文介绍了一个算法问题,即计算从1到任意正整数N中数字1出现的总次数。通过一个C语言实现的示例代码,详细展示了如何逐位检查每个数字并计数1的出现次数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

算法训练 1的个数

问题描述
  输入正整数n,判断从1到n之中,数字1一共要出现几次。例如1123这个数,则出现了两次1。例如15,那么从1到15之中,一共出现了8个1。
输入格式
  一个正整数n
输出格式
  一个整数,表示1出现的资料
样例输入
15
样例输出
8
数据规模和约定
  n不超过30000

代码如下:

#include<stdio.h>
int main(){
int a,b,c,d,e,n,f=0,i;
scanf("%d",&n);
for(i=1;i<=n;i++){
a=i/10000;
b=(i-a*10000)/1000;
c=(i-a*10000-b*1000)/100;
d=(i-a*10000-b*1000-c*100)/10;
e=i-a*10000-b*1000-c*100-d*10;
if(a==1){
f++;
}
if(b==1){
f++;
}
if(c==1){
f++;
}
if(d==1){
f++;
}
if(e==1){
f++;
}
}
printf("%d",f);
return 0;
}

程序运行结果如下:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值