270 likes | 427 Views
复习要点. 不考范围 类型、变量、常量 运算符、表达式 格式符、转义符 语句与库函数 算法与编程技巧 常用数组函数. 不考范围. 4.4.6 节 goto 语句 6.5 函数的递归 6.6 变量作用域和存储类别 7.4.4 函数指针 7.5.2 指向一维数组的指针 7.6.5 命令行参数 8.8 联合与枚举 8.9 typedef 9.5 其他文件函数 10.1 预处理. 类型、变量、常量. int, long, float, double, char 一维 / 二维数组、指针、结构体、链表、文件 常量定义与识别
E N D
复习要点 • 不考范围 • 类型、变量、常量 • 运算符、表达式 • 格式符、转义符 • 语句与库函数 • 算法与编程技巧 • 常用数组函数
不考范围 • 4.4.6节 goto语句 • 6.5 函数的递归 • 6.6 变量作用域和存储类别 • 7.4.4 函数指针 • 7.5.2 指向一维数组的指针 • 7.6.5 命令行参数 • 8.8 联合与枚举 • 8.9 typedef • 9.5 其他文件函数 • 10.1 预处理
类型、变量、常量 • int, long, float, double, char • 一维/二维数组、指针、结构体、链表、文件 • 常量定义与识别 • 0xAB, 123L, 1.2E-3, ‘A’, “Hello” • 018, 2e1.2, ‘AB’, “C:\” • 标识符定义与识别 • n, _0, a_, _, INT • if, 1a, a.b • 变量定义与初始化 • int a[10]={1,2,3,4}, *p=a+2; • int b[3][4]={{10,11,12},{20},{30,31}}; • struct student stu[3]={{…},{…},{…}}; • 识别4种特殊指针:int *p[5], **q, (*r)(), (*s)[5];
运算符 • 算术运算符 • +、-、×、/、%、++、--、- • 关系运算符(==、!=、>、>=、<、<=) • 逻辑运算符(&&、||、!) • 条件运算符(?:) • 赋值运算符 • =、+=、/=、%=、×=等 • 其它运算(指针、逗号、转换、位) • &、*、,、sizeof、(int)、(struct node *)、>>等
表达式 • 奇偶/判断整除 • n%2, n%2==1, !(n%2), n%i==0 • 四舍五入/裁去或保留小数 • (int)(x+0.5)、(int)(10*x+0.5)/10.0、 • (int)(x)、x-(int)x • 个十百位/16进制各位数 • n%10, n/10%10, n/100%10, n%16 • 数值大小:a<b&&b<c,避免a<b<c • 判断大小写、大小写转换 • x>=‘A’ && x<=‘Z’、x-‘A’+‘a’
基本输入/出语句 • 格式符 • %d, %05d, %-2d, %ld, %x • %f, %4.1f, %2.0f, %0.2f • %s, %c, %% • 转义符 • \n, \t, \0, \\, \x4f • scanf/gets 函数,避免 • int m,n; scanf(“%d,%d\n”,&m,&n); • char a[80]; scanf(“%s”,&a);或 gets(&a);
语句与库函数 • 语句 • if, switch, for, while, do-while, • break, return, continue • 函数 • scanf, printf, • getchar, putchar, gets, puts, • strlen, strcpy, strcat, strcmp, • malloc, free, • fopen, fclose, fscanf, fprintf, • fread, fwrite, fgets, fputs
C专有章节的重点 • 位运算:掌握左移/右移运算,了解&|^~ • 文件: • 掌握 FILE, fopen, fclose, fprintf, fscanf,文本 • 了解 fgets, fputs, fread, fwrite,二进制文件 • 链表:掌握结点定义与结点各分量表示,链表的建立、插入、列表等操作 • 结构体:掌握结构体数组定义与各分量表示,输入、输出、排序、查找等数组操作 • 指针:结合一维数组/单字符串/函数,指针循环,识别特殊指针
算法与编程技巧 • 算法 • 累加和,平均值,接近平均值 • 最大值/最小值(及下标) • 查找,统计次数,排序,名次 • 判断对称,换位,筛选,输出图形 • 因式分解,输出公式 • 素数,完数,公约数,进制转换 • 技巧 • break法、计数法、标志法 • 语句嵌套、复合语句、多重循环
常用数组相关函数 • 输入数组void sca( int a[ ], int n ); • 输出数组 void prt( int a[ ], int n ); • 累加和 long sum( int a[ ], int n ); • 平均值 float average( int a[ ], int n ); • 最大值 int max( int a[ ], int n ); • 排序 void sort( int a[ ], int n ); • 查找 int find( int a[ ], int n ); • 统计 int count( int a[ ], int n, int x );
void sca(int a[ ], int n) { int i; for ( i=0;i<n;i++ ) scanf(“%d”,&a[i]); } void prt(int a[ ], int n) { int i; for ( i=0;i<n;i++ ) printf(“%d ”, a[i]); printf( “\n” ); } sca: 输入数组prt: 输出数组
long sum(int a[ ],int n) { long s = 0; int i; for ( i = 0; i < n; i++ ) s += a[i]; return s; } float average( int a[ ],int n ) { float ave = 0; int i; for ( i = 0; i < n; i++ ) ave += a[i]; return ave/n; } sum: 计算累加和average: 计算平均值
int max(int a[ ],int n) { int i,x; x = a[0]; for ( i=1; i<n; i++ ) if ( x < a[i] ) x = a[i]; return x; } int max2(int a[ ],int n) { int i,k; k = 0; for ( i=1; i<n; i++ ) if ( a[k] < a[i] ) k = i; return k; } max:返回最大值本身max2:返回最大值所在下标
数组排序 • void sort( int a[ ], int n ) • { • int i, j, t; • for ( i = 0; i < n-1; i++ ) • for ( j = 0; j < n-1-i; j++ ) • if ( a[j]>a[j+1] ) • { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } • } • 注意排序从小到大还是从大到小
查找并返回下标 • int find( int a[ ], int n, int x ) • { • int i; • for ( i=0; i<n; i++ ) • if ( a[i] == x ) • return i; • return -1; • }
统计出现次数 • int count( int a[ ], int n, int x ) • { • int ct=0, i; • for ( i=0; i<n; i++ ) • if ( a[i] == x ) • ct++; • return ct; • }
其它常用算法 • 对称,判断一数组或字符串是否首尾对称 • 名次,计算各成绩对应的名次 • 换位,所有元素向后或向前移动几个位置 • 筛选,选择满足条件组成新数组或新串 • 公式,输出等式,如因式分解、累加和 • 图形,输出一定形状的符号或数字图形 • 素数,判断一数是否为素数 • 完数,因子之和等于本身的数
上机考注意事项 • 上机编程要求 • 上机编程常见错误 • 上机考试操作步骤 • 上机考登录验证/模拟题 • 上机卷式样与程序复制技巧
上机编程要求(1) • 知识点范围(最小集) • 类型:int,float,一维数组 • 运算:算术、关系、逻辑、赋值 • 语句:if,for,break • 函数:scanf,printf • %d, %4.1f, \n, \t
上机编程要求(2) • 常用算法 • 语句嵌套、复合语句、多重循环 • 素数、break法、计数法、累加和 • 输出图形 • 最大值/最小值(及其下标) • 平均值(接近)、排序、名次
程序保存错误 包含语句错误 变量定义错误 分号错误 复合语句错误 表达式错误 输入语句错误 格式符错误 算法错误 改错程序 编写程序 上机编程常见错误
编程常见错误(1) • 程序未保存或保存错误 • 编辑-保存-编译-运行-调试 • 注意保存目录位置与文件名正确 • 包含语句错误 • 使用 fabs 函数未包含 math.h • 变量定义错误 • 未定义,定义类型错,初始化错 • 定义语句置于执行语句之后 • 数组大小定义太小(如 char a[6];)
编程常见错误(2) • 分号错误 • 表达式语句或函数调用语句漏加 “;” • if 或 for 语句所在行多加 “;” • 复合语句错误 • 未注意 if 和 for 语句的作用范围,漏加 { } • 表达式错误 • if ( a[i]=x ),() 或 “” 或 ‘’ 不配对 • % 误为 /,实数除误为整除(求平均) • 循环边界条件错误,如 i<n 或 i<=n 辨析
编程常见错误(3) • 输入语句错误 • int n; scanf(“%d\n”,&n); • int a[10]; gets(a); 或 scanf(“%d”,&a[10]); • 格式符错误 • %d 误为 d% 或 %f • %f 误为 %d,%f 对应整数表达式 • 算法错误 • 注意语句位置:循环前、循环中、循环后 • 哪些全部循环,或之前或之后只执行一次
上机考试操作步骤 • 开考之前 • 考试系统 • 编写程序 • 考试提交
第1题/改错程序题 • 3个语法错误 • 语法性错误,需要修改3处 • 分布在3个代码行上,相应代码行后加 /***/ • 不是指编译时显示有3个语法错误
复制程序技巧 • 从操作题窗口中 • 复制原程序代码 • 打开记事本,并粘贴 • 文件~另存为 • E:\answer\1-A-1.C • 关闭记事本 • 打开 TC or VC • File~Load • E:\answer\1-A-1.C