C#,初学琼林(02)——数组和值计算(Sum,求和)的源程序,相关问题及解决之道

news/2024/5/22 6:19:40/文章来源:https://blog.csdn.net/beijinghorn/article/details/129871843

1、求和算法

假设我们有一个 n 元素数组,我们想计算它们的总和。a 是一个索引从 0 到 n-1 的数组 。它的元素将被标记为:a[0], a[1],a[2],a[3],...,a[n-1]。

要计算此数组元素的总和,我们将执行以下步骤:

  • 一开始我们将用值 0 初始化(和值)结果,
  • 然后我们将依次遍历数组的所有元素,并将它们的值添加到我们的结果中,
  • 遍历所有元素后,我们将得到数组元素的总和。

2、用于交作业的非C#风格的源代码

private void button1_Click(object sender, EventArgs e)
{int n = 5;int[] a = new int[n];a[0] = 10;a[1] = 5;a[2] = 2;a[3] = 5;a[4] = 10;int sum = 0;for (int i = 0; i < n; i++){sum = sum + a[i];}string s = "数组A的和值 = " + sum;MessageBox.Show(s, "数组和值计算");
}

知识点:

(1)数组的定义;

(2)数组初值的给定;

(3)for 循环语句;

3、真正C# 风格的源代码

private void button1_Click(object sender, EventArgs e)
{int[] a = { 10, 5, 2, 5, 10 };int sum = 0;foreach (int x in a) sum += x;string s = "数组A的和值 = " + sum;MessageBox.Show(s, "数组和值计算");
}

知识点:

(1)数组定义的新方法,直接给定初值;无需给定组数维度;

(2)foreach 循环;

(3)+= 语法;

4、遗留的问题

(1)计算精度的问题

 浮点数计算中,一个特别大的数字 + 特别小的数字,会出现 大鱼吃小鱼的情况,就是说结果等于大数,小数没有体现出来!!!

(2)数据超限的问题

比如一个很大的整数数组(int),其和值可能超过了 int 可以表示的最大数!

5、灵活的代码

你可以仔细阅读下面的代码,学到更多的知识。

/// <summary>
/// 扩展的数组类
/// </summary>
public class EArray
{/// <summary>/// 生成一个n维的随机试验整数数组/// 数据范围在 -v/2 ... v/2 之间/// </summary>/// <param name="n"></param>/// <param name="v"></param>/// <returns></returns>public int[] RandArray(int n, int v){int[] va = new int[n];Random rand = new Random((int)DateTime.Now.Ticks);for (int i = 0; i < n; i++){va[i] = rand.Next(v) - (v / 2);Thread.Sleep(1);}return va;}/// <summary>/// 生成一个n维的随机试验浮点数数组/// 数据范围在 -v/2 ... v/2 之间/// </summary>/// <param name="n"></param>/// <param name="v"></param>/// <returns></returns>public double[] RandArray(int n, double v){double[] va = new double[n];Random rand = new Random((int)DateTime.Now.Ticks);for (int i = 0; i < n; i++){va[i] = rand.NextDouble() * v - v * 0.5;Thread.Sleep(1);}return va;}/// <summary>/// 数组和值计算/// </summary>/// <param name="va"></param>/// <returns></returns>public static long Sum(int[] va){long sum = 0;foreach (int x in va) sum += x;return sum;}/// <summary>/// 浮点数数组的和值计算/// </summary>/// <param name="va"></param>/// <returns></returns>public static double Sum(double[] va){// 先排序可以改善精度问题的解决// 具体细节请阅读 深度混淆 的相关博文// https://blog.csdn.net/beijinghorn/article/details/129748303Array.Sort(va);double sum = 0.0;foreach (double x in va) sum += x;return sum;}/// <summary>/// 金融类数组和值计算/// </summary>/// <param name="va"></param>/// <returns></returns>public static decimal Sum(decimal[] va){decimal sum = 0.0m;foreach (decimal x in va) sum += x;return sum;}
}

知识点

(1)怎么生成随机的浮点数?

(2)小数点后面精度要求高的用 decimal 类型的数组;

(3)怎么改善 大鱼吃小鱼的情况?

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一句话设计模式10:建造者模式

建造者模式: 一步一步建造一个对象; 文章目录建造者模式: 一步一步建造一个对象;前言一、建造者模式的作用二、如何实现建造者模式第一种: 改写set方法第二种: 直接使用lombok 的 Builder总结前言 建造者模式一般使用场景是: 一个复杂的对象创建过程,分步骤执行,一步一步完成创…

【开源项目】消息推送平台austin介绍

项目介绍 核心功能&#xff1a;统一的接口发送各种类型消息&#xff0c;对消息生命周期全链路追踪。 意义&#xff1a;只要公司内部有发送消息的需求&#xff0c;都应该要有类似austin的项目。消息推送平台对各类消息进行统一发送处理&#xff0c;这有利于对功能的收拢&#…

【LeetCode每日一题:2367. 算术三元组的数目:暴力模拟+Hash表】

&#x1f34e;作者简介&#xff1a;硕风和炜&#xff0c;CSDN-Java领域新星创作者&#x1f3c6;&#xff0c;保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享&#x1f48e;&#x1f48e;&#x1f48e; &#x1f34e;座右…

windows下切换PHP-cli版本

概念&#xff1a; PHP-cli是PHP Command Line Interface的缩写&#xff0c;指的是PHP的命令行界面。它是PHP语言中的一种执行方式&#xff0c;可以在命令行下运行PHP程序&#xff0c;而不需要通过Web服务器或浏览器来执行。 PHP-cli可以用于很多场景&#xff0c;比如&#xf…

Spark—idea

ideal—Spark新建工程新建maven工程&#xff0c;添加scala添加依赖pom添加依赖并下载 spark-core重复步骤下载spark-sqlspark-hivespark-graphxmysql-connector-java安装完成新建SparkDemo的scala objectsc对象可能会出现报错&#xff0c;参考这位老哥的解决办法wordcount打架包…

快递的旅行日记 - 深度挖掘快递物流地图轨迹查询API 的使用场景

写在前面 全球化经济的不断发展使得快递业变得越来越重要&#xff0c;而快递物流地图轨迹查询 API 也因此应运而生。 该 API 可以帮助用户追踪物流信息&#xff0c;了解快递的运输状态&#xff0c;方便快递企业、个人用户以及电商平台等多方面的需求。 快递物流地图轨迹查询 …

Matlab进阶绘图第13期—带填充纹理的堆叠图

带填充纹理的堆叠图是通过在原始堆叠图的基础上添加不同的纹理得到的&#xff0c;可以很好地解决由于颜色区分不够而导致的对象识别困难问题。 由于Matlab中未收录提供填充纹理选项&#xff0c;因此需要大家自行设法解决。 本文使用hatchfill2工具&#xff08;Kesh Ikuma. Ma…

JVM 字符串常量池(StringTable)

String的基本特性 String&#xff1a;字符串&#xff0c;使用一对 “” 引起来表示String s1 "hello" ; // 字面量的定义方式String s2 new String("hello"); // new 对象的方式 String被声明为final的&#xff0c;不可被继承 String实现了…

【新股打新】北森控股:发行比例只有区区1%,这是要作妖的前奏?

一、公司简介 北森控股&#xff0c;成立于2002年&#xff0c;是国内领先的人力资源管理的高科技公司&#xff0c;旗下的一体化HR SaaS及人才管理平台 —— iTalentX&#xff0c;覆盖了企业招聘、入职、管理到离职的全生命周期的数字化管理&#xff0c;帮助企业快速提升人力资源…

玄子Share-BCSP助学手册之数据库开发(已优化)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NIr0tYNc-1680505151717)(./assets/XuanZiShare_QQ_3336392096.jpg)] 玄子Share-BCSP助学手册之数据库开发 前言&#xff1a; 此文为玄子&#xff0c;学习 BCSP 一二期后整理的文章&#xff0c;文中对…

Vivado中如何修改IP源文件

前一篇文章是通过改变JESD204B IP的设置&#xff0c;在Shared Logic里勾选in example design&#xff0c;来避免共用输入时钟的问题。那么还有没有别的办法呢&#xff1f;有没有更直接点的实现方式呢&#xff1f; 答案是肯定的&#xff1a;可以直接修改IP&#xff0c;将IBUFDS…

开心档之开发入门网-C++ 变量类型

C 变量类型 目录 C 变量类型 C 中的变量定义 C 中的变量声明 实例 实例 C 中的左值&#xff08;Lvalues&#xff09;和右值&#xff08;Rvalues&#xff09; 变量其实只不过是程序可操作的存储区的名称。C 中每个变量都有指定的类型&#xff0c;类型决定了变量存储的大小…

合宙Air780E|ScreenStream|图传|LuatOS-SOC接口|学习(23):4G远程遥控小车(2)-图传设置及解析

目录 基础资料 原项目地址 实现功能&#xff1a; 前文&#xff1a; 图传设置及解析 概述 提示 软件亮点 操作步骤 4G小车控制前端相关代码 图传显示函数&#xff1a; 按钮及显示框 待解决问题&#xff1a;小车图传前端不能正常显示 基础资料 ​ 基于Air780E开发板&…

「Python 机器学习」Matplotlib 数据探索

Matplotlib 是一个 Python 的数据可视化库&#xff0c;它能够轻松创建各种类型的图表和图形&#xff1b;Matplotlib 可以在 Jupyter Notebooks、交互式应用程序和脚本中使用&#xff0c;并支持多种绘图样式和格式&#xff1b; Matplotlib 最初是为科学计算而设计的&#xff0c…

【观察】诺基亚贝尔品牌焕新传递新价值,以无线专网加速中国数字化进程

今年2月底&#xff0c;在西班牙巴塞罗那举行的2023年世界移动通信大会上&#xff0c;诺基亚宣布重塑企业战略和技术战略&#xff0c;同时推出全新企业品牌形象&#xff0c;这标志着诺基亚在长期战略转型之路上迈出了坚实的一步。而作为诺基亚在华独家运营实体&#xff0c;诺基亚…

pdf格式可以编辑吗?提供几个思路

PDF格式文件常常用于共享文档和保护文档内容&#xff0c;但是很多人都会遇到一个问题&#xff1a;PDF格式文件是否可编辑&#xff1f; 答案是肯定的&#xff0c;PDF格式文件是可以编辑的。虽然PDF格式文件的初衷是为了保护文档内容&#xff0c;但是现在很多软件已经支持PDF格式…

【OJ比赛日历】快周末了,不来一场比赛吗? #04.01-04.07 #14场

CompHub 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…&#xff09;比赛。本账号同时会推送最新的比赛消息&#xff0c;欢迎关注&#xff01;更多比赛信息见 CompHub主页 或 点击文末阅读原文以下信息仅供参考&#xff0c;以比赛官网为准目录2023-04-01&…

Android OKHttp源码解析

Https是Http协议加上下一层的SSL/TSL协议组成的&#xff0c;TSL是SSL的后继版本&#xff0c;差别很小&#xff0c;可以理解为一个东西。进行Https连接时&#xff0c;会先进行TSL的握手&#xff0c;完成证书认证操作&#xff0c;产生对称加密的公钥、加密套件等参数。之后就可以…

【人工智能】—局部搜索算法、爬山法、模拟退火、局部剪枝、遗传算法

Local search algorithms &#xff08;局部搜索算法&#xff09;局部搜索算法内存限制局部搜索算法示例&#xff1a;n-皇后爬山算法随机重启爬山模拟退火算法局部剪枝搜索遗传算法小结局部搜索算法 在某些规模太大的问题状态空间内&#xff0c;A*往往不够用 问题空间太大了无法…

InVEST模型

详情点击链接&#xff1a;invest模型 生态系统服务理论联系实践案例InVEST模型的开发历程、不同版本的差异及对数据需求InVEST所需数据的要求&#xff08;分辨率、格式、投影系统等&#xff09;、获取及标准化预处理InVEST运行常见问题及处理解决方法ArcGIS工具支撑InVEST模型…