C语言复习
- 格式:doc
- 大小:151.00 KB
- 文档页数:18
C语言复习第二章一、标识符的命名规则:1、只能由英文字母、数字、下划线组成,且第一个符号必须是英文字母或下划线2、在C语言中,大小写敏感3、不能使用关键字二、后置++、前置++的执行过程m=n++ :m=n; n++;i=++j : j=j+1; i=j;三、运算符表达式(> >= < <= !=)表达式的值:1:(关系式成立)0;(关系是不成立)例:22>76 (值为0)73<98 (值为1)四、逻辑表达式(&& || !)表达式的值:1: (关系式成立)0:(关系是不成立)例:34>=25 && 1<=2 (值:1)15>=45 || 3<=6 (值:1)34<=25 && 1>=2 (值:0)15>=45 || 3>=6 (值:0)34 (值:1)说明:1、只要值不是0,就认为表达式是成立的2、关于&&运算,遇到0即停止运算例:a&&b&&c只在a为真时,才判别b的值;只在a、b都为真时,才判别c的值2、关于||运算,遇到1即停止运算例:a||b||c只在a为假时,才判别b的值;只在a、b都为假时,才判别c的值习题:设:int a=1;b=0;c=5;d=4;m=3;n=4;则执行下列逻辑表达式后,a,b,c,d,m,n?(1)、(m=a>b)&&(n=c>d) 解:(m=1,n=1)(2)、(m=a>b) || (n=c>d) (m=1,n=4)(3)、m=(b++||c++) (m=1,n=1,c=6)(4)、m=(++b||c++) (m=1,n=1,c=5)(5)、8<2&&3||2<4-!0 (值为1)五、复合赋值运算符m += a+b <=> m=m+(a+b)m -= a+b <=> m=m-(a+b)m *= a+b <=> m=m*(a+b)m %= a+b <=> m=m%(a+b)m /= a+b <=> m=m/(a+b)六、“,”表达式的运算过程题一:设:int a=2,b=4,c=6,x,y;则:x=a+b*3-c , y=a>b 后,求x y题二:设:int a=2,b=4,c=6,x,y;则:y=(x=a+b, x+c); 后,求x y题三:设:int a=2,b=4,c=6,x,y;则:y=x=a+b, x+c; 后,求x y答案(8,0 6,12 6,6)第三章一、函数的定义1、函数定义格式:类型标识符函数名(类型标识符形式参数表){函数体;}2、例如:float max(float x,float y){float z;if (x>y) z = x;else z = y;return z;}二、函数的调用例:子函数:float max(float x,float y){float z;if (x>y) z = x;else z = y;return z;}Main函数:void main(void){float max(float,float);float a,b;float c;scanf("%f%f",&a,&b);c=max(a,b);printf("max is%f",c);}三、函数的返回值语句1、函数返回值语句格式:return+表达式;2、函数通过return语句返回一个值给调用函数。
3、函数中可有多个return 语句。
4、返回值+<表达式>的类型为定义的函数类型,若return 语句中表达式类型与函数类型不一致,则转换为函数类型。
5、若无return 语句,遇函数的最后一个} 时,自动返回调用函数。
6、无返回值的函数,定义为void 类型,可使用return结束函数的执行。
案例:符号函数(有返回值)1 (x>0)对于函数y= 0 (x=0) 的c语言为:-1 (x<0)int sign(int x){if (x>0)return 1;if (x= =0)return 0;if (x<0)return -1;}案例:无返回值函数void swap(int x,int y ){ int temp;temp=x;x=y;y=temp;return;}四、函数值的调用1、C语言中,形参与实参的结合方式,即函数调用方式有两种:(传)值调用、传址调用。
2、值调用的过程:函数调用时,为形参分配单元,并将实参的值复制到形参中;调用结束,形参单元被释放,实参单元仍保留并维持原值3、特点:形参与实参占用不同的内存单元单向传递例一:值调用void main(void){ int x=7,y=11;printf("==original==\n") ;printf("x=%d\t",x);printf("y=%d\n",y);swap(x,y);printf("==in main==\n");printf("x=%d\t",x);printf("y=%d\n",y);}void swap(int a,int b){ int temp;temp=a; a=b; b=temp;printf("==in swap==\n");printf(“a= %d b=%d \n",a,b);}运行结果:==original==x=7 y=11==in swap==a=11 b=7==in main==x=7 y=11例二:从键盘输入一个整数n,计算y=1!+2!+3!+…+n!的值代码实现:#include<stdio.h>long fun(int i);main(){int n;long y;scanf(“%d”,&n);y=0;for(i=1;i<=n;i=i+1){y=y+factorial(i);}printf(“n=%d,y=%d”,n,y);}long fun(int i){long s_i;s_i=1;for(j=1;j<=i;j=j+1)s_i=j*s_i;return s_i;}例三:#include <stdio.h>#include<math.h>int fun(int a,int b){int n;while(a!=b){n=abs(a-b);a=(a>b)?b:a;b=n;}return a;}void main(){printf("%d\n%d\n",fun(9,15),fun(9,5));}答案:3 1五、函数的递归调用看书,书上内容不是太多,再书的最后,11章。
六、局部变量和全局变量局部变量只在特定的函数中起作用,全局变量在整个代码中其作用。
综合案例1:写出运行结果#include <stdio.h>int t( ){static int i = 100;i+=5;return i;}void main(void){printf("i=%d\n",t());printf("i=%d\n",t());} 答案:i=105 i=110综合案例2:#include<stdio.h>int g(int x,int y){ return x+y; }int f(int x,int y){{static int x=2;if(y>2){x=x*x;y=x;}else y=x+1;}return x+y;}void main(){int a=3;printf("%d\n",g(a,2));printf("%d\n",f(a,3));printf("%d\n",f(a,2));} 答案:5 7 8七、预处理指令作用:对源程序编译之前做一些分析合并等处理种类:宏定义预处理命令:#define文件包含预处理命令:#include条件编译预处理命令:#if--#else--#endif 等格式:“#”开头占单独书写行语句尾不加分号1、宏定义定义:以#define开头的预处理指令。
分类:不带参数宏定义格式:#define 宏名表达式例如:#define PI 3.1415926预处理过程:简单替换带参数宏定义格式:#define 宏名(形式参数) 宏串表达式例如:#define SQUARE(x) x*x预处理过程:宏展开(宏串表达式中形参用实参换,其它字符保留)、宏替换理解函数与宏定义函数的区别宏定义案例1:#define POWER(x) x*xx=4; y=6;z=POWER(x+y);则:宏替换后:z=x+y*x+y;一般写成:#define POWER(x)((x)*(x))宏替换后:z=((x+y)*(x+y));宏定义案例2:若有宏定义:#define S(x,y) x/y,则执行语句:Printf(“%d”,S(6+3,2+2));后的输出是:A 9 B. 2 C. 9.5 D. 2.252、文件包含功能:一个源文件可将另一个源文件的内容全部包含进来一般形式:#include “文件名”或#include <文件名>预处理过程:预编译时,用被包含文件的内容取代该预处理命令,再对“包含”后的文件作一个源文件编译八、顺序结构(不解释)九、选择结构两种选择:if .......else.....多种选择:方式一:if.......else if......else if.......else....方式二:Switch()case 1:...............break;case 2:...............break;...case n:................break;条件运算符:题一:设a=3,b=4,y则:y=a>b?a:b+1 结果?解:y=3>4?3:4+1 得y=5分析:若a>b则结果为a,反之结果为b+1.题二:设a=15,b=4,c=7,d=8;则:a>b?a:c>d?c:d 结果?(分析方法相同,答案15)十、循环结构1、分类:当型循环:while(条件){...........}例:while(i<=5){sum=sum+i;i=i+1;}直到型循环:do{.........}while(条件);例:do{sum=sum+i;i=i+1;} while(i<=5)FOR循环:for(条件;条件;条件){...........}例:for(i=1;i<=5;i++){sum=sum+i;}2、循环控制语句:break:用于提前结束循环continue:用于结束本次循环,循环体中Continue后的语句不再执行,进入下一轮的循环。