2011级C++语言总复习.doc_第1页
2011级C++语言总复习.doc_第2页
2011级C++语言总复习.doc_第3页
2011级C++语言总复习.doc_第4页
2011级C++语言总复习.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C+语言复习提纲一、 数据类型与表达式1 C+数据类型:掌握C+数据类型的含义、应用及在内存中所占字节数(表2.1)。2 常量:2.1 数值型常量:数值型常量的类型、整型常量的3种表示方式(三种进制)、浮点数的表示方法;2.2 字符型常量:普通字符常量、转义字符及其含义(表2.2)、字符在内存中的存储形式(ASCII码形式存储,占1个字节)、字符数据与整数数据的计算、字符串常量、字符与“字符串“的区别;2.3 符号常量:符号常量的定义方法(#define )、符号常量与变量及常变量区别。3 变量:3.1 变量值、存储单元的区别;3.2 变量名规则:会判断何为合法变量名;3.3 变量的定义与使用:变量须先定义后使用!3.4 常变量:定义方法(const),符号常量、变量、常变量的区别?4 C+运算符与运算表达式:4.1 掌握各运算符定义及算法、优先级顺序、结合性、对数据要求4.2 掌握表达式中各类数值型数据间的混合运算,能计算表达式的值5 习题:3、4、5、6、7(41页-42页)二、 基本程序设计1 C+程序和语句:预处理命令(#include等)、C+语句语法格式。2 能够根据程序语句写出运行结果(赋值语句、输入输出、if-else语句、多分支/swicth语句、条件表达式语句、循环do-while/while/for语句等。3 会分析判断循环程序的循环次数、是否为“死循环”。4 例题:3.7、3.9、3.13、3.14、3.15、PPT课件中例题、练习。5 习题:8、9、15、18、24。三、 函数1 C+程序由函数构成,程序从main()函数开始执行。2 什么是函数定义、函数声明及函数调用?函数须平行定义,可嵌套、递归调用。3 什么是形参、实参、函数的值?4 函数返回值语句(return),返回值唯一。5 有默认参数函数,实参与形参结合顺序。6 什么是局部变量、全局变量?静态局部变量?7 例题:4.11、4.12、4.13、4.8,PPT课件中例题。8 习题:1、3、4。四、 数组1 数组概念:数组、下标、数组元素。2 数组定义、初始化、引用。3 一维数组函数参数。4 字符数组:定义、初始化、赋值、引用;字符串及字符串结束标志/0,字符串长度;用字符串为字符数组赋值;字符串处理函数:strcat、strcpy、strcmp、strlen。5 例题:5.1、5.2、5.3、5.10、PPT课件中例题。6 习题:2、3、4、5。五、 指针1 概念:内存单元地址、直接访问、间接访问;指向、指针、指针变量; &-取地址符号;2 指针变量的定义:*-指针定义类型;指针变量的引用:*-指向符号;3 指针做函数参数(通过调用函数使变量的值发生变化!);4 指向数组元素的指针;5 例题:6.1、6.2、6.3、6.5、表6.1、 PPT课件中例题。6 习题:1、2、3、14。注:l 期末考试题型:选择题、填空题、分析程序写结果(程序填空)、编程题(教材习题)。l 考试要求:100分钟,闭卷。l 总评成绩=期末试卷成绩*70%+平时成绩*30%。(1/3以上课时未出勤无考试资格)附:参考练习题1与十进制数97不等值的字符常量是 A) a B) 101 C) x61 D) 1412以下选项中正确的整型常量是A) 5 B)-10 C)1.000 D)4/53以下选项中正确的实型常量是A) 0 B)3.1415 C)0.03x102 D)-324以下选项中不合法的用户标识符是A)wb_1 B)file C)main D)PRINTF 5以下选项中不合法的用户标识符是A)_123 B)12aa C)Aa D)John6C+语言中运算对象必须是整型的运算符是A)% B)/ C)* D)+7可在C+程序中用作标识符的一组标识符是A)void B)as_b3 C)For D)2c Define _123 -abc DOWORD John case SiG8若变量已正确定义并赋值,符合C+语言语法的表达式是A)a=a+7; B)a=7+b+c,a+ C)int(12.3%4) D)a=a+7=c+b9以下非法的赋值语句是A) n=(i=2,+i); B)j+; C) +(i+1); D) x=j0;10设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是 A) 6.500000 B) 6 C) 5.500000 D) 6.00000011已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1 & y+z/2的值是 A) 6 B) 0 C) 2 D) 112以下叙述中正确的是A)在C+程序中,无论是整数还是实数,只要在允许的范围内都能准确无误的表示。B)C+程序由主函数组成。C)C+程序由函数组成。D)C+程序由函数和过程组成。13Visual C+6.0中int类型变量所占字节数是A)1 B)2 C)3 D)414不合法的八进制数是A)0 B)028 C)07700 D)0115若a、b、c、d都是int类型变量且初值为0,以下选项中不正确的赋值语句是A)a=b=c=100; B)d+; C)c+b; D)d=(c=22)-(b+);16以下选项中不是C+语句的是A)int i; i+; couti; B); C)a=5,c=10 D) ; 17以下程序的输出结果是 main() int x = 10, y = 3; Coutx/y; A)0 B)1 C)3 D)不确定的值 18C+语言中,字符(char)型数据在微机内存中的存储形式是A)反码 B)补码 C)EBCDIC码 D)ASCII码19设有语句char a= 172;,则变量aA)包含1个字符 B)包含2个字符 C)包含3个字符 D)说明不合法20C+语言中不合法的字符常量是A)xff B)65 C)& D)02821C+语言中不合法的字符串量是A)”121” B)y= C)”nn” D)”ABCDx6d”22判断char型变量c是否为大写字母的最简单且正确的表达式是A)A=c=A&(c=Z) C) (A=c) D)(c=A)&(c=Z)23下列运算符中优先级最高的运算符是A)! B)% C)-= D)& 24下列运算符中优先级最低的运算符是A)| B)!= C)=y)&(y=z) B)(x=y)AND(y=z)C)(x=y=z) D)(x=y)&(y=z)26设a、b和c都是int变量,且a=3,b=4,c=5;则以下的表达式中,值为0的表达式是A)a&b B)a=b C)a|b+c&b-c D)!(a”、“*”、“&”、“!=”、“|”、“!”和“/”的优先顺序: 、 、 、 、 、 、 、 。11若表达式(a + b) c * 2 & b != 5 | !(1 / 2)中,a、b、c的定义和赋值为 int a = 3, b = 4, c = 2;则表达式的值为1 。单选题1运行以下程序后,输出的结果是main() int k = -3; if(k = 0) cout“*n”; else cout“&n”;A)* B)& C)*& D)有语法错误不能通过编译2有如下程序main() int x=1,a=0,b=0;switch(x)case 0: b+;case 1: a+;case 2: a+;b+;cout”a=”a”,b=”bbc) 表达式的值为假 cout= d) = 1) coutd+1; else coutd+2; 执行后输出结果是 A) 2 B) 3 C) 编译时出错 D) 4 4有以下程序main()int i=1,j=1,k=2; if(j+|k+)&i+)coutijk;执行后输出结果是 A)112 B)221 C)222 D)2235有如下程序main() float x=2.0,y;if(x0.0)y=0.0;else if(x10.0)y=1.0/x;else y=1.0;cout 100) cout 100);elsecout( a c) b = a; a = c; c = b;3若变量已正确定义,以下语句段的输出结果是*# 。 x = 0; y = 2; z = 3;switch(x) case 0: switch( y = 2) case 1: cout“*”; break; case 2: cout“%”; break; case 1: switch( z ) case 1: cout“$”; case 2: cout“*”; break; default : couta;if(a50) cout40) cout30) couta; 5以下程序的执行结果是 9。main() int k=8; switch(k)case 9: k+=1;case 10: k+=1;case 11: k+=1; break;default: k+=1;couty)if(xz)coutx;else couty;coutz;单选题1以下不是死循环的语句是A)for( ; ; x += i) ; B)while(1) x +; C)for(i = 10; ; i+) sum += i;D)for(; (c = getchar() != n; ) coutc;2下面程序的运行结果是main() int y=10;doy-;while(-y);cout 7) n-; Coutn;A)1098 B)987 C)10987 D)98764以下程序段的输出结果是int x = 3;do cout x -= 2; while(!(-x);A) 1 B) 3 0 C) 1 -2 D)死循环5以下程序的输出结果是main() int i, sum; for(i = 1; i 6; i+)sum += sum; cout sum;A)154 B)146 C)不确定 D)06有以下程序 main() int i; for(i=0; i3; i+) switch(i) case 1: cout i; case 2: cout i; default : cout i; 执行后输出结果是 A) 011122 B) 012 C) 012020 D) 1207以下叙述正确的是A)do-while语句构成的循环不能用其它语句构成的循环来代替。B)do-while语句构成的循环只能用break语句退出。C)用do-while构成循环时,只有在while后的表达式为非零时结束循环D)用do-while构成循环时,只有在while后的表达式为零时结束循环8以下程序段的输出结果是int k, j, s;for(k = 2; k 6; k+, k+) s = 1; for(j = k; j 6; j+) s += j;Cout s;A)9 B)24 C)15 D)109以下程序段的输出结果是int i, j, m = 0;for(i = 1; i = 15; i += 4) for(j = 3; j = 19; j += 4) m+;coutm;A)12 B)15 C)20 D)2510下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选择填空。main()int i=0,j,k;doi+;k=316-13*i;while(_);j=k/11; cout316=13*”i”+11*” b; +b)i+; while( a +c )j+; do k+; while(a d+);cout“i = “i” j =”j”k=”k; 2以下程序段的输出结果是死循环 。 int k, n, m; n = 10; m = 1; k = 1; while( k = n ) m *= 2;cout m;3以下程序的输出结果是-1 。 main() int x = 2;while ( x- );coutx; 4以下程序段的输出结果是11 。 int i = 0, sum = 1; do sum += i+; while( i 5);Cout sum;5有以下程序段: s = 1.0; for(k = 1; k = n; k+) s = s + 1.0 / (k * (k + 1);couts;请填空,使下面的程序段的功能完全与之等同。 s = 0.0; d=1; k = 0; do s += d; k+;d = 1.0 / (k * (k + 1); while(k=n );coutx;for(i=2; i= x/2; i+)if (x%i=0) y=0; break;coutn; int aSIZE; int an;2 以下对数组初始化错误的是A) int a23=1,2,3,4; B) int 2=1,2,3,4,5,6;C) int a23=1,2,3,4,5D) int a3=1,2,3,4,5,6;3 若想将一个字符数组a的内容存入另一个字符数组b中,下列正确的是A) b=a; B) strcpy(a,b); C) strcpy(b,a); D) strcat(b,a);4 若有以下说明int a12 = 1,2,3,4,5,6,7,8,9,10,11,12;char c=a,d,g;则数值为4的数组元素是A) ag-c B) a4 C) ad-c D) ad-c5 若有定义语句:char c5=a,b,0,c,0;,则执行语句coutc;的结果是A) ab B) ab C)ab c D) ab0c6 对两个数组a和b进行如下初始化:char a = “ABCDEF”;char b = A,B,C,D,E,F;则以下叙述正确的是A) a与b完全相同 B) a与b长度相同C) a与b中都存放字符串 D) a数组比b数组长度长7 以下程序段给数组所有元素输入数据,应在下划线处填入的是main() int a10, i = 0; while(i 10)scanf(“%d”, ); A)a+(i+) B)&ai+1 C)a+i D)&a+i8以下程序的输出结果是 main() int i, x33 = 1, 2, 3, 4, 5, 6, 7, 8, 9;for(i = 0; i =0&chi=9; i += 2) s = s*10+chi-0;couts;10 以下程序的输出结果是A)不确定的值 B)3 C)2 D)1min() int n2 =0, i, j, k = 2; for(i = 0; i k; i+) for(j = 0; j k; j+) nj = ni +1;coutnj;11 定义如下变量和数组int i;int x33 = (1, 2, 3, 4, 5, 6, 7, 8, 9);则下面语句的输出结果是 for(i = 0; i 3; i+) coutxi2-i;A) 1 5 9 B)1 4 7 C) 3 5 7 D) 3 6 912 执行下面的程序段后,变量k中的值为int k=3, s2;s0=k; k=s1*10;A) 不定值 B) 33 C) 30 D) 10二、填空题1若有以下定义: double w10;则w数组元素下标的上限是9 , 下限是0 。2 若有定义int a34=1,2,3,4,5,6,7,8,9;,则a13 = 8,a23= 0。3若有以下定义:char a=”ABCD”, b=”abcd”;if(strcmp(a,b)=0)cout“YESn”;elsecout“NOn”;执行结果是 NO。4以下程序的输出结果是12 。 main() int arr10, i, k = 0; for(i = 0; i 10; i+) arri = i; for(i = 0; i 4; i+) k += arri + i;coutk; 5. 以下程序的输出结果是300 0 2 。main() int i, j, row, col, m; int arr33 = 100, 200, 300, 28, 72, -30, -850, 2, 6; m = arr00; for( i = 0; i 3; i+) for( j = 0; j 3; j+) if(arrij m) m = arrij;row = i;col = j; Cout m rowcol; 6以下程序的功能是从a数组中删除其值为x的数据,请填空。main() int a10=2,4,7,3,1,7,6,8,7,9, i, j, x = 7; for( ; i10; i+) if(ai != x) a j+ = ai; for(i = 0; ; i+) coutaiendl;7以下程序的功能是将x字符串与y字符串连接并输出,请填空。注:程序中不能使用字符串连接函数。#include main() char x80, y40; int a, h = 0; printf(“Please input x string: “); gets(x); printf(“Please input y string: “); gets(y); while(xh!=0) ; ; while(ya!=0) xh+ = ya+; ; printf(“Output x string: “); puts(x);函 数一、单选题1以下语法中正确的是A)C+语言程序总是从第一个定义的函数开始执行B)在C+语言程序中,要调用的函数必须在main函数中定义C)C+语言程序总是从main开始执行D)C+语言程序中的main函数必须放在程序的开始部分2以下函数值的类型是fff( float x)Coutx;A)与参数x的类型相同 B)void类型 C)int 类型 D)无法确定3以下函数调用语句中,含有的实参个数是 func( (exp1, exp2), (exp3, exp4, exp5);A)1 B)2 C)4 D)54以下程序的输出结果是func(int a, int b) int c; c = a + b; return c; main() int x = 6, y = 7, z = 8, r;r = func(x-, y+, x + y), z-);coutr A)11 B)20 C)21 D)31 5以下程序的输出结果是main() int i =2, p; p = f(i, i + 1);cout b) c = 1; else if(a = b) c = 0; else c = -1; return ( c );A)-1 B)0 C)1 D)2 6以下程序的输出结果是Int fun( int a, int b, int c) c = a * b; main() int c; fun(2, 3, c);coutc A)0 B)1 C)6 D)无定义7以下程序的输出结果是double f(int n) int i; double s; s = 1.0; for(i =1; i = n; i+) s += 1.0 / i; return s;main() int i, m =3; float a = 0.0; for(i = 0; i m; i+) a += f(i);couta;A)5.500000 B)3.000000 C)4.000000 D)8.258以下叙述正确的是A)C+程序中各函数之间既允许直接递归调用也允许间接递归调用B)C+程序中各函数之间不允许直接递归调用也不允许间接递归调用C)C+程序中各函数之间允许直接递归调用不允许间接递归调用D)C+程序中各函数之间不允许直接递归调用允许间接递归调用9以下程序的输出结果是 main() int k =4, m = 1, p;p = func(k, m);coutp;p = func(k, m);coutp; func( int a, int b) static int m, i = 2; i += m + 1;m = i + a + b;return (m); A)8,17 B)8,16 C)8,20 D)8,810以下程序的输出结果是 int m = 13; int fun2(int x, int y) int m = 3;return (x * y - m); main() int a = 7, b = 5;Cout( fun2(a, b) / m ); A)1 B)2 C)3 D)411 下列程序的运行结果是void fun(int *a, int *b) int *k;k=a; a=b; b=k;main() int a=3, b=6, *x=&a, *y=&b;fun(x,y);coutab;A)6 3 B)3 6 C)编译出错 D)0 012以下正确的函数形式是A) double fun(int x, y) double z; z = x+ y; return z; B) double fun(int x, y) int z; z = x + y; return (double) z; C) double fun(int x, int y) return (x+y); D) double fun(x, y) int x, y; double z; z=x+y; return z; 13 对于建立函数的目的,正确的说法是A) 提高程序的执行效率 B) 提高程序的可读性C) 减少程序的篇幅 D) 减少程序文件所占的内存14 以下正确的说法是A) 函数的定义可以嵌套,但函数的调用不可以嵌套B) 函数的定义不可以嵌套,但函数的调用可以嵌套C) 函数的定义和函数的调用均不可以嵌套D) 函数的定义和函数的调用均可以嵌套15 C+语言关于实参和形参说法正确的是A) 实参和与之对应的形参各占用独立的存储单元B) 实参和与之对应的形参占用同一存储单元C) 只有当实参与形参同名时,才共占用同一存储单元D) 形参是虚拟的,不占用存储单元16 下列说法正确的是A) 在利用返回值方式传递数据时,可以省略数据类型说明符B) 在函数间通过全局变量的传递数据,只能用外部变量,不能用内部变量C)利用地址返回值方式传递数据时,返回值可以赋予普通变量D) 利用全局变量传递数据,可以简化程序,提倡使用17 以下正确的说法是A) 定义函数时,形参的类型说明可以在函数体内B) return后面的表达式不能是函数C) 如果函数值的类型与返回值的类型不一致,以函数值类型为准D) 如果形参与实参的类型不一致,以实参类型为准18 以下程序的输出结果是f(int b, int n) int i, r = 1; for(i = 0; i = n; i+) r = r*bi; return r;main() int x, a = 2, 3, 4, 5, 6, 7, 8, 9; x = f(a, 3); coutx;A)720 B)120 C)24 D)6二、填空题1以下程序的输出结果是 。 unsigned fun6(unsigned num) unsigned k = 1;do k *= num % 10; num /= 10; while( num);return k; main() unsigned n = 26; Coutfun6(n);2以下程序的输出结果是15.5 。 double sub(double x, double y, double z) y -= 1.0;z = z + x;return z; main() double a = 2.5, b = 9.0;cout sub(b - a, a, b); 3以下程序的输出结果是 。 fun1(int a, int b) int c;a += a; b += b;c = fun2(a, b);return c * c; fun2(int a, int b) int c;c = a * b % 3;return c; main() int x = 11, y = 19;Cout eps); n+) s += t; t = n * t / (2* n +1);return (2.0 * );5以下函数用以求x的y次方。请填空。 double fun( double ,x double y) int i; double z; z=1for( i = 1; iy ; i+) z = z*x;return z; 6以下程序的输出结果是2 5 1 2 -2 3 。main() int a = 3, b = 2, c = 1; c -= +b; b *= a + c; int b = 5, c = 12; c /= b * 2; a -= c; coutabc;a += -c;coutabc;7以下程序的输出结果是2 4 6 。void fun( ) static int a = 0; a += 2; couta;main() int i;for( i = 1; i 4; i+)fun();coutendl8. 以下findmax返回s中最大元素的下标,数组中元素的个数由t传入。请填空。fndmax( int s, int t) int k, p; for(p = 0, k = p; p sk )k=p ; returnk ;9. 以下fun函数的功能是将一个字符串的内容逆置。请填空。#include “string.h”void fun( char str) int i, j, k; for(i = 0, j = ; i j; i+, ) k = stri ;stri = strj;strj = k; 10. 当调用函数时,实参是一个数组名,则向函数传送的是A) 数组的长度B) 数组的首地址C) 数组每一个元素的地址D) 数组每个元素中的值11.下面程序的运行结果是_#include voidswap1(intc) intt; t=c0;c0=c1;c1=t; voidswap2(intc0,intc1)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论