C/C++输出硬币翻转 2021年6月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

news2024/11/25 7:05:48

目录

C/C++硬币翻转

一、题目要求

1、编程实现

2、输入输出

二、算法分析

三、程序编写

四、程序说明

五、运行结果

六、考点分析


C/C++硬币翻转

2021年6月 C/C++编程等级考试一级编程题

一、题目要求

1、编程实现

假设有N个硬币(N为不大于5000的正整数),从1到N按顺序依次编号,初始时全部处于正面向上的状态;有M个人(M为不大于N的正整数)也从1到M依次编号。

第一个人(1号)将硬币全部翻转一次,第二个人(2号)将编号为2的倍数的硬币翻转一次,第三个人(3号)将编号为3的倍数的硬币翻转一次。依照编号递增顺序,以后的人都和3号一样,将凡是自己编号倍数的硬币翻转一次。

请问:当第M个人操作之后,哪些硬币是正面向上的,按从小到大输出其编号,以空格分开。

时间限制:10000

内存限制:65536

2、输入输出

输入描述:输入正整数N和M,以单个空格隔开。

输出描述:顺次输出正面向上的硬币的编号,其间用空格间隔。

输入样例:

10 10

输出样例:

2 3 5 6 7 8 10

二、算法分析

  1. 题目相对下朋友们来说有一定的难度,难在如何让每个人对符合要求的硬币进行翻转操作
  2. 由于人和硬币都是有多个,量较大,所以采用所学的一维数组来完成是比较好的方案
  3. 在确定采用数组后需要先设定数组的初值用1表示正面朝上,0表示反面朝上
  4. 然后最主要的就是对硬币的操作,应该是每个人都能对所有的硬币,只是要符合自己编号的硬币进行反向操作,所以这里可以使用嵌套for循环实现比较方便
  5. 外层循环为人,内层循环为硬币,接着就可以将每个硬币进行分析判断是否是人的编号倍数,如果是就进行反向操作即可
  6. 最后输出数组中数字为1的编号就是硬币正面朝上的编号

三、程序编写

#include<iostream> 
using namespace std;
int a[5000];
int main()
{
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		a[i] = 1;
	}
	for(int i=1;i<=m;i++)//i表示人 
	{
		for(int j=i;j<=n;j++)//j表示硬币 
		{
			if(j%i == 0)
			{
				a[j] = !a[j];
			}
		}
	}
	//输出符合要求的 
	for(int i=1;i<=n;i++)
	{
		if(a[i] == 1)
		{
			cout<<i<<" ";
		}
	}
	return 0;
}

四、程序说明

  1. 首先需要导入输入输出流头文件
  2. 接着再次导入输入输出流格式控制头文件
  3. 然后是引入std命名空间中的所有成员到当前的程序中,这样在当前的程序中就可以直接使用 std 命名空间中的所有成员,而不需要使用的时候在成员前面加上(std::)前缀
  4. 声明一个一维整型数组a,维度大小为5000
  5. 接着声明程序的入口,也就是主函数(主函数在一个程序中只允许出现一次)
  6. 根据题目要求声明一个整形变量(n表示硬币数,m表示人数)
  7. 接着对a数组进行初始化(用for循环),用1表示正面朝上,0表示背面朝上
  8. 使用嵌套for循环(外层人,内层硬币)逐个遍历
  9. 在利用if条件判断语句,判断当前的硬币是否是人的倍数,如果是就对数组元素进行取反操作
  10. 最后再次利用for循环遍历整个数组,结合if条件判断语句判断当前元素是否为1
  11. 如果是利用输出流对象cout,输出对应的编号即可
  12. 最后返回0,程序结束

本文作者:小兔子编程 作者首页:https://blog.csdn.net/frank2102

五、运行结果

10 10

2 3 5 6 7 8 10

六、考点分析

难度级别:中等,这题相对而言还是有一点难度,具体主要考查如下:

  1. 学会题目分析,算法分析,找到解题思路
  2. 充分掌握变量的定义和使用
  3. 学会输入流对象 in的使用,从键盘读入相应的数据
  4. 学会数组的声明、数组的输入及数组的输出
  5. 学会for循环以及嵌套循环的使用,在确定循环次数的时候推荐使用学会
  6. 学会if条件判断语句的使用,满足一定条件才能执行后面的语句
  7. 掌握输出流对象cout的使用,与流插入运算符 << 结合使用将对象输出到终端显示
  8. 充分掌握变量定义和使用、数组操作、循环语句和简单算法知识的使用及输入输出的用法

PS:方式方法有多种,小朋友们只要能够达到题目要求即可!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1194528.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】tree命令的独特用法

有关tree命令&#xff0c;我们只知道它可以将文件目录以树状图的形式展示&#xff0c;但其实还有很多有意思的功能可以使用。 一、tree命令的安装 各linux版本不同&#xff0c;但软件包名字就叫tree&#xff0c;直接安装即可 ubuntu&#xff1a; apt install tree centos&a…

rust实现quic服务端和客户端

演示如何使用 Quinn 库实现一个简单的 QUIC 客户端和服务器。QUIC 是一种基于 UDP 的协议&#xff0c;用于在互联网上进行快速和安全的通信。 在程序中&#xff0c;使用了 Rust 的标准库中的 error、net 和 sync 模块&#xff0c;以及第三方库 tokio 和 quinn。程序使用了 asy…

智慧畜牧小程序开发流程

本文将详细介绍智慧畜牧小程序的开发流程&#xff0c;包括需求分析、设计、开发、测试和上线等环节。同时&#xff0c;将深入思考智慧畜牧小程序的发展趋势和未来挑战&#xff0c;为读者提供有深度的思考和逻辑性的分析。 一、需求分析 1.明确目标用户&#xff1a;首先…

tomcat+idea--如何在idea上发布项目

对应于idea2022以后的版本 &#xff08;一&#xff09;如何配置idea上的tomcat&#xff1f; 1、新建一个项目&#xff0c;左上角File&#xff0c;new&#xff0c;project&#xff0c;新建后就和普通的java项目一样。 2、然后点击项目名&#xff0c;右键选择“Add framework s…

Node.js中的child_process模块的作用

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

unity line renderer绘制的颜色不是想要的红色

线条不是暗红色的&#xff0c;用的是默认的红色 将材质选则为如下即可

数据结构-图的遍历

广度优先遍历&#xff08;BFS&#xff09; 树的遍历&#xff1a;不存在“回路”&#xff0c;搜索相邻的结点时&#xff0c;不可能搜到已经访问过的结点 图的遍历&#xff1a;搜索相邻的顶点时&#xff0c;有可能搜到已经访问过的顶点 要点&#xff1a; 找到与一个顶点相邻的所…

Postman基本页面和请求/响应页签介绍

近期在复习Postman的基础知识&#xff0c;在小破站上跟着百里老师系统复习了一遍&#xff0c;也做了一些笔记&#xff0c;希望可以给大家一点点启发。 一、Postman的界面介绍 Home主页、Workspace工作空间、Collections集合、Environments环境变量、Mock Server虚拟服务器、Mo…

Git图形化界面GUI的使用SSH协议及idea集成Git

前言 图形化界面&#xff08;GUI&#xff0c;Graphical User Interface&#xff09;是一种用户与计算机程序或操作系统交互的方式&#xff0c;通过图形元素&#xff0c;如图标、按钮、窗口等&#xff0c;而不是通过命令行来完成操作。GUI的设计旨在让用户通过直观的图形界面进行…

云表|低代码开发是否真的靠谱?一试便知

最近&#xff0c;“低代码”这个概念在技术圈里火了起来&#xff0c;引发了广泛的讨论。一些人对其赞不绝口&#xff0c;认为它具有诸多优点&#xff0c;如减少开发周期&#xff0c;提高系统开发效率&#xff0c;降低开发成本&#xff0c;学习成本低等。他们甚至预测&#xff0…

lv11 嵌入式开发 ARM体系结构理论基础(寄存器)3

目录 1 寄存器 2 ARM寄存器 2.1 专用寄存器 1 寄存器 概念 寄存器是处理器内部的存储器&#xff0c;没有地址 作用 一般用于暂时存放参与运算的数据和运算结果 注&#xff1a;全局变量不应该存入寄存器&#xff0c;数量有限会占用寄存器资源&#xff0c;寄存器读…

矩阵的除法

B/A 如果矩阵A可逆&#xff0c;那么 证明&#xff1a; A/AB 如果矩阵A和B都可逆&#xff0c;那么 证明&#xff1a;

人工智能基础——Python:Numpy与矩阵

人工智能的学习之路非常漫长&#xff0c;不少人因为学习路线不对或者学习内容不够专业而举步难行。不过别担心&#xff0c;我为大家整理了一份600多G的学习资源&#xff0c;基本上涵盖了人工智能学习的所有内容。点击下方链接,0元进群领取学习资源,让你的学习之路更加顺畅!记得…

OTA包添加自定义内容

起因 新开一条线&#xff0c;需要上传的OTA包里加点内容&#xff0c;好让后台校验它是否是当前这条线(短期最小改动)。 开整 之前看过ota包结构&#xff0c;整包和差分包里都有一个payload_properties.txt文件&#xff0c;所以最简单的就是给这个txt文件里追加点自定义内容&…

NodeJs - 集合对象序列化问题

NodeJs - 集合对象序列化问题 一. 集合对象的序列化问题1.1 Map 和 Object 的区别1.2 Map 的相关转换Map 和 Array 互转Map 和 Object 互转 1.3 Set 的相关转换Set 和 Array 互转 一. 集合对象的序列化问题 案例如下&#xff1a;我们创建一个Map和一个Set集合&#xff0c;并用…

宋浩高等数学笔记(三)微分中值定理

首先是考研大纲包含的内容&#xff1a; 1.理解并会用罗尔(Rolle)定理、拉格朗日(Lagrange)中值定理和泰勒(Taylor)定理&#xff0c;了解并会用柯西(Cauchy)中值定理. 2.掌握用洛必达法则求未定式极限的方法. 3.理解函数的极值概念&#xff0c;掌握用导数判断函数的单调性和求函…

黑窗口连接远程服务

ssh root192.168.x.x 回车输入密码 查看docker docker ps 停止正在运行的服务 docker stop xxxxx 删除服务 docker rm xxxxx 查看镜像 docker images 删除镜像 docker rmi xxxxx 删除镜像 启动并运行整个服务 docker compose up -d jar包名称 idea 使用tcp方式连接docker 配置d…

mongo实际业务场景实战

业务场景 有四个业务信息,分别是适用部门、适用岗位、适用职级、适用专业。 1.适用部门有三个层级类似D001表示一级部门、D001002表示二级部门、D001002001表示三级部门,ALL表示所有部门。 2.适用岗位有岗位A、岗位B、ALL等,ALL表示适用所有岗位。 3.适用职级有M-1,M-2、AL…

【免费送书】写博客模板

【点我-这里送书】 本人详解 作者&#xff1a;王文峰&#xff0c;参加过 CSDN 2020年度博客之星&#xff0c;《Java王大师王天师》 公众号&#xff1a;JAVA开发王大师&#xff0c;专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生&#xff0c;期待你的…

Q3季刊|Coremail管理员社区Q3季刊发布

2023年Q3季刊新近完成&#xff0c;接下来将带领大家回顾2023年Q3Coremail管理员社区的精彩活动和内容。 01、Coremail管理员社区 Coremail 管理员社区属于云服务中心板块之一&#xff0c;由Coremail服务团队、邮件安全团队及多条产品线共同维护&#xff0c;定位为知识库社区&…