《1C语言复习(4学时).ppt》由会员分享,可在线阅读,更多相关《1C语言复习(4学时).ppt(41页珍藏版)》请在三一文库上搜索。
1、C 语 言 复 习,主要内容, 各章复习纲要 应掌握的算法 常见错误分析,第一章 C程序的组成,函 数,#include main( ) /* 主函数*/ int max(int x,int y); / 对被调用函数max的声明 */ int a, b, c; /*定义变量a、b、c */ scanf(“%d,%d”, ,#include main() int a,b,c; if(ab) c=a; else c=b; printf(“max=%d”,c); ,第二章 算法,1、掌握程序的三种结构 : 顺序、选择、循环 2、了解算法的四种表示形式 3、会用NS流程图表示算法,第三章 (1)数据类
2、型书p37,1、常量和变量: 表示形式、命名规则和使用方法、区别 2、整型数据 :表示形式、类型、范围 3、实型数据:表示形式、有效数字 4、字符型数据: 表示形式、特殊字符p48、和字符串的区别,第三章 (2)运算符和表达式,5、基本的运算符和表达式 +、 - 、*、 /、 % 、+ 、- - 、 强制类型转换、复合运算、逗号运算,(一)按功能划分: 1、算术运算符: +、-、*、/、% 2、关系运算符: 、=、 、|、& 5、赋值运算符: =、+=、-=、*=、/= 6、条件运算符: ? , : 7、逗号运算符: , 8、指针运算符: *、& 9、求字节数运算符: sizeof 10、强制
3、类型转换运算符: (类型名) 11、分量运算符: 、 - 12、下标运算符: 13、其它:函数运算符,例 struct student int num; char name20; - stu,*p; p=,1. 在下面的选项中,赋值语句错误的是 ( 25 ) 。(29次等级考试 一.10题) A) i+; B) a=(b=(c=2,d=3); C) a=a main() int a=010,b=1; a=b;b=a;a=b; printf(“%d,%dn“,a,b); (A) 10,1 (B) 8,1 (C) 1,8 (D) 1,10 else printf(“%d”,m-); (A)7 (B
4、)6 (C)5 (D)4,3以下程序运行后,输出结果是( )。(21次等级考试一.1题) main() int a=1,b=2,m=0,n=0,k; k=(n=ba)|(m=a5) printf(“%d”,m+);,第三章 (2)运算符和表达式,6、不同类型数据相互赋值时的转换规则 7、运算符的优先级和结合性,第四章 顺序程序设计,1、两个字符处理函数: getchar和putchar 2、通用输入输出函数: scanf和printf 参数、格式控制字符,例 int a,b; scanf(“%d,%d”, 输入:11,7 则 a=11,b=7,例 char c; c=getchar(); pu
5、tchar(c); printf(“%d”,c-a); 输入:b 输出:b1,第五章 选择程序设计(1),1、关系运算符和关系表达式: = = = != 优先级和表达式的值 2、逻辑运算符和逻辑表达式: ! & | 优先级和表达式的值,例:以下程序运行后,输出结果是( )。(21次等级考试一.1题) main() int a=1,b=2,m=0,n=0,k; k=(n=ba)|(m=ab); printf(“%d,%dn”,k,m); (A)0,0 (B)0,1 (C)1,0 (D)1,1,第五章 选择结构程序(2),3、if 语句: 形式、有效范围、if 的嵌套 4、条件运算符: (ab)
6、? a : b 5、switch语句: 形式、break语句的作用,switch( 表达式) case E1: 语句组 1; break; case E2: 语句组 2; break; . case En: 语句组 n; break; default: 语句组 ; break; ,第六章 循环控制,1、循环的四种形式: 掌握三种 2、while 和 dowhile语句: 区别与联系 3、for语句: 三个表达式的作用、for语句的有效范围 4、continue和break语句: 区别、适用场合,例:求1到100的累加和。 main( ) int i, sum=0; i=1; do sum=su
7、m+i; i+ +; while (i=100); printf(“%d”,sum); ,第七章 数 组,1、一维数组: 数组的定义和使用、有效元素、数组名和数组元素 2、二维数组: 3、字符串的处理: (字符数组) 输入输出:gets、puts(与scanf、printf的区别) 其他:strcpy、strcat、strcmp、strlen、 strupr、strlwr,第八章 函 数(1),1、函数的分类: 2、函数的定义和声明: 定义时应注意的问题、声明的形式和必要性 3、函数的参数: 形参和实参的作用范围、数值传递方式,#include main() int x=7,y=11; voi
8、d swap(int a,int b); printf(“x=%d,ty=%dn“,x,y); printf(“swapped:n“); swap(x,y); printf(“x=%d,ty=%dn“,x,y); swap(int a,int b) int temp; temp=a; a=b; b=temp; ,main() int a,b,c; int max(int x, int y); scanf(“%d,%d“, ,第八章 函 数(2),4、函数的调用: 调用方式、嵌套调用、递归调用 5、局部变量和全局变量: 区别、作用、注意问题 6、静态存储和动态存储: 区别、作用、注意问题,#in
9、clude int fac(int n) int f; if(n0) printf(“n0,data error!“); else if(n=0|n=1) f=1; else f=fac(n-1)*n; return(f); main() int n, y; printf(“Input a integar number:“); scanf(“%d“, ,错误! (n1),int a=3,b=5; max(int a, int b) int c; c=ab?a:b; return(c); main() int a=8; printf(“max=%d“,max(a,b); ,main() void
10、 increment(void); increment(); increment(); increment(); void increment(void) static int x=0; x+; printf(“%dn”,x); ,第九章 编译预处理,1、宏定义:#define 宏名 宏体 不带参数的宏、带参数的宏 2、文件包含:#include “stdio.h” 或 #include ,例 #define WIDTH 80 #define LENGTH WIDTH+40 var=LENGTH*2; 宏展开:var= 80+40 *2;,例 #define S(a,b) a*b area=S
11、(3,2); 宏展开: area=3*2;,1、地址和指针的概念 :,a,这样,a和地址变量p就建立了联系。对于a变量,就可以通过指针p去间接的访问。有如下关系:,第十章 指针,第十章 指针,2、直接访问和间接访问 3、指针变量的定义和使用 注意:指针变量作函参时与普通变量的区别 4、数组的指针和指向数组的指针变量 (1)一维数组与指针,如有int i,a10,*p=a; 引用数组元素的方法: ai=*(a+i)=pi=*(p+i) 数组元素地址的表示: &ai=&pi=a+i=p+i p+表示指针指向下一个元素,a+无意义,#include main() int x=7,y=11; void
12、 swap(int *a,int *b); printf(“x=%d,ty=%dn“,x,y); printf(“swapped:n“); swap(x,y); printf(“x=%d,ty=%dn“,x,y); swap(int *a,int *b) int temp; temp=*a; *a=*b; *b=*temp; ,#include main() int x=7,y=11; void swap(int a,int b); printf(“x=%d,ty=%dn“,x,y); printf(“swapped:n“); swap(x,y); printf(“x=%d,ty=%dn“,x
13、,y); swap(int a,int b) int temp; temp=a; a=b; b=temp; ,形参与实参类型必须一致: 形参实参 地址-地址 变量-变量 地址:数组名,指针变量、变量的地址&b 变量:数组元素、普通变量,第十章 指针,(2)二维数组与指针 行地址与列地址的表示 指向行的指针变量 (3)字符串和指针 利用指针引用字符数组及其元素 应注意0的正确使用,char *p; p=“I love China!”; printf(“%s”,p); printf(“%c”,*p);,第十章 指针,5、函数的指针和指向函数的指针变量 6、返回指针值的函数 7、指针数组和指向指针的
14、指针 (1)指针数组:int *p4; char *p5; (2)二级指针:int *p; (3)指针数组作main函数的形参: void main(int argc , char *argv),main() int max(int ,int); int a,b,c; scanf(“%d,%d“, ,main() int max(int ,int); int (*p)( ); int a,b,c; p=max; scanf(“%d,%d“, ,例 int *p1; int *p2; int i=3; p2=,例 输出命令行参数,main(int argc, char *argv) while(
15、argc1) argv +; printf(“%sn“,*argv); -argc; ,main(int argc, char *argv) while(argc0) printf(“%sn“,*argv+); ,1. 编译、链接test.c,生成可执行文件test.exe 2. 在DOS状态下运行(test.exe所在路径下),例如: C:TC test hello world!,运行结果:hello world!,运行结果:test hello world!,前提:#define n 10,第十一章 结构体,1、结构体的概念 2、结构体类型的声明 (关键字:struct) 3、结构体变量的
16、定义(三种形式) 4、结构体变量所占字节数=各成员所占字节数之和 5、结构体变量的引用:结构体变量.成员,例 struct student int num; char name20; char sex; int age; float score; char addr30; ; struct student stu1,stu2;,例 struct student int num; char name20; char sex; int age; float score; char addr30; stu1,stu2;,例 struct int num; char name20; char sex;
17、 int age; float score; char addr30; stu1,stu2;,第十一章 结构体,6、结构体数组的定义和使用 7、指向结构体变量的指针 结构体变量.成员 (*p).成员 p-成员 8、指向结构体数组的指针,例 struct student int num; char name20; char sex; int age; float score; char addr30; stu10,*p; p=stu;p+; stu1.age=(*p).age=p-age,第十一章 结构体,9、指针处理链表 链表结点结构 处理动态链表所需函数 链表的处理:建立、输出、插入、删除
18、10、共用体、枚举类型、typedef,例 union data int i; char ch; float f; ;,例: 1)enum weekdaysun,mon,tue,wed,thu,fri,sat; 2)enum colorred=2,yellow=4,blue=7; 3)enum week1sun,mon,tue=5,wed,thu,fei,sat; 4)enum em3 1,one=4,two,8;,例 声明结构类型 typedef struct aa int month; int day; int year;DATE; DATE a;struct aa a;,3. 若有定义:
19、 union data int i; float j; char s5; k; 则在Turbo C 2.0环境中sizeof(k)的值是()。,第十二章 位运算,1.位运算符:、,第十三章 文件(1),1.文件的分类:文本文件和二进制文件 2.文件类型指针:FILE *fp; 3.文件打开: fp=fopen(“文件名”,”打开方式”); if(fp=NULL) printf(“Cannot open file!n”); exit(0); ,第十三章 文件(2),4.文件的打开方式:r/rb、w/wb、a/ab 、 r+/rb+、w+/wb+、a+/ab+ 5.文件关闭:fclose(文件指针
20、); 6.文件读写(4组共8个函数):fgetc和fputc、fread和fwrite、fscanf和fprintf、fgets和fputs 7.文件测试函数:feof( ) 8.文件定位:fseek()、rewind()、ftell(),(4)读写函数。 fputc(c,fp); c=fgetc(fp); fread(buffer,size,n,fp); fwrite(buffer,size,n,fp); fprintf(fp,”%d,%f”,i,f); fscanf(fp,”%d,%f”,二、应掌握的算法(1),1.比较两/三个数的大小(两数互换) 一般方法(用中间变量和不用中间变量)和指
21、针方法 2.两/n个字符串比较大小的问题(两字符串互换) 3.求n个数的最大数或最小数(求最值) 4.求分段函数的值 5.百分制成绩换算为等级制成绩 6.分解一个整数的各位数字 7.求累加和或阶乘(一般循环方法和递归法),二、应掌握的算法(2),8.判断一个/多个数是否是素数(穷举法和筛选法) 9.求两/n个正整数的最大公约数和最小公约数 10.求序列的累加和 11.统计一/几串字符中字母、数字、空格和其他字符(归类统计) 12.猴子吃桃问题/水仙花数/同构数 13. n个数排升序/降序(冒泡法、选择法、插入法),二、应掌握的算法(3),14.折半查找法 15.将数组元素逆序存放 (序列逆置)
22、 16.二维数组(N*N)行列互(矩阵转置) 17.统计一行字符的单词个数 18. n个人的报数问题 19.进位计数制的转换问题,(一般方法、指针方法、结构体方法以及自定义函数),折半查找法(1),num=-3 -12 -3 0 1 7 9 22 -12 -3 0 1 7 9 22,折半查找法(2),num=-3 -12 -3 0 1 7 9 22 -12 -3 0 1 7 9 22,折半查找法(3),num= 22 -12 -3 0 1 7 9 22 -12 -3 0 1 7 9 22,折半查找法(4),num=22 -12 -3 0 1 7 9 22 -12 -3 0 1 7 9 22,三
23、、常见错误分析,P349 常见错误(结构体除外),作业常见错误汇编(1),1 输入语句的格式: scanf(“Please input n: d%“, n); 2 输出语句的格式: printf( “Please input n: %d“,作业常见错误汇编(2),7 字符数组的输入输出: char str10; scanf(“%s“, 9 使用库函数未使用include命令 10 自定义函数的类型 任何自定义函数均定义为int型(或不定义),作业常见错误汇编(3),12 分号和逗号的使用 if(xy); z=x; for(i=1,ic2)t=c1;c1=c2;c2=t;,作业常见错误汇编(4),15 在主调函数中未申明被调函数 16 变量初始化问题 int i,j,sum; sum=i+j; 17 关键字大小写、单引号/双引号的使用 18 字符常量的写法 空格 空字符 英文字母a 19 字符串的输入函数的使用(scanf/gets/getchar),作业常见错误汇编(5),20 求余、整除、实数相除的区别 % 1/4 1.5/4 21 函数的形参和实参类型不一致 22 结构体成员的引用 . 和 -的区别 23 书写的程序要完整,
链接地址:https://www.31doc.com/p-2098550.html