《第二章 C语言程序设计基础.doc》由会员分享,可在线阅读,更多相关《第二章 C语言程序设计基础.doc(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、题型及分数:单选题:25分判断题:10分填空题:15分程序分析题:20分编程题:30分其中:课后习题及复习大纲中相类似题所占比例在7080。带*号的内容和复习题为较难部分,为非重点考察内容。第一章 C语言程序设计基础(出题比例4-6%)1 程序设计语言的基本概念 程序 程序设计语言 常用程序设计语言及其类型 源程序、编译、目标文件、连接、可执行程序 编程的步骤2 C语言程序的基本结构(1) C源程序的框架 C源程序的框架,主要有:编译预处理、主函数()、函数n()等,主函数的位置不一定在最前面,可以在程序的中部或后面,主函数的名字固定为main。(2) C语言源程序的书写规则: C源程序是由一
2、个主函数和若干个其它函数组成的; 函数名后必须有小括号,函数体放在大括号内; C程序对大、小写字母书写敏感; 每句的末尾加分号; 可以一行多句; 可以一句多行; 可以在程序的任何位置加注释,注释的方式。3 C语言程序设计的的基本步骤和调试过程复习题: /*1. 每个C语言程序中有且仅有一个 函数,它是程序的入口和出口。2. 引用C语言标准库函数,一般要用 预处理命令将其头文件包含进来。3. C语言属于( )A高级语言B. 低级语言C中级语言D. 机器语言4. C语言规定了若干有特定意义、为C语言专用的单词,称为 关键字 。5. C语言的语句以 结尾。6. C语言源程序经过编译以后生成 文件,生
3、成的文件名后缀为 , 经过连接后生成 文件,后缀为 7C语言中不能使用关键字作为标识符。 ()第二章 基本数据类型,运算符与表达式(出题比例2030%)关键知识点:1 常量,变量:a) 标识符的命名规则b) 常量,变量的概念:直接常量,符号常量,变量必须先定义后使用c) 变量名和变量值的区别。2 C语言中的基本数据类型a) 各种数据类型的数据在内存中的存放方式b) 掌握各种数据类型数据的常量使用方法,特别注意字符常量和字符串常量的区别使用c) 整型,字符型,浮点型变量的定义和引用方法d) 数据的数据类型,数据的取值范围,数据在内存中存放方式三者之间的联系3 运算符和表达式的使用方法a) 自增、
4、自减运算符b) 赋值运算符c) 算术运算符及表达式d) 逗号运算符及表达式e) *位运算符及表达式f) sizeof运算符及表达式g) *强制数据类型转换符及表达式4 运算符的优先级和结合性本章复习题:课后习题: 一、单选题, 二、 填空题 1. C语言的标识符命名规则中,第一个字符可以为字符 # 或 & .()。2.下列全部属于合法的用户标识符的是()AA1 P_0 dSB. float 2la _AC. *a hy kk D. _123 temp main3. C语言对字母的大小写不敏感。( )4. C语言中,符号常量由宏定义命令#define来定义。 ( )5. 在VC 6.0中,数据类
5、型int,char,float和double所占的内存字节数分别是 、 、 和 。6.下列四个选项中,均是合法的整型常量的选项是 AA160 0XFFFF 011B。 -0XCDF 01A 0XEC-01 986,012 0688 D。-0X48a 2e5 0x7. 合法的C语言字符常数是(A )A. t B. A C. 54 D. A8. 设有语句char a = 72; 即变量a (A )A. 包含一个字符 B. 包含两个字符 C. 包含3个字符 D. 说明不合法9. 若有定义 int a=7;folat x=2.5,y = 4.7; 则表达式x+a%3*(int)(x+y)%2/4的值是
6、(2.)。10. 在C语言中,要求运算数一定是整型的运算符是(D)A/ B。+C。!=D。%11.字符串常量”mine”的字符个数是 (B )A. 4 B. 5 C. 6 D. 712. ( B )是非法的C语言转义字符A. b B. 0xf C. 037 D. 13.若x、y、z均为int型变量,则执行以下语句后的输出是( A )x=(y=(z=10)+5)-5;printf(x=%d, y=%d, z=%dn,x,y,z);y=(z=x=0,x+10);printf(x=%d, y=%d, z=%dn,x,y,z);A. x=10, y=15, z=10 B.x=10, y=10, z=1
7、0x=0, y=10, z=0x=0, y=10, z=0C.x=10, y=15, z=10D. x=10, y=10, z=10x=10, y=10, z=0 x=10, y=10, z=014.以下程序的输出结果是( B )#include void main( ) int a; float b,c; scanf(%2d%3f%4f,&a,&b,&c); printf(na=%d,b=%f,c=%fn,a,b,c);如输入:A. a=98,b=765,c=4321 B. a=98,b=765. c= 4321.C. a=98,b=765.0,c=4321.0 D. a=1,b=432,c
8、=8765 15. 有如下定义:int a =20, n=10;求下列表达式的值。A.a/=a+a; (a=_(1)_)B.a%=n%=7; (a=_(2)_)C.a+=a-=a*=a; (a=_(3)_)16. 若有以下定义和语句( B )char c1=b,c2=e;printf(%d,%cn,c2-c1,c2-a+A); 则输出结果是:A) 2,M B)3,E C)2,E D)不确定17.在以下一组运算符中,优先级最高的运算符是(C )A) = B) = C) % D) &18. 字符串”Its 40 an40 apple,n”中包含 20 个字符。19. 若x=64,y=88,则x2的
9、值分别是 256 和 22 。第三章 程序设计的控制结构(出题比例2535%) 本章复习题包括课后习题: 一、单选题, 二、 填空题 四、程序设计题 1, 2,4,7,8,93.1 顺序程序设计关键知识点:1 各种类型数据的格式化输入输出方法a) 字符的输入输出函数getchar()和putchar()b) 注意利用scanf函数输入变量值时不要漏掉取地址符号&c) 调用printf函数输出各种类型数据的方法。2 顺序程序设计方法和步骤1. 若有以下定义和语句: ( A )int u=010,v=0x10,w=10;printf(%d,%d,%dn,u,v,w); 则输出结果是:A) 8,16
10、,10 B) 10,10,10 C)8,8,10 D)8,10,102.若有定义: int x,y;char a,b,c;并有以下输入数据(此处 代表换行符, 代表空格): 12 ABC则能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C 的正确程序段是( B)A)scanf(x=%d y=%d,&x,&y);a=getchar();b=getchar();c=getchar();B)scanf(%d %d,&x,&y);a=getchar();b=getchar();c=getchar();C)scanf(%d%d%c%c%c,&x,&y,&a,&b,&c);D)scan
11、f(%d%d%c%c%c%c%c%c:&x,&y,&a,&a,&b,&b,&c,&c);3.已有如下定义的输入语句,若要求A1,A2,C1,C2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是(C)。 (注: 表示空格,表示回车)int a1, a2,;char c1, c2;scanf( “%d%c%d%c”, &a1, &c1, &a2, &c2 );A)10A20BB)10A20BC)10A20BD)10A20B4.已知:int x; float y; 所用的scanf调用语句格式为:scanf( “x=%d, y=%f”, &x, &y );为了将数据10和
12、66.6分别赋给x和y,正确的输入应当是(A)。A)x=10, y=66.6B)10, 66.6C)1066.6D)x=10y=66.6 5. 编程实现输入圆的半径,求圆的面积和周长。3.2 选择程序设计关键知识点:1 C语言语句的分类a) 特别注意复合语句的使用b) 注意何时使用空语句2 条件表达式a) 关系运算符b) 逻辑运算符c) 条件运算符的用法d) 各种运算符的优先级关系和结合性e) 注意bool变量的取值:非零即真3 选择结构的应用方式a) if 语句的几种应用方式:if-else 配对问题b) switch 语句:SWITCH后表达式类型,CASE 后表达式类型c) break的
13、使用方法1.已知x=45, ch=B,y=0;则表达式(x=y & ch=1) & (x=200) & (x=1) | (x=200) | (x=1)&(x=200)&(x=1) | (x=200) | (x=210)4.假定所有变量均已正确说明,下列程序段运行后x的值是( B)a=b=c=0; x=35;if(!a) x-;else if (b); if(c) x=3;else x=4;A)34 B)4 C)35 D)35. C语言提供的3种逻辑运算符是_、_和_。6.运行以下程序后,如果从键盘上输入china#,则输出结果为 CA)2,0B)5,0C)5,5D)2,5main( )int
14、v1=0,v2=0;char ch;while(ch=getchar( )!=#) switch(ch) case a:case h:default: v1+ +;case 0 : v2+ +; printf(“%d,%dn”,v1,v2);7. 若变量c为char类型,能正确判断出c为小写字母的表达式是DA) a=c= a)|(c= z)C) (a=c) D) (c= a)&(cb)&(n=cd)运算后,n的值为(C)A) 0 B) 1 C)2 D) 39.已知:int a=4, b=5, c; 则执行表达式c=a=ab后变量a的值为(A)。A)0B)1C)4D)510.若给定条件表达式:(
15、n) ? (c+) : (c-),则与表达式n等价的表达式是(C)。A)n=0B)n=1C)n!=0D)n!=111.下面程序的输出结果是 。键盘输入: ( 表示回车)#include void main( void )int c;while ( (c=getchar() ) != n )switch ( c-2 )case 0:case 1: putchar(c+4); case 2: putchar(c+4); break;case 3: putchar(c+3); default: putchar(c+2);break;printf( “n” );12 逻辑运算符的运算优先级都要低于算术
16、运算符。()13. 当m=3,n=4,a=5,b=1,c=2时,执行完d=(m=a!=b)&(n=bc)后,n值为 0 ,m值为 1 。14. 有int x,y,z;且x=4,y=-5,z=6,则以下表达式!(xy)+(y!=z)|(x+y)&(y-z)的值为 1 。3.3 循环结构程序设计关键知识点:1 C语言循环结构的用法,原理2 三种循环的语法a) whileb) do-while, c) ford) 注意分号应何时出现;3 break , continue 的使用方法4 循环嵌套(2重)的用法1. 以下程序的输出结果是Dmain()int a, b;for(a=1, b=1; a=10
17、) break;if (b%3= =1)b+=3;continue;printf(%dn,a);A) 101 B) 6 C) 5 D) 42.执行语句for ( i=0; i+3; ); 后,变量i的值为(C)。A)2B)3C)4D)53.下列程序运行结果是( A )#includemain( )int x=231;doprintf(%2d,x-);while(!x);A.231B.23C.无D.死循环4.定义int i=1; 执行语句while(i+5); 后, i的值是( D )A.3B.4C.5D.6 5.设x和y均为int型变量,则执行下面的循环后,y值为(C )for(y=1,x=1
18、;y=50;y+)if(x= =10) break;if (x%2= =1)x+=5;continue;x-=3;A) 2 B) 4 C) 6 D) 86.假定a和b为int型变量,则执行以下语句后b的值为(D )a=1; b=10;do b-=a; a+; while (b- -0);A) 9 B) -2 C) -1 D) 87.下面的for循环语句最多可执行 4 次for(x=0,y=0;(y!=99)&(x4);x+);8. 设t为int类型,进入到下面的循环之前,t的值为0while( t=l ) 则以下叙述中正确的是(B)A) 循环控制表达式的值为0 B) 循环控制表达式的值为1C)
19、 循环控制表达式不合法D) 以上说法都不对9. 下面程序的输出结果是 -1 。 main() int x=2; while(x-); printf(“%dn”,x);10. for循环只能用于循环次数已经确定的情况。()11. break语句不仅能够用在循环语句中,还可用在switch语句中。()12. *写程序计算当x=0.5时下述级数和的近似值,使其误差小于某一个指定的值epsilon(例如:epsilon=0.):#define E 0.#include void main( void )int i, k=1;float x, y, t=1, s, r=1;printf( “Please
20、 enter x=” );scanf( “%f”, &x );for ( s=x, y=x, i=2; fabs(r)E; i+ )t *= i-1;y *= x*x;k *= -1;r = k*y/t/(2*i-1);s += r;printf( “S=%fn”, s );第四章 数组(出题比例15-20%)关键知识点:1 数组变量的特征以及数据元素的特性a) 各数组元素类型一致,个数有限,排列有序2 一维数组和二维数组变量a) 如何定义数组b) 如何初始化数组c) 数组元素的引用方式d) 数组元素的存储方式e) 数组元素的地址及其使用3 字符串与字符数组的区别a) 字符串常量的返回值是地址
21、b) 字符数组的赋值c) 字符串的输入和输出d) 注意字符串的结束标志4 各类字符串库函数的使用方法a) 掌握几种常见的函数:gets,puts,b) 函数strcat,strcmp等复习习题: 课后习题: 一、单选题, 二、 填空题 三、程序设计题 第2,3小题1. 合法的数组说明是(B)。A)int a = “string”;B)int a = 0, 1, 2, 3, 4, 5 ;C)char a = “string”;D)char a = 0, 1, 2, 3, 4, 5 ;2. 要说明一个有10个int元素的数组,应当选择语句(A)A)int a10;B)int a2,5;C)int
22、a;D)int *a10;3.已知:int a10; 则对a数组元素的正确引用是(D)。A)a10B)a3.5C)a(5)D)a04.以下对一维数组a正确进行初始化的语句是(C)。A)int a10 = (0,0,0,0,0);B)int a10 = ;C)int a = 0;D)int a2 = 10,9,8;5.对以下说明语句的正确理解是(B)。int a10 = 6, 7, 8, 9, 20 ;A)将5个初值依次赋给a1至a5B)将5个初值依次赋给a0至a4C)将5个初值依次赋给a6至a10D)因为数组长度与初值个数不相同,所以此语句不正确6.执行下面的程序段后,变量k中的值为( A )
23、int k=3, s2; s0=k; k=s1*10;A.不定值B.33C.30D.10 7.若有以下程序片段: char str=abn012;则字符数组str能存储的字符个数为(D)A3 B4 C6 D78. 函数调用:strcat(strcpy(str1,str2),str3)的功能是(c )A)将串str1复制到串str2中后再连接到串str3之后B)将串str1连接到串str2之后再复制到串str3之后C)将串str2复制到串str1中后再将串str3连接到串str1之后D)将串str2连接到串str1之后再将串str1复制到串str3中9.已知:char s100; int i;
24、则下列引用数组元素的语句中,错误的表示形式是(D)。A)si+10B)*(s+i)C)*(i+s)D)*(s+)+i) 10. 若有“int a34=1,2,3;”,则a11的值为 0 。11.给出以下定义:( C)char x =abcdefg;char y =a,b,c,d,e,f,g;则正确的叙述为A) 数组X和数组Y等价 B) 数组x和数组Y的长度相同 C) 数组X的长度大于数组Y的长度 D) 数组X的长度小于数组Y的长度12.以下程序的输出结果是(B )main()int i,k,a10,p3:K=5;for (i=0;i10;i+)ai=i;for (i=0;i3;i+) pi=a
25、i*(i+1);for (i=0;i3;i+) k+=pi*2;printf(%dn,k);A) 20 B) 21 C) 22 D)2313.以下程序的输出结果是 DA) ABCD B) ABCD C) EFG D) EFGH FGH EFG JK IJKL KL IJ O Mmain() char w10= ABCD,EFGH,IJKL,MNOP,k;for(k=1;k3;k+) printf(%sn,wk);14. 以下程序的输出结果是AA) 18 B) 19 C) 20 D)21main() int a33= 1,2,3,4,5,6 ,i,j,s=0;for(i=1;i3;i+) for
26、(j=0;j=0;i-) ai=10-i;printf(%d%d%d,a2,a5,a8);A) 258 B) 741 C) 852 D) 36917. 以下数组定义中不正确的是DA) int a23;B) int b3=0,1,2,3;C) int c100100=0;D) int d3=1,2,1,2,3,1,2,3,4;18.对字符数组str赋初值,str不能作为字符串使用的一个是( D )。A.char str=shanghai;B.char str=shanghai; C.char str9=s,h,a,n,g,h,a,i;D.char str8= s,h,a,n,g,h,a,i;19
27、.若有说明:int a3=1,2,3,4,5,6,7; 则a数组第一维的大小是 。20. 有如下定义:“char a=”Ab123%”;”,则执行语句“printf(“%d”,strlen(a);”的结果是 6 。21设计程序:定义一个1000个整数类型的数组;在该数组中依次存入1到1000。22. 从键盘上输入一个3*3的矩阵,并求其主对角线元素的和。#includevoid main()int a33,sum=0;int i,j;printf(请输入一个三行三列的整数矩阵:n);for(i=0;i3;i+)for(j=0;j3;j+)scanf(%d,&aij); /*读入二维数组a*/f
28、or(i=0;i3;i+)sum=sum+aii;/*将主对角线的元素累加到sum中*/printf(该矩阵住对角线元素的和是:%d,sum);printf(n);第五章 函数(出题比例15-20%)关键知识点:1 函数的概念、功能2 函数使用方式a) 函数的定义b) 原型声明c) 调用方法3 变量的作用域:形参,实参,变量的作用域,生存期的概念a) 局部变量b) 全局变量4 变量存储类型a) 自动变量b) *寄存器变量c) *extern变量d) 静态变量5 *函数的嵌套和递归本章复习题课后习题: 一、单选题, 二、 填空题 四、程序设计题 第2小题1.以下对C语言函数的有关描述中,正确的是
29、( A)A) 在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 B) C函数既可以嵌套定义又可以递归调用C) 函数必须有返回值,否则不能使用函数D) C程序中有调用关系的所有函数必须放在同一个源程序文件中2. 当调用函数时,实参是一个数组名,则向函数传送的是(B)A) 数组的长度 B) 数组的首地址C) 数组每一个元素的地址 D) 数组每个元素中的值3.已知函数abc的定义为void abc() 则函数定义中void的含义是( A )。A.执行函数abc后,函数没有返回值B.执行函数abc后,函数不再返回C.执行函数abc后,可以返回任何类型D.以上三个答案全是错误的4.
30、以下函数值的类型是(A)fun ( float x ) float y;y= 3*x-4;return y;A) int B) 不确定C) void D) float5. 设有以下函数: f ( int a) int b=0;static int c = 3;b+; c+;return(a+b+c);如果在下面的程序中调用该函数,则输出结果是Amain() int a = 2, i;for (i=0;i3;i+) printf(%dn,f(a);A) 7 B) 7 C) 7 D) 7 8 9 10 7 9 11 13 76. 以下程序的输出结果是Bint a, b;void fun() a=1
31、00; b=200; main() int a=5, b=7;fun();printf(%dd n, a,b);A) B) 57 C) D) 757.以下不正确的说法是(D)。A)在不同函数中可以使用相同名字的变量B)形式参数是局部变量C)在函数内定义的变量值在本函数内有效D)在函数内的复合语句中定义的变量在本函数内有效8.C语言中的函数(D)。A)可以嵌套定义B)不可以嵌套调用C)可以嵌套调用,但不能递归调用D)嵌套调用和递归调用均可9在全局变量和局部变量的作用域重叠的区域,相同变量称引用的是局部变量的值。()10 静态局部变量在函数内定义,退出函数时还存在,因此可以被其他函数使用。()第六
32、章 指针(出题比例5-10%)关键知识点:1 指针的概念a) 指针的含义b) 指针变量的定义及初始化c) 指针的引用与运算2 指针与数组和字符串之间的联系a) 指针与一维数组b) 指针与字符串c) *指针与二维数组3 *指针作为函数的参数复习习题:本章习题中: 一、单选题 三、设计程序 第1小题1指针是一中特殊类型的变量,用来存放另一个变量的地址。()2已知:int a=1,2,3,4,5,6,7,8,9,10.11.12, *p=a; 则值为3的表达式是(A)。A)p += 2, *(p+)B)p += 2, *+pC)p += 3, *p+D)*(&a00+6)3已知:int a=1,2,
33、3,4,5,6,7,8,9,10.11.12, *p=a; 则 (*p) 的值是(A)A)1B)2C)3D)a4. 执行程序段 int a, *x = &a ; a = 5; 则 x的值是(B)A)5B)a变量的地址C)不可预知的值D)不可预知的地址值5. void main() char s=“9876”, *p; for(p=s;ps+2;p+) printf(“%sn”,p);以上程序运行后的输出结果是什么?98768766. 已知p1和p2为指针变量,且已指向同一个整型数组中的元素,a是一个整型变量,则下面无意义的语句是( D )A)a=*p1;B)a=*p1+*p2;C)a=p1-p2;D)p1=a-p2;