【XDOJ】C语言易错点整合+期末考前再梳理
易错辨析
- i++(先使用i的值再+1)
- j++一样的(得到的个数/末尾)
- 注意字符和数字之间的转换
- \n换行
- 英文输入
好的编程习惯
- 定义变量时-明确此变量的含义
(数组和变量不要定义重复) - 适当写注释,依次求解模块
Part 1
- 头文件-用到特殊函数时
- 定义变量
- 定义字符串或数组时 char[20]
- 小数计算的数据类型
- 变量习惯性/重复定义问题
- count,sum等涉及求和,累积的变量 置0
- 累乘,阶乘,mul置1
- 输入-取地址
- 注意输入数据的类型及其对应的占位符
想输入一个有空格的不定长数列
int a[100],i=0;
do
{
scanf("%d",&a[i]);
i++;
}while(getchar()=' ');
Part 2-循环部分
- 在区间等地方尤其小心
- 清楚从哪循环到哪
- 是否从0开始 或从某个区间开始 >或>=
- 使用&& || 时优先级,带括号 两边判断都有变量
- 防止数组越界
- 区分i,j
- count++循环,置0(任何与加和有关的循环,注意置0)
关于大括号
- 运算时,该上括号的地方要上括号
- 排序的大括号!!!
- 大括号
Part 3-运算部分
- 小数计算的数据类型
-
函数的使用
- #include <math.h>
- abs(int x)
- fabs(double x/float x)
- float一般存6位,超6位或对精度有要求用double
- pow(double x,double y)[优先用***或用循环]
- pow函数四舍五入不精确时(int)(pow(10,2)+0.5)
- sqrt(double x)
- 想返回整型时 (int)sqrt(1.0*n)(n为整型时,先转化为浮点型)
- exp(double x)
- #include <string.h>-用于字符串
- gets puts strlen strcmp strcpy(原理:从首字母开始依次比较ASCII码值) strcat(适用与两个末尾有\0的字符串连接)
- strlwr()-将数组中所有大写字母转为小写字母
#include <stdio.h>
#include <string.h>
int main()
{
char a[100],b[100];
gets(a);
strcpy(a,strlwr(a));
puts(a);
}
- 冒泡/选择排序传t时,注意t的类型,所传变量是什么类型就定义什么类型(结构体,字符型,数组)
- 区分清if和while的功用哈,不要写死循环
字符串/字符
- 定义新的字符串一定要及时在末尾补’\0’
- 字符型数组赋值时 char a[]={‘0’,‘x’,‘y’,‘3’}
- 注意字符和数字间的转换:字符不能直接运算 -‘0’ -‘a’
debug
- 尽量一次写好
- 设置断点Dev C debug
- 打印输出debug
- 细节/逻辑错误
考试分布
- 1.前两道题出自题库
- 干脆利落完成,但避免熟题效应
- 2.一道函数片段题(传参 形参实参)
- 3.一道矩阵题(二维数组)
- 4.一道综合题 涉及结构体
- 分模块依次求解
tips:
- 考试时有条理,有节奏
不将就,不惯性思维 - 鉴于XDOJ最近系统不稳定,先把题目全部加载出来,防止意外
(若系统判定失败请冷静,看提交方式路径对应题目是否有问题)