当前位置: 首页 > article >正文

16. 整数n内含有数字2的小游戏

文章目录

    • 概要
    • 整体架构流程
    • 小结

1. 概要

➠ Jack Qiao对米粒说:“今天咱们玩个统计数字小游戏,要求是在一个给定的范围内统计数字 2 出现的次数

米粒想到:既然是统计2出现的次数,想到number % 10 == 2然后去掉当前位,继续检查下一位number /= 10;

2. 整体架构流程

2.1. 定义函数 

 定义一个函数 countTwos,这个函数的作用是统计一个给定数字中 2 出现的次数。

int countTwos(int number) {
	int count = 0;  // 初始化计数器为 0
	while (number > 0) {
		if (number % 10 == 2) {
			count++;  // 如果当前位是 2,计数器加一
		}
		number /= 10;  // 去掉当前位,继续检查下一位
	}
	return count;  // 返回计数器的值
}

 

 int countTwos(int number):函数接受一个整数 number 作为参数。

 int count = 0;:初始化一个计数器 count 为 0,用于记录 2 出现的次数。

 while (number > 0):当 number 大于 0 时,继续循环。

 number /= 10;:去掉当前数字的最后一位,继续检查下一位。

 if (number % 10 == 2):检查当前数字的最后一位是否为 2,如果是,count 加一

 return count;:返回 count,即当前数字中 2 出现的次数。

2.2. 主函数main 

 主函数 main,这个函数负责读取用户输入的正整数 n,并调用 countTwos 函数统计每个数字中 2 出现的次数。

int main() {
    int n;
    int totalTwos = 0;  // 初始化总计数器为 0

    // 输入一个正整数 n
    printf("请输入一个正整数 n: ");
    scanf("%d", &n);

    // 遍历从 1 到 n 的每一个数字
    for (int i = 1; i <= n; i++) {
        totalTwos += countTwos(i);  // 调用 countTwos 函数,累加结果
    }

    // 输出结果
    printf("在 1 到 %d 之间,数字 2 共出现了 %d 次。\n", n, totalTwos);

    return 0;
}

2.3. 运行结果 

2.4. 全部代码  

#include<stdio.h>
int countTwos(int number) {
    int count = 0;  // 初始化计数器为 0
    while (number > 0) {
        if (number % 10 == 2) {
            count++;  // 如果当前位是 2,计数器加一
        }
        number /= 10;  // 去掉当前位,继续检查下一位
    }
    return count;  // 返回计数器的值
}
int main() {
    int n;
    int totalTwos = 0;  // 初始化总计数器为 0

    // 输入一个正整数 n
    printf("请输入一个正整数 n: ");
    scanf("%d", &n);

    // 遍历从 1 到 n 的每一个数字
    for (int i = 1; i <= n; i++) {
        totalTwos += countTwos(i);  // 调用 countTwos 函数,累加结果
    }

    // 输出结果
    printf("在 1 到 %d 之间,数字 2 共出现了 %d 次。\n", n, totalTwos);

    return 0;
}

3. 小结

 用户输入一个正整数 n,程序从 1 到 n 遍历每个数字,统计其中数字 2 出现的次数(知识点:使用 for 循环遍历指定范围内的数字)。

 每个数字中 2 的出现次数通过 countTwos 函数计算,并将结果累加到总计数器 totalTwos 中(知识点:函数调用和返回值的使用,以及变量累加)。


http://www.kler.cn/a/406212.html

相关文章:

  • ABAP开发-CO的底层表-物料价格分析CKM3
  • node.js fluent-ffmpeg 桌面推流
  • 医工交叉入门书籍分享:Transformer模型在机器学习领域的应用|个人观点·24-11-22
  • Parker派克防爆电机在实际应用中的安全性能如何保证?
  • Matlab科研绘图:自定义内置多款配色函数
  • 杰理-gpadc
  • 043 商品详情
  • Rust学习(八):异常处理和宏编程:
  • linux 网络安全不完全笔记
  • 时间序列在数据embedding方面有哪些创新方法和工作?
  • Web3和区块链如何促进数据透明与隐私保护的平衡
  • 设计模式之 外观模式
  • Fakelocation Server服务器/专业版 ubuntu
  • [Unity]TileMap开发,TileMap地图缝隙问题
  • 打造网页版Ubuntu环境:群晖NAS部署docker-webtop与远程访问指南
  • Linux高阶——1118—TCP客户端服务端
  • 前端速通(HTML)
  • 气象指数推进光伏“靠天吃饭”?
  • 【设计模式】【创建型模式(Creational Patterns)】之工厂方法模式
  • Utf8Json 枚举序列化为整型(默认string)
  • 《剖析 Spring 原理:深入源码的旅程(一)》
  • ⭐️ GitHub Star 数量前十的工作流项目
  • 11.19 机器学习-梯度下降
  • unity3d——基础篇2刷(Mathf)
  • PyCharm的类型警告: Expected type ‘SupportsWrite[bytes]‘, got ‘BinaryIO‘ instead
  • 通过IIC访问模块寄存器[ESP--1]