C语言课件:c复习-2012.ppt

上传人(卖家):罗嗣辉 文档编号:2088418 上传时间:2022-02-14 格式:PPT 页数:48 大小:223KB
下载 相关 举报
C语言课件:c复习-2012.ppt_第1页
第1页 / 共48页
C语言课件:c复习-2012.ppt_第2页
第2页 / 共48页
C语言课件:c复习-2012.ppt_第3页
第3页 / 共48页
C语言课件:c复习-2012.ppt_第4页
第4页 / 共48页
C语言课件:c复习-2012.ppt_第5页
第5页 / 共48页
点击查看更多>>
资源描述

1、C语言期末复习语言期末复习通知17周末考试(西部机房)16周周六晚上 18:00-20:00 结构与文件讲座 综15316周周日晚上 18:00-20:00 C语言竞赛(西部机房)一、一、 C语言基本组成结构及规则语言基本组成结构及规则1.基本数据类型基本数据类型2.输入输出输入输出3.选择选择4.循环循环5.数组数组6.函数函数7.指针指针8.结构体、共用体结构体、共用体9.文件文件10. 编译预处理编译预处理数据类型数据类型1.程序中使用的变量要先定义,后使用;先输入值,后引用。程序中使用的变量要先定义,后使用;先输入值,后引用。2. C语言中变量区分大小写。语言中变量区分大小写。3. 数

2、据类型分为:整型、单精度实型、字符型、长整型、双精度、数据类型分为:整型、单精度实型、字符型、长整型、双精度、构造类型。构造类型。 八进制整数:八进制整数:以以0 0开头数是八进制数开头数是八进制数 十六进制整数:十六进制整数:以以0 x0 x或或0X0X开头开头 字符常量:用字符常量:用单引号单引号括起来的一个字符。括起来的一个字符。 字符串常量字符串常量: :括在一对括在一对双引号双引号之内的字符序列或转义字符序列之内的字符序列或转义字符序列. . 字符型数据与整型数据之间可以通用字符型数据与整型数据之间可以通用. . 整型、实型、和字符型可以混合运算;一般类型的数据先转换为整型、实型、和

3、字符型可以混合运算;一般类型的数据先转换为标准型;不同类型的要先转换为相同类型。标准型;不同类型的要先转换为相同类型。 若赋值表达式右边表达式的值的类型与左边变量类型不一致,则若赋值表达式右边表达式的值的类型与左边变量类型不一致,则以左边变量的类型为准,将表达式的类型转换为左边变量的类型。以左边变量的类型为准,将表达式的类型转换为左边变量的类型。“/”除法运算符,当运算对象为整数时,做整除运算。除法运算符,当运算对象为整数时,做整除运算。在逻辑表达式的求解中在逻辑表达式的求解中,并非所有的逻辑运算符都被执行并非所有的逻辑运算符都被执行,当能确当能确定表达式的值时定表达式的值时,就不在继续执行其

4、它的运算就不在继续执行其它的运算.4. 在计算表达式值时:在计算表达式值时: (1)一个逻辑表达式中包含多个逻辑运算符,按)一个逻辑表达式中包含多个逻辑运算符,按 !-&-|顺序顺序 (2)关系运算符优先于逻辑运算符)关系运算符优先于逻辑运算符 (3)括号优先于算术运算符,算术运算符优先于关系运算符。)括号优先于算术运算符,算术运算符优先于关系运算符。 !-算术运算符算术运算符-关系运算符关系运算符-& |-赋值运算符赋值运算符5. 自增、自减运算符为自增、自减运算符为右结合性右结合性(即自右至左)。(即自右至左)。6.6.逗号运算符和表达式逗号运算符和表达式 其值为最后一个表达式的值。其值为

5、最后一个表达式的值。 a=3 a=3* *5,a5,a* *4,a+54,a+5 值?值?7.语言没有逻辑型数据,关系表达式语言没有逻辑型数据,关系表达式的真、假的真、假 是以是以 数值数值“”代表代表“真真”,以以“”代表代表“假假”。8.条件运算符格式:条件运算符格式: 表达式表达式 ?表达式表达式:表达式表达式数据类型数据类型规定:在程序中用到的数据,必须指定数据类型。 main() int a=-1,b=6,c; c=(+a=0); printf(“%d,%d,%dn”,a,b,c); 0, 6, 0 main() int a=-1,b=6,c; c=(+a=0); printf(“%

6、d,%d,%dn”,a,b,c); 0, 5, 1有关输入输出注意事项有关输入输出注意事项1. 1. 正确使用各种格式进行输入输出:正确使用各种格式进行输入输出:整型数据:整型数据: 输入:输入:%d %d 输出:输出:%d%d长整型:长整型: 输入:输入:%ld %ld 输出输出: %ld : %ld 实型数据:实型数据: 输入输入: %f : %f 输出输出 %f%f双精度实型:双精度实型: 输入输入: %lf: %lf或或%le%le输出输出 %f %f 单个字符:单个字符: 输入:输入:%c %c 输出输出: %c: %c字符串:字符串: 输入:输入:%s %s 输出输出: %s: %

7、s2. 2. 输入时输入时不能指定精度不能指定精度,不能,不能加换行符,加换行符,普通字符照原样输出。普通字符照原样输出。输入时建议不要在格式符之间加逗号。输入时建议不要在格式符之间加逗号。 数值与字符数据混合输入时不用空格。数值与字符数据混合输入时不用空格。3. 3. 注意格式规定注意格式规定 变量类型与格式符一致;输入加地址符,输出不加。变量类型与格式符一致;输入加地址符,输出不加。4. e4. e格式输出共格式输出共1313位,其中:整数位,其中:整数1 1位,小数点位,小数点1 1位,小数位,小数6 6位,位,指数部分指数部分5 5位(如:位(如: 1.234680e+002 1.23

8、4680e+002 ) )5.5.在使用在使用getchargetchar()()、gets()gets()输入数据时,注意应清除缓冲区的输入数据时,注意应清除缓冲区的内容。内容。fflush(stdinfflush(stdin);); 或多加一个getchar()。if 语句的三种形式语句的三种形式 . if (表达式表达式) 语句语句 例例: if(xy) printf(“ %d ”, x); else printf(%d,y); 3. if(表达式表达式1) 语句序列语句序列 else if (表达式表达式2) 语句序列语句序列 2 else语句序列语句序列 3 例例: if(xy) p

9、rintf(max=%dn,x+y); else if(x=y)printf(max=%dn,y); else printf(max=%dn,y); 选择结构选择结构switch语语句句 格式:格式:switch(表达式)表达式) case (常量表达式):语句块常量表达式):语句块; case (常量表达式):语句块常量表达式):语句块; case (常量表达式常量表达式m):语句块):语句块m; default :语句块:语句块n; 选择结构选择结构多个if 嵌套时,都为真时才执行。如下例:if(+i%2=0) if(+i%3=0) if(+i%7=0) printf(“%d”,i); 以

10、下程序的输出结果是: ( )main( ) int x , n; for( n=1; n50; n+) x=n; if(+x%2= =0) if(x%3= =0) if(x%7= =0) printf(“%d ”,n); A. 28 B. 27 C. 42 D. 41 41 main() int x; switch(x=1) case 0: x=5;break; case 1: switch(x=1) case 1: x=10;break; case 2: x=20;break; printf(“x%dn”,x); X=10注意:注意:表达式一定要用圆括号括起表达式一定要用圆括号括起 if x

11、*x-4*a*b*c=02. if后边不要加分号后边不要加分号 if(x=A&c=a&c=z) c=c-32; printf(c=%c,c);熟悉三种循环结构:while(表达式)(表达式) 语句语句 do 语句语句 while(条件表达式)条件表达式);for(表达式表达式1;表达式表达式2;表达式表达式3) 语句语句 允许嵌套,但要注意正确嵌套。允许嵌套,但要注意正确嵌套。循环结构循环结构数组数组1.1.数组下标从数组下标从0 0开始;开始; 如:如:intint a10; a10; 在使用时不能出现在使用时不能出现a10a10下标变量下标变量2.2.数组名是地址常量,不能被赋值;其值指向

12、首元素的地址。数组名是地址常量,不能被赋值;其值指向首元素的地址。 如:如:char s10; s+; char s10; s+; 错误错误3.3.只有定义时可以赋初值;只有定义时可以赋初值; char s18; s1=“abcdefg”; 错误错误4.4.一个字符变量只能存放一个字符,使用字符数组存放字符串。一个字符变量只能存放一个字符,使用字符数组存放字符串。定义字符数组时要比存放的字符多一个位置。定义字符数组时要比存放的字符多一个位置。char s=“This is a string”; 不能对字符变量赋一个不能对字符变量赋一个字符串;错误字符串;错误5.5.数组的输入输出要使用循环,不

13、能整体输入或输出。数组的输入输出要使用循环,不能整体输入或输出。 intint b10; b10; scanf(“%d”,b scanf(“%d”,b); ); 错误错误2. main()char s=abcdef;s3=0;printf(%sn,s);输出:abc1. main() char s=141141abct; char r= abc; printf(%d,%dn,strlen(s), strlen(r); A.9 ,7 B.12 ,7 C13,8 D14,9选择:A1.1.函数的类型是函数函数的类型是函数返回值返回值的类型的类型2.2.定义的类型与返回值类型不一致时,定义的类型与返

14、回值类型不一致时,以定义为准以定义为准3.3.不定义函数类型,系统认为是不定义函数类型,系统认为是intint。(VC+6.0(VC+6.0必须必须指定函数类型)指定函数类型)4.4.不需返回任何返回值时,应定义无类型不需返回任何返回值时,应定义无类型voidvoid。5.5.实参与形参需实参与形参需类型类型相同,相同,个数个数, , 顺序相同顺序相同6.6.形参在函数被调用时才分配存储空间形参在函数被调用时才分配存储空间7.7.实参在主调函数内有值,求值顺序是实参在主调函数内有值,求值顺序是从右向左从右向左8.8.实参与形参是实参与形参是单向单向的的值传递值传递9.9.如果实参与形参都是数组

15、名,如果实参与形参都是数组名,是是地址传递地址传递10.10.函数使用在定义之前,需要对函数使用在定义之前,需要对函数声明函数声明。程序功能:统计一个字符串中的字母、数字、空格和其它字符的个数。程序功能:统计一个字符串中的字母、数字、空格和其它字符的个数。#include stdio.hmain () char s180;int a4=0; int k; void fun(char s,int b); gets(s1); fun(s1,a); puts(s1); for(k=0;k4;k+) printf(%4d,ak);void fun(char s,int b) int i; for (i

16、=0;si!=0;i+) if (a=si&si=z)|(A=si&si=0 & si=0;i-) printf(%d ,ai); main()int n=5;scanf(%d,&n); transfer(n);值传递例:利用递归方法,编写函数计算例:利用递归方法,编写函数计算x的的n次方。次方。#include “stdio.h”double f(double x,int n)double s; if(n0) s=x*f(x,n-1);else if(n=0) s=1;return s;main()int n;double x,m;printf(Input X:n);scanf(%lf,&x

17、);printf(Input N:n);scanf(%d,&n);m=f(x,n); printf(Answer=%lfn,m);递归变量的作用域与存储方法变量的作用域与存储方法1.1.局部变量(内部变量)局部变量(内部变量) 定义:在函数内部定义:在函数内部(包括主函数)或复合语句中(包括主函数)或复合语句中定义定义的变量,的变量,作用域作用域只能在本函数只能在本函数或定义它的复合语句或定义它的复合语句内使用。内使用。 如:形参,普通变量。如:形参,普通变量。 2. 2. 全局变量全局变量定义:定义:在函数之外定义的变量。在函数之外定义的变量。使用范围:使用范围:可以为本文件中所有的函数可以

18、为本文件中所有的函数使使用。用。作用域:作用域:从定义变量的位置开始到本文件结束从定义变量的位置开始到本文件结束。在同一个文件中,当全局变量与局部变量同名时,在在同一个文件中,当全局变量与局部变量同名时,在局部变量的作用域内,全局变量不起作用。局部变量的作用域内,全局变量不起作用。3.3.变量的存储方法变量的存储方法 自动变量、自动变量、 静态局部变量、全局变量、寄存器变量静态局部变量、全局变量、寄存器变量例:例:#include staic int x=10;main() int x=3; void f(); f(); x-; printf(“x=%d”,x);void f() x+;A.1

19、0 B.2 C.11 D.3x=2例:阅读下列程序,给出程序运行结果。例:阅读下列程序,给出程序运行结果。#include stdio.h“int fun(int x, int y) static int m=0, i=2; i+=m+1; m=i+x+y; return m; main() int a=2,b=3; printf(%d, , fun(a,b); printf(%dn, fun(b,a); 运行结果8,17编译预处理带参数的宏替换照原样代入带参数的宏替换照原样代入 ,不要加括号。,不要加括号。指针指针 定义定义 int *p;指向整形量的指针。指向整形量的指针。 int *p

20、;指针数组,每个元素指向整型量。指针数组,每个元素指向整型量。 int (*p) ;一个指针,指向一维整型数组。一个指针,指向一维整型数组。 int *p( );一个函数,返回指向整型的指针。一个函数,返回指向整型的指针。 int (*p)( );一个指针,指向返回值为整型数的函数。一个指针,指向返回值为整型数的函数。 int *p;二级指针。二级指针。 指针在使用前一定要赋地址值。指针在使用前一定要赋地址值。 优缺点:优缺点: 快速灵活、可实现动态存储分配;易出大错。快速灵活、可实现动态存储分配;易出大错。指针指针字符数组与字符指针:字符数组与字符指针: 如:如:char s=“This i

21、s a string”; char *str= “This is a string”;可以进行如下操作:可以进行如下操作:str=str1; 改变指针改变指针 str 的指向;的指向;str=s; 指针指针str 指向数组指向数组s;strcat(s,str); 将串将串str 连接到连接到s的后面;的后面;char *str; str= “abcdefg”; 指针指针str 指向字符串指向字符串;char s1=a,b,c,d,e;不能进行的操作:不能进行的操作: s+; 不能对数组名进行自加运算;不能对数组名进行自加运算; char s=“This is a string”; 不能对字符变

22、量赋一个字符串;不能对字符变量赋一个字符串; s=str; 不能对数组名进行赋值;不能对数组名进行赋值; strcpy(str,s); 不能对不能对str进行串复制进行串复制 char s1; s1=“abcdefg”; 不能对数组名进行赋值;不能对数组名进行赋值; char *s1=a,b,c,d,e;不能对指针进行单个字符的赋值不能对指针进行单个字符的赋值字符数组s,存放了一个字符串定义字符指针str ,同时初始化,使其指向字符串的首地址。例:若有说明:例:若有说明: intint n=2, n=2,* *p=&n,p=&n,* *q=p;q=p;则以下非法的赋值语句是()。则以下非法的赋

23、值语句是()。A.A. * *p=p=* *q;q;B.B. n= n=* *q;q;C.C. p=n; p=n;D.D. p=q; p=q;C1. 程序的输出结果是程序的输出结果是_。(备选答案中备选答案中U表示空格)表示空格) #include #include void fun(char *s) char a10; strcpy(a,string); s=a; main() char *p; fun(p); printf(%sn,p); A.stringUUU B.string C.stringUUUU D.不确定的值不确定的值指针指针D2. 程序的输出结果是程序的输出结果是_。 #in

24、clude void fun(float *p1, float *p2, float *s) s=(float *)malloc(1,sizeof(float); *s=*p1+*(p2+); main() float a2=1.1,2.2,b2=10.0,20.0,*s=a; fun(a,b,s); printf(%fn,*s); A. 11.100000 B. 12.100000 C. 21.100000 D. 1.100000指针指针D3. main( ) int s10=10,9,8,7,6,5,4,3,2,1, *p=s, sum=0; for( ;ps+10; p=p+2) sum

25、=sum+*p; printf(“nsum=%d”, sum); 指针指针sum=304. 关于参数传递(简单变量)关于参数传递(简单变量) 值传递值传递void fun(int x,int y) int t; t=x; x=y; y=t; printf(%d %d”,x,y);main() int a=3,b=6; fun(a,b); 地址传递如何修改?地址传递如何修改?void fun(int *x,int *y) int t; t=*x; *x=*y; *y=t; main() int a=3,b=6; fun(&a,&b); printf(%d %d”,a,b); 5. 关于参数传递关

26、于参数传递(数组元素排序数组元素排序)/ 选择法排序选择法排序void fun(int array, int n) int i, j, k, t; for (i=0; in-1; i+) k=i; for (j=i+1; jn; j+) if (arrayjarrayk) k=j; if (k!=i) t=arrayk; arrayk=arrayi; arrayi=t; main() int i,a6=2,1,5,4,3,6; fun(a,6); for (i=0; i*p2) p1=p2 ; temp = *p; *p = *p1; *p1 = temp; main() char s1=“a

27、bcdef”; fun(s1); printf(%s ”,s1); 6. 正确使用指向字符串的指针变量正确使用指向字符串的指针变量#include stdio.hmain() int i; char *a1=abcde; /*ERROR*/ for(i=0;i=5;i+) /*ERROR*/ printf(%sn,a1); 答案答案:1)for(i=0;i成员名成员名结构体结构体共用体类型变量与结构体类型变量共用体类型变量与结构体类型变量 结构体类型变量所占内存长度是各成员占的内存结构体类型变量所占内存长度是各成员占的内存长度之长度之和和。 共用体类型变量所占内存长度等于共用体类型变量所占内存

28、长度等于最长的成员的长度最长的成员的长度。每一瞬时只有一个成员起作用每一瞬时只有一个成员起作用 ;共用体变量中起作用的;共用体变量中起作用的成员是最后一次存放的成员;成员是最后一次存放的成员; 成员成员分量分量之间是之间是相互联系相互联系的,所进行的操作相互依赖。的,所进行的操作相互依赖。 都要先定义类型,再定义变量。都要先定义类型,再定义变量。 union 共用体名共用体名 成员表列成员表列 变量表列;变量表列; 设有以下语句:设有以下语句:struct st int num; char s10; a3=5, “How”, 7, “are”, 9, “you!”, *p=a; 则表达式则表达

29、式_D_的值是的值是6。A. p+-num B. p-num+ C. (*p).num+ D. +p-num结构体、结构体、共用体共用体定义文件类型指针定义文件类型指针: FILE *fp;文件打开文件打开: fp=fopen(文件名文件名,使用文件方式);使用文件方式);从文件读从文件读: fscanf(fp,”格式字符串格式字符串”,输入表列,输入表列); fread(buffer, size, count, fp);向文件写向文件写: fprintf(fp,”格式字符串格式字符串”,输出表列,输出表列); fwrite(buffer,size,count, fp);文件关闭文件关闭: f

30、close (fp);文件文件/* 编写程序完成菜单功能。提供三种选择编写程序完成菜单功能。提供三种选择*/#include stdio.hvoid narcissus() /* 求水仙花数*/int k,a,b,c,d;for(k=100;k1000;k+) a=k/100; b=k%100/10; c=k%10; d=a*a*a+b*b*b+c*c*c*c; if(d=k) printf(“%5dn”,k); void prime() /* 求素数 */int m, i, k; scanf(%d,&m); k=m-1; for(i=2; i=k+1) printf (%d is a pri

31、me numbern, m); else printf(%d is not a prime numbern, m);void fabonacci() /* 求费波那切数列的前n项*/ long f1,f2; int k,n;printf(“请输入一个数:); scanf(%d,&n); f1=f2=1; for(k=1;k=n;k+) printf(“%8d%8d”,f1,f2); if(k%20) printf(“n”); f1=f1+f2; f2=f1+f2; main() int choice; do printf( =功能选项=n); printf(“ 1求水仙花数 n); print

32、f(“ 2求素数n); printf(“ 3求Faibonacci数列 n); printf( 0-退 出 n); printf(请选择: ); scanf(%d,&choice); switch(choice) case 1: narcissus(); break; case 2: prime(); break; case 3: fabonacci(); break; case 0: break; while(choice!=0); printf(谢谢使用! n);二、考试注意事项1.认真审题,完整答题。认真审题,完整答题。2.程序填空题在指定的空中填写。删除标记横线,注程序填空题在指定的空

33、中填写。删除标记横线,注意保存,编译,运行。意保存,编译,运行。3.程序改错题在程序改错题在*error*行下一行修改,注意保行下一行修改,注意保存,编译,运行。存,编译,运行。4.程序设计题必须在答题区编写,不要删除答题区标程序设计题必须在答题区编写,不要删除答题区标记。注意保存,编译,运行。要使用函数的参数。记。注意保存,编译,运行。要使用函数的参数。5.调试过程中发生死机,结束调试过程中发生死机,结束VC任务,继续答题或任务,继续答题或重答。重答。6.出现问题请监考老师输入密码重新进入。出现问题请监考老师输入密码重新进入。7.交卷后提交成功并看到成绩后离开。交卷后提交成功并看到成绩后离开

34、。8.最终成绩为:期末成绩最终成绩为:期末成绩80%+期中期中+平时成绩。平时成绩。/* 程序填空题目:本程序的功能是输入一段数字后,将输入的数字颠倒输出。 请填空。-*/#include stdio.hmain() int numb,rdigit; scanf(%d,&numb); /* fill*/ while() rdigit=numb%10; /*fill*/ printf(%d,); numb/=10; printf(n);/*【程序改错】功能:求1到30的阶乘的和。-*/#include stdio.hvoid fun() int n,j; float s=0.0,t=1.0; f

35、or(n=1;n=30;n+) /*error*/ s=1; for(j=1;j=n;j+) /*error*/ t=t*n; /*error*/ s+t=s; /*error*/ printf(jiecheng=%dn,s);main() fun();/*-【程序设计】-功能:统计出若干个学生的平均成绩,最高分以及得最高分的人数。例如:输入10名学生的成绩分别为 92 87 68 56 92 84 67 75 92 66 则输出平均成绩为77.9, 最高分为92,得最高分的人数为3人。-*/#include stdio.hfloat max=0;int j=0;float fun(float

36、 array,int n) /*Program*/ /* End */yzj() FILE *IN,*OUT; float iIN10,iOUT; int iCOUNT; IN=fopen(in.dat,r); if(IN=NULL) printf(Please Verify The Currernt Dir.It May Be Changed); OUT=fopen(out.dat,w); if(OUT=NULL) printf(Please Verify The Current Dir. It May Be Changed); for(iCOUNT=0;iCOUNT10;iCOUNT+)

37、fscanf(IN,%f,&iINiCOUNT); iOUT=fun(iIN,10); fprintf(OUT,%f %fn,iOUT,max); fclose(IN); fclose(OUT);main( ) float a10,ave; int i=0; for(i=0;i10;i+) scanf(%f,&ai); ave=fun(a,10); printf(ave=%fn,ave); printf(max=%fn,max); printf(Total:%dn,j); yzj();提示:在使用提示:在使用getchargetchar()()、gets()gets()输入数据时,注意应清除缓

38、输入数据时,注意应清除缓冲区的内容。冲区的内容。fflush(stdinfflush(stdin);); 或多加一个getchar()。#include #include struct ima char s10; char n10; int g;int main() struct ima student2; int i; for(i=0;i2;i+) printf(输入第%d位学生信息:n,i+1); gets(studenti.s); gets(studenti.n); scanf(%d,&studenti.g); getchar(); for(i=0;i2;i+) printf(输出第%d位学生信息:n,i+1); puts(studenti.s); puts(studenti.n); printf(%d,studenti.g); printf(n); return 0; 祝同学们期末复习愉快,取得好成绩!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(C语言课件:c复习-2012.ppt)为本站会员(罗嗣辉)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|