admin 管理员组文章数量: 1086019
2025年1月1日发(作者:python之父谈go)
第1章 概述
程序设计包含四个步骤:
1. 分析问题,建立数学模型
2. 确定数据结构和算法
3. 编写程序
4. 调试运行程序
算法:解决某一问题的方法和步骤。
一个完整的算法五个特征:有穷性,确定性,有效性,有0个或多个输
入,有一个或多个输出
常见的描述算法的工具有:自然语言,流程图,N-S图(盒图),PAD
图,伪代码。
结构化程序设计方法包括一下几个特征:
1. 整个程序采用模块化结构,用自顶而下﹑逐步求精的方式进行设
计。
2. 设计程序时只采用3种基本的程序控制结构来编制程序。这三种基
本程序控制结构分别为顺序结构﹑选择结构﹑循环结果。
顺序结构没有分支;
选择结构又称为分支结构,包含一个条件判断;
循环结构是一种根据某种条件对某一语句块反复执行若干次的结构。
3种基本程序控制结构必须具有一下特点:每种基本结构必须只有一个
入口和一个出口;每种基本结构都有一条从入口到出口的路径通过;结
构内不允许出现死循环。
C程序中语序出现的所有基本字符的组合称为C语言的字符集。
字符集有字母,数字和特殊符号。
C语言程序中出现的任何对象一般都要有一个名字,这些对象的名字就
是C语言的标识符。
标识符有三类,保留字,预定义标识符和用户定义标识符。
第二章 数据类型﹑运算符﹑表达式及数据的和输入/输出
数据类型可分为:基本数据类型﹑构造数据类型﹑指针类型﹑空类型等
四类。
构造类型有一下几种:数组类型﹑结构体类型﹑共用体类型。
指针是一种特殊的,同时又是具有重要作用的数据类型。其值用来表示
某个量在内存储器中的地址。
空类型,调用后并不需要向调用者返回函数值,其类型说明符为Void。
C语言规定,常量是可以不经定义而直接引用的,但变量则必须先定义
后使用。
定义符号常量的格式为:#define 标识符 常量
定义变量的语法格式为:类型标识符 变量名表列
类型标识符是C语言中的数据类型,如整型类型标识符int,字符型类型
标识符char。
实型常量又称实数或浮点数,有两种格式,小数形式和指数形式。
整型变量有6种类型:整型int,短整型short,长整型long,无符号整型
unsigned int,无符号短整型unsigned short和无符号长整型unsigned
long。
实型变量分为单精度和双精度两种类型。
定义字符型变量的关键字是char。
字符型变量用于存放字符常量,即一个字符型变量可存放一个字符常
量。
在C语言中,对数据的处理是由运算符和表达式来完成的。
要求:掌握各种运算符运算规则及其所需运算对象个数;掌握运算符的
优先级和结和性。
两个整数相除,结果是整型。如果不能整除,只取结果的整数部分,小
数部分全部舍去。
两个实数相除,所得的商也为实数。
模运算符“%”称为求余运算符,要求两个运算对象都为整型,其结果是
两整数相除后的余数。
算术表达式是由算术运算符﹑常量﹑变量﹑函数和圆括号组成。
用++﹑--运算(优先级为2级,结合性是自右向左)的变量只能是整型
﹑字符型和指针型变量。
复合赋值表达式的一般形式为:变量名 复合赋值运算符 表达式
复合赋值运算的作用等价于:变量名=变量名 运算符 表达式
对两个数据进行比较的运算符称为关系运算符。
C语言提供了三种逻辑运算符,逻辑与&&(结合方向自左向右,11优先
级),逻辑或II(结合方向自左向右,12优先级),逻辑非!(结合方
向自右向左,2优先级)
C语言提供了直接对二进制数进行按位操作的功能,称为位运算。
Sizeof运算符是单目运算符,优先级为2级,结合性是自右向左。其运
算的含义是:得到运算对象在计算机的内存中所占用的字节数。
Char数据占一个字节,int数据占四个字节。
(type)是强制类型转换运算符,优先级为2级,结合性是自右向左。
类型转换
1. 将浮点型数据赋给整型变量时,舍弃浮点数的小数部分。
2. 将整型数据赋给单双精度变量时,数值不变,但以浮点数形式储存
到变量中。
3. 将一个double型数据赋给float变量时,截取其前面7位有效数字,
存放到float变量的存储单元中。
4. 字符型数据赋给整型数据变量时,由于字符只占1个字节,而整型
变量占2个字节,因此将字符数据放到整型变量低8位,高8位补
零。
5. 将一个int,short,long型数据赋给一个char型变量,只将其低8
位原封不动地送到char型变量。
6. 将带符号的整型数据赋给long型变量时,要进行符号扩展,将整型
数的16位送到long型低16位中,如果int型数据为正值,则long型
变量的高16位补0;如果int型变量为负值,则long型变量的高16位
补1,以保持数值不改变。
反之,若将一个long型数据赋给一个int型变量,只将long型数据中低
16位原封不动地送到整型变量。
7. 将unsigned int型数据赋给long int,不存在符号扩展问题,只需
将高位补0即可。
8. 将非unsigned型数据赋值給长度相同的unsigned型变量,也是原样
赋值。
数据的输入与输出
C语言程序通常由3部分构成:输入原始数据部分,计算处理部分和输出
结果数据部分。
格式化输出函数printf函数,一般调用格式为:
printf(格式控制字符串,输出项表);
格式控制字符串包括:普通字符和格式说明符
格式说明符:%(附加格式说明符)格式字符
格式化输入函数scanf函数,一般调用格式为:
Scanf(“格式控制字符串”,输入项地址表);
字符数据的输入/输出
字符输出函数putchar函数,其功能是在显示器上输出单个字符
字符输入函数getchar函数,其功能是从键盘上输入一个字符
第三章 程序的控制结构
C语言的语句根据其在程序中所起的作用可分为说明语句和可执行语
句。
可执行语句可分为:表达式语句,函数调用语句,复合语句,空语句和
流程控制语句。
表达式语句由运算符,常量,变量组成。表达式后加分号就构成表达式
语句。
流程控制语句:1.条件判断语句,包括if语句,switch语句
2. 循环执行语句,包括do...while语句,while语句,for语句
3. 转向语句,包括break语句,goto语句,continue语句,return语
句
第四章 数组
在程序设计中,为了处理方便,对于大规模的数据,尤其是相互间有一
定联系的数据,可以把这些数据按一定规则组成构造类型数据。
C语言中的构造类型有:数组,结构体,共用体。
数组:就是相同类型若干数据的有序集合。
数组元素:数组中的每一个数据称之为数组元素,用一个统一的数组名
和不同的下标来唯一确定。数组元素可以作为单个变量使用,所以也称
为下标变量。
数组的下标:是数组元素在数组中位置的一个索引,数组下标从0开
始。
数组的维数:数组元素下标的个数。
只有一个下标的数组称为一维数组,用来存放一组同种类型的数据。
定义一维数组的一般格式为:
类型说明符 数组名 [整型常量表达式];
一维数组可以存放一个数列或者向量。
方括号[]中的常量表达式表示数组元素的个数,也称为数组的长度。
初始化赋值的一般形式为:
类型说明符 数组名 [整型常量表达式]={值,值,...,值};
例如:int a[10]={0,1,2,3,4,5,6,7,8,9};
气泡法规律:n个数排序,共n-1步排序处理,第i步进行n-i-1次比较和
至多n-i-1次交换。
气泡法排序思路如下。
S0(第0步):对n个数,从前到后,依次将相邻两个数进行比较(共比
较n-1次),将小数交换到前面,大数交换到后面,直到将最大的数移
到最后。此时最大的数在最后,固定下来。
S1(第1步):将前面n-1个数,从前到后,依次将相邻两个数进行比较
(共比较n-2次),将小数交换到前面,将大数交换到后面,直到将次
大的数移到倒数第二位。此时次大的数在倒数第二个位置,同样也固定
下来。
......
Si(第i步):将前面n-i个数,从前到后,将相邻两个数进行比较(共比
较n-i-1次),将小数交换到前面,将大数交换到后面,依次比较,直
到将第i+1大数移到倒数第i+1个位置。
......
Sn-2(第n-2步):将最后两个数,进行比较(比较1次),交换。此时,
所有的整数已经按照从小到大的顺序排列。
#define N 4
#include
Main()
{int a[10],i,j,t;
Printf(“please input d% numbers:n”,N);
for(i=o;i Scanf(“%d”,&a[i]); for(i=0;i for(j=0;j if(a[j]>a[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;} for(i=o;i Printf(“3d%”,a[i]); }运行结果如下:please input 4 numbers: 9 3 2 0 0 2 3 9 有两个下标的数组称为二维数组,利用二维数组可以存放排列为行列形 式的数据(矩阵,表格)。 定义二维数组的一般格式为: 类型说明符 数组名【整型常量表达式1】【整型常量表达式2】; 二维数组元素的表示形式为: 数组名【行下标表达式】【列下标表达式】 二维数组初始化的格式为: 类型说明符 数组名【整型常量表达式1】【整型常量表达式2】={初始 化数据}; 存放字符型数据的数组称为字符数组,其中每个数组元素存放的值都是 单个字符。C语言中常用字符数组存放字符串,各数组元素依次存放字 符串中的各字符。 引用字符数组中的一个元素,可以得到一个字符。凡是可以使用字符数 据的地方均可以引用字符数组的元素。C语言没有提供存放字符串的变 量,通常用一个字符数组来存放一个字符串。 字符数组的输入/输出有3种方法。 1. 使用scanf函数和printf函数逐个字符输入/输出 2. 使用scanf函数和printf函数整体输入/输出字符数组中的字符串 当用scanf函数输入字符串时,字符串中不能含有空格﹑回车或跳格字 符,因为空格﹑回车或跳格是输入数据的结束标志。 第五章 函数 C语言是一种结构化程序设计语言,结构化程序设计的本质就是将一个 大的程序按功能分割成若干个较小的模块,每个模块都具有相对独立的 功能。 在c语言中,每个模块都是用函数来实现的。 函数是一段连续的程序代码的组合,用来完成特定的功能。 一个c语言程序往往是由多个函数组成,函数之间并列排放﹑相互调用 ﹑协同工作,完成一个大的任务。 在c语言中,用函数实现各功能模块的定义,通过函数之间的调用实现c 程序的整体功能。 说明:1.一个c程序可以由一个或多个源程序文件组成。每个源程序文 件是一个编译单位,可以独立编译,并可以被不同的程序使用。 2. 每个源程序文件可以由一个或多个函数组成,函数是最小的功能单 位,一个函数可以被不同源文件的其他函数调用。 3. 一个c程序有且仅有一个主函数main,主函数可以放在任何一个源 文件中,无论主函数在程序的什么位置,程序的执行总是从main函 数开始,完成对其他函数的调用后再返回到main函数,最后由main 函数结束整个程序。 4. 所有函数都是平行的,相互独立。一个函数并不从属于另一个函 数,即函数不能嵌套定义。 从用户使用的角度来看,函数可分为标准库函数和用户自定义函数两 种。 从函数的形式上看,函数可分为无参函数和有参函数两种。 函数定义的一般形式如下: 类型标识符 函数名 (【形参表说明】) { 声明语句 执行部分 } C语言中,除了主函数main外,其他函数都必须通过函数的调用来执 行。 函数调用的一般形式为:函数名(【实际参数表】); 按照函数在主调函数中的作用,函数调用可以有一下3种形式。 1. 函数语句 2. 函数表达式 3. 函数实参 第六章 指针 一个变量在内存中所占用的存储单元的地址称为该变量的指针。即“指 针”仅表示对象在内存中的地址。 在计算机中,内存是一个连续编号或编址的空间。也就是说,每个存储 单元都有一个固定的编号,这个编号称为地址。 不同的数据类型占用不同字节的存储空间,而每个字节都有一个地址, 一般把每个数据的首字节地址称为该数据的地址。 如果一个变量专门用来存放其他变量的地址,那么就称这个变量为指针 变量。 指针变量定义的一般格式为: 【存储类型标识符】 数据类型标识符 *指针变量名; 数据类型标识符是指该指针变量所指向的变量的类型。 存储类型标识符是指指针变量本身的存储类型,可为 auto,static,register,extern,默认则为auto型。 定义一个指针变量必须用符号“*”,它表明其后的变量是指针变量。 指针变量初始化的一般形式为: 【存储类型标识符】数据类型标识符*指针变量名=初始地址值; 取地址运算符“&”,取内容运算符“*” 1.取地址运算符“&”是取操作对象的地址而不是其值。 2.取地址运算符“&”后面只能跟变量或数组元素,而不能跟表达式或 常量,也不能跟数组名。 取内容运算符“*”又称为间接存取运算符,功能是取指针变量所指向 的变量的内容。在运算符“*”之后跟的变量必须是指针变量。 指针变量的值是一个地址值,因此指针变量作参数就是在函数间传递变 量的地址,是一种地址复制的值传递方式。 第7章 结构图与共用体 结构体类型和数组类似,都属于构造数据类型。 数组是由相同数据类型的多个数据组成的,结构体是由不同数据类型的 多个数据组成的,其中每个数据称为结构体中的一个成员。 访问数组中的元素是通过数组的下标,访问结构体中的成员则通过成员 的名字。 对结构体的组成进行描述,称为结构体类型的定义。 结构体类型定义的一般格式为: Struct 结构体类型名 { 数据类型 成员1; 数据类型 成员2; ...... 数据类型 成员n; }; 结构体变量的定义方式有3种: 1. 先定义结构体类型,再定义结构体类型的变量 2. 在结构体类型定义的同时定义结构体类型的变量 3. 直接定义结构体类型的变量 第三种方法特点:不能在别处用来另行定义其他的这种结构体类型的变 量,要想定义就得将“struct{......}”这部分重新写。 结构体变量的初始化和引用 结构体变量的常规引用就是对结构体变量中的各成员进行引用 结构体变量各成员的引用格式为: 结构体变量名.成员名 “.”是c语言中的一种运算符,称为成员运算符,它对应的运算称为访 问成员运算。它的优先级为第一级,结合方向为从左向右。
版权声明:本文标题:C语言笔记 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1735766424a1689602.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论