【不就是C程序设计习题嘛】— 第二章:算法----程序的灵魂(1)

本文涉及的产品
云解析DNS-重点域名监控,免费拨测 20万次(价值200元)
简介: 【不就是C程序设计习题嘛】— 第二章:算法----程序的灵魂(1)

1. 什么是算法?试从日常生活中找3个例子,描述它们的算法

算法:简而言之就是求解问题的步骤,对特定问题求解步骤的一种描述。


比如生活中的例子:


1. 考大学


首先填报志愿表、交报名费、拿到准考证、按时参加考试、收到录取通知书、按照日期到指


定学校 报到。


2. 去北京听演唱会


       首先在网上购票、然后按时坐车到北京,坐车到演唱会会场。


3. 把大象放进冰箱


       先打开冰箱门,然后将大象放进冰箱,关冰箱。


4.煮饭


先抓米,再加水,淘一淘,加水,盖上锅盖,插上电

2. 什么叫结构化的算法?为什么要提倡结构化的算法?

结构化算法:由一些顺序、选择、循环等基本结构按照顺序组成,流程的转移只存在于一个基本的范围之内。


机构化算法便于编写,可读性高,修改和维护起来简单,可以减少程序出错的机会,提高了程序的可靠性,保证了程序的质量,因此提倡结构化的算法。

3. 试述3种基本结构的特点,请另外设计两种基本结构(要符合基类结 构的特点)。

结构化程序设计方法主要由以下三种基本结构组成:


1. 顺序结构:顺序结构是一种线性、有序的结构,它依次执行各语句模块


(比如你只有拿到了录取通知书才能去学校报到)


2. 选择结构:选择结构是根据条件成立与否选择程序执行的通路。


(讲人话就是,当条件成立时做……,当条件不成立时,做……)


3. 循环结构:循环结构是重复执行一个或几个模块,直到满足某一条件位置


(这里就要注意死循环问题)


重新设计基本结构要满足以下几点:

1. 只有一个入口

2. 只有一个出口

3. 结构内的每一部分都有机会执行到

4. 结构内不存在死循环

因此给出以下复习结构:while型和until型循环复合以及多选择结构

4. 用传统流程图表示求解以下问题的算法。

1. 有两个瓶子A和B,分别盛放醋和酱油,要求将他们互换(即A瓶原来盛醋,现在盛酱油,B瓶则相反)。


解析: 用两个瓶子显然很难实现,可以借助一个空瓶子C作为中转,先将A中醋导入C中,然后将B中的酱油导入A中,最后将C中的醋导入B中即可实现交换。

图片来自比特

2. 依次将10个数输入,要求输出其中最大的数。

解析: 先输入10个整数,将第一个整数给max,然后依次取剩余整数与max进行比较,如果某个整数大于max,将该整数交给max,直到所有剩余整数全部比较完,max中保存的即为最大整数,将 max值输出。

3. 有3个数a,b,c, 要求按大小顺序把他们输出。

解析:


i:先用a和b比较,如果a大于b,将a与b内容交换,否则进行ii

ii:用c和a比较,如果c大于a,将a和c交换,否则进行iv

iii:用c和b比较,如果c大于b,将c和b进行交换,否则进行iv

iv:输出a、b、c,结束


图片来自比特

4. 求1 + 2 + 3 + ... + 100。

解析:给定N为1,sum为0,如果N小于等于100时,进行sum += N,直到N超过100,循环操作完成后,sum即为从1加到100的结果。

5. 判断一个数n能否同时被3和5整除。

解析:


i:输入数据n

ii:如果n能被3整数,进行iii,否则输出n不能被3和5整数

iii:如果n能被5整数,输出n能被3和5整数,否则n不能被3和5整数

6. 将100~200之间的素数输出

素数:即数学中的质数,因子只有1和其本身的数字称为质数。

对100和200之间的每个数进行一下操作:该数能否被2~该数之间的所有数整除,是则是素数,输出,否则取下一个数字。

7. 求两个数m和n的最大公约数

解析:辗转相除法

a. 如果m大于n,交换m和n,m中存储大数,n中存储小数

b.如果b不等于0,循环进行一下操作:

用m%n结果给r,将n的值给m,将r的值给n

c.n等于0时,m即为最大公约数

8. 求方程ax^2 + bx + c = 0的根。

分别考虑:

  • 有两个不相等的实根;
  • 有两个相等的实根;

解析:

5. 用N-S图表示第4题中各题的算法

1. 有两个瓶子A和B,分别盛放醋和酱油,要求将他们互换(即A瓶原来盛醋,现在盛酱油,B瓶则相反)。

2. 依次将10个数输入,要求输出其中最大的数。

图片来自比特科技

3. 有3个数a,b,c, 要求按大小顺序把他们输出。

4. 求1 + 2 + 3 + ... + 100。

5. 判断一个数n能否同时被3和5整除。

6.求100到200之间的素数

7. 求两个数m和n的最大公约数

8. 求方程ax^2 + bx + c = 0的根。

分别考虑:

  • 有两个不相等的实根;
  • 有两个相等的实根;

相关文章
|
3月前
|
存储 算法 生物认证
基于Zhang-Suen算法的图像细化处理FPGA实现,包含testbench和matlab验证程序
本项目基于Zhang-Suen算法实现图像细化处理,支持FPGA与MATLAB双平台验证。通过对比,FPGA细化效果与MATLAB一致,可有效减少图像数据量,便于后续识别与矢量化处理。算法适用于字符识别、指纹识别等领域,配套完整仿真代码及操作说明。
|
6月前
|
PyTorch 算法框架/工具 C++
人工智能算法python程序运行环境安装步骤整理
本教程详细介绍Python与AI开发环境的配置步骤,涵盖软件下载、VS2017安装、Anaconda配置、PyCharm设置及组件安装等内容,适用于Windows系统,助你快速搭建开发环境。
|
11月前
|
存储 算法 测试技术
【C++数据结构——树】二叉树的遍历算法(头歌教学实验平台习题) 【合集】
本任务旨在实现二叉树的遍历,包括先序、中序、后序和层次遍历。首先介绍了二叉树的基本概念与结构定义,并通过C++代码示例展示了如何定义二叉树节点及构建二叉树。接着详细讲解了四种遍历方法的递归实现逻辑,以及层次遍历中队列的应用。最后提供了测试用例和预期输出,确保代码正确性。通过这些内容,帮助读者理解并掌握二叉树遍历的核心思想与实现技巧。
499 3
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
430 1
|
存储 缓存 算法
通过优化算法和代码结构来提升易语言程序的执行效率
通过优化算法和代码结构来提升易语言程序的执行效率
303 2
|
算法 测试技术 开发者
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗;代码审查通过检查源代码发现潜在问题,提高代码质量和团队协作效率。本文介绍了一些实用的技巧和工具,帮助开发者提升开发效率。
195 3
|
算法 安全 NoSQL
2024重生之回溯数据结构与算法系列学习之顺序表习题精讲【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
顺序表的定义和基本操作之插入;删除;按值查找;按位查找习题精讲等具体详解步骤以及举例说明
|
存储 缓存 算法
如何通过优化算法和代码结构来提升易语言程序的执行效率?
如何通过优化算法和代码结构来提升易语言程序的执行效率?
413 5
|
监控 算法 数据安全/隐私保护
基于三帧差算法的运动目标检测系统FPGA实现,包含testbench和MATLAB辅助验证程序
本项目展示了基于FPGA与MATLAB实现的三帧差算法运动目标检测。使用Vivado 2019.2和MATLAB 2022a开发环境,通过对比连续三帧图像的像素值变化,有效识别运动区域。项目包括完整无水印的运行效果预览、详细中文注释的代码及操作步骤视频,适合学习和研究。
|
缓存 分布式计算 监控
算法优化:提升程序性能的艺术
【10月更文挑战第20天】算法优化:提升程序性能的艺术

热门文章

最新文章