目录
一:C语言数据结构
1.1数据结构
1.include<stdio.h>是预处理命令用来提供信息,,stdio.h用来提供一个文件名,h是指头文件名
2.C程序是执行主函数源码,主函数main是C语言入口
int是main前面的主函数类型,在执行主函数之后会得到一个函数值,其值为整型
3花括号{}表示函数体,在{}输入函数
4.printf()是格式输出函数,在run中输出的信息
5.return 0是函数的返回值,函数数据不同返回值不同
6.\n是换行符即在输出"hello world"之后,显示屏上的光标移到下一行开头,光标位置称为输出位置开头
注意:1.,一个说明或一个语句占一行
2.函数语句有明显缩进,用Tab键进行缩进
3.括号要成对写,删除要成对删除
4.每当一个可执行语句结束以后都要用分号;隔开
5.代码中的所有符号均为英文半角符号
1.2C语言两种注释方式
(1)以//开始单行注释。注释可以单独占一行,也可以在一行中其他内容的右侧。该注释从//开始,以换行符结束。该注释不能跨行,也只一行内容写不下,用多个单行注释
(2)以/*开始,以*/结束注释,该注释包含多行内容
或
两种形式
1.3标识符
C语言可以是英文字符,数字,下划线_组成的字符串,开头必须为字母或下划线
注:严格区分大小写
标识符是有意义的英文,不要使用中文
1.4变量和常量
常量含义:在执行过程中不可改变的量称为常量,常量分为直接常量和符号常量
直接常量:
(1)整型常量:100,268
(2)实型常量:a十进制小数形式:123.658,751.725
b指数形式:12.4e5,-72.74e4
(3)字符常量:用单撇号括起来的字符:'A','3’,'&'
(4)字符串常量:“I love zhuzhu!”
变量含义:是可以变化的量,每一个变量都有赋值,变量必须先定义,后使用,定义时区分变量名和变量值
变量一般形式:变量名。数据类型
常变量:方法在定义变量时,前面加上关键字const
常变量与符号常量:
定义符号常量:#define指令为与编译指令,他只是用符号常量代表一个字符串,在预编译时进行字符替换,在预编译后,符号常量不存在
常变量:占用储存单元,有变量值
1.5数据类型
类型是对数据分配储存单元的安排,包括储存单元长度(占多少字节)以及数据储存形式。不同类型的分配不同长度和储存形式
基本数据类型
数据类型 | 字节 | 应用 | 示例 |
int(基本整型) | 4 | 用于存储整数 | int weight=45 |
char(字符型) | 1 | 用于存储单个字符 | char me=M |
float(单精度浮点型) | 4 | 用于存储小数 | float x=1.3 |
double(双精度浮点型) | 8 | 用于存储位数的多位小数 | double pi=3.1415 |
数据·常见的储存空间及值的范围
扩展八种整型数据类型
注:int ,short int , long int根据编译的环境不同,所取范围也不同
字符型数据
1.字符与字符代码
字母:大写字母A~Z,小写字母a~z
数字:0~9
专门符号:29个包括> ,= + - ; : "" ''~!$%^
空格符:空格,水平制表符(tab),垂直制表符,换行,换页(form feed)
2C语言运算符
1.基本运算符
(1)算数运算符(+ - * / % ++ --)
(2)关系运算符(> < == >=<= !=)
(3)逻辑运算符(!&& ||)
(4)位运算符(<< >> ~| ^&)
(5)赋值运算符(=及其扩展赋值运算符)
(6)条件运算符(?:)
(7)逗号运算符(,)
(8)指针运算符(*和&)
(9)求字节数运算符(sizeof)
(10)强制类型转换运算符((类型))
(11)成员运算符(. ->)
(12)下标运算符([ ])
(13)其他(如函数调用运算符)
2.自增(++),自减(--)运算符
作用:使变量的值加或减1
++i,--i(在使用i之前,先使用i的值加/减1)
i++,i--(在使用i之后,使i的值加/减1)
1.6格式化输出语句
printf(输出格式符,输出项)
二。分支结构之语句
1.控制语句
(1)if()...else...(条件语句)
(2)for()...(循环语句)
(3)while()...(循环语句)
(4)do...while()(循环语句)
(5)continue(结束本次循环语句)
(6)break(中止执行switch或循环语句)
(7)switch(多分支选择语句)
(8)return(从函数返回语句)
(9)goto(转向语句,在结构化程序中基本不用goto语句)
2.1if语句
(1)if语句的一般形式
if(表达式)
{
执行代码块
}
注:if后面没有分号;直接加{}
if-else语句的三种形式:
1)if(表达式) 语句1 (没有else子句成分)
2)if(表达式) (有else子句成分)
语句1
else
语句2
3)if(表达式1) 语句1 (在else部分又嵌套多层的if语句)
else if(表达式2) 语句2
else if(表达式3) 语句3
语义是依次判断表达式的值,当出现某个值为真时,则执行对应代码块
注:当某个条件为真时,则不会向下执行该分支结构的其他语句
输出结果:
2.2用while和do...while语句实现
do...while实现一般形式
do
语句
while(表达式)
例:
int i=1 ; //设变量i的初始值为1
do //循环结构开始
{
printf("%d",i+1) ; //循环体,输出i的量,然后使i加1
while(i<100); //当i小于或等于100时,继续执行循环体
注:while语句一般表现形式是关系表达式或逻辑表达式,当表达式的结果为假时结束循环
在循环体中改变循环变量值,否之一直执行(进入死循环)(只要当循环条件为真:给定的条件成立,就执行循环体语句)
循环体中包括一个以上的语句,则必须用{}括起来,组成复合语句
do...while语句先执行循环中的执行代码块,然后判断while语句中表达式是否为真。如果为真继续循环;如果为假,终止循环,do...while 一定要执行一次循环语句
例:while循环
输出结果
例二:do...while实现形式
输出形式:
2.3for语句实现
(1)for语句一般形式:
for(表达式1;表达式2;表达式3)
{
执行代码块
}
注:1.执行表达式1,对循环变量做初始化
2.判断表达式2,若其值为真(非0),则执行for循环体中执行代码块,然后向下执行,如果其值为假(0),则中止循环
3.执行表达式3,(i++)对于循环变量进行操作语句
4.执行for循环中的循环代码,第一步初始化执行一步
5.循环结束,程序继续向下执行
语句可改写while的循环形式:
表达式1;
while表达式2
{
语句
表达式3
}
(2)"表达式1”可以省略,即不设置初值,但表达式1后的分号不能省略,例:
for(;i<=100;i++)sum=sum+i;
(3)表达式2可以省略,即不用表达式2作为循环条件表达式,不设置和检查循环的条件。
for(i=1;;i++)sum=sum+i;
(4)表达式3可以省略
for(i=1;i<=100;)
{
sum=sum+i;
i++;
}
注:1表达式1是一个或多个赋值语句,用来控制变量的初始值
2.表达式2是关系表达式,其决定什么时候退出循环
3.表达式3是循环变量的步进值,定义控制循环变量每一次循环循环后按什么方式来循环
4.循环结束,程序继续向下执行
例:for语句
2.4用switch语句实现多分支选择结构
switch一般形式:
switch(表达式)
{
case 常量1:语句1;
case常量2:语句2;
...........
case常量n:语句n;1
default: 语句n+1
}
注:1.在case后的的各常量表达式不能相同,否则出现错误
2.在case子句后如果没有break;会一直往后执行,直到遇见break,才会跳出switch语句
3.switch后面的表达式只能是整型或字符类型
4.在case后允许多个语句,可以不用{}括起来
5.各case和default子句的先后顺序可以变动,不会影响程序结果
6.default子句可以不用省略
输出函数:
2.5结束语句
一:break语句
1.在没有循环结构的情况下,break不能用在单独的if-else语句
2.在多层循环中,一个break语句只挑出当前循环(break是跳出当前整个循环)
二:continue语句
continue语句是结束本次循环,开始执行下一次循环
2.6循环语句之多重循环
多重循环在循环结构的循环中又出现循环结构,一般最多三层循环结构
三.用函数实现模块化程序设计
3.1定义函数的方法
1.定义无参函数
类型名 函数名()
{
函数体
}
或
类型名 函数名(void)
{
函数体
}
2.定义有参函数
类型名 函数名(形式参数表列)
{
函数体
}
3.定义空函数
类型名 函数名()
{}
有参函数更为灵活,输出内容随n的改变而改变,只要在main函数中传递一个参数即可
无参函数的输出相对稳定,需要改动时还需要到自定义的方法内改变循环变量的值
3.2调用函数
1.函数调用的形式
函数调用一般形式:函数名([实参表列])
注:1.对无参函数的调用,可以将[]包含的省略
2.[]可以是常数,变量或构造其他数据及表达式,多个参数之间用逗号,分开
2.形参与实参
实际参数:在主调函数中调用一个函数,函数名后面括号中的参数,实参可以是常量,变量,表达式
形式参数:在定义函数时后面括号中的变量,调用该函数传入时的参数。
形参只有在被调用时才分配内存单元,在调用结束后,即刻释放所分配的内存单元,形参只有在函数内部有效
例:
输出函数:
3.函数的返回值
(1)函数返回值一般是通过函数中的return语句实现的,函数返回一般形式:return(表达式)或return 表达式。
(2)函数类型,函数有返回值,这个值属于某种类型,应当在定义函数时指定函数值的类型
例:
(3)在定义函数时指定的函数类型一般和return语句的表达式类型一致
输出:
3.3对被调用函数的声明和函数原型
1.函数声明的形式:
(1)函数类型 函数名(参数类型1 参数名1,参数类型2 参数名2,参数类型3 参数名3,...参数类型n 参数名n)
(2)函数类型 函数名(参数类型1,参数类型2,....参数类型n)
2.在一个函数中调用另一个函数需要的条件:
(1)被调用函数为已经定义的函数
(2)如果使用库函数,在文本开头#include指令调用有关库函数所需要的信息包含到文本中来:
#include<stdio.h>
(3)如果使用用户自己定义的函数,而该函数的位置在调用的函数后面,应该在主调函数中对被调用的函数作声明。
例:输入两个实数,用一个函数求出他们的和
输出结果
3.函数定义和声明的区别
函数定义:指对函数功能确立,包括指定函数名,函数值类型,形参及其类型以及函数体,是一个完整独立的函数单位。
函数声明:把函数名字,函数类型以及形参的类型,个数和顺序通知编译下来,以便在函数调用时进行对照检查。
3.4函数的递归调用
1.函数递归调用含义:在调用一个函数过程中直接或间接地调用该函数本身
执行递归函数强调其自身,每调用一次就进入新的一层
例;用递归方法求n!
公式表示:n!=n!(n=0,1)
n!=n(n-1)! (n>1)
输出结果:
2.递归函数的特点
(1)每一级函数调用时都有自己的变量,但是函数代码不会得到复制
(2)每次调用都有一次返回
(3)递归函数中,位于递归调用前的语句和各级被调用函数具有相同的执行顺序
(4)递归函数中,位于递归调用后的语句的执行顺序和各个被调用函数的顺序相反
(5)递归函数中一定有中止语句
3.5数组作为函数参数
1.一维数组名作函数参数
数组元素,数组名可以做函数参数(注:用数组元素作实参时,向形参变量传递的是数组元素的值。数组名作函数实参时,向形参传递的是数组元素的地址。
例:计算5人成绩的平均分
输出函数:
2.多维数组名作函数参数
可以用多维数组名作为函数的实参和形参,在被调用函数中对形参数组定义时可以指定每一维的大小。
多维数组格式:数组类型 数组名称[常量表达式1][常量表达式2]...[常量表达式n],例:
int array[4][6];
注:
多维数组的初始化与一维数组的初始化两种情况:
1.数据类型 数组名称[常量表达式1][常量表达式2]…[常量表达式n] = {
{值1,…,值n},{值1,…,值n},…,{值1,…,值n}};
2.数据类型 数组名称[常量表达式1][常量表达式2]…[常量表达式n]; 数组名称[下标1][下标2]…[下标n] = 值;
多维数组初始化要注意以下事项:
1.采用第一种始化时数组声明必须指定列的维数。mtianyan: 因为系统会根据数组中元素的总个数来分配空间,当知道元素总个数以及列的维数后,会直接计算出行的维数;
2.采用第二种初始化时数组声明必须同时指定行和列的维数。二维数组定义的时候,可以不指定行的数量,但是必须指定列的数量
例:有一个4*5的矩阵,求所有元素中最大值
:
3.6局部变量和全局变量
定义变量的情况:
(1)在函数开头定义
(2)在函数内的复合语句内定义
(3)在函数外部定义
局部变量:也称为内部变量,局部变量在函数内作定义说明,其作用局限于函数内,在复合语句中也可以定义变量,其作用在复合语句的范围内
全局变量:也称为外部变量,它是在函数外部定义的变量,不属于哪一个函数,属于源程序文件。
局部变量:
变量的范围和作用:
注:a主函数中定义变量只在主函数中有效
b不同函数中可以使用同名的变量,他们代表不同的对象,互不干扰
c形式参数也是局部变量
全局变量
全局变量程序段:
3.7变量的存储方式和生存期
1.动态存储方式和静态存储方式
动态存储:
存储数据:1.)函数形式参数。在调用时给形参分配储存空间
2.)函数定义的没有用关键字static声明变量,即自动变量
3)函数调用时的现场保护和返回地址
函数调用开始时分配储存空间,函数结束时释放空间。动态存储区中存放的变量是根据程序运行的需要而建立和释放的,通常包括:函数形式参数;自动变量;函数调用时的现场保护和返回地址等。
静态储存:在程序运行期间分配固定的存储空间的方式。静态存储区中存放了在整个程序执行过程中都存在的变量,如全局变量。
2.局部变量储存类别:
1.自动变量(auto变量)
在调用函数时,系统会给这些变量分配储存空间,在函数调用结束时会自动释放这些储存空间,例:
s
2.静态局部变量(static局部变量)
用static修饰的为静态变量,如果定义在函数内部的,称之为静态局部变量;如果定义在函数外部,称之为静态外部变量。例:
输出结果:
3.寄存器变量(register变量)
register int f; //定义f为寄存器变量
文章评论