




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C+第二部分 结构化程序设计E_mail:C+语言程序设计1强化训练安排:计算机基础总结模板结构化程序设计语法及算法 包含指针与链表 面向对象程序设计语法及算法江苏省二级上机分析国家二级理论试卷分析江苏省二级理论试卷分析总结、复习 2强化训练目的:加强程序设计基础知识掌握与C+基本编程能力的培养。包括基本语法和基本算法。 掌握指针及指针的应用。 掌握面向对象程序设计几个要素:封装与隐藏、继承和派生、多态、静态成员和友员函数。掌握运算符重载真正意义及实现。掌握面向对象程序设计的基本方法。为国家和省二级做准备。3第二部分 结构化程序设计一、表达式及优化和相关的副作用1.字符何时是字符何时是数字?
2、couta+10char(a+10);107 k char a=A; couta+10char(a+10); 75 K char a=“I am a student.”; couta*aa+5*(a+5);I am a student I a student a 42.字符常量使用转义序列时。 84 (错!) 和 400 (是0)3.数据类型转换 类型转换:自动类型转换和强制类型转换两种。自动类型转换:原则是精度低的往精度高的转换(1) int a=5,b=4,c=3,d;d=a*bc-1.5+a; 结果是:20/3-1.5+97,d的值是101。(2) int j,j;float x,y;
3、x=(i=4.8)+(j=5.9);第二部分 结构化程序设计5强制类型转换 强制类型转换有两种格式: () 或 () 例(1): (float*)5000 强制把整数5000转为地址。 例(2): float(100)转为单精度。 注意: a.第二种格式又称类型构造。 b.强制类型转换是园括号运算符的一种。 c.园括号运算符有三种:强制类型转换、类型构造、函数调用。 d.当数据类型(包括基本数据类型或导出数据类型)在园括号中或后跟园括号,注意数据转换。第二部分 结构化程序设计6第二部分 结构化程序设计(1)设有说明“int x=10,y=4,f;float m;”,执行表达式“f=m=x/y;
4、”后,f,m的值为 D 。 A.2,2.5 B.3,2.5 C.2.5,2.5 D.2,2.0(2)数学式(3xy)/(5ab),其中x和y是整数,a和b是实数, 在C+中对应的正确表达式是 D 。 A.3/5*x*y/a/b B.3*x*y/5/a/b C.3*x*y/5*a*b D. 3/a/b/5*x*y7第二部分 结构化程序设计4.逻辑表达式优化及副作用 在C+中,在求逻辑表达式的过程中,一旦能确定逻辑表达式的值时,就不必再逐步求值了。这就是逻辑表达式的优化。 例(1):int a=0,b=4,c=5,d,e; d=a&b+&-c; e=a|b+|-c; 例(2):int a=2,b=
5、4,c=5,d,e; d=a&b+&-c; e=a|b+|-c;8第二部分 结构化程序设计(1)设有说明“int a=3,b=5,m;”, 则执行表达式“m=a=3&a+b8;”后,m的值为 0 。(2)设有说明“int x=5,y=7,z=8;”, 则执行表达式“z+=x+|y+|+z;”后,x,y,z为 A 。 A.6,7,9 B.6,8,10 C.6,8,8 D.6,8,1(3)设有说明“int a=15,b=17,c;”, 执行表达式“c=a|(b+=b);”后,a,b,c的值为 A 。 A.15,17,1 B.1,34,35 C.15,34,1 D.15,17,159第二部分 结构化
6、程序设计二、三种基本结构主要是分支和循环1.条件语句 if条件语句嵌套时,else语句总是与最近的、没有与else配对的if语句配对。 例: if() if() else ()2.开关语句(switch) 要注意语句格式、语法和break语句的作用。 注意:=和=混淆。10第二部分 结构化程序设计3.循环结构语句 C+中循环结构语句有:while()、dowhile()、和for()三种循环语句。 循环语句掌握的内容是: a.语句格式、语法,for语句中三个表达式的作用和执行时的顺序。 b.进入循环前给有些变量如何提供初始化; c.输出结果的时机:在循环体内还是循环结束后输出。 d.循环语句和
7、break,continue语句。11第二部分 结构化程序设计(1).循环语句“for(int x=0,y=0;y!=100|x10;)x+;”,执行的循环次数是 A 。 A. 无限次 B. 10 C. 11 D. 100(2)有以下程序段:int k=0;while(k=1)k+;执行的循环次数是 C 。 A.有语法错,不能执行 B.执行1次 C.无限次 D.一次也不执行(3)以下程序段的输出结果是 yes 。 int a=1,b=3,c=5; if(c=a+b)cout“yes” else cout“no”;12第二部分 结构化程序设计(4)以下程序段的输出结果是 20 0 。 int x
8、=10,y=20,t=0; if(x= =y)t=x;x=y;y=t; coutxtyn;(5)执行以下程序段时,输出 A 。int s1=0,s2=0,s3=0,s4=0;for(int t=1;t=4:s1+;break; case t=3:s2+; default: s4+; couts1,s2,s3,s4n; A.语法错,编译不通过B. 1,1,1,2C. 1,2,3,2D. 1,1,2,213第二部分 结构化程序设计(6)以下程序运行后的输出结果是 3,3 。#includevoid main() int k=4,n=0; for(;nk;) n+; if(n%3!=0)contin
9、ue; k-; coutk,n; 14第二部分 结构化程序设计三、函数1. 函数的基本知识(1).函数定义 函数定义时,有返回值要注意函数的返回值类型与return语句后的表达式类型相一致,函数没有返回值时(void),则用 return ;语句。 函数可以嵌套调用,但不可以嵌套定义。在一个函数的函数体中定义另一个函数是非法的。15第二部分 结构化程序设计(2).函数调用 调用函数时,实参和形参要求一一对应。 函数调用有两种:作为表达式的函数调用和函数调用语句。对于没有返回值的函数调用只能通过函数调用语句实现。(3).函数调用参数传递 参数传递有三种:值传递、地址传递和引用传递。16第二部分
10、结构化程序设计(4).作用域(难点)与存储类 在C+中,作用域共分为五类:块作用域;文件作用域;函数原型作用域;函数作用域;类作用域。 局部变量:在一个函数内部定义的变量或在一个块中定义的变量称为局部变量。 全局变量:在函数外定义的变量或用extern说明的变量称为全局变量。全局变量的作用域称为文件作用域,即在整个文件中都可以访问。17第二部分 结构化程序设计(1)设有函数定义调用语句“f(e1,e2),(e3,e4,e5);”,则实参个数是 A 。 (A) 2 (B) 3 (C) 4 (D) 5(2)下列函数中对调用它的函数没有起到任何作用的是 C 。 (A) void f1(double
11、&x)-x; (B) double f2(double x)return x-1.5; (C) void f3(double x)-x; (D) double f4(double *x)-*x;return *x;18第二部分 结构化程序设计(3)以下程序输出的第一行是 0 1 2 3 4 第二行是 15 。#include (作用域)int k;void main(void) k=10; for(int i=0;i5;i+) int k;k+=i;/由于重新定义变量k,所以就有不同的作用域 coutk ;k+;:k+;coutnkn;19第二部分 结构化程序设计2. 递归函数 在利用递归方法
12、求值时,必须注意三点: 1.递归的公式; 2.递归的结束条件; 3.递归的约束条件。 关键是找到递归公式和递归的结束条件。 递归函数在调用时分两部分:递推和回归。20第二部分 结构化程序设计(1).以下程序的输出结果是(vrg )。#includevoid func2(int i);char s=“verygood!”void func1(int i) coutsti;if(i3)i=+2;func2(i);void func2(int i) coutsti;if(i3)i=+2;func1(i);void main() int i=0;func1(i);21第二部分 结构化程序设计(2).以
13、下程序的输出结果是( 15 )。#includelong fib(int n) if(n2) return(fib(n-1)+fib(n-2); else return 5*n;void main() coutfib(3);22第二部分 结构化程序设计(3)以下程序输出的第一行是 1 1 第二行是 4 1 最后一行是 x=10 。#includevoid fun(int n,int *s) int f1,f2; if(n=1|n=2)*s=1; else fun(n-1,&f1);fun(n-2,&f2); *s=2*f1+f2+1; coutf1tf2n;void main(void)int
14、 x;fun(4,&x);cout”x=”xn;23第二部分 结构化程序设计(4)以下程序输出的结果是 dcba 。#includevoid show(char *s)if(*s)show(s+1);cout*s;void main(void) show(“abcd0efg0hij”); coutn;24第二部分 结构化程序设计(5)以下程序输出的第一行是 123 第二行是 321 第三行是 123 。#includevoid p1(char s,int i) if(si!=0)p1(s,i+1); coutsi;void p2(char s,int i) if(si!=0)p2(s,i+1)
15、; coutsi;void main(void) char str=”123”;coutstrn; p1(str,0);coutn; p2(str,0);coutn;25第二部分 结构化程序设计3.重载函数 定义的重载函数必须具有:相同的函数名但具有不同的参数个数或不同的参数类型。 调用重载该函数时,将根据实参的数据类型和重载函数的形参匹配,确定调用其中的一个重载函数。26第二部分 结构化程序设计4.静态变量 静态类型变量有确定的初值。静态类型变量对全局变量和局部变量有不同的含义。 静态类型变量只能初试化一次。当局部变量使用静态类型变量时,其作用将保存函数的运行结果,以便下次调用函数时,能继续
16、使用上次计算的结果。但不在变量的作用域时,不能直接使用,确需使用时,可通过变量的地址取值(即指针)。 当全局变量使用静态类型变量时,表示所说明的变量仅限于这个源程序文件内使用。27第二部分 结构化程序设计(1)以下程序输出的结果是 i=105 i=110 。 #include int t() static int i=100; i+=5; return i; void main(void) couti=t()n; couti=t()n; 28第二部分 结构化程序设计(2)以下程序输出的结果是 i=105 105 i=105 110 。 #include int t(int *p) static
17、 int i=100;*p=&i; i+=5; return i; void main(void) int i,*p;i=t(&p); couti=it *pn; t(&p); couti=it *pn; 29第二部分 结构化程序设计(3)以下程序输出的第一行是 20 ,第二行是 400 。#includeint f(int x) static int u=1; x+=x;return u*=x;void main(void) int x=10;coutf(x)n;coutf(x)n;30第二部分 结构化程序设计(4)以下程序输出的第一行是 21 ,第二行是 53 。#includeint f
18、(void) static int a,b=10,c=1; a+=b;b+=c;return c=a+b;void main(void) coutf()n;coutf()n;31第二部分 结构化程序设计四、编译预处理指令 编译预处理指令包括三方面的内容:文件包含、宏指令和条件编译,其重点是宏指令-带参数的宏定义。 注意:在宏调用时,将不作任何语法检查,也不做任何计算,只作简单替换。32第二部分 结构化程序设计(1)若有宏定义: #define N 2 #define Y(n) (N+1)*n)则执行语句“z=2*(N+Y(N+2);”后,z的值为 20 。(2)若有宏定义: #define T
19、(x,y,z) x*y*z/4则表达式“z=T(3+4,2*4,4+4);”后,z的值为 132 。33第二部分 结构化程序设计(3)若有宏定义: 则 B 。 #define M(a,b) a*b;/E int x=M(3+4,5+6),y;/F y=M(3,4); /GA.编译时,E行语法错 B.编译时,F行语法错C.编译时,G行语法错 D.编译时,F行和G行语法错(4)若有宏定义: #define P(x,y) x/y #define PP(a,b) a*b int c=P(2+3,2+3)+PP(2+3,2+3);则c的值为 17 。34第二部分 结构化程序设计(5).编译以下程序时,结
20、果是 B 。#include /第1行#define aa 123; /第2行void main(void) /第3行 coutaax; float z,yx=1,2,3,4,5,6,7,8; /A z=y3; /B A.z的值为4 B.z的值为3 C.B行语句错 D. A行语句错38第二部分 结构化程序设计(3)下列数组定义中错误的是 B 。A.char s1a; B. char s26=”string”;C.static int a4=1; D. char *p=“A”,”B”,”C”;(4)下列数组定义中,正确的是 C 。 A.int i=100,ai; B. int j;j=100;i
21、nt bj; C.const int i=20;int yi; D. int k;int mk;(5)要定义数组A,使得其中每个元素的数据依次为: 3、9、4、8、0、0、0,错误的定义语句是:A. int A=3,9,4,8,0,0,0; B. int A7=3,9,4,8,0,0,0; C. int A=3,9,4,8; D. int A7=3,9,4,8;39第二部分 结构化程序设计(6)若有定义:int a=0,1,2,3,4,5,6,7,8,9,*p=a,i;其中i在09范围,则对a数组元素不正确的引用是 D 。 A. ap-a B. *(&ai) C. pi D. a10(7)设有
22、数组定义:char array=“China”;则数组array占用空间数为 6 。(8)以下程序段的输出结果是 9 。 char s=“141141abct”; coutstrlen(s);(9)设有语句char s=“Rep0Ch”;int m=sizeof(s),n=strlen(s); 则m的值是 7 ,n的值是 3 。40第二部分 结构化程序设计六、指针、引用和函数1.指针 指针变量的访问有两种形式:访问指针变量的值和访问指针的内容。 指针可执行的运算有三种:赋值运算、关系运算和算术运算。 指针变量+,-,*,&之间的混合运算, *p1+、*+p1、(*p1)+、+*p1 。41第二
23、部分 结构化程序设计2.指针和函数 主要掌握参数传递是按地址传递。3.引用和函数 主要掌握参数传递是按引用传递。42第二部分 结构化程序设计#includevoid swap1(int *p1,int *p2) /利用指针类型 int t;t=*p1;*p1=*p2;*p2=t;void swap2(int &p1,int &p2) /利用引用类型 int t;t=p1;p1=p2;p2=t;void main(void) int x,y; int a,b; coutxy; swap1(&x,&y); coutab; swap2(a,b); coutx=xty=yn; couta=atb=bn
24、;43第二部分 结构化程序设计七、指针和数组1.指针和一维数组假设有:int a10,*point;point=&a0;总结:(1).数组名等同于数组的第0个元素的地址,也是数组的起始地址。(2).当指针变量point指向数组a的第0个元素后,则point+i等同于a+i,为ai的地址。(3).当指针变量point指向数组a的第0个元素后,则*(point+i)、*(a+i)、ai、pointi和*&ai都表示元素ai。 注意:point+允许,但a+不允许。44第二部分 结构化程序设计2.指针与二维数组要注意区分元素地址和行地址。例:假设有数组:int a44,*point;第0行第0列的元
25、素地址:a0,&a00,*&a0,*a 等。第0行的行地址:&a0,a 等。Point指针变量只能存放元素地址值。45第二部分 结构化程序设计(1)以下程序输出的第一行至第三行分别是 1 1 2 、 3 5 8 、 13 21 34 。#includevoid f(int *q1,int *q2,int *q3) *q3=*q1+*q2;void main(void) int i,j,a33=1,1,*p1=a0; int *p2=a0+1,*p3=a0+2; for(i=2;i9;i+)f(p1+,p2+,p3+); for(i=0;i3;i+)for(j=0;j3;j+) coutaijt
26、; coutn; 46第二部分 结构化程序设计3.指针和字符串 当字符串和指针结合在一起,使用起来就特别灵活。在各类考试中经常会出现相关的题目。 (1)(完善程序题)以下程序的功能是:输入两个字符串,把这两个字符串拼成一个新的字符串,输出拼接后的字符串。47第二部分 结构化程序设计#includechar *stringcat(char *s,char *from)/实现拼接 char *p= to ; /把form拼接到to后面 while(*to+); to- ; while( *to+ =*from+) ;return p;void main(void)char s1200,s2100;
27、 cout“输入第一个字符串:”;cin.getline(s1,100); cout“输入第二个字符串:”;cin.getline(s2,100); cout“拼接后的字符串为:”stringcat(s1,s2); coutn; 48(2)下列程序中函数insertstr的功能是:在字符串str中所有出现子串str1的后面插入子串str2。如本程序的输出为:“I am a student too.You are a student too.He is a student too.”#include#includechar *insertstr(char *str,char *str1,char
28、 str2) char *p,*p1,*q1,*t1; int i,len2; if(*str=0| *str1=0| *str2=0) return str; len2=strlen(str2); p=str; t1=str2;49 while(*p!=0) p1=p;q1=str1; while(*p1=*q1& *q1 ) p1+;q1+; if(p!=p1&*q1=0) p= p1 ;while(*p1+!= 0); for(;p1=p;p1-) *( p1+len2 )=*p1; for(i=0;*(t1+i)!=0;i+) *p+=*(t1+i); p+ ; return str;
29、50第二部分 结构化程序设计void main(void) char line80=“I am a student.You are a student.He is a student.” coutinsertstr(line,“student”, “too”) n;51第二部分:程序构造方法 一、C+的程序结构 用C+解决实际问题时,通常是通过项目project来实现,一个项目可以有多个程序文件,当然简单的时候,可以是一个程序文件。程序文件是以函数为单位叠加起来的,任何一个C+项目必须有且只能有一个main()函数。main()函数是C+程序执行时的入口,其他函数都是具有独立功能的一部分程序,
30、由main()函数或其他函数调用。项目project是一个容器。52 在程序设计过程中,对于功能相对独立且重复的功能,可以通过一个自定义函数来实现。函数定义需要先定义后调用,但调用函数在前,函数定义在后时,需要使用函数原型说明。在函数定义过程中,特别注意形参和实参、返回值类型和retutn语句后的表达式、有无返回值和函数调用形式等之间的配合。 函数是由语句构成。第二部分:程序构造方法53 计算机语言有三种基本结构语句:顺序、分支、循环,这是构成函数的主要语句 。 在程序实现过程中,这三种基本结构不会单独存在,总是相互结合的。特别需要注意:在满足条件需要通过多条语句实现功能时,需要使用复合语句。
31、 在处理实际问题时,数组是常用的数据类型,如排序、查找等都离不开数组。 指针为我们访问数据提供了另外一种方法,指针的使用非常灵活,多样化和抽象性是我们掌握的难点。第二部分:程序构造方法54函数定义与调用的三个要点:(1).检查实参与形参是不是对应(包括顺序、个数和数据类型);(2).函数定义中,函数的返回值类型与return 语句中的表达式类型是不是对应? (包括void情况)(3).函数如何调用?如果函数定义时,没有返回值,则调用函数时,只能用函数调用语句实现。第二部分:程序构造方法55利用递归方法求值时,关键是: 1. 找到递归的公式; 2. 确定递归的结束条件。必须注意: a.递归有递推
32、和回归两个方面。 b.每次调用结束,回归是必须返回原来调用的地方继续执行。第二部分:程序构造方法56二、常用算法1.数组与排序 排序总是和数组结合在一起使用,排序的方法很多,选择排序、交换排序、冒泡排序等。2.数组与查找 查找也往往和数组结合在一起使用,查找的方法也很多,顺序排序、折半查找等。第二部分:程序构造方法57第二部分:程序构造方法 【数组与排序举例】 排序应该包括三个处理部分,定义数组及提供数据、排序、输出,除定义数组外(为了实现数据传递需要在main()函数中定义),上面的三个部分都有自己独立的功能,因此可以用函数来实现。函数实现时,要注意参数和返回值的作用。这两者都是在函数调用过
33、程中,交换信息作用,但两者有本质区别。参数的三种传递也有本质区别。(举例讲解区别)58 #include void input(int a) for (int i=0;ibi; void sort(int a10) int t,i,j; for (i=0;i9;i+) for(j=i+1;jaj) k=ai;ai=aj;aj=a; void output(int a) for (int i=0;i10;i+)coutbit; coutn; 59第二部分:程序构造方法 void main(void) int a10; cout输入10个整数:n;input(a);sort(a);coutnext;/p2指针指向下一个结点 p2-next=p1; /把p1指
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 萝卜书摘婚后协议书
- 代写合伙人合同协议书
- 2025年遵义旅游知识竞赛试题及答案(共290题)
- 2025年高考语文文言文阅读满分技巧
- MySQL高可用性方案解析试题及答案
- 高中生物选修三模块检测卷:2025年秋季学期期末复习重点试题解析
- 内孔磨削技术培训
- 护理布置睡眠环境
- 初中物理第二章 运动与能量综合与测试习题
- 2025年注册计量师(一级)计量专业模拟试题:测量误差案例分析及误差分析案例分析
- 驻足思考瞬间整理思路并有力表达完整版
- 《艺术概论》章节测试及答案
- 普通诊所污水、污物、粪便处理方案及周边环境情况说明
- 阑尾腹腔镜下阑尾切除术护理查房
- QC小组培训教材流程
- 青岛科技大学Python程序设计期末复习题
- 无菌技术操作培训-课件
- 开曼群岛公司章程
- 结合工作实际谈如何改进工作作风、提高工作效率、改进工作方法六篇
- 医院医学伦理委员会相关表格模版(共3个)
- 中复神鹰碳纤维西宁有限公司年产14000吨高性能碳纤维及配套原丝建设项目环评报告
评论
0/150
提交评论