C程序设计复习资料含复习资料.docx

上传人:叶*** 文档编号:55619950 上传时间:2022-10-31 格式:DOCX 页数:18 大小:42.18KB
返回 下载 相关 举报
C程序设计复习资料含复习资料.docx_第1页
第1页 / 共18页
C程序设计复习资料含复习资料.docx_第2页
第2页 / 共18页
点击查看更多>>
资源描述

《C程序设计复习资料含复习资料.docx》由会员分享,可在线阅读,更多相关《C程序设计复习资料含复习资料.docx(18页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、C程序设计复习要点第一章概述1. C程序的构成及结构特点2. C程序上机调试过程及流程第二章数据类型、运算量及表达式1. 数据类型的种类(基本数据类型和构造数据类型)2. 常量的数据类型及其表示(表示方法、存储字节数及表数范围)整、实、字符、字符串和转义字符3. 变量的命名、定义方法及赋初值4. 各种表达式及其运算规则优先级、结合性、类型自动转换及强制转换l 算术运算符、表达式及其构造(注意“/”和“%”特殊性)l 自增、自减运算符及其简单表达式运算l 赋值运算符及其表达式(注意复合赋值运算符的运算方法)l 逗号运算符及其表达式第三章流程控制1. 赋值语句的一般形式、赋值过程及赋值规则(注意左

2、右数据类型的一致或兼容)2. 输入和输出函数的格式、功能及用法(只要求常用的格式控制符d, f, c, s),提醒注意:l 格式输出中域宽和小数位数的控制l 格式输入及输出中普通字符的原样输入和输出问题l 熟悉并区别以下函数:putchar()、printf()、puts();getchar()、scanf()、gets()3. 关系运算符及其表达式、逻辑运算符及其表达式和条件运算符及其表达式的运算规则(优先级、结合性)4. 关系表达式及逻辑表达式的构造(根据已知条件写表达式)5. if语句的三种形式:if 语句、if else 语句、if 语句的嵌套l if 语句的格式及用法:简单if、嵌套

3、if、并列ifl 逻辑关系及执行过程l 嵌套规则(重点掌握if else if else if else)6. switch语句的格式及用法7. *熟练使用if和switch语句阅读和编写较为简单的选择结构程序8. 三种循环语句:while() 、do while()、for()的格式、执行过程及其用法l 循环变量初始化、循环条件构造、循环体所要实现的任务和控制变量修改l 注意循环期间及结束时循环控制变量的取值问题9. 结合例题理解和区别break及continue语句的作用及其用法10. 本章涉及的主要算法:累加(计数)、累乘、递推、穷举、判素数、求最大公约及最小公倍等11. *熟练使用三种

4、循环语句并结合以上算法阅读和编写较为简单的循环结构及其嵌套程序第四章复杂数据类型1. 一维、二维数组的定义、初始化及其引用方法(数据输入、输出、存储及处理)2. 字符数组的定义、初始化及其引用(字符串输入、输出、存储及处理)3. 常用字符串处理函数:gets()、puts()、strlen()、strcmp()、strcpy()4. 数组涉及的主要算法:排序、极值、逆序、回文和字符串的连接、复制、求长度等5. *熟练使用数组并结合以上算法阅读和编写较为简单的程序6. 指针的概念:指针、指针变量、指针运算(、&、+、-、+、-)7. 变量、数组和字符串指针的定义、指向及引用(仅限于一维数组)8.

5、 了解指针数组及二级指针的概念和定义9. *能够阅读并理解使用指针进行数据处理的相关程序(极值、逆序、回文和字符串的连接、复制、求长度等)10. 结构体及共用体的概念、定义及引用(仅限概念)第五章 结构化程序设计及应用1. 熟悉程序的三种基本结构:顺序、选择和循环2. *通过其中部分例题掌握选择、循环语句的使用以及循环和数组涉及的主要算法第六章 函数及编译预处理1. 掌握函数的定义、声明和调用方法及参数传递方式2. *结合相关例题掌握一般函数和递归函数的定义及使用3. 熟悉局部变量及全局变量的定义及作用范围,了解各种静态及动态变量的定义、作用范围及生存期4. 了解内部函数及外部函数的定义及调用

6、规则5. 掌握宏定义及宏展开(重点掌握带参数宏的定义及展开)6. 了解文件包含的作用及其使用场合第七章 文件1. 了解文件的概念2. 熟悉文件打开、关闭及各种及文件读写有关函数的格式及用法 特别提醒:以上带*部分主要涉及程序阅读、程序填空和编写程序,其余部分主要以选择和概念填空题出现C语言程序设计参考题型说明:本题仅反映考试的题型,作为考前复习参考。要通过这些典型题目,掌握复习要点中所列内容。所给题目不可死记硬背,而是通过题目掌握其涉及要点和重要算法。一、单项选择题1. C程序的基本构成单位是【 C 】A)文件B)命令C)函数D)语句2. 下列叙述中错误的是【 C 】A)C程序中main( )

7、函数的位置可以任意B)C程序可以由多个程序文件组成, 而一个程序文件又可以由一个或多个函数组成C)每个程序文件都有一个main( )函数D)C程序总是从main( )开始执行,也是由它结束3. 将C源程序转换为目标程序的过程称为【 B 】A)编辑B)编译C)连接D)运行4. C语言中最基本的数据类型包括【 B 】A)整型、实型、逻辑型B)整型、实型、字符型C)整型、逻辑型、字符型D)整型、实型、字符串型5. 以下不合法的用户标识符是【C 】A)j2_KEY B)Double C)4d D)_8_6. C源程序中不能表示的数制是【A 】A)二进制 B)八进制 C)十进制 D)十六进制7. 以下合

8、法的字符常量的是【A 】A)x13 B)081C)65 D)n 8. 以下选项中,能用作数据常量的是【 D 】A)o115 B)0118C)1.5e1.5 D)115L9. C语言中,要求运算对象必须是整型数据的运算符是【A 】A)%B)/C)D)&10. 表示数学关系“xyz”的C语言表达式是【C 】A)x=y=zB)x=y | y=zC)x=y&y=zD)xyz11. 若变量均已正确定义并赋值,以下合法的C语言赋值语句是【A 】A)x=y=5; B)x=n%2.5; C)x+n=j; D)x=5=4+1;12. 设有定义:int k=0; 以下选项的四个表达式中及其他三个表达式的值不相同的

9、是【 A 】A)k+ B)k+=1 C)+k D)k+113. 若有代数式:以下错误的C语言表达式是【 C 】A)a/b/c*e*3B)3*a*e/b/cC)3*a*e/b*cD)a*e/c/b*314. 设变量a是整型,f是实型,i是双精度型,则表达式10+a+i*f值的数据类型为【C 】A)intB)floatC)doubleD)不确定15. 若p和x已经正确定义,x已赋值,并且p=&x,则下列关系表达式之值为1的是【 B】A)p=xB)*p=xC)&p=xD)*x=p16. 当用户要求输入的字符串中含有空格时,应使用的输入函数是【 C 】A)scanf() B)getchar() C)g

10、ets() D)getc()17. 下列能输出字符数组str中字符串的语句是 【 B 】A)printf(%c,str0);B)printf(%s,str);C)printf(%s,str);D)putchar(str);18. 有输入语句:scanf(B%d,%d,&a,&b);为使变量a、b分别为5和3,从键盘输入数据的正确形式为【 B 】A)5 3B)5,3C)a=5 b=3D)a=5,b=319. 定义如下变量和数组:int j;int x33=1,2,3,4,5,6,7,8,9;则下面语句的输出结果是【 C 】for(j=2; j=0; j-)printf(%2d,xj2-j);A)

11、1 5 9B)1 4 7C)7 5 3D)3 6 920. 执行下面程序后,a的值是【 B 】#define SQR(x) x*xvoid main( )int a=10,k=2,m=1;a=SQR(k+m);printf(%dn,a);A)10B)5C)2D)121. 简单if语句的基本形式:if(表达式)语句【D 】其中“表达式”A)必须是逻辑表达式B)必须是关系表达式C)必须是逻辑表达式或关系表达式D)可以是任意合法的表达式22. 在嵌套使用if语句时,C语言规定else总是【 C 】A)和之前及其具有相同缩进位置的if配对B)和之前及其最近的if配对C)和之前及其最近的且不带else的

12、if配对 D)和之前的第一个if配对23. 下列叙述中正确的是【D 】A)break语句只能用于switch语句B)在switch语句中必须使用defaultC)break语句必须及switch语句中的case配对使用D)在switch语句中,不一定使用break语句24. 有以下程序段:x=-1;do x=x*x;while(!x);执行时,循环体执行的次数为【B 】A)0B)1C)2D)不确定25. 以下不正确的if语句形式是【C 】A)if(xy&x!=y);B)if(x=y) x+=y;C)if(x!=y) scanf(%d,&x) else scanf(%d,&y);D)if(xy)

13、 x+;y+;26. 以下程序的输出结果是【 C 】void main( )int x=2,y=-1,z=2;if(xy)if(y0)z=0;elsez+=1;printf(%dn,z);A)0B)1C)2D)327. 以下能正确计算12310的程序段是【 A 】A)i=1,s=1;B)s=1;i=1;dowhile(i=10)s=s*i;i+; s=s*(+i);while(i11);C)for(i=1,s=0;i=10;i+)D)for(i=1,s=1;i+) s=s*i;s=s*i;28. 若j为整型变量,则以下循环执行次数是【 C 】for(j=0;j=0;)printf(%d,j-)

14、;A)无限次B)0次C)1次D)2次29. 若有说明:int a10;则对a数组元素的正确引用是【 C 】A)a3.5B)a(8)C)a6-5D)a1030. 若有定义语句:double x5=1.0,2.0,3.0,4.0,5.0, *p=x;则错误引用x 数组元素的是【B 】A)*p B)x5 C)*(p+1) D)*x31. C中,一个char类型的数据在内存中占用的字节数是【A 】A)1 B)2 C)4 D)832. 设有程序段:int k=5;while (k=0) k-;则下列描述中正确的是【 C 】A)while循环执行5次B)循环是无限循环 C)循环语句一次也不执行D)循环体语

15、句执行一次33. 下面程序段的运行结果是【 B 】char c5= a, b, 0, c, 0 ; printf(“%s”, c);A)ab B)ab C)Abc D)abc34. 以下不正确的字符串赋值语句是【C 】A)char *s; s=abcde;B)char s =abcde;C)char s10; s=abcde;D)char *s=abcde;35. 设p1、p2是指向int型一维数组的指针变量,k为int型变量,以下错误的语句是【 B 】A)k=*p1+*p2;B)p2=k;C)p1=p2;D)k=p2-p1;36. 下面程序的输出结果是【 A 】void main( ) ch

16、ar s = ABCD; char *p; for (p=s;p6)n-; printf(“%3d”,n);以上程序段输出结果是【D】A)10 9 8B)9 8 7C)10 9 8 7D)9 8 7 645. 若i,j已定义为int型,则以下程序段中内循环总的执行次数是【C】for (i=5; i0; i-) for (j=1; j6; j+) A)30B)24C)25D)2046. 若已定义:float *p, m=3.14159; 则使p指向m正确的赋值语句是【B】A)p=m;B)p=&m;C)*p=m;D)*p=&m;47. 若已定义:char s10; 则下面表达式中不能作为s1地址的

17、是【A】A)s+B)s+1C)&s0+1D)&s148. 已知:int a=3, b=5, t; 要将a和b中的数值进行交换,错误的程序段是【C 】A)a=a+b; b=a-b; a=a-b;B)t=a; a=b; b=t;C)t=a; b=a; a=t;D)t=b; b=a; a=t;49. 关于C程序中的#include ,错误的描述是【 D 】A)它是C语言的预编译命令B)在程序中该行尾部不需要分号C)用于将math.h包含进来D)math.h是一个函数50. 下列C程序段的输出结果是【C 】int a=0;switch(a)case 0: printf(“a=0”);case 1: p

18、rintf(“a=1”);default: printf(“default”);A)a=0B)a=0defaultC)a=0a=1defaultD)default51. 已知:int a, x, y; 有语法错误的C语句是【 B 】A)while(x) y+;B)while(x+y=0) a+;C)while(xy);D)while(y=5) +x;52. 对于do while( )语句,错误的说法是【C 】A)用条件控制循环体的重复执行B)循环体至少要执行一次C)循环体有可能一次也不执行 D)循环体中可以包含若干条语句53. 已知:int a, x, y; 有语法错误的C语句是【 B 】A)

19、while(x) y+;B)while(x+y=0) a+;C)while(xy);D)while(y=5) +x;54. 已知:int a5, *p=a; 利用p为数组元素a4赋值的正确C语句是【 B】A)scanf(“%d”, p+3);B)scanf(“%d”, p+4);C)scanf(“%d”, *(p+3);D)scanf(“%d”, *(p+4);55. 对于C语句:char *a2=“abcd”, “ABCD”; 叙述正确的是【B 】A)a是指针变量B)a是指针数组C)a是数组指针 D)a是字符串56. 设有如下说明语句:struct ex int x; float y; ch

20、ar z; example;则下面叙述中不正确的是【 B 】A)struct是结构体类型的关键字B)example是结构体类型名C)x, y, z都是结构体成员名D)struct ex是结构体类型名57. 有以下程序#include struct ord int x,y; dt2=1,2,3,4;void main() struct ord *p=dt; printf(“%d,”,+p-x); printf(“%dn”,+p-y);程序的运行结果是【B 】A)1,2 B)2,3 C)3,4 D)4,158. 设有以下定义【D 】union data short int d1; char d2;

21、 demo;则下面叙述中错误的是_。A)变量demo及成员d1所占的内存字节数相同B)变量demo中各成员的地址相同C)变量demo和各成员的地址相同D)若给demo.d1赋256后, demo.d2中的值是25659. 设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为【 B 】A)EOF B)非0值 C)0 D)NULL60. 读取二进制文件的函数调用形式为:fread(buffer,size,count,fp); 其中buffer代表的是【C 】A)一个文件指针,指向待读取的文件B)一个整型变量,代表待读取的数据的字节数C)一个内存块的首地址,即读入数据

22、存放的地址D)一个内存块的字节数二、填空题1. 赋值表达式x*=y+5的另一种书写形式为_ x=x*(y+5)_。2. 已知a=10,b=20,c=3,则表达式!ab | c的值为_1_。3. 表达式(int)(double)(5/2)+2.5)的值是_4_。4. 若j=3,则表达式(+j)+(j+)的值为_8_。5. 若a的原值为4,则表达式“a*=a-=3”运算后,a的值是_1_。6. 若a=5、b=3、c=1,则表达式“abc”的值为_0_。7. 若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值为_2.5_。8. 整数m既

23、能被3整除又能被4整除的逻辑表达式为_(m%3= =0)&(m%4= =0) _。9. 写出代数式0x1的C逻辑表达式为_(0x)&(x=a&c=A&cZ 。11. 实现变量a和b交换的语句或语句序列是 a=a+b; b=a-b; a=a-b; 。12. 若整型变量a 和b 中的值分别为7 和9,要求按以下格式输出a和b的值:a=7b=9请完成输出语句:printf(a=%dnb=%d, a, b);13. 若有定义:double a105; 则数组a中行下标最大值为_9_,列下标最大值为_4_。14. 若有定义:int a 1,4,6,5,8,9; 则 *(a+5) 的值为_9_。15. 设

24、有如下定义int a56,*p; 使p指向数组元素a42的语句为_ p=&a42; _。16. 若有定义:int a10,*p=a; 则元素a5的值用p表示的形式是_ *(p+5)_。17. 若有定义:int *p4; 则标识符p表示_长度为4的一维指针数组_。18. 凡是函数中未指定存储类型的局部变量,其默认的存储类型为_ auto _。19. 函数有内部函数和外部函数,函数定义时用来说明该函数仅限本文件调用的关键字是_static_。20. 未加特别说明(说明为静态)的全局变量是外部变量,能被其它文件使用,而在引用它的文件中,需要用关键字_extern_说明。三、程序填空1. 下面程序的功

25、能是:从键盘输入一个字符,若是大写字母,则转换为小写字母并输出,若为小写字母则直接输出,请在_处填上合适内容,使程序完整。include void main( ) char ch; ch=getchar( ); if (ch=A&ch=Z ) ch+=32; printf(“%c”, ch);2. 下面程序的功能是:求1100间的偶数和,请在_处填上合适内容,使程序完整。#include void main( )int num, sum=0; for (num=2; num=100; num=num+2) _ sum=sum+num ; printf(1-100间的偶数和是:%dn, sum)

26、;3. 下面程序段是求n!的递归函数,请将函数补充完整。double fac(int n)double result;if (n= =1)result=1;elseresult= n*fac(n-1);return(result);4. 以下程序的功能是:输入一整数n,判断是否为素数。#include void main( )int i, n;scanf(“%d”,&n);for (i=2; _i=n)printf(“%d is a prime number.n”, n);elseprintf(“%d is not a prime number.n”, n);5. 如下程序实现字符串逆序,请在

27、_处填上合适内容,使程序完整。#include #include void main()char *p1, *p2, c, s50;scanf(“%s”, s);p1=s;p2=s+strlen(s)-1;for(; p1p2 ; p1+, p2-) c=*p1;*p1=*p2;*p2=c ;printf(“The new string is %sn”, s);6. 如下程序判断字符串是否回文,请在_处填上合适内容,使程序完整。#include #include void main()char *p1, *p2, c, s50;gets(s);p1=s;p2= s+strlen(s)-1;fo

28、r(; p1p2; p1+, p2-)if( *p1!=*p2 ) break;if( p1p2 )printf(“该字串不回文n”);elseprintf(“该字串回文n”);7. 下列程序用来求任意两整数的最大公约数,请在_处填上合适内容,使程序完整。#include void main( )int temp, m, n, x;printf(Enter two numbers:n);scanf(%d,%d, &m, &n);if (mn) temp=m, m=n, n=temp;for(x=n; ; x-)if (m%x=0&n%x=0) _break_;printf(n最大公约数为:%d

29、n,x);8. 下列程序用“起泡法”对输入的字符串降序排序,请在_处填上合适内容,使程序完整。#include #include void main( )void sort(char *s);char str20;printf(请输入字符串:n);scanf(%s, str);sort(str);printf(排序结果:n);puts(str );void sort(char *s)int i, j, n;char c;n=strlen(s);for(i=0; in-1; i+)for(j=i; jn-i-1; j+)if(sjsj+1)c=sj, sj=sj+1, sj+1=c;四、阅读程序

30、1. include void main( )char ch;int cnt1=0,cnt2=0;while (ch=getchar( )!=n)if (ch=a&ch=z) cnt1+;else cnt2+;printf(COUNT=%dn,cnt1);若输入“This is a C program.”,运行结果:_ COUNT=13_2. #include void main( )int i, j, temp;int a=0,1,2,3,4,5,6,7,8,9;for(i=0, j=9; ij; i+, j-)temp=ai; ai=aj; aj=temp;for(j=0; j10; j+

31、)printf(%2d, aj);运行结果:_9 8 7 6 5 4 3 2 1 0_3. #include #include void main( )char str180=good,str2=morning;int i, j;for(i=strlen(str1),j=0;str2j!=0; i+, j+)str1i=str2j;str1i=0;printf(string1=%s,str1);运行结果:_ string1=goodmorning 4. #include void main( )int i, j, pos;float val, a10;for(i=0; i10 ;i+)scan

32、f(%f, &ai);val=a0;for(j=0; jval)val=aj; pos=j;printf(Max=%f,position:%d, val, pos);本程序的功能是:从键盘输入10个数存到数组a中,求10个数的最大值及其位置当程序运行时,从键盘输入“1 0 2 9 3 8 4 7 5 6”,运行结果:Max=9.000000,position:35. #include float average(int x, int n)int i;float sum=0;for(i=0;in;i+)sum+=xi;return(sum/n);void main( )int a5=2,4,6,

33、8,10;float rst;rst=average(a,5);printf(result=%fn,rst);运行结果:result=6.000000_6. 给定如下程序:#include void main( )char grade;scanf(“%c”, &grade);switch (grade)case A: printf(85100n); break;case B: printf(7084n); break;case C: printf(6069n); break;case D: printf(60n); break;default: printf(errorn);当程序运行时,从键

34、盘输入“b”,输出的结果是:_error_。7. 给定如下程序:#include void main( ) int a5=2,5,3,7,6, i, j, t; for (i=0; i4; i+) for (j=i+1; jaj) t=ai; ai=aj; aj=t; for (i=0; i5; i+)printf(“%3d”, ai);该程序的功能是:将a数组中的元素从小到大排序;输出的结果为:2 3 5 6 7。8. 给定如下程序:#include void fun( )auto int b=0;static int c=4;b+; c+;printf(b=%d c=%dn, b, c);

35、void main( )int i;for (i=0; i3; i+)fun( );运行结果是:b=1 c=5b=1 c=6b=1 c=79. 给定如下程序:#include #include void main()char *p1, *p2, c, s50;gets(s);p1=s; p2=s+strlen(s)-1;for(; p1p2; p1+, p2-)c=*p1; *p1=*p2; *p2=c;printf(“The new string is %sn”, s);此程序的功能是:从键盘输入一字符串存放到数组s中,将此字符串逆序输出。当程序运行时,从键盘输入“abc we #y”,输出的结果是:The new string is y# ew cba10. 给定如下程序:#include void main()int fun(char *p);char str80;gets(str);printf(“LEN=%dn”, fun(s

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 初中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com