(作为初学者,写博客,便当作学习记录了,写的不妥之处,望见谅)
目录
一: 初识c语言
1.1 c语言发展
1.2 程序功能
1.3 算法表示
1.3.1 算法特点
1.3.2 描述算法
1.4 c语言特点
1.5 c语言约束
1.6 c语言语法成分
1.7 其他
二: 数据类型、运算符和表达式
2.1 数据类型
2.2 c语言中 常量
2.2.1直接常量
2.2.2符号常量
2.3 c语言中变量
2.3.1变量的定义与使用
2.3.2 整形变量
2.3.3 浮点数变量
2.3.4 字符型变量
2.4 运算符和表达式
2.4.1 赋值运算符和赋值表达式
2.4.2 算术运算符和算术表达式
2.4.3 逗号运算符和逗号表达式
2.4.4 求字节数运算符
2.4.5 数据类型转换
三 顺序结构
3.1 c语言的语句
3.2 数据的输入输出
(1)printf()函数
(2)scanf()函数
(3)整型数据的输入和输出
(4)浮点型数据的输入和输出
(5)字符型数据的输入和输出
四 分支结构
4.1 关系/逻辑/条件运算符
4.2 if-else实现分支
4.3 switch语句实现分支
五 循环结构
5.1 for语句实现循环
5.2 while语句实现循环
5.3 do-while语句实现循环
5.4 改变循环结构的跳转语句
5.5 嵌套
六 数组
6.1 一维数组
6.2 二维数组
6.3 字符数组
6.4 字符串
6.5 字符串处理函数
(1)复制函数: strcpy(字符串1,字符串2)
(2)连接函数: strcat(字符串1,字符串2)
(3)比较函数: strcmp(字符串1,字符串2)
(4)求字符串长度函数: strlen(字符串)
(5)大写字母转小写字母函数:strlwr(字符串)
(6)小转大函数: strupr(字符串)
七 函数
八 指针
九 结构体
一: 初识c语言
1.1 c语言发展
机器语言>汇编语言>高级语言(或 非结构化语言>结构化语言>面向对象语言)
1.2 程序功能
1.数据表达
2.流程控制
(1)顺序控制结构(2)分支控制结构(3)循环控制结构
1.3 算法表示
1.3.1 算法特点
(1)确实性:指令确定(2)有穷性:步骤有穷(3)可行性:能够执行(4)有零个或多个输入 (5)有一个或多个输出
1.3.2 描述算法
(1)文字(2)流程图(3)伪代码(4)程序设计
1.4 c语言特点
(1) 简短紧凑、使用方便(2)运算符丰富(3)可移植性好(4)代码质量高(5)结构化语言
1.5 c语言约束
(1)标识符(2)关键字(3)用户自定义标识符(4)预定义标识符(5)分隔符
1.6 c语言语法成分
(1)常量(2)变量(3)运算符(4)表达式(5)语句(6)函数的定义与调用(7)输入与输出
1.7 其他
1.关于在电脑上编写代码,是在下载在电脑上的软件编写具有一定功能的代码(仿佛没说),而软件是开发环境,如Visual C++ 2010、Visual studio 2019等,具体下载浏览器搜索有较好的过程。
2.代码的敲打,按老师、学长的说法,只有经常练习,同时开始阶段不能看一句敲一句,加油。
3.其他的慢慢积累了。
二: 数据类型、运算符和表达式
2.1 数据类型
大概就是:
2.2 c语言中 常量
2.2.1直接常量
①整形常量
(正整数,负整数,零)(可十进制,八进制,十六进制表示)
(1)十进制:0~9 和 + - 组成。
(2)八进制:0(数字)为前缀,0~7 组成,无符号。
(3)十六进制:以0X或0x为前缀,0~9和A~F(表10~15)组成,无符号
(另)整形常量后加个u或者U,为unsigned int型、加个l或者L,为long int型
②实型常量(又称浮点数)(只能十进制,有小数,指数两种表现形式)
(1)小数形式:如1. 、 1.0 、 .1 小数点不能省
(2)指数形式:1.23E-2 (为1.23*10^-2)
(2.1)E后面必须要有数字,正负号放在E后面
(2.2)c语言中,浮点数是double型,若数字后面有f,则为float型
③字符型常量('a' 、'B'、 '='、'?'...)
(1)单引号
(2)单个符号不是字符串
(3)一个字符一个字节
(4)字符对应ASCII
(5)转义字符是用 '' 开头后加一个字符或八进制、十六进制表示
④字符串常量
(1)双引号
(2)n个字符组成的字符串,占内存加一(内隐藏一个 ' ' , 其不记录长度)
(3)字符串如遇到 ' ' 表示结束 "HelloWorld"长度为10、"Hello World"长度为5
(4)可以把一个字符常量赋予一个字符变量,但是不能把一个字符串常量赋予一个字符变量
2.2.2符号常量
如:#define 标识符 常量值
(1)为预处理命令,不加“;”
(2)目的:①增加程序可读性②提高程序可维护性、容易修改③简化程序代码④方便数 组定义
(3) 一个“define”一个标识符(符号常量)
2.3 c语言中变量
2.3.1变量的定义与使用
(1)格式: 类型说明符 变量名表;
(2)定义类型
int 整形
float 单精度浮点型
double 双精度浮点型
char 字符型
tip:定义时可以同时赋值(即初始化)
2.3.2 整形变量
(1)取值范围
(2)无符号整数所占的字节数与相应有符号整数相同,但是由于省去了符号位,故不能表示负 数。
(3)有符号整数以二进制补码形式存储。最左边第一位表示符号,0表示正数,1表示负数。
(4)无符号整数以二进制原码形式存储。
2.3.3 浮点数变量
(1)取值范围
(2)单精度数据保留7位有效数字,双精度保留16位有效数字(超出可能是无效数字)
2.3.4 字符型变量
(1)字符型变量的值是字符常量,类型说明为 char
2.4 运算符和表达式
2.4.1 赋值运算符和赋值表达式
(1)运算符
'='、'+='、'-='、'*='、'/=' 和 '%='
(2)赋值表达式
一般形式: 变量 = 表达式
注意:①赋值运算符左侧必须是一个变量
②赋值语句末尾必须要有分号
③'=' 两边的类型不一样时,会右侧强行转换成左侧(这是的得到的值,但 是运行一般为int或相对更大取值范围那个)
④赋值运算符具有右结合性
2.4.2 算术运算符和算术表达式
(1)
p:求余要求参与运算的两个运算对象必须都是整型,其结果也是整型
(2)特殊运算符
'++'和'--' :对使用的值进行加一或者减一
在变量前:先计算(++),后使用(变量)、
在变量后:先使用(变量),后计算(++)
(3)算术表达式
(应该和数学差不多吧)
2.4.3 逗号运算符和逗号表达式
(1)一般形式: 表达式1,表达式2,...表达式n
(2)左往右依次计算,最后一个表达式的值作为整个表达式的值
2.4.4 求字节数运算符
(1)sizeof(表达式)或sizeof 表达式
(2) sizeof(数据类型名)
p:指针类的都是4(x32)或者8(x64)、大小为字节。
2.4.5 数据类型转换
(1)自动类型转换
p:①横向是必定的转换,纵向是横向之后仍然不同的转换(自己不是特别懂)
②类型转换不改变原变量
(2)强制类型转换
一般形式: (类型说明符)(表达式)
p: 高到低的转换会缺失精度
三 顺序结构
3.1 c语言的语句
(1)说明语句
用于定义程序所使用的变量和类型
如:int a,b;
char ch;
(2)表达式语句
一般形式: 表达式;
p:未加上 ; 则为表达式(仿佛没讲)
(3)分支语句
分支语句实现分支控制过程,根据条件成立与否执行不同的语句。有两种分支结构:if-else和switch
(4) 循环语句
3种结构:for 和while 和do-while
(5)转向语句
有:break;goto;continue;return;
(6)复合语句
用一对大括号{}将若干语句顺序组合在一起所组成的语句称为复合语句
(7)空语句
一个分号组成
(8)函数的定义与调用
(9)输入与输出
(scanf()和printf())
3.2 数据的输入输出
(较复杂的细节在平常见到的代码中能够很好的了解到,开始不用了解太多)
(1)printf()函数
printf("格式控制字符串",输出项表列)
(2)scanf()函数
scanf("格式控制字符串",输入项列表)
(3)整型数据的输入和输出
(4)浮点型数据的输入和输出
(5)字符型数据的输入和输出
(1)scanf()和printf()
p:printf("%c%cn",a,b)可在%与c之间加修饰符,同表3.2.2和表3.2.3
(2)getchar()和putchar()
① ch = getchar() 运行时从键盘缓冲区读取一个字符赋值给ch。
② putchar(输出参数) 输出一个字符 (字符型变量或字符型常量)
四 分支结构
4.1 关系/逻辑/条件运算符
①关系运算符:> ; >= ; < ; <= ; == ; != ;
关系表达式: 表达式1 关系运算符 表达式2
②逻辑运算符:&& 逻辑与 (两边都为真时得真)
|| 逻辑或 (两边都为假时得假)
! 逻辑非 (真得假,假得真)
逻辑表达式:表达式1 逻辑运算符 表达式2 或者 逻辑运算符 表达式1
p:一般&&左边为假,那右边便不考虑了,||左边为真,右边也不考虑了
③条件运算符:? ;
条件表达式: 表达式1?表达式2;表达式3
4.2 if-else实现分支
(1)双分支if语句 一般形式:if(表达式)
语句1;
else
语句2;
(2)单分支if语句 一般形式: if(表达式)
语句;
(3)嵌套: 复合一下就好了
p:else只是寻找其上最近得未与else配对的if进行配对,合适的缩进,或者{}可减少争议
(4) 多分支if语句: if(表达式1)
语句1;
else if(表达式2)
语句2;
...
else if(表达式n-1)
语句n-1;
else
语句n;
4.3 switch语句实现分支
(1)一般形式: switch(表达式)
{
case 常量表达式1:语句1;break;
case 常量表达式2:语句2;break;
...
case 常量表达式n:语句n;break;
default:语句n+1;break;
}
p:每个case分支下应该带上break;若没有,则会继续执行下去,直到结束或者碰到break
五 循环结构
5.1 for语句实现循环
(1)一般形式: for(表达式1;表达式2;表达式3)
循环体语句;
(2)执行 : 先表达式1(初始化 仅一次) ,
然后表达式2(每次循环都判断),
为真进入循环语句体(为假跳出循环),
然后表达式3(修改循环变量),
再进入表达式2...
p: (遇到break跳出这整层循环,遇到continue跳过这次循环)
(for()括号里的分号不能省!!)
(表达式1,3某些情况可以省)
5.2 while语句实现循环
(1)一般形式: while(表达式)
循环体;
(2) 执行: 表达式判定,真便进入循环体
p :循环体中应当改变循环变量,避免进入死循环
5.3 do-while语句实现循环
(1)一般形式: do
循环体;
while(表达式)
(2) 执行: 先执行循环体,再判断 (循环体改变循环变量)
5.4 改变循环结构的跳转语句
(1)break 跳出
(2)continue 跳过
(3)goto 跳至...(goto语句标号),语句标号是有效标识符,其后跟一个“:”
(建议少用)
5.5 嵌套
复合即可,不可交叉,内外循环一般不相干,注意循环变量
六 数组
6.1 一维数组
(1)一般形式: 类型名 数组名[常量表达式]; 如 int arr[10];
提示 : ①常量表达式 表示数组元素的个数(长度),不能是变量
②方括号[]
③数组元素下标从0开始,最大值为长度减一
(2) 一维数组元素的引用 数组名[下标]
(3)一维数组的初始化
一般形式: 类型名 数组名[数组长度] = {初值表}
如:int a[] = {6,1,4,5,8,9} ; int a[2] = {1,2};
提示 : ①定义数组没有对其初始化,则数组长度不能省略
②静态存储 (未初始化,赋值0)
static int a[3]; 相当于 static int a[6]={0,0,0};
动态存储 (未初始化 ,赋值未知数)
③可以只是赋值数组的前几个元素
④初值个数小于长度
⑤别忘记{}
⑥初值表不能是变量
6.2 二维数组
(1)一般形式 : 类型名 数组名[常量表达式1][常量表达式2] ; 如 int a[3][4]
(2)引用 : 数组名[行下标][列下标]
(3)初始化 : 类型名 数组名[行数][列数] = {初值表}
如:int a[][4] = {1,2,3,4,5,6,7,8,9};
6.3 字符数组
(1)一维字符数组的一般形式: char 数组名 [常量表达式]
二位字符数组的一般形式: char 数组名 [常量表达式1][常量表达式2]
初始化 : char 数组名 [常量表达式] = {初值表} ;
p:①不能在定义数组以后,对数组进行赋值
6.4 字符串
(1)字符串的存储
①n个字符组成的字符串,占内存加一(内隐藏一个 ' ' , 其不记录长度)
(2)字符串的输入和输出
除了getchar(),putchar(),scanf()和 printf() 可以输入输出字符串,还有gets(),puts()
① gets(字符数组名)
char str[80]; gets(str);
键盘输入: How are you? 则str中的字符串是“How are you?”
该函数可以将键盘输入的一行字符以字符串的形式存放到一个字符数组中,只能输入一个字符串
② puts(字符数组名)
该函数可以将一个字符串(以' '结束的字符序列)输出到屏幕,输出后自动换行
6.5 字符串处理函数
(1)复制函数: strcpy(字符串1,字符串2)
①字符串2 可以是字符数组名,也可以是字符串常量,但是1 必须是字符数组名
②1 要有足够的空间容纳2
③复制时碰到2 中的“ ”停止
④若要复制2 中的前n给字符可以用 strncpy(字符串1,字符串2,n)
(2)连接函数: strcat(字符串1,字符串2)
①字符串2 可以是字符数组名,也可以是字符串常量,但是1 必须是字符数组名
②1 要有足够的空间容纳2
③碰到2 中的“ ”停止
(3)比较函数: strcmp(字符串1,字符串2)
① 1<2 返回值小于0
②1=2返回值等于0
③1>2返回值大于0
④比较规则是从首字符串开始,依次比较对应字符的ASCII码,到‘ ’为止。如果所有的字符 都相同,返回0;否则,以第一个不协调字符的比较结果为准,返回则两个字符的差。
(4)求字符串长度函数: strlen(字符串)
①计算长度,不包括 ' '



