【程序设计和c语言-谭浩强配套】(适合专升本、考研)

一晃大半年没更新了,这一年一直在备考,想着这几天把前段时间学的c语言给大家分享一下,在此做了一个专栏,有需要的小伙伴可私信获取o。

简介:本专栏所有内容皆适合专升本、考研的复习资料,本人手上也有日常刷题整理的错题以及一些考试常见的编程题。都是学习过程中留下的干货,没有废话。由于csdn许久未用,博客的格式已经不是很明了了,有需要学习资料的小伙伴可以私信我或者评论区找我无偿拿资料😯。

前面两章都是基础概念,所以没有为大家准备目录,纯干货望见谅。。。

话不多说,直接开始。。。。。

1.什么是程序?

所谓程序,就是一组计算机能够识别和执行的指令。程序和指令是计算机系统中最基本的概念。

2.什么是程序设计?

程序设计指的是从确定任务到得到结果、写出文档的全过程。

3.为什么需要计算机语言?

人和计算机的交流需要解决语言问题,需要创造出一种人和计算机都能识别的语言,这种语言就是计算机语言。

4.计算机语言的发展阶段

机器语言

<!--第一代计算机语言,基于二进制运行。因为计算机的工作本质上是基于二进制运行的,即只能识别和接受0和1组成的二进制代码,所以在计算机发展的初期,一般计算机的指令长度为16,即以16个二进制数组成一条指令,这种二进制代码就是用机器语言编写的机器指令,机器指令可被计算机直接识别,我们称这种计算机能够直接识别和接受的二进制代码为机器指令,机器指令的集合就是该计算机的机器语言。使用机器语言编写的程序称为目标程序,同样也无需翻译可被计算机直接识别并执行(因为机器指令可被计算机直接识别,目标程序就是使用机器语言编写的一条条机器指令),且运行效率最高。但机器语言可移植性差,在一台计算机上编写的机器语言程序可能在另一台计算机上运行不成功,且难学、难改、难记、难检查。例如使用 1011011000000000 表示加法运算。-->

符号语言

<!--第二代计算机语言,又称“汇编语言”,使用助记符的方式来代替机器指令的二进制串(即使用英文字母和数字表示一个指令),不基于二进制运行。符号语言编写的程序不能直接被计算机识别,需要使用一种“汇编程序”的软件将符号语言的指令转换为机器指令,一般一条符号语言的指令对应一条机器指令,转换的过程称为“仿真”或“汇编”。符号语言与机器语言一样可移植性不好,但运行效率仅次于机器语言,相对于机器语言,使用符号语言编写的程序在可维护性和修改上得到了很大的提高。符号语言是一种专门针对计算机的特性而编制的语言,能准确发挥就算计硬件的功能和特长。他与机器语言统称为低级语言。(例如使用ADD a,b表示 a+b)-->

高级语言

<!--是一种接近人的自然语言与数学语言的计算机语言,同时又不依赖于计算机的硬件,编写的程序在所有的计算机上都可以通过(第一个高级语言--FORTRAN)高级语言编写的程序也无法被计算机直接识别,需要使用一种“编译程序”的软件将高级语言编写的程序(源程序)转换为机器指令的程序(目标程序)。由于高级语言距离底层机器较远,所以执行效率最低,一般一条高级语言的指令对应多条机器指令。高级语言又经历了非结构化、结构化、面向对象三个发展阶段。(例如直接使用 + 表示加运算)-->

⚠️注意:

  • 只有机器指令可被计算机直接识别,符号语言、高级语言的指令都需要进行转换或翻译。
  • 越高级的计算机语言,距离底层计算机越远,执行效率也就越低。
  • 高级语言分为“编译执行”和“解释执行”。(c只能进行编译执行

5.机器语言与符号语言统称为低级语言(距离底层计算机很近),他们都是面向机器的语言,完全依赖于机器的特性(硬件),可移植性不好。机器语言与汇编语言都可以直接对硬件进行操作。

机器语言使用机器指令控制计算机,机器指令可直接被计算机识别。

符号语言需要使用一种汇编程序的软件把符号语言的指令转换为机器指令才能执行,一条符号语言指令对应一条机器指令。

高级语言需要使用一种编译程序高级语言编写的程序(源程序)转换为机器指令的程序(目标程序),高级语言的一个语句对应多条

机器指令。(源码-->机器码)

⚠️注意:

  • c语言也可以直接对硬件进行操作,所以c既可以开发应用软件,也可以开发系统软件。(目前c主要用途之一为嵌入式)

6.高级语言的发展阶段

非结构化语言

<!--编程风格随意、只要求符合语法,导致程序难以阅读和维护。-->

结构化语言

<!--为解决非结构化程序的弊端,结构化程序设计方法规定:程序必须由具有良好特性的基本结构(顺序、分支、循环)构成,程序的流程不允许随意跳转,程序总是由上而下顺序执行各个基本结构。结构化语言编写的程序结构清晰、易于编写、阅读和维护,使得程序的阅读性、可维护性得到很大提高。c语言就是最经典的结构化语言。(第一个结构化语言--Pascal)-->

面向对象

<!--对象是数据以及对数据进行的操作的封装体,面向对象使得程序更容易、耗时更少、效率更高,程序模块可以重复使用。-->

⚠️注意:

  • 非结构化和结构化都属于面向过程的语言。
  • 面向过程和面向对象的区别在于:面向过程更适合流程化的任务,面向对象更适合多变或需要高度重复使用和扩展的程序。

7.高级语言的特点

  • 功能强、不依赖于具体计算机。

  • 易学易用易维护、通用性强,编写的程序可以在所有计算机上运行。但是执行效率可能低于低级语言。

  • 编写的程序需要进行翻译才能被计算识别。

8.c语言的特点

  • 语言简洁紧凑、使用方便灵活:<!--c是一个很小的内核语言,只包含极少与硬件相关的成分,所有的输入输出、文件操作和动态内存管理语句都由编译系统提供的库函数实现。c只有37(32+5)个关键字、9种控制语句,程序书写自由。编译时会压缩一切不必要的成分后,使得比其他高级语言编写的程序更简练、源程序更短、输入程序时工作量更少。-->

  • 运算符丰富:<!--34种运算符-->

  • 数据类型丰富:<!--除基本数据类型和构造数据类型外,c99还提供了复数浮点型、超长整型(long long)和布尔型(bool)-->

  • 具有流程化控制语句:<!--if、switch、for、while、do-while等-->

  • 语法限制不太严格、程序设计自由度大:<!--例如数组下标越界不会检查、不同类型变量之间会进行隐式转换等,这对于初学者来说不太友好,但对于精通c语言的开发者来说编写程序变得很容易。-->

  • 允许直接访问物理地址、能进行位操作:<!--能实现汇编语言的大部分功能,因此c既具有高级语言的特征,又兼具低级语言的许多功能,使得c既可以开发系统软件、又可以开发应用软件。-->

  • 可移植性好:<!--c语言属于高级语言,相当简洁,很容易移植到新的系统和新电脑上。c编译系统在新的操作系统上运行时,可直接编译“**标准链接库**”中的大部分功能(因为标准链接库是用c语言写的),这样就不需要修改源码直接在新机器上运行-->

  • 生成目标代码质量高、程序执行效率快

9.c程序(一般包含多个.c文件)都必须有且仅有一个main函数,c程序的执行也总是从main函数开始的,也是从main函数结束的。

⚠️注意:c程序的结束总是从main函数结束的,但并不是在执行到main函数的最后一条语句结束。

main(){int x=12;if(x==12)return 0;//执行到这里就结束了else return 1;
}

10.函数中return语句是当函数执行结束前将return语句后面的表达式的值作为函数值返回。

⚠️注意:main函数的return 0一般是用于判断函数是否结束,正常结束时返回0,异常时返回非零数值。用户自定义函数的return是为

了将函数值返回给调用函数。

11.输入输出函数是c编译系统中库函数提供的,不是c语言提供的,所有的输入输出都是通过系统提供的有关函数(库函数)来实现的。

#include <stdio.h>是将库函数中有关函数的信息引入程序中,这样程序才可以使用这些库函数,文件后缀 .h 是头文件的意思,因为c

是结构化程序设计语言,必须从上向下依次运行必须且放在程序头部,故称为头文件。

12.//:单行注释,表示此处到该行结束都是注释,不能跨行。

/* */:多行注释(块注释),表示二者之间的内容都是注释,可以跨行。

⚠️注意:

  • c89只允许使用多行注释,//是c++的注释。但c99之前许多c编译系统已支持允许使用//注释,c99才正式将//纳入c语言新标准。
  • 编译时注释不会转换为机器指令,预编译阶段会将每个注释替换为一个空格
  • 多行注释“/“与”*“之间不允许有空格。且只要不出现在语句(例如变量名、关键字)的中间其余地方都正确。
  • 字符串中的//和/*都不作为注释的开始,而是作为字符串的一部分。
  • 块注释不允许嵌套。

13.c程序的结构

一个c语言程序由一个或多个源程序文件组成,一个源程序文件可能有一个或多个函数组成。每个源程序文件包含:预处理命令、全

局声明、函数定义三部分。一个函数包括:函数首部(函数原型)、函数体两部分。函数首部由返回值类型函数名形参表列组成。

函数体由声明部分执行部分组成。

14.函数是c语言的主要组成部分,语句是c语言最基本的执行单位,源程序文件是c语言基本编译单位。

15.c语言每条语句以分号结尾表示结束。(复合语句除外

16.c程序总是从main函数开始执行。程序中要求计算机完成的操作是函数中的语句完成的。

17.c一行内可以写多条语句,一条语句也可以写在多行

18.c编译过程

1.预编译:将 .c 中的头文件展开、宏展开。生成的文件是 .i 文件。预处理操作过程不会进行语法检查。
2.编译:编译器会对源代码进行语法分析、语义分析、优化等操作,并生成相应的汇编代码。然后将预处理之后的 .i 文件生成 .s 汇编文件。
3.汇编:将编译输出的汇编代码转换为机器代码,也称为目标代码,然后生成 .obj 文件
4.链接:将多个 .obj 文件合并为 .exe可执行程序

19.c程序的运行步骤

  • 上机输入与编辑源程序。

  • 将源程序(.c文件)编译成二进制目标程序(.obj文件),此时源文件没有消失(.obj与.exe都是二进制文件)。

  • 将多个目标程序使用“链接编辑程序”进行连接处理,生成二进制的可执行程序(.exe文件)。

  • 运行可执行程序。

20.程序设计的任务

  • 问题分析

  • 设计算法

  • 编写程序

  • 对源程序进行编译、链接

  • 运行程序并分析程序结果

  • 编写程序文档

21.标准库函数:#include <stdio.h>

数学库函数:#include <math.h>

字符串库函数:#include <string.h>

动态分配:#include <stdlib.h>

22.什么是标识符

用来标识数据类型、变量、函数、语句的符号就是标识符。可分为关键字、用户自定义标识符、预定义标识符三类

23.什么是关键字

关键字又称为保留字,是c语言规定的、赋予特定含义和有专门用途的标识符。

  • 数据类型关键字:12个

  • 控制语句关键字:12个

  • 存储类型关键字:4个

  • 其他关键字:4个

⚠️注意:c语言的关键字都是小写字母表示,不能使用大写字母表示

24.什么是用户自定义标识符

字面意思,就是用户自己定义的标识符,包括程序中定义的变量名、函数名、符号常量和数据类型名。

25.什么是预定义标识符?

c语言提供的头文件、库函数中定义的标识符统称为预定义标识符。例如scanf、printf,c语言允许用户自定义标识符与预定义标识符重

名,但是这样会使预定义标识符失去原有作用。

26.什么是分隔符?

分隔符分为两种---逗号和空格。逗号用于类型说明和函数参数表中,分割各个变量。空格则用于各单词之间做分隔符。关键字与标识符

之间必须要有一个及以上的空格分隔。

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

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

相关文章

C# WinForm —— 13 ComboBox下拉框/组合框介绍

1. 简介 ComboBox 是由 textBox 和 listBox 组合而成的&#xff0c;只能选择一项&#xff0c;不能选择多项&#xff0c;其他功能和 listBox类似 ComboBox 下拉框的三种样式&#xff1a;&#xff08;通过 DropDownStyle属性 设置&#xff09; Simple: 最简单的样式&#xff0c…

联合有爱,光照未来

随着社会的进步和人们生活水平的提高&#xff0c;越来越多的家庭开始关注儿童的成长和教育。然而&#xff0c;仍有部分地区的儿童因资源匮乏、经济困难等原因&#xff0c;面临着生活和学习上的种种挑战。为了传递社会的温暖和关爱&#xff0c;改善有实际困难的学校及学生的学习…

Win32 API

Win32 API Windows 这个多作业系统除了协调应⽤程序的执⾏、分配内存、管理资源之外&#xff0c; 它同时也是⼀个很⼤ 的服务中⼼&#xff0c;调⽤这个服务中⼼的各种服务&#xff08;每⼀种服务就是⼀个函数&#xff09;&#xff0c;可以帮应⽤程序达到开启 视窗、描绘图形…

【免费Java系列】大家好 ,今天是学习面向对象高级的第十一天点赞收藏关注,持续更新作品 !

这是java进阶课面向对象第一天的课程可以坐传送去学习http://t.csdnimg.cn/Lq3io day11-特殊文件、日志技术、多线程 一、属性文件 1.1 特殊文件概述 同学们&#xff0c;前面我们学习了IO流&#xff0c;我们知道IO流是用来读、写文件中的数据。但是我们接触到的文件都是普通…

QT 小项目:登录注册账号和忘记密码(下一章实现远程登录)

一、环境搭建 参考上一章环境 二、项目工程目录 三、主要源程序如下&#xff1a; registeraccountwindow.cpp 窗口初始化&#xff1a; void registeraccountWindow::reginit() {//去掉&#xff1f;号this->setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButt…

初识指针(4)<C语言>

前言 前面的文章&#xff0c;已经对指针的基础概念以及运用有了初步了解&#xff0c;我们可以进一步探究指针比较深入的知识&#xff0c;下文将主要介绍&#xff1a;使用指针数组模拟二维数组、字符指针变量、数组指针、二维数组传参的本质、函数指针、typedef关键字等。 目录…

怎么让电脑耳机和音响都有声音

电脑耳机音响不能同时用没声音怎么办 一般来说&#xff0c;重新开机后问题能够得到解决。右击“我的电脑”---“属性”---“硬件”---“设备管理器”&#xff0c;打开“声音、视频和游戏控制器”有无问题&#xff0c;即看前面有没有出现黄色的“”。 如果您的 电脑 耳机能正常…

【MsSQL】数据库基础 库的基本操作

目录 一&#xff0c;数据库基础 1&#xff0c;什么是数据库 2&#xff0c;主流的数据库 3&#xff0c;连接服务器 4&#xff0c;服务器&#xff0c;数据库&#xff0c;表关系 5&#xff0c;使用案例 二&#xff0c;库的操作 1&#xff0c;创建数据库 2&#xff0c;创建…

数据结构与算法学习笔记六-二叉树的顺序存储表示法和实现(C语言)

目录 前言 1.数组和结构体相关的一些知识 1.数组 2.结构体数组 3.递归遍历数组 2.二叉树的顺序存储表示法和实现 1.定义 2.初始化 3.先序遍历二叉树 4.中序遍历二叉树 5.后序遍历二叉树 6.完整代码 前言 二叉树的非递归的表示和实现。 1.数组和结构体相关的一些知…

PyQt5中的组件

文章目录 1. 简介2. QCheckBox3. QPushButton4. QSlider5. QProgressBar6. QCalendarWidget7. QPixmap8. QLineEdit9. QSplitter10. QComboBox11. 总结 1. 简介 在PyQt5中&#xff0c;有许多不同类型的组件&#xff0c;可以用于构建各种GUI界面。以下是一些常见的PyQt5组件&am…

NSSCTF中的web学习(md5())

目录 MD5的学习 [BJDCTF 2020]easy_md5 [LitCTF 2023]Follow me and hack me [LitCTF 2023]Ping [SWPUCTF 2021 新生赛]easyupload3.0 [NSSCTF 2022 Spring Recruit]babyphp MD5的学习 md5()函数&#xff1a; md5($a)&#xff1a;返回a字符串的散列值 md5($a,TRUE)&…

地科前沿|AI与GIS的融合

AI与GIS的融合&#xff1a;推动地理信息科技的创新 人工智能&#xff08;AI&#xff09;与地理信息系统&#xff08;GIS&#xff09;的结合&#xff0c;形成了一种强大的合作关系&#xff0c;为科学、技术和社会领域带来了深刻的变革。这种融合不仅为地理空间数据的处理提供了更…