《C程序设计》重点总结

C语言

最后加粗一下重点!

第二章 算法

1.计算计算法分两类:

数值运算算法:求数值解

非数值运算算法:排序、检索、管理

2.算法特性:有穷性、确定性、零或多输入、一或多输出、有效性

3.算法的三种基本结构: 顺序结构 选择结构

循环结构(当型、直到型)

第三章 顺序结构

常量和变量

1.常量: 整型常量

实型常量:小数形式

指数形式:12.34*103=12.34e3 字符常量:普通字符:用' '括起来

转义字符:\ 开头(\a警告 \b退格 \n \t空出一段距离 \o \xh) 字符串常量:用" "括起来

符号常量:#define PI 3.14 (大写,行末无分号)

2.变量:先定义,后使用

3.常变量:const int a=3;(取代符号常量)

4.标识符(可作为变量名):

只能由字母、数字、下划线组成且不能数字打头 大小写是不同字符

数据类型

整型类型:基本整int 短整short int 长整long int 双长整long long int 字符char 尔bool

浮点类型:单精度浮点float 双精度浮点double 复数浮点 枚举类型:enum

空类型: void

数组[] 函数 指针* 结构体struct 共用体union 字节数(有效数字)

int:2、4 short:2 long:4 long long:8 char:1 float:4(6) double:8(15) long double:8(15)、16(19) 规范化指数形式:3.14159→0.314159e001

运算符和表达式

1.实数相除得双精度实数 整数相除得整数(商向零取整) 2.自增自减运算符(只用于变量):++i、--i先加减再使用 i++/i--先使用再加减 3.算术表达式自左向右结合,先乘除后加减 4.不同类型数据混合运算: float和double→double int和float/double→double char和int→ASCII和int

5.强制类型转换:(double)(x+y) 将x+y的值转换成double型

6.C运算符:等于== 不等于!= 与&& 或|| 非! 赋值= 下标[]

C语句

1.分类

控制语句:如

continue(结束本次循环)

break(中止执行switch或循环) switch(多分支选择) 函数调用语句:printf(...); 表达式语句:句末有分号

空语句: ; (作流程转向点)

复合语句:用{ }括起来,语句句末写分号 用数学公式开头加#include<math.h> 2.赋值语句:

复合赋值运算符: x+=y等价于x=x+y x*=y等价于x=x*y x%=y等价于x=x%y 赋值表达式:a=b、a+b这种表达式不能作为左值 a=b=5 自右而左:b=5; a=b;

数据的输入输出

1.C语言本身不提供输入输出语句,以下都是函数: putchar输出字符 getchar输入字符 printf格式输出 scanf格式输入 puts输出字符串 gets输入字符串 2.输入输出头文件:#include<stdio.h> 3.printf(格式控制,输出表列):

格式控制=%格式字符+普通字符 输出表列可以是常量、变量、表达式 4.scanf(格式控制,地址表列):不能忘“&” 注意:逗号对逗号,空格对空格

%c中,空格和转义字符都作为有效字符 输入数值数据时遇非法字符认为数据结束 5.格式字符:

%d有符号的十进制整数

%f小数形式的实数(%7.2f表示共7位,小数2位)(%-7.2f表示向左对齐) 双精度%lf %c一个字符 %s字符串

%e %E指数形式(printf("%e",123.456) → 1.23456e+002) %o八进制整数(补码) %x十六进制整数

%u无符号十进制整数

%g %G系统自动选择变成%f或%e 输出“%”用连续两个“%”表示

6.putchar( )输出一个字符:putchar(66)输出“B” putchar('\n')换行 7.getchar(c)输入一个字符

第四章 选择结构

1.if:两分支选择 switch:多分支选择 2.将a和b的值互换:t=a; a=b; b=t;

3.优先级:! → 算术运算符 → 关系运算符 → && → || → 赋值运算符 关系运算符优先级:高:< <= > >= → 低:== != 逻辑运算符优先级:! → && → || 4.关系表达式:“1”代表真,“0”代表假 逻辑表达式:非0代表真,0代表假

a&&b&&c只有a为真才向后算 a||b||c只有a为假才向后算 5.逻辑型变量:头文件#include<stdbool.h> 如a=score>=60 6.条件表达式:max(a>b)?a:b;

7.选择结构嵌套:else总与上面最近的未配对if配对 8.多分支选择结构:(多个case,最多一个default) switch(表达式) {

case 常量:语句;break; ?

default:语句; }

多个case共用一组语句: case'A': case'B':

case'C':printf(">60\n");break;

第五章 循环结构

三种循环

1.while(表达式) {语句;}

2.do {语句;} while(表达式)

3.for(初值;循环条件;循环变量增值): 改写成while:

初值;

while(循环条件) {

语句;

循环变量增值; }

for里3项都可以省略,第1、3项可含逗号,第2项可以是关系/逻辑/数值/字符表达式 逗号表达式内,整个逗号表达式的值=最右边表达式的值

跳出、结束循环

break:终止整个循环,只用于switch和3种循环语句 continue:结束本次循环

如果是双重循环,内循环里有break,则终止内循环而不是整个循环

第六章 数组

1.一维数组:

int a[10];含a[0]~a[9]十个元素

初始化:a[10]={0,1,2,3,4,5,6,7,8,9};中括号里可以不写,大括号里不写的得0 起泡法排序:n个数n-1趟比较,第j趟比较n-j次 2.二维数组:

float a[3][4];含a[0][0]~a[2][3]十二个元素

初始化:3行4列int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};第一维中括号可以不写,大括号里不写的得0

打擂台算法:先max=a[0][0],剩下的挨个跟a[0][0]比,赢了就赋给max 3.字符数组:

char a[10];含a[0]~a[9]十个元素

初始化:char a[]={'I',' ','a','m',' ','h','a','p','p','y'}; char a[2][3]={{'#','#','#'},{'#','#','#'}}; char a[]="I am happy" 4.'\0'作为字符串结束的标志

5.scanf函数输入项如果是字符数组名不加&: scanf("%s",a); 6.输出字符串:puts(字符数组) 输入字符串:gets(字符数组) 字符串连接:strcat(字符数组1, 字符数组2)

字符串复制:strcpy(字符数组1, 字符串2) 将2复制到1中

strncpy(str1,str2,2) 将2的前2个字符复制到1中

7.字符串比较:strcmp(字符串1,字符串2) if(strcmp(s1,s2)>0) printf("yes"); 8.测字符串长度:strlen(字符数组)

9.转换为小写:strlwr(字符串) 转换为大写:strupr(字符串)

第七章 函数

1.定义有参函数:三处类型名和return z不能少 2.形参:定义函数时括号中的变量

实参:主调函数调用时括号中的参数(常量、变量或表达式) 3.数据传递(单向传递,值传递):实参的值给形参,函数中return z把z的值作为函数值返回主函数赋给相应变量 4.函数调用

函数类型名和里面return表达式的类型名一致(函数类型决定返回值类型) 不需要返回值的函数里边不写return,类型名为void(空类型)

调用结束时形参单元被释放,实参单元仍保留原值。形参和实参是两个不同存储单元 主函数的声明和函数的定义第一行(函数原型)一样,再加分号 声明中的形参名可以不写:float add(float,float) 函数原型专业写法:

void print(int num, char sex, float score);

声明也可以在int main()之前 5.嵌套调用

递推法:主函数声明a函数,a函数定义中声明b函数,定义b函数 改进:b函数只用一个return语句 6.递归调用(调用函数本身):

分为“回溯”和“递推”两个过程,必须具有一个结束递归的条件。 7.数组名作参数

数组元素作实参,向形参传递元素的值 数组名作实参,想形参传递元素的地址

二维数组名作参数,函数定义里用两个for控制 8.局部变量和全局变量

局部变量:在函数内定义,比如形参 全局变量(外部变量):在函数外定义,范围直到本源文件结束 不同函数中可以使用同名变量 习惯:全局变量首字母大写

若同一源文件中全局变量和局部变量重名,则在局部变量作用范围内全局变量被屏蔽 9.变量的存储方式和生存期

第八章 指针

概念

1.“指针”就是地址。指针变量是存放地址的变量 2.直接访问:按变量名访问

间接访问:将变量a的地址存放在变量b中,通过b访问a 3.*a表示a指向的对象,a叫指针变量,a的值是地址(指针) 4.定义指针变量必须指定基类型:int *a, *b;(int叫基类型) 5.初始化时:int *p1=&a, *p2=&b; 赋地址时: p1=&a; p2=&b;

6.一个变量的指针的含义包含两个方面: 地址:以存储单元编号表示 数据类型:指向存储单元

7.不能写 *point_1=100;等号右边应该写变量,不能写数 8.引用指针变量:p=&a;

定义时:swap(*p1,*p2) 调用时:swap(p1,p2) 9."交换值":int temp; temp=*p1; *p1=*p2; *p2=temp; 10.p=&a[0]; p=a; 表示a数组首元素的地址赋给p

数组指针

1.指针指向数组元素时可以:加减整数、自加自减 同一数组中的两元素p1、p2可以p1-p2 2.自加自减

*p++=*(p++):先引用p的值,再使p自增1 *(++p):先p+1,再取*p

++(*p):p所指向的元素值加1 3.一维:

fun(int arr[], int n )与fun(int *arr, int n)等价 a[i]与*(a+i)等价 4.多维:

*(*(a+i)+j) = *(a[i]+j),都是a[i][j]的值 a(&a[0])、a+1(&a[1])表示第0行、第1行 *a、*(a+1)表示a[0][0](a[0])、a[1][0](a[1]) a+i、a[i]、*(a+i)、&a[i]、&a[i][0]都代表同一地址

字符串指针

1.char *a="blablabla"; printf("%s",a); 没问题 2.字符数组名和字符指针变量可以做形参和实参 3.不能对数组名赋值

4.字符指针变量只分配一个存储单元

 

第二篇:C程序设计内容总结

《C程序设计》内容总结

第一章:C语言概述

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

第三章:数据类型,运算符和表达式

1. 定义变量的规则

2. 整型数据

1) 常量:表示方法,类型

2) 变量:表示方法,内存中的存放方式,分类,定义,溢出

3. 浮点型数据

1) 常量:表示方法,类型

2) 变量:内存中的存放方式,分类,定义,舍入误差

4. 字符型数据

1) 常量:转义字符*

2) 变量:内存中的存放方式

5. 字符串(C语言没有字符串这种数据类型)

1) 常量:定义,内存中的存放方式,与字符型数据区别

2) 变量:用字符数组表示

6. 变量赋初值:赋值规则

7. 各种数据类型间的混合运算

1) 混合运算的自动转换规则

2) 强制类型转换

3) 赋值转换

8. 算术运算符和算术表达式

1) + - * / 的计算规则

2) 优先级问题(P365附录C)

3) 自增(++),自减(--)*

9. 赋值运算符和赋值表达式

1) 赋值规则

2) 复合的赋值运算符

3) 赋值表达式

10. 逗号运算符和逗号表达式

1) 表达式的计算规则

第四章:顺序程序设计

1. 字符数据的输入和输出:putchar(c); getchar()

2. 格式输入与输出:printf();scanf()*

第五章:选择程序设计

1. 关系运算符与关系表达式

2. 逻辑运算符与逻辑表达式

3. 条件运算符

4. if语句的几种形式

5. switch语句

第六章:循环控制

1. goto语句

2. while do-while for循环语句

3. break; continue语句

4. 循环嵌套

第七章:数组*

1. 一维数组的定义和引用:定义,引用,初始化

2. 二维数组的定义和引用:定义,引用,初始化

3. 字符数组:定义,引用,初始化,结束标志,输入输出

4. 字符串处理函数

第八章:函数

1. 函数定义的一般形式

1) 无参函数的定义

2) 有参函数的定义

2. 函数参数与函数值

1) 形参和实参

2) 返回值

3. 函数的调用

1) 调用的一般形式及调用方式

2) 函数定义与函数声明

4. 函数的嵌套定义和递归定义

5. 数组作为函数参数

1) 数组元素做实参

2) 数组名做函数参数

3) 多维数组名做函数参数

6. 局部变量与全局变量

7. 变量的存储类别

1) auto变量

2) 用static声明局部变量

3) register变量

4) 用extern声明外部变量

5) 用static声明外部变量

8. 内部函数与外部函数

第九章:预处理命令

1. 宏定义*

2. “文件包含”处理

第十章:指针

1. 指针变量:定义,引用

2. 指针变量做函数参数

3. 数组与指针

1) 指向数组元素的指针

2) 通过指针引用数组元素

3) 用数组名做函数参数

4. 字符串与指针

1) 字符串的表示形式

2) 字符指针做函数参数

3) 字符指针变量和字符数组的区别

5. 指向函数的指针

6. 返回指针值的函数

7. 指针数组和指向指针的指针

8. 有关指针的数据类型和指针运算小结 第十一章:结构体与共用体

1. 结构体:定义,引用,初始化

2. 结构体数组:定义,引用,初始化

3. 共用体:定义,引用,初始化 补充:常见错误和程序调试

相关推荐