作者:繁星Stars
作者官网:www.stars22.xyz
作者GitHub:github.com/Stars-22
此文章页码对应《C语言程序设计》——英昌盛、谭振江、李昊著
作者推荐刷题网站:
- 能力提升综合题单Part1:https://www.luogu.com.cn/training/9349
- 能力提升综合提单完全版:https://www.luogu.com.cn/training/9391
I – C语言干货
一、C程序基础
1.基础框架
#include <stdio.h> //预处理命令,C语言标准头文件
//入口函数 main()函数
int main(){
return 0;
}
2.注释
注释内容不会被编译器编译以及执行
//单行注释
//[注释内容]
//块注释
/*
[注释内容]
*/
二、基础数据类型 – P20,28,223
//变量的定义
data_type var_name;
//例:
int a;
/*命名规则:
1. 由字母数字下划线组成
2. 不能以数字开头(尽量也不以下划线开头,可能与操作系统和C语言库函数冲突)
3. 不能与保留关键字冲突 - P31
- unsigned – 在部分变量类型前添加,无符号型
- short – 短整型
- int – 整形
- long – 长整形
- long long – 加长整型
- float – 单精度浮点型
- double – 双精度浮点型
- char – 字符型
- void – 无类型
三、常用转义字符 – P33
- \0 – 空字符,字符串结尾
- \b – 退格
- \n – 换行
- \r – 回车(光标回到本行首位)
- \t – 水平制表符
- \’ – 单引号
- \” – 双引号
- \\\ – 反斜线
- \? – 问号
四、运算符
1.赋值运算符 – P36
//赋值语句
var = expr;
//使用样例
int a = 10;
a = 5 / 2;
//注意事项
int b = (a = 10) - 2;
//运行结果:a = 10, b = 8;
2.sizeof()运算符 – P47
//sizeof()运算符 - 用于返回以字节为单位的数据类型所占存储空间的大小
sizeof(type); //数据类型,如int、char
sizeof(object); //对象,如变量a
sizeof(expr); //表达式,如1+2
313.算数运算符 – P48
a. +加,-减,*乘,/除,%取余,+正,-负。 – P48
b. +=,-=,*=,/=,%=。如a+=2; 先计算a+2,然后将结果赋值给a。 – P50
c. 自增自减运算符 – P50
int a = 1;
//a++:1, a:2 - 先获值,后自增
//++a:2, a:2 - 先自增,后获值
//a--:1, a:0 - 先获值,后自减
//--a:0, a:0 - 先自减,后获值
d. 注意,当算数运算符两方的数均为整数时,结果将自动向下取整。例如:5/2:2,正确写法:5.0/2或5/2.0或5.0/2.0。 – P53
4.关系运算符 – P59
<小于,<=小于等于,>大于,>=大于等于,==等于,!=不等于。 – P59
注意不能使用连等,例如:1<a<3,正确写法:a>1&&a<3。
5.逻辑运算符 – P61
运算符 | 含义 | 实例 | 结果 |
&& | 逻辑与 | exprA && exprB | exprA与exprB均为真时,结果为true,否则为false |
|| | 逻辑或 | exprA || exprB | exprA与exprB均为假时,结果为false,否则为true |
! | 逻辑非 | !exprA | !exprA为false,否则为true |
6.条件运算符
expr1?expr2:expr3
如果expr1为真,则整个表达式的值为expr2,否则为expr3。
7.其他
a. 位运算 – P64
b. () – 在所有表达式中优先计算括号里的
c. 运算符优先性 – P225
五、输入、输出 – P39
1.输出函数printf() – P39
/*printf() 函数 - 格式化输出函数*/
int printf(const char* format, ...);
//使用方式
printf("<格式化字符串>"[, 参量表]);
//使用样例
float height = 1.75;
printf("Hello World!");
printf("我的身高为:%.2f\t体重为%d:%d", height,60); //%.2f 为保留两位小数的单精度浮点型
printf()函数通用格式控制字符 – P40
2.输入函数scanf() – P42
/*scanf() 函数 - 格式化输入函数*/
int scanf(const char* format, ...);
//使用方式
scanf("<格式化字符串>", <地址表>);
//使用样例
float height;
printf("请输入你的身高(m):");
scanf("%d", &height);
scanf()函数通用格式控制字符与printf()一致
3.getchar()与putchar()函数 – P46
/*getchar()函数 - 从标准输入获取一个字符*/
int getchar(void);
//使用样例
char a;
a = getchar();
/*putchar()函数 - 将一个字符写到标准输出*/
int putchar(int character);
//使用样例
char b = 'A';
putchar(b);
putchar('A');
六、选择结构 – P72
1.单分支 if 语句 – P72
/*单分支if语句 - 满足条件时执行语句,否则不执行*/
if(bool_expr){
statements;
}
//使用说明 - 表达式的值为非0时执行语句,否则不执行
if(<表达式>){
语句1;
......
}
2.双分支 if 语句 – P74
/*双分支if语句 - 满足条件时执行if后语句,否则执行else后语句*/
if(bool_expr){
true statements block;
}
else{
false statements block;
}
//使用说明 - 表达式的值为非0时执行if后语句,否则执行else后语句
if(<表达式>){
语句1;
......
}
else{
语句1;
......
}
3.if 语句的嵌套 – P77
if语句{}之中可以再嵌套if语句
4.多分支 if 语句 – P81
if(bool_expr_1){
statements block_1;
}
else if(bool_expr_2){
statements block_2;
}
......
5.switch 语句 – P84
/*switch语句 - "多选一"的分支控制结构*/
switch(expr){
case const_expr1:
statements block_1; break;
case const_expr2:
statements block_2; break;
......
default:
statements block_0; break;
}
//如果expr的值与const_expr1相等,则执行statements block_1;......。
//如果expr的值与所有const_expr均不相等,咋执行statements block_0。
//注1:const_expr必须为常量表达式,例如:1,1+1。不可以为变量。
//注2:如果case后不写"break;",则后面所有case不会检验,直接向下执行case后的语句,直到遇到break截止。
II – 基础编程思维
一、代码规范
代码规范使得代码看着整齐舒适,条理清晰,逻辑清楚。
1.基础代码规范
- 缩进 – 同一层的代码处于同一层缩进上,一行代码前不能乱加空格
- {}单起一行,{}里的内容处于下一层缩进内
2.进阶代码规范
- 空格 – “,”后加空格……等
- 空行 – 两个独立的程序块之间空行
- 命名
- 注释
二、分析错误
1.分析错误的步骤
- 查看编译报告
- 用脑或者纸笔带入数,用程序的逻辑算出输出结果,在过程中寻找错误
- 在合适的位置添加输出打印变量的值,查找错误所在的位置
- 使用断点调试功能
2.容易遇到的错误
- 注意“=赋值”与“==相等“的使用,注意不要混淆
- 在语句末尾忘记添加”;“,或在不该加”;”的位置多加
- 使用scanf()输入时,变量前要加取址符”&“
- 在做除法时,注意强制取整问题
- 入口函数为”main()“,而非”mian()“
- 注意代码在除注释以及字符串的地方应全为英文字符
三、做题思维
- 分解:把复杂的问题分解成更小、更简单的问题
- 模式识别:与相似的问题和经验之间建立联系
- 抽象:关注关键信息,忽略不必要细节
- 算法:完成一项任务的程序步骤的方法
- 建模:对题的提炼,并将其作为模型,以便于泛化
- 泛化:调整/优化现有模型以解决新的问题
太好了很适合新手使用