C程序设计

第一章:了解C语言

什么是C语言

C语言是一种高级编程语言,最早由丹尼斯·里奇在1972年开发。它是一种通用编程语言,提供了高级编程语言的方便和易用性,同时又有较低级别的编程语言的灵活性和效率。C语言在许多操作系统、编译器和应用程序开发中广泛使用,并被许多其他语言影响,如C++和Java等。C语言提供了一种通用的方法来描述计算机程序,并且它是系统编程、应用编程、科学计算和数据处理等多种领域的基础语言

计算机语言的分类

机器语言:计算机能直接识别和接受的二进制代码称为机器指令。机器指令的集合就是机器语言。

汇编语言:机器语言的符号化。用英文字母和数字表示的指令的符号语言。汇编指令需通过汇编程序转换为机器指令才能被计算机执行。

高级语言:更接近人们习惯使用的自然语言和数学语言。用高级语言编写的源程序需要通过编译程序转换为机器指令的目标程序

程序的执行过程

源程序(.c)→编译(目标文件.obj)→链接(可执行文件.exe)→运行程序

  • 编写好的程序称为(源程序)扩展名为(.c)

  • 对源程序文件进行(编译)操作,编译文件的扩展名为(.obj)

  • 对编译文件进行(链接)操作,链接文件的扩展名为(.exe)

进制之间的转换

各进制的构成

  • **十进制:**如0 1 2 3 4 5 6 7 8 9 (逢十进一)

  • **二进制:**由0和1表示 (逢二进一)

  • **八进制:**由01234567表示 (逢八进一)

  • **十六进制:**由0-9和A-F表示 (逢十六进一)

各进制之间的转换

如下图表示, 将二进制、八进制、十六进制转换成十进制

image-20220112202102677

如下图表示, 将十进制转换成二进制、八进制、十六进制

第二章:算法→程序的灵魂

算法+数据结构=程序

  • **算法:**对操作的描述。即要求计算机进行操作的步骤。

  • **数据结构:**相互之间存在一种或多种的特定关系的集合

算法的分类

数值运算算法

数值运算的目的就是求数值解。

数值运算往往有现成的模型,目前数值运算的研究比较成熟

非数值运算算法

在计算机上的应用远超数值运算。

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

算法的特性

  • **有穷性:**一个算法应包含有限的操作步骤,而不是无限的。

  • **确定性(无二义性):**算法中每个步骤都是确定的,而不是含糊的。

  • **可执行性:**算法中每个步骤都应能有效执行

  • **有零个或多个输入:**输入指的是执行算法时需要从外界获取的信息

  • **有一个或多个输出:**算法目的就是求解,解就是输出

算法的流程图

普通流程图框

image-20211204210758000

NS流程图框

image-20211205223319816

伪代码

伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。它如同一篇文章一样,自上而下地写下来

结构化程序设计方法

  • 自顶而下

  • 模块化设计

  • 逐步细化

  • 结构化编码

简单的算法例题

例1.112+1314+...+1991100的值用C语言表示\text{求}1-\frac{1}{2}+\frac{1}{3}-\frac{1}{4}+...+\frac{1}{99}-\frac{1}{100}\text{的值用}C\text{语言表示}

#include <stdio.h>

int main(){
	int num = 1; //num表示分子
	double sum = 1.0, deno = 2.0, value;  //double定义为双精度变量,deno为分母,sum为总值,value为单一值
	while (deno<=100) 
	{
		num = -num;
		value = num / deno;
		sum = sum + value;
		deno = deno +1;	
	}
	printf("该数值是%f", value); //%f表示单双精度小数;%d表示十进制整形数字
	return 0;
}

第三章:最简单的C程序设计

数据的表现形式

常量

在C语言中常量有以下几种:

  • **整型常量:**0,-1,100

  • **实型常量:**小数形式(12.12);指数形式(12.1e3=12.1×10312.1\times 10^3)

  • **字符常量:**普通字符(’a’,’Z’,’#’);转义字符(’\n’,’\012’,’\h1B’)

  • 字符串常量: “123”,”boy”

  • **符号常量:**用一个标识符来表示常量 #define PI 3.14

关于常量的使用要注意以下几点:

  • 从常量的表示形式即可以判定其类型。

  • 不带小数点的数值是整型常量,但应注意其有效范围。

  • 在一个整数的末尾加大写字母L或小写字母l,表示它是长整型(long int)。

  • 凡以小数形式或指数形式出现的实数均是浮点型常量,在内存中都以指数形式存储。

  • C编译系统把浮点型常量都按双精度处理,分配8个字节。

转义字符

转义字符
字符值

\, \" \? \\

输出字符, " ? \

\a

警告(alert):产生声音或视觉信号

\b

退格:当前光标位置往后退一格

\f

换页:当前光标位置移到下一页开头

换行:当前光标位置移到下一行开头

回车:当前光标位置移到本行开头

水平制表符:当前光标位置移到下个Tab位置

\v

垂直制表符:当前光标位置移到下个垂直制表符对齐点

\ooo o表示八进制数

输出与该八进制对应的字符。如\012代表八进制数12(即十进制的10), 对应的ASCII码为换行符

\xhhh h表示十六进制数

输出与该十六进制对应的字符

变量

一个变量由变量名、变量值和存储单元组成。变量名是指该变量的唯一标识符,用于在程序中识别该变量。变量值是该变量的实际数据值。存储单元则是存储变量值的内存区域

float a=3.14159;	//3.14159为双精度浮点常量,分配8个字节;a为float变量,分配4个字节,但是编译会发出警告,一般不影响结果的正确性,但会影响结果的精度
float a=3.14159f;		//把此3.14159按单精度浮点常量处理,编译时不出现“警告”
long double a = 1.23L;	//把此1.23作为long double型处理

常变量

常变量与常量的异同是: 常变量具有变量的基本属性(有类型,存储单元),只是不允许改变其值。

#define Pi 3.1415926	//定义符号常量
const float pi=3.1415926;	//定义常变量

标识符

标识符就是一个对象的名字。用于标识变量、符号常量、函数、数组、类型等。

标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线

关于标识符要注意以下几点:

  • 变量名区分大小写

  • 不能用关键字作为变量名

  • 不合法的标识符:3D64,#33,M.D.

数据类型

\begin{cases} \text{浮点}\rightarrow \text{整型变量}:\text{浮点取整}\left( \text{去小数} \right) ,\text{再赋值}\ \text{整型}\rightarrow \text{单双精度变量}:\text{数值不变},\text{以浮点数形式存储到变量中}\ double\rightarrow float\text{变量}:\text{双精度转化为单精度},\text{取}6\sim 7\text{位有效数字}_{\text{注}:\text{双精度数值大小不能超过单精度数值}}\ float\rightarrow double\text{变量}:\text{数值不变},\text{在内存中以}8\text{个字节存储},\text{有效位数扩展到}15\text{位}\ \text{字符型}\rightarrow \text{整型变量}:\text{字符的}ASCII\text{代码赋值给整型变量}\ \end{cases}

最后更新于