一、语法
1. 用scanf输入字符串时,如果在这之前有其他输入,可能会多读入一个回车,少读入最后一个字符;
可以在前一个输入之后加getchar();
2. 变量赋初值问题;
如果不赋初值,使用过程中可能会随机赋值,如果其初值不重要,或者不会影响程序结果,可以不赋初值;
3. 变量前后不对应或重复使用;
一般出现在更改变量或数组名后漏改或错改,在功能相似的部分使用同一变量导致错误;
二、逻辑
- return,break,continue的使用;
return:return语句是将函数的值返回主调函数。
break:break语句通常用在循环语句和开关语句中,可使程序终止循环而执行循环后面的语句,通常break语句总是与if语句联在一起,即满足条件时便跳出循环。
continue:continue语句的作用是跳过循环本中剩余的语句而强行执行下一次循环,常与if条件语句一起使用,用来加速循环。
总的来说:
break 跳出总上一层循环,不再执行循环(结束当前的循环体)
continue 跳出本次循环,继续执行下次循环(结束正在执行的循环 进入下一个循环条件)
return 程序返回,不再执行下面的代码(结束当前的方法 直接返回)
2. 用数组时下标越界或内存溢出;
下标越界时不一定程序会出错,可能会读到数组内存的下一个内存,可能有值。
数组内有10个元素,for循环赋值了11次,导致内存溢出。
3. 数据类型不匹配;
三、算法
一个结构体中可以存放一组数据,通常用于捆绑的数据。如:Laptop,电脑的价格与质量是捆绑数据,可以放在一个结构体中便于比较;学生的姓名和成绩捆绑,也可以放在一个结构体中,进行升序排序。
2.栈和队列;
队列先进先出,栈先进后出。
(有时候感觉自己掌握了但写题过程中还是会出现问题,这里就不写太多,完全掌握后再补上)
q.pop()并不会返回元素值,而要用q.front()返回队头元素,用q.back()返回队尾元素。