C/C++犯二程度计算
文章目录
- 步骤一
- 步骤二
- 步骤三
下面为此题解析:
(为了详细,篇幅可能有点长,如果不想看解析,可翻到步骤三查看源程序!)
此题可以清晰看出,这是一道对数组操作的题目。因为整型数据的范围为-32,768 ~
32767可以看出该题目要求是位数不大于100,也就是说,部分输入的数将超过整型数据的范围,若使用整型数组,无法输入负数,所以字符数组是最好的选择。
计算犯二程度我们要搞清楚,它是怎么计算得到,由题可知,
犯二程度=(二的个数/数字总数)flag1flag2(在我的程序中,flag1、flag2的初始值为1,当输入的数为负数时flag1=1.5,当为偶数是flag2=2)
步骤一
我们先要知道这个数,有多少位,有多少个’2’。
在此我们定义 int i = 0, j = 0, n = 0;//i为记录数组实际长度(包含了符号位),n为’2’的个数
提示:以下出现的i,j,n都是这个意义。
解决此问题程序如下:
int i = 0, j = 0, n = 0;
while (a[j] != '\0')
//遍历数组
{i++; //记录数组长度
if (a[j] == '2') n++;记录2的个数j++; //遍历数组各个位数}
步骤二
解决了 位数与‘2’的个数问题,那么我们要解决 该数是否为偶数,是否为负数。
当输入的数为负数时flag1=1.5,当为偶数是flag2=2是否为负数只用判断数组第一位是否为‘-’,但要注意偶数的判断,由规律可知道,若数的最后一位是偶数,则这个数就是偶数。如18514652,1564548,111116等都是偶数。 我们的数组类型为字符类型,所以还要讲每个字符数组中的字符 转化为整形数字, 方法为:(a[j-1]-‘0’) 这样得到的就是整数类型的。
举例:‘4’-‘0’=4,‘2’-‘0’=2,‘5’-‘0’=5
综上可写出 判断此数的性质以及所对应的程度倍数flag1,flag2程序如下:
if (a[0] == '-'){ flag1 = 1.5; i--; }// i--是因为题目中要求 正数不记符号位如:123456和-123456区别 前者6位,后者7位if (int((a[j - 1] - '0') % 2) == 0) flag2 = 2;
//这里为何是j-1而不是j,可看遍历数组是的循环while (a[j] != '\0'),可知道最后的j位并不是数组数据 最后一位,而是'\0'。ss = (float(n) / float(i)) * flag1 * flag2;//计算犯二程度
步骤三
综上所述,我们可以写出最后的为完整程序:
#include <iostream>
using namespace std;
double silly(char a[]); //声明计算犯二程度的函数
int main()
{char s[102]; // 定义存储数值的数组int p;while (cin>>p) //多次输入{cin >> s; //输入位数不大于100位的“数字” double sy = silly(s); //调用函数 获取犯二的程度 cout << sy << endl; //输出犯二程度}return 0;}//犯二程度计算函数double silly(char a[]){ int i = 0, j = 0, n = 0;float flag1 = 1, flag2 = 1;float ss = 1;while (a[j] != '\0') //注意!!!{i++;if (a[j] == '2') n++;j++;}if (a[0] == '-'){flag1 = 1.5; i--; }if (int((a[j - 1] - '0') % 2) == 0) flag2 = 2;//计算犯二程度ss = (float(n) / float(i)) * flag1 * flag2;return ss; //返回犯二程度}
注意上述程序中,我使用了,多次调用函数即 while (a[j] != '\0'),而有些题目是不要求,或者不需要这个的。所以可根据需要选择。编
C/C++犯二程度计算相关推荐
- 基于GIS的建筑物群高度变化程度计算工具及计算实例经验分享
目录 一.工具介绍 1.工具界面 2.计算结果示例 3.计算原理 二.数据准备 三.计算步骤 1.生成渔网 2.工具计算 3.计算结果 4.计算结果(马赛克) 一.工具介绍 利用C#语言,基于ArcG ...
- ArcGIS土地利用动态度与土地利用程度计算(附练习数据下载)
一. 数据来源介绍 土地利用数据分为2000年和2020年两期数据,土地利用数据以及贵州省地市行政边界数据均来源于中国科学院资源环境科学与数据中心(https://www.resdc.cn/). 二. ...
- JAVA第二次作业《胖瘦程度计算》
[问题描述] BMI指数(身体质量指数,简称体质指数,Body Mass Index),是世界公认的一种评定胖瘦程度的分级方法.用体重(公斤)除以身高(米)的平方得到的数字: (BMI)=体重(kg) ...
- 【视频抖动程度检测】基于LK光流算法的视频图像序列抖动程度计算matlab仿真
1.软件版本 matlab2021a 2.算法原理概述 根据LK光流提取算法,得到视频前后两帧图像的光流,假设, X(t),Y(t) 表示t时刻光流场的X分量和Y分量: 那么晃动计算公为: 其中R为光 ...
- 深度学习的相似度计算 向量之间的相似程度计算 Q K V的注意力权重
https://blog.csdn.net/qq_32797059/article/details/106502737
- 『ACM C++』 PTA 天梯赛练习集L1 | 016-017
今天开了两个大会,时间都给占掉了,就刷了两道题~ 明天加油!!! ------------------------------------------------L1-016------------- ...
- C语言程序练习-L1-017 到底有多二 (15分)
L1-017 到底有多二 (15分) 一个整数"犯二的程度"定义为该数字中包含2的个数与其位数的比值.如果这个数是负数,则程度增加0.5倍:如果还是个偶数,则再增加1倍.例如数字- ...
- (~解题报告~)L1-017 到底有多二 (15分)(16行代码AC)
立志用更少的代码做更高效的表达 一个整数"犯二的程度"定义为该数字中包含2的个数与其位数的比值.如果这个数是负数,则程度增加0.5倍:如果还是个偶数,则再增加1倍.例如数字-131 ...
- L1-017 到底有多二 (15 分)
L1-017 到底有多二 (15 分) 一个整数"犯二的程度"定义为该数字中包含2的个数与其位数的比值.如果这个数是负数,则程度增加0.5倍:如果还是个偶数,则再增加1倍.例如数字 ...
- ptaa乘以b_PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)...
C++ CPP C++语言开发 PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中--) PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++: ...
最新文章
- mysql 5.6.34.rpm_离线安装mysql5.6及依赖_centos7离线安装mysql5.6.34
- 【项目实战】基于python行为评分卡模型
- sql server 替换有反斜杠的字符串_SQL注入思维导图
- ping github超时问题
- 第八篇 android 内容提供组件机制--MVC模式
- Spring学习之旅(四):面向切面编程(AOP)
- 面向对象之自动绑定数据源
- 【转】为什么要用GIT而不是SVN
- 在IMX6Q的linux4.1.15版本上默认支持docker
- 苹果手机键盘html代码大全,iPhone拨号键盘中的*和#有什么作用 iPhone特殊代码分享...
- C#,数值计算,希尔伯特矩阵(Hilbert Matrix)的算法与源代码
- 分享一下新的echarts离线文档
- 阿里巴巴安全响应中心成立了
- 华硕重装后进入bios_华硕笔记本重装系统后直接进入bios,怎么处理
- python|爬虫|爬取豆瓣自己账号下的观影记录并可视化
- Python离线安装whl文件,xxx.wh1 is not a supported wheel on this platform
- 什么是代理ip,代理ip的用途有哪些?
- 百度Aistudio飞桨七日游体验python爬虫和分析数据
- 黑客利用雅虎通好友列表发动钓鱼攻击
- Vulhub 靶场搭建