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

《C程序设计》笔记(ch1-2)

第1章 程序设计和C语言

1.2 什么是计算机语言

人和计算机都能识别的语言,就是计算机语言。

符号语言用一些英文字母和数字表示一个指令。汇编程序:符号语言的指令→机器指令。

编译程序:源程序→机器指令。

1.4 最简单的C语言程序

每一个C语言程序都必须有一个main函数。函数体用花括号{}括起来。

光标位置是输出的当前位置。

文件后缀.h的意思是头文件(header file),因为这些文件都是放在程序各文件模块的开头的。

C语言允许用两种注释方式:以//开始的单行注释,以/*开始,以*/结束的块式注释。应当多用注释。

希望读者一律将main函数指定为int型,并在main函数的最后加一个”return 0;”语句。

可以使一个程序包含若干个源程序文件。一个源程序文件就是一个程序模块。

程序总是从main函数开始执行的。

1.5 运行C程序的步骤与方法

用C语言编写的程序是源程序。

编译时先对程序中的预处理指令进行编译预处理。

可执行程序:可供计算机执行的目标程序。

1.6 程序设计的任务

程序说明书也称为用户文档,软件是计算机程序和程序文档的总称。

习题1

  1. 什么是程序?什么是程序设计?
    程序:一组让计算机能识别和执行的指令。程序设计:从确定任务到得到结果、写出文档的全过程。

  2. 为什么需要计算机语言?高级语言有哪些特点?
    为了让人和计算机交流信息,需要一种计算机和人都能识别的语言;功能很强,且不依赖于具体机器,用它写出的程序对任何型号的计算机都适用,与具体机器距离较“远”。

  3. 正确理解下列名词及其含义。
    (1)源程序:用C语言编写的程序。目标程序:源程序转化而来的二进制的程序。可执行程序:可供计算机执行的目标程序。
    (2)程序编辑:通过键盘向计算机输入程序的过程。程序编译:将源程序转换为目标程序的过程。程序连接:将所有编译后得到的目标模块连接装配,再与函数,库相连接成一个整体,生成可执行程序的过程。
    (4)函数:用来实现一个或几个特定功能的C程序的基本单位。主函数:即main函数,C程序执行的起点。
    (5)程序调试:通过上机发现和排除程序中故障的过程。程序测试:设计多组测试数据,检查程序对不同数据的运行情况,从中尽量发现程序中存在的漏洞,并修改程序,使之能适用于各种情况。

第2章 算法——程序的灵魂

2.1 程序=算法+数据结构

数据是操作的对象。

2.2 什么是算法

每件事都需要事先设计出“行动步骤”。

许多问题往往需要使用者参考已有的类似算法的思路,重新设计解决特定问题的专门算法。

2.3 简单的算法举例

数列求和-通项正负交替:用sign代表当前处理的项前面的数值符号。sign=(-1) * sign。

2.5 怎样表示一个算法

流程图:✔图2.3(图例)

菱形框两侧的Y和N代表“是”(Yes)和“否”(No)。

两种循环结构:

直到
判断执行A
执行A判断
A成立 则继续A成立 则结束

一个判断框有两个出口,而一个选择结构只有一个出口。

由基本结构所构成的算法属于“结构化”的算法。

多分支选择结构的表示方法☞P234 图9.21

w的作用如同一个开关一样,有两种工作状况。

习题2

  1. 什么是算法?
    算法是为解决一个问题而采取的方法和步骤。

  2. 什么叫结构化的算法?为什么要提倡结构化的算法?
    由基本结构所构成的算法叫做“结构化的算法”;它不存在无规律的转向,只在本基本结构内才允许存在分支和向前或向后的跳转。

  3. 试述三种基本结构的特点。
    顺序结构:A和B两个框是顺序执行的。
    选择结构:必然包含一个判断框。根据给定的条件p是否成立而选择执行A框或B框。
    循环结构:反复执行某一部分的操作。

  4. 什么叫结构化程序设计?它的主要内容是什么?
    结构化程序设计是设计结构化程序的过程;模块化设计和结构化代码。

相关文章:

《C程序设计》笔记(ch1-2)

第1章 程序设计和C语言 1.2 什么是计算机语言 人和计算机都能识别的语言,就是计算机语言。 符号语言用一些英文字母和数字表示一个指令。汇编程序:符号语言的指令→机器指令。 编译程序:源程序→机器指令。 1.4 最简单的C语言程序 每一…...

【Overload游戏引擎细节分析】Lambert材质Shader分析

一、经典光照模型:Phong模型 现实世界的光照是极其复杂的,而且会受到诸多因素的影响,这是以目前我们所拥有的处理能力无法模拟的。经典光照模型冯氏光照模型(Phong Lighting Model)通过单独计算光源成分得到综合光照效果,然后添加…...

二进制搭建 Kubernetes+部署网络组件+部署CornDNS+负载均衡部署+部署Dashboard

二进制搭建 Kubernetes v1.20 k8s集群master01:20.0.0.50 kube-apiserver kube-controller-manager kube-scheduler etcd k8s集群master02:20.0.0.100k8s集群node01:20.0.0.110 kubelet kube-proxy docker etcd k8s集群node02:20.…...

【 OpenGauss源码学习 —— 列存储(update_pages_and_tuples_pgclass)】

列存储(update_pages_and_tuples_pgclass) 概述update_pages_and_tuples_pgclass 函数ReceivePageAndTuple 函数estimate_cstore_blocks 函数get_attavgwidth 函数get_typavgwidth 函数 vac_update_relstats 函数 测试案例 声明:本文的部分内…...

爬虫进阶-反爬破解7(逆向破解被加密数据:全方位了解字体渲染的全过程+字体文件的检查和数据查看+字体文件转换并实现网页内容还原+完美还原上百页的数据内容)

目录 一、全方位了解字体渲染的全过程 1.加载顺序 2.实践操作:浏览器中调试字体渲染 3.总结: 二、字体文件的检查和数据查看 1.字体文件的操作软件 2.映射关系的建立 3.实践操作:翻找样式和真实内容 4.总结: 三、字体文…...

系统架构设计师之RUP软件开发生命周期

系统架构设计师之RUP软件开发生命周期...

VM虚拟机 13.5 for Mac

VMware Fusion Pro for Mac是一款强大的虚拟机软件,可以在Mac操作系统中创建、运行和管理多个虚拟机,使用户可以在一台Mac电脑上同时运行多个操作系统和应用程序。 以下是VMware Fusion Pro for Mac的主要特点: 1. 支持多种操作系统&#xff…...

一篇教你学会Ansible

前言 Ansible首次发布于2012年,是一款基于Python开发的自动化运维工具,核心是通过ssh将命令发送执行,它可以帮助管理员在多服务器上进行配置管理和部署。它的工作形式依托模块实现,自己没有批量部署的能力。真正具备批量部署的是…...

Mysql第四篇---数据库索引优化与查询优化

文章目录 数据库索引优化与查询优化索引失效案例数据准备1. 全值匹配2 最佳左前缀法则(联合索引)主键插入顺序4 计算、函数导致索引失效5 类型转换(自动或手动)导致索引失效6 范围条件右边的列索引失效7 不等于(!或者<>)索引失效8 is null可以使用索引, is not null无法使…...

SpringBoot手动获取实例

1.首先创建一个接口里面是关于建库建表的方法 public interface MetaMapper {//三个核心建表方法void createExchangeTable();void createQueueTable();void createBingdingTable(); } 2.启动类中定义一个ConfigurableApplicationContext 类型的变量context接收SpringApplica…...

栈(Stack)的概念+MyStack的实现+栈的应用

文章目录 栈&#xff08;Stack&#xff09;一、 栈的概念1.栈的方法2.源码分析 二、MyStack的实现1.MyStack的成员变量2.push方法3.isEmpty方法和pop方法4.peek方法 三、栈的应用1.将递归转化为循环1.调用递归打印2.通过栈逆序打印链表 栈&#xff08;Stack&#xff09; 一、 栈…...

C语言进阶第九课 --------动态内存管理

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…...

嵌入式 Tomcat 调校

SpringBoot 嵌入了 Web 容器如 Tomcat/Jetty/Undertow&#xff0c;——这是怎么做到的&#xff1f;我们以 Tomcat 为例子&#xff0c;尝试调用嵌入式 Tomcat。 调用嵌入式 Tomcat&#xff0c;如果按照默认去启动&#xff0c;一个 main 函数就可以了。 简单的例子 下面是启动…...

初始化固定长度的数组

完全解析Array.apply(null,「length: 1000」) 创建固定长度数组&#xff0c;并且初始化值。直接可以使用map、forEach、reduce等有遍历性质的方法。 如果直接使用Array(81)&#xff0c;map里面的循环不会执行。 //方法一 Array.apply(null, { length: 20 })//方法二 Array(81)…...

实现基于 Jenkins 的多服务器打包方案

实现基于 Jenkins 的多服务器打包方案 在实际项目中&#xff0c;我们经常会遇到需要将一个应用程序或服务部署到不同的服务器上的需求。而使用 Jenkins 可以很方便地自动化这个过程。 设置参数 首先&#xff0c;我们需要设置一些参数&#xff0c;以便在构建过程中指定要部署…...

探索现代IT岗位:职业机遇的海洋

目录 1 引言2 传统软件开发3 数据分析与人工智能4 网络与系统管理5 信息安全6 新兴技术领域 1 引言 随着现代科技的迅猛发展&#xff0c;信息技术&#xff08;IT&#xff09;行业已经成为了全球经济的关键引擎&#xff0c;改变了我们的生活方式、商业模式和社会互动方式。IT行…...

np.linspace精确度

前言 今天发现一个大坑&#xff0c;如果是序列是小数的话&#xff0c;不要用np.linspace&#xff0c;而要用np.arrange指定等差序列。比如入下图中a和b是一样的意思&#xff0c;但是b是有较大误差的。 anp.arange(0,4,0.4) bnp.linspace(0,4,10) print("a",a) prin…...

GD32_定时器输入捕获波形频率

GD32_定时器输入捕获波形频率&#xff08;多通道轮询&#xff09; 之前项目上用到一个使用定时器捕获输入采集风扇波形频率得到风扇转速的模块&#xff0c;作为笔记简单记录以下当时的逻辑结构和遇到的问题&#xff0c;有需要参考源码、有疑问或需要提供帮助的可以留言告知 。…...

单窗口单IP适合炉石传说游戏么?

游戏道具制作在炉石传说中是一个很有挑战的任务&#xff0c;但与此同时&#xff0c;它也是一个充满机遇的领域。在这篇文章中&#xff0c;我们将向您展示如何在炉石传说游戏中使用动态包机、多窗口IP工具和动态IP进行游戏道具制作。 作者与主题的关系&#xff1a;作为一名热爱炉…...

win11安装docekr、docker-compose

1.docker安装 下载地址&#xff1a;Install Docker Desktop on Windows | Docker Docs 出问题别慌&#xff0c;看清楚提示信息&#xff0c;cmd更新wsl&#xff0c;什么是wsl&#xff0c;百度好好理解一下哦 2.docker-compose安装 还是去官方看看怎么说的&#xff0c;然后跟着处…...

终极指南:在Windows上直接安装安卓APK文件的5个简单步骤

终极指南&#xff1a;在Windows上直接安装安卓APK文件的5个简单步骤 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 想在Windows电脑上运行安卓应用&#xff0c;但又厌…...

如何为《欧洲卡车模拟2》实现完整智能驾驶体验?ETS2LA自动驾驶插件终极指南

如何为《欧洲卡车模拟2》实现完整智能驾驶体验&#xff1f;ETS2LA自动驾驶插件终极指南 【免费下载链接】Euro-Truck-Simulator-2-Lane-Assist Plugin based interface program for ETS2/ATS. 项目地址: https://gitcode.com/gh_mirrors/eur/Euro-Truck-Simulator-2-Lane-Ass…...

GARbro:跨平台视觉小说游戏资源解析与提取工具

GARbro&#xff1a;跨平台视觉小说游戏资源解析与提取工具 【免费下载链接】GARbro Visual Novels resource browser 项目地址: https://gitcode.com/gh_mirrors/ga/GARbro GARbro是一款专门用于解析和提取视觉小说游戏资源文件的跨平台开源工具&#xff0c;支持数百种游…...

为开源项目OpenClaw配置Taotoken作为后端模型供应商

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为开源项目OpenClaw配置Taotoken作为后端模型供应商 OpenClaw是一个功能强大的开源智能体&#xff08;Agent&#xff09;框架&…...

一种用于并网光伏系统的创新型多层逆变器,以降低总谐波失真(THD)研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 &#x1f381…...

开源大模型推理引擎Takeoff部署指南:从原理到生产实践

1. 项目概述&#xff1a;一个让大模型推理“起飞”的开源引擎 如果你正在为如何将那些动辄几十GB、几百亿参数的大语言模型&#xff08;LLM&#xff09;部署到生产环境而头疼&#xff0c;或者厌倦了为每一次API调用支付高昂的费用&#xff0c;那么今天聊的这个项目&#xff0c…...

Proof Engine:简化零知识证明开发,降低区块链应用门槛

1. 项目概述&#xff1a;Proof Engine&#xff0c;一个为现代开发者设计的证明引擎如果你和我一样&#xff0c;在构建需要复杂逻辑验证、状态证明或零知识证明&#xff08;ZKP&#xff09;相关应用时&#xff0c;常常感到头疼——工具链复杂、学习曲线陡峭、不同框架间的兼容性…...

Linux内核升级C11标准:从C89到现代C语言的演进与实战解析

1. 项目概述&#xff1a;一次内核语言的“心脏移植”最近Linux内核社区的一个决定&#xff0c;在开发者圈子里激起了不小的波澜&#xff1a;计划将内核的C语言标准从使用了超过十年的C89/C90&#xff0c;逐步迁移到C11。这听起来可能像是一个枯燥的技术规范更新&#xff0c;但对…...

AI代码管理器:统一多模型编程助手,提升开发效率与代码质量

1. 项目概述&#xff1a;一个面向开发者的多模型代码管理技能最近在折腾AI编程助手&#xff0c;发现一个挺有意思的现象&#xff1a;很多开发者手头可能同时用着Claude、CodeGemini这类工具&#xff0c;但每次切换都得重新配置环境、调整提示词&#xff0c;甚至要处理不同模型输…...

基于Trinket M0与伺服电机的宠物激光护目镜DIY全攻略

1. 项目概述与核心思路给自家毛孩子做个赛博朋克风的万圣节装备&#xff0c;这个想法在我脑子里盘桓很久了。市面上那些宠物装饰要么千篇一律&#xff0c;要么就是简单的布料缝制&#xff0c;总感觉少了点“硬核”的趣味。直到我看到伺服电机和激光二极管这两个小玩意儿&#x…...