C程序设计复习资料(含答案)_第1页
C程序设计复习资料(含答案)_第2页
C程序设计复习资料(含答案)_第3页
C程序设计复习资料(含答案)_第4页
C程序设计复习资料(含答案)_第5页
已阅读5页,还剩17页未读, 继续免费阅读

下载本文档

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

文档简介

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

2、要求常用的格式控制符d,f,c,s),提醒注意:格式输出中域宽和小数位数的控制格式输入与输出中普通字符的原样输入和输出问题熟悉并区别以下函数:putchar()、printf()、puts();getchar()、scanf()、gets()关系运算符及其表达式、逻辑运算符及其表达式和条件运算符及其表达式的运算规则(优先级、结合性)关系表达式与逻辑表达式的构造(根据已知条件写表达式)if语句的三种形式:if语句、ifelse语句、if语句的嵌套if语句的格式与用法:简单if、嵌套if、并列if逻辑关系与执行过程嵌套规则(重点掌握if.else.if.else.if.else)switch语句的

3、格式与用法*熟练使用if和switch语句阅读和编写较为简单的选择结构程序三种循环语句:while()、dowhile()、for()的格式、执行过程及其用法循环变量初始化、循环条件构造、循环体所要实现的任务和控制变量修改注意循环期间与结束时循环控制变量的取值问题9.结合例题理解和区别break与continue语句的作用及其用法本章涉及的主要算法:累加(计数)、累乘、递推、穷举、判素数、求最大公约与最小公倍等*熟练使用三种循环语句并结合以上算法阅读和编写较为简单的循环结构及其嵌套程序第四章复杂数据类型一维、二维数组的定义、初始化及其引用方法(数据输入、输出、存储与处理)字符数组的定义、初始化

4、及其引用(字符串输入、输出、存储与处理)常用字符串处理函数:gets()、puts()、strlen()、strcmp()、strcpy()数组涉及的主要算法:排序、极值、逆序、回文和字符串的连接、复制、求长度等*熟练使用数组并结合以上算法阅读和编写较为简单的程序指针的概念:指针、指针变量、指针运算(、&、+、-、+、-)变量、数组和字符串指针的定义、指向与引用(仅限于一维数组)了解指针数组与二级指针的概念和定义*能够阅读并理解使用指针进行数据处理的相关程序(极值、逆序、回文和字符串的连接、复制、求长度等)结构体与共用体的概念、定义与引用(仅限概念)第五章结构化程序设计与应用熟悉程序的三种基本

5、结构:顺序、选择和循环*通过其中部分例题掌握选择、循环语句的使用以及循环和数组涉及的主要算法第六章函数与编译预处理掌握函数的定义、声明和调用方法及参数传递方式*结合相关例题掌握一般函数和递归函数的定义与使用熟悉局部变量与全局变量的定义及作用范围,了解各种静态与动态变量的定义、作用范围与生存期了解内部函数与外部函数的定义及调用规则掌握宏定义与宏展开(重点掌握带参数宏的定义与展开)了解文件包含的作用及其使用场合第七章文件了解文件的概念熟悉文件打开、关闭及各种与文件读写有关函数的格式与用法特别提醒:以上带*部分主要涉及程序阅读、程序填空和编写程序,其余部分主要以选择和概念填空题出现C语言程序设计参考

6、题型说明:本题仅反映考试的题型,作为考前复习参考。要通过这些典型题目,掌握复习要点中所列内容。所给题目不可死记硬背,而是通过题目掌握其涉及要点和重要算法。一、单项选择题C程序的基本构成单位是【C】文件B)命令C)函数D)语句下列叙述中错误的是【C】C程序中main()函数的位置可以任意C程序可以由多个程序文件组成,而一个程序文件又可以由一个或多个函数组成每个程序文件都有一个main()函数C程序总是从main()开始执行,也是由它结束TOC o 1-5 h z将C源程序转换为目标程序的过程称为【B】编辑B)编译C)连接D)运行C语言中最基本的数据类型包括【B】整型、实型、逻辑型B)整型、实型、

7、字符型C)整型、逻辑型、字符型D)整型、实型、字符串型以下不合法的用户标识符是【C】j2_KEYB)DoubleC)4dD)_8_C源程序中不能表示的数制是【A】二进制B)八进制C)十进制D)十六进制以下合法的字符常量的是【A】A)xl3B)081C)65D)n以下选项中,能用作数据常量的是【D】A)o115B)0118C)1.5e1.5D)115LC语言中,要求运算对象必须是整型数据的运算符是【A】A)%B)/C)D)&表示数学关系“xy三z”的C语言表达式是【C】A)x=y=zB)x=yIIy=zC)x=y&y=zD)x2y三z若变量均已正确定义并赋值,以下合法的C语言赋值语句是【A】A)

8、x=y=5;B)x=n%2.5;C)x+n=j;D)x=5=4+1;设有定义:intk=0;以下选项的四个表达式中与其他三个表达式的值不相同的是【A】A)k+B)k+=1C)+kD)k+1若有代数式:3aebe以下错误的C语言表达式是【C】A)a/b/c*e*3B)3*a*e/b/cC)3*a*e/b*cD)a*e/c/b*3设变量a是整型,f是实型,i是双精度型,则表达式10+a+i*f值的数据类型为【C:A)intB)floatC)doubleD)不确定若p和x已经正确定义,x已赋值,并且p=&x,则下列关系表达式之值为1的是【B】A)p=xB)*p=xC)&p=xD)*x=p【C】【C】

9、【B】【B】a=5,b=3v回车【C】【B】D】C】D】B】C】当用户要求输入的字符串中含有空格时,应使用的输入函数是A)scanf()B)getchar()C)gets()D)getc()下列能输出字符数组str中字符串的语句是A)printf(%c,str0);B)printf(%s,str);C)printf(%s,str);D)putchar(str);有输入语句:scanf(B%d,%d,&a,&b);为使变量a、b分别为5和3,从键盘输入数据的正确形式为53v回车B)5,3=0;j-)printf(%2d,xj2-j);A)159B)147C)753D)369执行下面程序后,a的值

10、是#defineSQR(x)x*xvoidmain()inta=10,k=2,m=1;a=SQR(k+m);printf(%dn,a);A)10B)5C)2D)1简单if语句的基本形式:if(表达式)语句其中“表达式”必须是逻辑表达式B)必须是关系表达式C)必须是逻辑表达式或关系表达式D)可以是任意合法的表达式在嵌套使用if语句时,C语言规定else总是和之前与其具有相同缩进位置的if配对B)和之前与其最近的if配对C)和之前与其最近的且不带else的if配对D)和之前的第一个if配对下列叙述中正确的是break语句只能用于switch语句在switch语句中必须使用defaultbreak语

11、句必须与switch语句中的case配对使用在switch语句中,不一定使用break语句有以下程序段:x=-1;dox=x*x;while(!x);执行时,循环体执行的次数为0B)1C)2D)不确定25.以下不正确的if语句形式是5.36.A)if(xy&x!=y);B)if(x=y)x+=y;C)if(x!=y)scanf(%d,&x)elsescanf(%d,&y);D)if(xy)x+;y+;以下程序的输出结果是voidmain()intx=2,y=-1,z=2;if(xy)if(y0)z=0;elsez+=1;printf(%dn,z);A)0以下程序的输出结果是voidmain()

12、intx=2,y=-1,z=2;if(xy)if(y0)z=0;elsez+=1;printf(%dn,z);A)0B)1C)2D)3以下能正确计算1X2X3X-X10的程序段是A)i=1,s=1;dos=s*i;i+;while(i11);C)for(i=1,s=0;i=10;i+)s=s*i;B)s=1;i=1;while(i=10)s=s*(+i);D)for(i=1,s=1;i+)s=s*i;若j为整型变量,则以下循环执行次数是for(j=0;j=0;)printf(%d,j-);A)无限次B)0次C)1次D)2次若有说明:inta10侧对a数组元素的正确引用是A)a3.5B)a(8)

13、C)a6-5D)a10C】A】C】C】若有定义语句:doublex5=1.0,2.0,3.0,4.0,5.0,*p=x;则错误引用x数组元素的是【B】A)*pB)x5C)*(p+1)D)*xC中,一个char类型的数据在内存中占用的字节数是A)C中,一个char类型的数据在内存中占用的字节数是A)1B)2C)4D)8设有程序段:intk=5;while(k=0)k-;则下列描述中正确的是A)while循环执行5次C)循环语句一次也不执行B)循环是无限循环D)循环体语句执行一次下面程序段的运行结果是charc5=a,b,0,c,0;printf(“%s”,c);A)abB)abC)AbcD)ab

14、cA】C】B】TOC o 1-5 h z以下不正确的字符串赋值语句是【C】A)char*s;s=abcde;B)chars=abcde;C)chars10;s=abcde;D)char*s=abcde;设p1、p2是指向int型一维数组的指针变量,k为int型变量,以下错误的语句是【B】A)k=*p1+*p2;B)p2=k;C)p1=p2;D)k=p2-p1;下面程序的输出结果是【A】voidmain()chars=ABCD;char*p;for(p=s;p6)n-;printf(“%3d”,n);B】B】C】D】B】D】B】A】D】AA)a是指针变量B)a是指针数组C)a是数组指针D)a是字

15、符串A)1098B)987C)10987D)9876TOC o 1-5 h z若i,j已定义为int型,则以下程序段中内循环总的执行次数是【C】for(i=5;i0;i-)for(j=1;j.错误的描述是A)A)它是C语言的预编译命令在程序中该行尾部不需要分号4.55.C)用于将C)用于将math.h包含进来D)math.h是一个函数列C程序段的输出结果是switch(a)switch(a)case0:printf(“a=0”);case1:printf(“a=1”);default:printf(“default”);A)a=0A)a=0B)a=0defaultC)a=0a=1default

16、D)default已知:inta,x,y;有语法错误的C语句是A)while(x)y+;BA)while(x)y+;B)while(x+y=0)a+;C)while(xy);D)while(y=5)+x;对于dowhile()语句,错误的说法是A)用条件控制循环体的重复执行B)循环体至少要执行一次循环体有可能一次也不执行循环体中可以包含若干条语句循环体有可能一次也不执行循环体中可以包含若干条语句已知:inta,x,y;有语法错误的C语句是A)A)while(x)y+;B)while(x+y=0)a+;B】AB】A)scanf(“%d”,p+3);scanf(“%d”,p+4);C)while(

17、xy);D)while(y=5)+x;已知:inta5,*p=a;利用p为数组元素a4赋值的正确C语句是scanf(“%d”,*(p+3);D)scanf(“%d”,*(p+4);B】对于C语句:char*a2=“abcd”,“ABCD”;B】9.60.二.9.10.设有如下说明语句:structexintx;floaty;charz;example;则下面叙述中不正确的是【B】A)struct是结构体类型的关键字B)example是结构体类型名C)x,y,z都是结构体成员名D)structex是结构体类型名有以下程序#includestructordintx,y;dt2=1,2,3,4;vo

18、idmain()structord*p=dt;printf(“%d,”,+p-x);printf(“%dn”,+p-y);程序的运行结果是【B】A)1,2B)2,3C)3,4D)4,1设有以下定义【D】uniondatashortintdl;chard2;demo;则下面叙述中错误的是。变量demo与成员dl所占的内存字节数相同变量demo中各成员的地址相同变量demo和各成员的地址相同若给demo.dl赋256后,demo.d2中的值是256设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为【B】A)EOFB)非0值C)0D)NULL读取二进制文件的函数调用

19、形式为:fread(buffer,size,count,fp);其中buffer代表的是【C】个文件指针,指向待读取的文件个整型变量,代表待读取的数据的字节数一个内存块的首地址,即读入数据存放的地址个内存块的字节数填空题TOC o 1-5 h z赋值表达式x*=y+5的另一种书写形式为_x=x*(y+5)。已知a=10,b=20,c=3,则表达式!abIIc的值为1。表达式(int)(double)(5+2.5)的值是4。若j=3,则表达式(+j)+(j+)的值为8。若a的原值为4,则表达式“a*=a-=3”运算后,a的值是1。若a=5、b=3、c=1,则表达式“abc”的值为0。若有定义:i

20、nta=7;floatx=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值为25。整数m既能被3整除又能被4整除的逻辑表达式为(m%3=0)&(m%4=0)。写出代数式Ovxvl的C逻辑表达式为(0vx)&(xvl)。写出判断字符变量c所存字符是否为字母的逻辑表达式为c=a&cv=zllc=A&cvZ实现变量a和b交换的语句或语句序列是a=a+b:b=a-b:a=a-b:。若整型变量a和b中的值分别为7和9,要求按以下格式输出a和b的值:a=7b=9请完成输出语句:printf(a=%dnb=%d,a,b);若有定义:doublea105;贝燉组a中行下标最大值为_9_

21、,列下标最大值为_4_。TOC o 1-5 h z若有定义:inta=1,4,6,5,8,9;贝V*(a+5)的值为_9_。设有如下定义inta56,*p;使p指向数组元素a42的语句为-p=&a42;。若有定义:inta10,*p=a;则元素a5的值用p表示的形式是*(p+5)。若有定义:int*p4;则标识符p表示。凡是函数中未指定存储类型的局部变量,其默认的存储类型为auto。函数有内部函数和外部函数,函数定义时用来说明该函数仅限本文件调用的关键字是-static。未加特别说明(说明为静态)的全局变量是外部变量,能被其它文件使用,而在引用它的文件中,需要用关键字extern说明。三、程序

22、填空下面程序的功能是:从键盘输入一个字符,若是大写字母,贝转换为小写字母并输出,若为小写字母贝直接输出,请在处填上合适内容,使程序完整。includevoidmain()charch;ch=getchar();if(ch=A&chv=Z)ch+=32;printf(“%c”,ch);下面程序的功能是:求1100间的偶数和,请在处填上合适内容,使程序完整。#includevstdio.hvoidmain()intnum,sum=0;for(num=2;numv=100;num=num+2)sum=sum+num:printf(1-100间的偶数和是:%dn,sum);下面程序段是求n!的递归函数

23、,请将函数补充完整。doublefac(intn)doubleresult;if(n=1)result=1;elseresult=n*fac(n-1);return(result);以下程序的功能是:输入一整数n判断是否为素数。#includevoidmain()inti,n;scanf(“%d”,&n);for(i=2;i=n)printf(“%disaprimenumber.n”,n);elseprintf(“%disnotaprimenumber.n”,n);如下程序实现字符串逆序,请在处填上合适内容,使程序完整。#include#includevoidmain()char*p1,*p2

24、,c,s50;scanf(“%s”,s);p1=s;p2=s+strlen(s)-1;for(;plvp2:p1+,p2-)c=*p;*p=*p2;*p2=c;printf(“Thenewstringis%sn”,s);如下程序判断字符串是否回文,请在处填上合适内容,使程序完整。#include#includevoidmain()char*pl,*p2,c,s50;gets(s);pl=s;p2=s+strlen(s)-1;for(;plp2;pl+,p2-)if()break;if(p1p2)printf(“该字串不回文n”);elseprintf(“该字串回文n);下列程序用来求任意两整数

25、的最大公约数,请在处填上合适内容,使程序完整#includevoidmain()inttemp,m,n,x;printf(Entertwonumbers:n);scanf(%d,%d,&m,&n);if(mn)temp=m,m=n,n=temp;for(x=n;x-)if(m%x=O&n%x=O)break:printf(n最大公约数为:%dn,x);下列程序用“起泡法”对输入的字符串降序排序,请在处填上合适内容,使程序完整#include#includevoidmain()voidsort(char*s):charstr20;printf(”请输入字符串:n);scanf(%s,str);s

26、ort(str);printf(排序结果:n);puts(str);voidsort(char*s)inti,j,n;charc;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;四、阅读程序includevoidmain()charch;intcnt1=0,cnt2=0;while(ch=getchar()!=n)if(ch=a&ch=z)cnt1+;elsecnt2+;printf(COUNT=%dn,cnt1);若输入“ThisisaCprogram.”,运行结果:COUNT=13#in

27、cludevoidmain()inti,j,temp;inta=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+)printf(%2d,aj);运行结果:9876543210#include#includevoidmain()charstr180=good,str2=morning;inti,j;for(i=strlen(str1),j=0;str2j!=0;i+,j+)str1i=str2j;str1i=0;printf(string1=%s,str1);运行结果:string1=goo

28、dmorning#includevoidmain()inti,j,pos;floatval,a10;for(i=0;i10;i+)scanf(%f,&ai);val=a0;for(j=0;jval)val=aj;pos=j;printf(Max=%f,position:%d,val,pos);本稈序的功能是:从键盘输入10个数存到数组a中,求10个数的最大值及其位置当程序运行时,从键盘输入“1029384756”,运行结果:Max=9.000000,position:3#includefloataverage(intx,intn)inti;floatsum=0;for(i=0;ivoidmai

29、n()chargrade;scanf(“%c”,&grade);switch(grade)caseA:printf(85100n);break;caseB:printf(7084n);break;caseC:printf(6069n);break;caseD:printf(60n);break;default:printf(errorn);error输出的结果为:23567。当程序运行时,从键盘输入“error输出的结果为:23567。给定如下程序:#includevoidmain()inta5=2,5,3,7,6,i,j,t;for(i=0;i4;i+)for(j=i+1;jaj)t=ai;

30、ai=aj;aj=t;for(i=0;i5;i+)printf(“%3d”,ai);该程序的功能是:将a数组中的元素从小到大排序;给定如下程序:#includevoidfun()autointb=0;staticintc=4;b+;c+;printf(b=%dc=%dn,b,c);voidmain()inti;for(i=0;i3;i+)fun();运行结果是:b=1c=5b=1c=6b=1c=7给定如下程序:#include#includevoidmain()char*p1,*p2,c,s50;gets(s);p1=s;p2=s+strlen(s)-1;for(;p1p2;p1+,p2-)c

31、=*p1;*p1=*p2;*p2=c;printf(“Thenewstringis%sn”,s);此稈序的功能是:从键盘输入一字符串存放到数组S中,将此字符串逆序输出。当程序运行时,从键盘输入“abcwe#y”,输出的结果是:Thenewstringisy#ewcba10.给定如下程序:#includevoidmain()intfun(char*p);charstr80;gets(str);printf(“LEN=%dn”,fun(str);intfun(char*p)intn=0;while(*p+)n+;return(n);此稈序的功能是:用函数fun计算字符串的长度,主函数输入字符串,输

32、出字符串长度。六、按要求编程编程计算1!+2!+3!+.+20!。#includevoidmain()floats=0,t=1;intn;for(n=1;n=20;n+)t=t*n;s=s+t;printf(1!+2!+20!=%en,s);统计由键盘输入的任一字符串中字母、数字和空格的个数。#includevoidmain()charch;intletters=0,digit=0,space=0;while(ch=getchar()!=n)if(ch=a&ch=A&ch=0&ch=9)digit+;elseif(ch=)space+;printf(letters=%d,digit=%d,sp

33、ace=%d,letters,digit,space);编写程序找出1100之间的素数,并统计素数的个数。#include#includevoidmain()intm,k,i,n=0;for(m=1;m=100;m=m+2)k=sqrt(m);for(i=2;i=k+1)printf(%3d,m);n=n+1;if(n%10=0)printf(n);printf(ntotalnumberis=%d,n);从键盘输入10个数,找出最大值与最小值,并计算它们的平均值#includevoidmain()floata10,aver,sum,max,min;inti;for(i=0;i10;i+)sca

34、nf(%f,&ai);max=min=sum=a0;for(i=1;imax)max=ai;if(aimin)min=ai;sum=sum+ai;aver=sum/10;printf(aver=%f,max=%f,min=%f,aver,max,min);将键盘输入的任意字符串进行逆序并输出。方法1:#include#includevoidmain()chars80,t;inti,j;gets(s);j=strlen(s)-1;for(i=0;ij;i+,j-)t=si;si=sj;sj=t;printf(“Thenewstringis%sn”,s);方法2:#include#includev

35、oidmain()chars80,t;inti,j;gets(s);j=strlen(s);for(i=0;ij/2;i+)t=si;si=sj-1-i;sj-1-i=t;printf(“Thenewstringis%sn”,s);方法3:#include#includevoidmain()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(“Thenewstringis%sn”,s);判断由键盘输入的字符串是否为回文方法1:#include#includevoidmain()chars80;inti,j;gets(s);j=strlen(s)-1;for(i=0;ij;i+,j-)if(si!=sj)break;if(ivj)printf(“该字符串不回文”);elseprintf(“该字符串回文”);方法2:#include#includevoidmain()chars80

温馨提示

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

评论

0/150

提交评论