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

网站空间 阿里云北京金山办公软件股份有限公司官网

网站空间 阿里云,北京金山办公软件股份有限公司官网,福田蒙派克6座上蓝牌京牌,备案期间网站能用吗“知道做不到就是不知道”昨天我们讲到了“表达式”,那么今天我们就来看看写代码过程中最精妙的部分——算法吧~同样的一个问题,如果能够在算法上另辟蹊径,就会在很大程度上减少运行时间,提高代码效率!一、了解什么是算…

“知道做不到就是不知道”

昨天我们讲到了“表达式”,那么今天我们就来看看写代码过程中最精妙的部分——算法吧~

同样的一个问题,如果能够在算法上另辟蹊径,就会在很大程度上减少运行时间,提高代码效率!

一、了解什么是算法

1. 算法+数据结构=程序
(1)数据结构:对数据的描述。在程序中要指定用到那些数据,以及这些数据的类型和数据的组织形式
(2)算法:对计算机操作的描述。(不仅是要正确,还要考虑算法的质量—高效
数值:求数值解,往往有现成的模型,可以运用数值分析方法(数学公式)。
非数值:能力远大于“数值”,参考已有的类似算法,重新设计专用类型。

2. 算法的特性

(1)有穷性:一个算法包括有限的步骤(即运行时间是有限的);
(2)确定性:指的是组成算法的每条是清晰的,无歧义的。
(3)有零个或多个输入:从外界获取到的必要的信息;
(4)有一个或多个输出:算法的作用就是“输出”;
(5)有效性:每个步骤都应当能够有效执行。

3.算法的表示【一图胜千言!!!

(1)自然语言(人类使用的所有交流语言——常指中英文);

(2)传统流程图(介绍)

 (3)N-S流程图

①顺序结构:

②分支结构:

③循环结构(条件在前):

④循环结构(条件在后):

 (4)结构化流程图

        ①三种基本结构

        ②特点:

        ⅰ.只有一个入口;
ⅱ.只有一个出口;
ⅲ.结构内的每一个部分都有机会被执行;
ⅳ.结构内不存在“死循环”。 

(5)伪代码:用介于自然语言和计算机语言之间的文字和符号来描述算法。如同一篇文章,自上而下的写。每一行(或几行)表示一个基本操作。方便看懂,可以很好地作为正式写代码时的“草稿”。

4.结构化程序方法

(1)自顶向下:先做顶层设计,再逐步细分
(2)模块化设计:封装;函数;对象等概念
(3)逐步细化:细分的详细过程
(4)结构化编码

二、算法举例

(1)计算 1*2*3*4*5
①常规步骤:1*2=2、2*3=6……24*5=120(一步一步地慢慢乘)
②算法步骤(具有一般性、通用性、灵活性):

1.令p=1(将1存放在变量p中)——存储结果
2.令i=2(将2放在变量i中) ——改变变量
3.p=p*I(p和i相乘,结果仍然放在p中)
4.i=i+1(让i的值增加1)
5.验证如果i不大于5,返回重新执行3、4和5,否则算法结束——限制执行    

最后得到的p值就是5!【5的阶乘】

③变式:1*3*5*7*9*11

更改步骤:上述第2步改为“i=3”,第5步改为“i不大于11”.

④变式:1*2*3*…*n

更改步骤:第5步改为“i不大于n”.

(2)有50个学生,要求输出成绩在80分以上的学生的学号和成绩
①算法步骤:

1.i=1
2.如果gi>=80,则输出ni和gi,否则不输出
3.i=i+1
4.如果i<=50,返回第2步,继续执行,否则算法结束

符号解释:
n:表示学生学号
下标i:表示第几个学生
n1:表示第1个学生学号
ni:表示第i个学生学号
g:表示学生的成绩
g1:表示第1个学生的成绩
gi:表示第i个学生的成绩

(3)判定2000-2500年中有哪些闰年,并将结果输出
补充常识:闰年——是4的倍数,且不是100的倍数 && 是整百数,必须是400的倍数。
②算法步骤:

1.year=2000——初始年份
2.若不能被4整除,则输出year的值和“不是闰年”;
3.若能被4整除,不能被100整除,则输出year的值和“是闰年”;(普通闰年)
4.若能被400整除,则输出year的值和“是闰年”;(世纪闰年)
5.输出year的值和“不是闰年”
6.year=year+1
7.year<=2500时,转到第二步继续执行,否则算法停止。

((year/4==0 && year/100 != 0)|| (year/400 == 0))
//是闰年的C语言判断方法;

 (4)1-1/2+1/3-1/4+…+1/99-1/100
①算法步骤:(要找规律和分析)

1.sign=1
2.sum=1
3.deno=2 ——初始化数据
4.sign=(-1)*sign ——改变符号
5.term=sign*(1/deno) ——构造分数
6.sum=sum+term ——求和
7.deno=deno+1 ——改变分数
8.若deno<=100返回第4步,否则算法结束。

②符号解释:
sign:表示当前项的数值符号;
term:表示当前项的值;
sum:表示当前项的累加和;
deno:表示当前项的分母。

(5)给出一个大于等于3的正整数,判断是否为素数。
补充常识:素数——除了1和该数本身之外,不能被其他任何整数整除的数。
②算法步骤:

1.输入n的值
2.i=2(i作为被除数)
3.n被i除,得到余数r
4.如果r==0,表示n能被i整除,则输出n“不是素数”。算法结束,否则跳到第5步
5.i=i+1
6.如果i<=n-1,返回第3步,否则输出n的值,以及“是素数”,然后结束。

③优化方法:
实际上,n不必被2~(n-1)之间的整数除,只需被2~√n之间的整数除即可。(√9*√9=9  2*4=8——如果不是素数,一定存在比√n更小的因数。)

*用计算机语言表示算法:也就是将上面的“算法步骤”转化为可以运行的“代码”,以例(4)为例。

#include <stdio.h>
int main()
{int sign=1;double deno=2.0,sum=1.0,term;while(deno<=100){sign=-sign;term=sign/deno;sum=sum+term;deno=deno+1;}printf(“%f”,sum);return 0;
}

三、程序设计实操案例(顺序)

(1)题目描述:有人用温度计测量出用华氏法表示的温度(如64。F),今要求把它转换为摄氏度表示的温度(如17.8。C)。

解题思路:这个问题的关键在于找到二者间的转换公式。c=5/9(f-32)
*其中f表示华氏温度,c表示摄氏度。
注意:①5.0而不是5,C语言是强类型语言,变量是装什么数的就装什么数;int会自动取整,所以5/9=0;
②%f默认输出小数点后6位;%.1f默认输出1位小数;

(2) 计算存款利息:有1000元,想存1年。有3种方法可以选择:
①活期:年利率为r1(p1=p0(1+r1))
②一年期定期:年利率为r2(p2=p0(1+r2))
③存两次半年定期:年利率为r3(p3=p0(1+r3/2) (1+r3/2)),需要算出收益最大的方案。

这里建议初学时,最好一行一个变量,代码后面尽可能写上注释,有助于理解和分析。

小结:

上面第二部分提到的例子,大家可以尝试着将它们转换成代码,练习算法的同时还能巩固代码的输入与输出。

写在最后:

更新C语言学习笔记

如有错误,烦请多多批评指正!

http://www.dtcms.com/a/606004.html

相关文章:

  • 大丰有做网站的爱客crm官网
  • KingBase通过exp脚本实现数据库自动备份
  • DeepSeek的入门和使用
  • 视觉进阶篇—— PyTorch 安装
  • net开发网站站长素材音效
  • 登录场景下短信验证码功能的设计与实现(Vue 2 + Element UI + Axios附完整代码)
  • SpringBoot-36-开发实战JPA的使用(一对多)@OneToMany+@ManyToOne
  • 云桌面办公系统详解:开启灵活、安全、高效的工作新纪元
  • 尚硅谷 SpringCloud03 Sentinel服务保护(限流 熔断降级)-安装启动sentinel-请求限流-限流异常处理
  • 地产网站建设wordpress建站好么
  • EVM(以太坊虚拟机)及其运行机制详解
  • 跨境电商支付全链路解析
  • Qt+C++ 混合开发架构设计:QML 与 C++ 高效通信的解耦方案及设计模式
  • 网站项目实施方案聊城手机网站建设公司
  • Rust开发之Trait 定义通用行为——实现形状面积计算系统
  • The JAVA_HOME environment variable is not defined correctly 解决方案
  • 南昌网站建设工作开通微信公众号需要多少钱
  • 从“并发安全”到 Rust 的无畏并发实战
  • 当前网站开发的现状数据库网站建设公司
  • 网站竞价推广做网站资源管理是
  • 子域名泛解析技术详解与安全防护
  • SuperPoint 和 SIFT 的对比
  • 【云计算】【Kubernetes】 ① K8S的架构、应用及源码解析 - 核心架构与组件全景图
  • docker容器和分布式事务
  • 【剑斩OFFER】算法的暴力美学——寻找旋转排序数组中的最小值
  • Linux:基础开发工具(一)
  • 下载和调用通义千问大模型
  • 易站网站建设怎么做淘宝客网站和APP
  • 网站开发模板系统网站建设 排行
  • 安卓C语言编译器 | 提高开发效率,便捷进行C语言编程