【XDOJ】C语言易错点整合+期末考前再梳理

【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()=' ');//getchar吃掉空格,检测到回车时输入结束

Part 2-循环部分

  • 区间等地方尤其小心
  • 清楚从哪循环到哪
  • 是否从0开始 或从某个区间开始 >或>=
  • 使用&& || 时优先级,带括号 两边判断都有变量
  • 防止数组越界
  • 区分i,j
  • count++循环,置0(任何与加和有关的循环,注意置0)

关于大括号

  • 运算时,该上括号的地方要上括号
  • 排序的大括号!!!
  • 大括号

Part 3-运算部分

  • 小数计算的数据类型
  • 函数的使用

  • #include
  • 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 -用于字符串
  • gets puts strlen strcmp strcpy(原理:从首字母开始依次比较ASCII码值) strcat(适用与两个末尾有\0的字符串连接)
  • strlwr()-将数组中所有大写字母转为小写字母
#include 
#include 

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’

矩阵类问题

  • 二维数组 min在循环中置0
  • 矩阵初始化时未定义默认为0
for(j=0;j<n;j++)
	{
		min[j]=a[0][j];//min[j]-每一列的第一个
		for(i=0;i<m;i++)
		{
			if(a[i][j]<min[j])
			{
				min[j]=a[i][j];
			}
		}
	}

结构体

  • 定义结构体类型时的小分号
  • 里面定义数组,变量和日常一样 char name[10]
  • 输入取地址
  • 结构体变量初始化

指针

  • 在函数中要一直带着
  • 若定义了新数组,返回到旧的数组中
  • 传参取地址
  • 定义指针后立刻赋值,避免野指针出现

debug

  • 尽量一次写好
  • 设置断点Dev C debug
  • 打印输出debug
  • 细节/逻辑错误

考试分布

  • 1.前两道题出自题库
  • 干脆利落完成,但避免熟题效应
  • 2.一道函数片段题(传参 形参实参 一致性)
  • 3.一道矩阵题(二维数组)
  • 4.一道综合题 涉及结构体
  • 分模块依次求解

tips:

  1. 考试时有条理,有节奏
    不将就,不惯性思维
  2. 鉴于XDOJ最近系统不稳定,先把题目全部加载出来,防止意外
    (若系统判定失败请冷静,看提交方式路径对应题目是否有问题)

你可能感兴趣的:(【XDOJ】C语言,c语言,开发语言,算法,数据结构)