还剩22页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
第一章C语言概述一.知识点1.C语言的特点
①语言简洁、紧凑,使用方便、灵活;
②运算符丰富;
③数据结构丰富;
④具有结构化控制语句;
⑤语法限制不太严格,程序设计自由度大;
⑥可以进行位操作,能实现汇编语言的大部分功能,能直接对硬件进行操作;
⑦生成的目标代码质量高,程序执行效率高;
⑧程序的移植性好2.C程序的组成⑴C程序是由函数构成的;⑵一个函数包括函数的首部(即函数的第一行)和函数体(即花括号部分);⑶函数体一般包括声明部分和执行部分;⑷一个C程序总是从main函数开始执行,从main函数结束;⑸C程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多行上;⑹每个语句和数据定义的最后必须有一个分号;⑺C语言本身没有输入输出语句,是通过函数实现输入输出的;⑻可以用/*……*/对C程序的任何部分作注释3.C语言程序的运行源程序文件的扩展名为.c,目标程序文件的扩展名为.obj,可执行程序文件的扩展名为.exe二.练习㈠.填空题1.在TURBOC环境中用RUN命令运行一个C程序时,所运行的程序的后缀是.exe2.C语言源程序文件的后缀是.c,经过编译后,生成文件的后缀是.obj,经过连接后,生成文件的后缀是.exe3.结构化程序由顺序结构、选择结构、循环结构三种基本结构组成㈡.选择题1.组成C语言程序的是(C)A.子程序B.过程C.函数D.主程序和子程序2.以下叙述中正确的是(C)A.在C程序中无论是整数还是实数,只要在允许的范围内都能准确无误的表示B.C程序由主函数组成C.C程序由函数组成D.C程序由函数和过程组成㈢.程序设计题1.编写一个C程序,输入a、b、c三个数,输出其中最大者第二章算法一.知识点1.算法为解决一个问题而采取的方法和步骤2.算法的分类数值算法、非数值算法3.算法的特点有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性4.算法描述方法自然语言、流程图、改进流程图、N—S流程图、伪代码、计算机语言二.练习用N—S图表示下列问题1.有两个瓶子A和B,分别盛放醋和酱油,要求将它们互换2.依次将10个数输入,要求将其中最大的数打印出来3.有3个数a、b、c,要求按从大到小的顺序把它们打印出来4.求1+2+3+……+1005.判断一个数n能否同时被3和5除6.将100~200之间的素数打印出来7.求两个整数m和n的最大公约数8.求方程ax2+bx+c=0的根;分别考虑有两个不等的实根和有两个相等的实根的情况第三章数据类型、运算符与表达式一.知识点1.C的数据类型基本、构造、指针和空类型,char、int、short、long、unsigned、float、double、enum、struct、union、typedef2.常量与变量的概念,注意符号常量的定义与使用;3.整型、实型、字符型常量的表示,注意整型常量的十进制、八进制、十六进制的书写4.变量的定义,C的标识符包括关键字、预定义标识符、用户定义标识符;用户定义标识符的可用字符为字母、数字、下划线,第一个字符为字母或下划线5.常见数据类型的取值范围,int为-32768~+32767,unsignedint为0~655356.转义字符\n、\t、\b、\r、\f、\\、\’、\”、\ddd、\xhh7.不同数值型数据的混合运算,低级类型转换为高级类型运算8.C的运算符注意结合方向和运算的优先级9.算术运算符+、-、*、/、%、++、--,注意自加、减运算符分前缀和后缀两种方式其中前缀方式为先自加、减,后引用;后缀方式为先引用,后自加、减;运算符%要求运算量为整数,运算结果也为整数注意除运算时,若运算量为整型时,其运算结果也是整型的规则10.赋值类运算符=、+=、-=、*=、/=、%=,注意含义和数据类型的转换11.逗号运算符的使用,注意逗号运算符的运算规则二.练习㈠.填空题1.若k为整型变量且赋值11请写出运算k++后表达式的值11和变量的值122.若x为double型变量,运算x=
3.2,++x后表达式的值
4.2和变量的值
4.23.函数体由符号{开始,用符号}结束函数体的前面是声明部分,其后是执行部分4.C语言中的标识符可分为关键字、用户定义和预定义标识符三类5.在C语言程序中,用关键字int定义基本整型变量,用关键字float定义单精度实型变量,用关键字double定义双精度实型变量6.把a
1、a2定义成单精度实型变量,并赋初值1的定义语句是floata1=1,a2=1;7.C程序中定义的变量,代表内存中的一个存储空间8.表达式
3.5+1/2的计算结果是
3.59.写出数学表达式三个等价的C语言表达式a*b/c/d、a/c*b/d、a*b/(c*d)10.通常一个字节包含8个二进制位11.当计算机用两个字节存放一个整数时,能存放的最大(十进制)整数是
32767、最小(十进制)整数是-3276812.在C语言中整数可用八进制数、十进制数和十六进制数三种数制表示13.C语言中,int型数据占2个字节,long型数据占4个字节,unsignedint型数据占2个字节,short型数据占2个字节,float型数据占4个字节,double型数据占8个字节,char型数据占1个字节㈡.选择题1.以下选项中正确的整型常量是(B)A.
12.B.-20C.1,000D.4562.以下选项中正确的实型常量是(D)A.0B.
3.1415C.
0.329╳102D..8713.以下选项中不合法的用户标识符是(C)A._123B.printfC.A$D.Dim4.C语言中运算对象必须是整型的运算符是(A)A.%B./C.!D.*5.可在C程序中用作用户标识符的一组标识符是(B)A.voidB.as_b3C.ForD.2cdefine_123-abcDOWORDIfcaseSIG6.若变量已正确定义并赋值,符合C语言语法的表达式是(B)A.a=a+7;B.a=7+b+c,a++C.int(
12.3%4)D.a=a+7=c+b7.不合法的八进制数是(B)A.0B.028C.077D.018.不合法的十六进制数是(A)A.oxffB.0XabcC.0x11D.0x19㈢.程序设计题1.书上P65页
3.
6、
3.
9、
3.
10、
3.12第四章顺序程序设计一.知识点1.C语句的类型控制语句、函数调用语句、表达式语句、空语句、复合语句2.输入输出的概念输入输出是相对主机而言,C语言是由函数来实现输入输出的3.字符数据的输入/输出getchar()、putchar()4.格式输入/输出scanf()、printf()5.printf的格式符d、i,o,x、X,u,c,s,f,e、E,g、G;l,m,n,-6.scanf的格式符d、i,o,x、X,u,c,s,f,e、E,g、G;l,m,*;注意输入数据时数据流的分隔符,系统默认的分隔符为空格、tab键和回车7.顺序结构的设计思想声明变量、输入数据、处理、输出结果二.练习㈠.填空题1.以下程序段执行后的输出结果是⑴-2002500⑵i=-200,j=2500inti=-200,j=2500;⑶i=-200printf(“⑴%d%d”,i,j);j=2500printf(“⑵i=%d,j=%d\n”,i,j);printf(“⑶i=%d\nj=%d\n”,i,j);2.复合语句在语法上被认为是一个语句空语句的形式是;3.C语句的最后用;结束4.以下程序段的输出结果是x=127,x=177,x=7F,x=127intx=0177;printf(“x=%6d,x=%6o,x=%6x,x=%6u\n”,x,,x,x,x);5.以下程序段的输出结果是a=
513.789125,a=
513.79,a=
513.789125doublea=
513.789215;printf(“a=%
8.6f,a=%
8.2f,a=%
14.8f,a=%
14.8lf\n”,a,a,a,a);6.以下程序段的输出结果是8,%da=3+5,a*4;x=11/3;printf(“%d,%%d\n”,a,x);7.以下程序输入三个整数值给a、b、c,程序把b中的值给a,把c中的值给b,把a中的值给c,交换后输出a、b、c的值请填空#includestdio.hmain(){inta,b,c,t;printf(“Entera,b,c”);scanf(“%d,%d,%d”,abc);t=a;a=b;b=c;c=t;printf(“a=%d,b=%d,c=%d\n”,a,b,c);}8.以下程序不借助任何变量把a、b中的值进行交换请填空#includestdio.hmain(){inta,b;printf(“Inputa,b”);scanf(“%d,%d”,ab);a+=b;b=a-b;a=a-b;printf(“a=%d,b=%d\n”,a,b);}㈡.选择题1.若a、b、c、d都是int型变量且初始值为0,下列不正确的赋值语句是(C)A.a=b=c=100;B.d++;C.c+b;D.d=(c=22)-(b++);2.以下选项中不是C语句的是(C)A.{inti;i++;printf(“%d\n”,i);}B.;C.a=5,c=10D.{;}3.以下合法的C语言赋值语句是(D)A.a=b=58B.k=int(a+b);C.a=58,b=58D.--i;4.以下程序的输出结果是(C)A.0B.1C.3D.不确定的值main(){intx=10,y=3;printf(“%d\n”,y=x/y);}5.若变量已正确说明为int类型,要给a、b、c输入数据,正确的输入语句是(D)A.read(a,b,c);B.scanf(“%d%d%d”,a,b,c);C.scanf(“%D%D%D”,a,b,c);D.scanf(“%d%d%d”,a,b,c);6.若变量已正确定义,要将a和b中的数进行交换,下面不正确的语句组是(C)A.a=a+b,b=a-b,a=a-b;B.t=a,a=b,b=t;C.a=t;t=b;b=a;D.t=b;b=a;a=t;7.若变量已正确定义,以下程序段的输出结果是(D)A.输出格式说明与输出项不匹配,输出无定值B.
5.1700C.
5.16800D.
5.16900x=
5.16894;printf(“%f\n”,(int)(x*1000+
0.5)/(float)1000);8.执行以下程序段后,c3中的值是(A)A.0B.1/2C.
0.5D.1intc1=1,c2=2,c3;c3=c1/c2;9.执行以下程序段后,其输出结果是(B)A.0,0,-10B.0,0,5C.-10,3,-10D.3,3,-10inta=0,b=0,c=0;c=(a-=a-5),(a=b,b+3);printf(“%d,%d,%d\n”,a,b,c);10.以下程序的输出结果是(D)A.a=%2,b=%5B.a=2,b=5C.a=%%d,b=%%dD.a=%d,b=%dmain(){inta=2,b=5;printf(“a=%%d,b=%%d\n”,a,b);}11.若int型占两个字节,以下程序段的输出是(D)A.-1,-1B.-1,32767C.-1,32768D.-1,65535inta=-1;printf(“%d,%u\n”,a,a);12.以下程序段的输出结果是(C)A.|
3.1415|B.|
3.0|C.|3|D.|
3.|floata=
3.1415;printf(“|%
6.0f|\n”,a);13.以下程序段的输出结果是(B)A.98B.89C.66D.以上三个都不对#includemath.hmain(){doublea=-
3.0,b=2;printf(“%
3.0f%
3.0f\n”,pow(b,fabs(a)),pow(fabs(a),b));}14.若a为整型变量,则以下语句(B)A.赋值不合法B.输出值为-2C.输出为不确定值D.输出值为2a=-2L;printf(“%d\n”,a);15.若有定义chars=‘\092’;则该语句(B)A.使s的值包含1个字符B.定义不合法,s的值不确定C.使s的值包含4个字符D.使s的值包含3个字符16.若k、g均为int型变量,则下列语句的输出为(D)A.15B.16C.15D.166f70716fk=017;g=111;printf(“%d\n”,++k);printf(“%x\n”,g++);17.已知字母a的ASCII十进制代码为97,执行下列语句后的输出为(C)A.b,cB.a--运算不合法,故有语法错误C.98,cD.格式描述和输出项不匹配,输出无定值chara=‘a’;a--;printf(“%d,%c\n”,a+‘2’-‘0’,a+‘3’-‘0’);18.下列程序的输出为(A)A.
27.000000B.
27.500000C.
28.000000D.
28.500000#includestdio.hmain(){intm=7,n=4;floata=
38.4,b=
6.4,x;x=m/2+n*a/b+1/2;printf(“%f\n”,x);}19.下列程序的输出结果是(C)A.18B.9C.-18D.-9main(){inta=9;a+=a-=a+a;printf(“%d\n”,a);}20.下列程序的输出结果是(A)A.0B.5C.1D.不确定值main(){inta=7,b=5;printf(“%d\n”,b=b/a);}21.下列程序的输出结果是(C)A.12B.11C.10D.9main(){inta=011;printf(“%d\n”,++a);}㈢.程序设计题1.书P84页
4.
4、
4.
5、
4.
6、
4.82.编写程序,输入两个整数1500和350,求出它们的商和余数并进行输出3.编写程序,读入三个双精度数,求它们的平均值并保留此平均值小数点后一位数,对小数点后第二位数进行四舍五入,最后输出结果4.输入一个华氏温度,要求输出摄氏温度公式为c=5(f-32)/9第五章选择结构程序设计一.知识点1.关系运算符、逻辑运算符、逻辑值的表示与含义;注意、||的运算规则2.三种if语句3.选择结构的嵌套,注意if与else的配对;4.条件运算符?5.switch语句,注意其执行过程;6.选择结构程序设计思想二.练习㈠.填空题1.C语言中用1表示逻辑值“真”,用0表示逻辑值“假”2.C语言中的关系运算符按优先级别是、=、、=、==、!=3.C语言中的逻辑运算符按优先级别是!、、||4.C语言中的关系运算符和逻辑运算符的优先级别是!、、=、、=、==、!=、、||5.C语言中逻辑运算符的!优先级高于算术运算符6.将下列数学式改写成C语言的关系表达式或逻辑表达式a=b或aca==b||ac|x|4x-4||x47.下列程序的输出结果1main(){inta=100;if(a100)printf(“%d\n”,a100);elseprintf“%d\n”,a=100;}8.若已知a=
10、b=
15、c=
1、d=
2、e=0,请分别给出下列表达式的运算结果⑴a*bc1⑵a+b10||a+b01⑶e0⑷c==be1⑸!ae0⑹a++e++c++0⑺!ee==b==++c0⑻0aa20⑼
1.
2345.9821⑽b==10a==100⑾!0||da==c+d0⑿a+c==b==b+d==a||c=b+ad=c+b19.当a=
1、b=
2、c=3时,执行以下if语句后,a=
3、b=
1、c=1if(ac);b=a;a=c;c=b;10.当a=
1、b=
2、c=3时,执行以下if语句后,a=
3、b=
2、c=2if(ac)b=a;a=c;c=b;11.当a=
1、b=
2、c=3时,执行以下if语句后,a=
1、b=
2、c=2if(ac)b=a,a=c;c=b;12.将以下两条if语句合并为一条if语句ifab{scanf“%d”x;i++;}else{scanf“%d”y;j++;if(ab)scanf(“%d”,x);elsescanf(“%d”,y);if(a=b)i++;elsej++;13.将以下嵌套的if语句改写成不嵌套的if语句ifw0||w100k=0;elsek=1;if(w0)k=0;elseif(w=100)k=1;elsek=0;14.以下程序判断输入的一个整数是否能被3或7整除,若能整除,输出“YES”,若不能整除,输出“NO”请填空#includestdio.hmain(){intk;printf(“Enteraintnumber”);scanf(“%d”,k);if(k%3==0||k%7==0)printf(“YES\n”);elseprintf(“NO\n”);}15.在switch语句中,当执行到break语句时,使流程跳出switch结构㈡.选择题1.若给定条件表达式(M)?(a++)(a--),则和表达式M等价的表达式为(C)A.M==0B.M==1C.M!=0D.M!=12.为表示关系x≥y≥z,应使用的C语言表达式是(A)A.x=yy=zB.x=yANDy=zC.x=y=zD.x=yy=z3.以下程序的输出结果是(C)A.0B.1C.2D.3main(){inta=2,b=-1,c=2;if(ab)if(b0)c=0;elsec+=1;printf(“%d\n”,c);}4.以下程序的输出结果是(A)A.1B.2C.3D.4main(){intw=4,x=3,y=2,z=1;printf(“%d\n”,(wxw:zyz:x));}5.若执行以下程序时,从键盘上输入3和4,则输出结果是(B)A.14B.16C.18D.20main(){inta,b,s;scanf(“%d%d”,a,b);s=a;if(ab)s=b;s*=s;printf(“%d\n”,s);}6.在C语言中,if语句后的一对圆括号中,用以决定分支的流程的表达式(D)A.只能用逻辑表达式B.只能用关系表达式C.只能用逻辑表达式或关系表达式D.可用任意表达式7.下列程序段运行后,x的值是(D)A.14B.4C.15D.3ok1=1;ok2=2;ok3=3;x=15;if(!ok1)x--;elseif(ok2)if(ok3)x=3;elsex=4;8.在C语言中,switch语句后一对圆括号中exp的类型(A)A.可以是任何类型B.只能为int型C.可以是整型或字符型D.只能是整型或实型9.以下各组运算符中,优先级最高的分别为(⑴B⑵C⑶C⑷D)⑴A.?B.++C.D.+=⑵A.*=B.=C.(类型)D.,⑶A.||B.%C.!D.==⑷A.=B.!=C.*乘D.10.若a为整型变量,b为字符型变量,则以下正确的switch语句是(A)A.switch((int)x/10)B.switch(b){case1a++;break;{case‘\042’;x=a/b;break;case2b++;break;case‘6’;x=a*b;break;case3c++;break;}case‘\010’;x=a+c;break;}C.switch((int)x/10);D.switch(a/100+10){case0a++;break;{case2x=a/b;break;default b++;break;case6x=a*b;break;case3+1c++;break;case8x=a+c;break;case3d++;break;}case10x=a-c;break;}㈢.程序设计题1.从键盘输入一个字母,若是大写字母,要求改用小写字母输出2.求ax2+bx+c=0的根a、b、c由键盘输入,设b2-4ac=
0.3.P104页
5.
3、
5.
5、
5.
8、
5.9第六章循环控制一.知识点1.循环的概念,C实现循环的方法;2.goto语句,注意标号的书写;3.while语句,注意条件表达式的设计;4.do……while语句,注意条件表达式的设计,及while之后的分号;5.for语句,注意for中三个表达式的一般含义;6.循环的嵌套;7.break与continue语句,注意二者之间的区别;8.循环结构程序设计思想二.练习㈠.填空题1.以下程序段的输出结果y=7x=21x=y=0;while(x20)y++,x+=3;printf(“y=%d,x=%d\n”,y,x);2.当执行以下程序段后,i的值是
5、j的值是
4、k的值是6inta,b,c,d,i,j,k;a=10;b=c=d=5;i=j=k=0;for(;ab;++b)i++;while(a++c)j++;dok++;while(ad++);3.以下程序段的输出结果死循环,无输出结果intk,m,n;n=10;m=1;k=1;while(k=n)m*=2;printf(“%d\n”,m);4.以下程序的输出结果-1main(){intx=2;while(x--);printf(“%d\n”,x);}5.以下程序段的输出结果11inti=0,sum=1;do{sum+=i++;}while(i5);printf(“%d\n”,sum);6.有以下程序段s=
1.0;for(k=1;k=n;k++)s=s+
1.0/(k*(k+1));printf(“%f\n”,s);要使下面的程序段的功能与上面程序段的功能相同,请填空s=
0.0;k=0;d=
1.0;do{s=s+d;k++;d=
1.0/(k*(k+1));}while(k=n);printf(“%f\n”,s);7.以下程序的功能是从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入请填空main(){floatx,amax,amin;scanf(“%f”,x);amax=x;amin=x;while(x=0){if(xamax)amax=x;if(xamin)amin=x;scanf(“%f”,x);}printf(“\namax=%f\namin=%f\n”,amax,amin);}8.以下程序段的输出结果a=12y=12↙a=16y=28↙a=16y=44↙a=16y=60a=10;y=0;do{a+=2;y+=a;printf(“a=%d,y=%d\n”,a,y);if(y50)break;}while(a=14);9.下列程序段中,for循环的循环次数为
0.a=2;b=10;for(i=b;i=a;i--,a++)printf(“%3d”,i);10.以下程序段的输出结果8*6*4*2*0↙8*6*4*2*0for(i=0;i3;i++,i++){for(j=10;j0;j--){if((j+i)%2){j--;printf(“*%d”,j);continue;}--j;--j;printf(“%d”,j);}printf(“\n”);}㈡.选择题1.以下程序段的输出结果是(D)A.9B.1C.11D.10intk,j,s;for(k=2;k6;k++,k++){s=1;for(j=k;j6;j++)s+=j;}2.以下程序段的输出结果是(C)A.12B.15C.20D.25inti,j,m=0;for(i=1;i=15;i+=4)for(j=3;j=19;j+=4〉m++;printf(“%d\n”,m);3.以下程序段的输出结果是(B)A.10B.9C.10D.99898878776intn=10;while(n7){n--;printf(“%d\n”,n);}4.以下程序段的输出结果是(C)A.1B.30C.1-2D.死循环intx=3;do{printf(“%3d”,x-=2);}while(!(--x));5.以下程序的输出结果是(C)A.15B.14C.不确定D.0main(){inti,sum;for(i=1;i6;i++)sum+=sum;printf(“%d\n”,sum);}6.以下程序的输出结果是(B)A.741B.852C.963D.875421main(){inty=10;for(;y0;y--)if(y%3==0){printf(“%d”,--y);continue;}}7.若x是int型变量,以下程序段的输出结果是(D)A.**3B.##3C.##3D.**3##4##4**4**4##5**5**5##5for(x=3;x6;x++)printf((x%2)?(“**%d”)(“##%d\n”),x);8.以下程序的输出结果是(A)A.*#*#*#$B.#*#*#*$C.*#*#$D.#*#*$main(){inti;for(i=1;i=5;i++){if(i%2)printf(“*”);elsecontinue;printf(“#”);}printf(“$\n”);}9.以下叙述正确的是(D)A.do_while语句构成的循环不能用其它语句构成的循环来代替B.do_while语句构成的循环只能用break语句退出C.用do_while语句构成循环时,只有在while后的表达式为非零时结束循环D.用do_while语句构成循环时,只有在while后的表达式为零时结束循环10.以下程序的输出结果是(D)A.3981B.4284C.2668D.2870main(){intx,i;for(i=1;i=100;i++){x=i;if(++x%2==0)if(++x%3==0)if(++x%7==0)printf(“%d”,x);}printf(“\n”);}11.对下面程序段描述正确的是(C)A.while循环执行了10次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句只执行一次intx=10;while(x=0)x=x-1;12.以下关于for循环的正确描述是(D)A.for循环只能用于循环次数已确定的情况B.for循环是先执行循环体语句,后判断表达式C.在for循环中,不能用break语句跳出循环体D.for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来13.下列程序段中是死循环的是(C)A.intn=1;while(!n)n++;B.intn=1;do{n--;}while(n);C.intn=1;do{n++;}while(n);D.for(n=5;n1;);14.以下能正确计算1╳2╳3╳…╳10的程序段是(C)A.do{k=1;n=1;n=n*k;k++;}while(k=10);B.do{k=1;n=0;n=n*k;k++;}while(k=10);C.k=1;n=1;do{n=n*k;k++;}while(k=10);D.k=1;n=0;do{n=n*k;k++;}while(k=10);㈢.程序设计题1.编写程序,求1-3+5-7+…-99+101的值2.求1+2+3+…+100的值3.把100~200之间的不能被3整除的数输出4.求Fibonacci数列前40个数5.打印1000以内的所有素数6.书上P120页
6.
4、
6.
5、
6.
6、
6.
10、
6.
12、
6.13第七章数组一.知识点1.数组的概念与定义2.数组的初始化3.数组元素的引用4.字符数组的定义、使用、字符串处理函数5.数组数据的一般处理方式二.练习㈠.填空题1.若有定义doublew
[10];则w数组元素下标的上限是9,下限是02.以下程序的输出结果是12main(){intarr
[10],i,k=0;for(i=0;i10;i++)arr[i]=i;for(i=0;i4;i++)k+=arr[i]+i;printf(“%d\n”,k);}3.以下程序的输出结果是30002main(){inti,j,row,col,m;intarr
[3]
[3]={{100,200,300},{28,72,-30},{-850,2,6}};m=arr
[0]
[0];for(i=0;i3;i++)for(j=0;j3;j++)if(arr[i][j]m){m=arr[i][j];row=i;col=j;}printf(“%d,%d,%d\n”,m,row,col);}4.在C语言中,二维数组元素在内存中的存放顺序是按行存放5.若二维数组a有m列,则计算任一元素a[i][j]在数组中相对位置的公式为i*m+j+16.若有定义inta
[3]
[4]={{1,2},{0},{4,6,8,10}};则初始化后,a
[1]
[2]得到的初值是0,a
[2]
[1]得到的初值是67.若有说明chars
[20];如果想从键盘上把字符串“Thisisabook.”输入到数组s中,应当调用的函数是strcpy;函数调用语句的形式是strcpys“Thisisabook.”8.若有charstr1
[20]={“agood”},str[]={“student”};能把str2中的字符串接到str1中的字符串后面的函数调用语句是strcatstr1str9.以下findmax函数返回数组s中最大元素的下标,数组中元素的个数由t传入,请填空findmax(ints[],intt){intk,p;for(p=0,k=p;pt;p++)if(s[p]s[k])p=k;returnp;}10.以下程序统计从终端输入的字符中每个大写字母的个数,num
[0]中统计字母A的个数,其它依次类推用#号结束输入,请填空#include“stdio.h”#include“ctype.h”main(){intnum
[26]={0},i;charc;while(c=getchar!=‘#’)if(isupper(c))num[c-‘A’]+=1;for(i=0;i26;i++)if(num[i])printf(“%c%d\n”,i+‘A’,num[i]);}㈡.选择题1.以下程序的输出结果是(A)A.不确定的值B.3C.2D.1main(){intn
[2]={0},i,j,k=2;for(i=0;ik;i++)for(j=0;jk;j++)n[j]=n[i]+1;printf(“%d\n”,n[k]);}2.以下对一维数组a的正确说明是(D)A.chara
(10);B.inta[];C.intk=5,a[k];D.chara[]={‘a’,‘b’,‘c’};3.若有说明语句inta
[2]
[4];则对a数组元素的正确引用是(A)A.a
[0]
[3]B.a
[0]
[4]C.a
[2]
[2]D.a
[2][2+1]4.以下能对二维数组y进行正确初始化的语句是(B)A.inty
[2][]={{1,0,1},{5,2,3}};B.inty[]
[3]={{1,2,3},{4,5,6}};C.inty
[2]
[4]={1,2,3},{4,5},{6};D.inty[]
[3]={{1,0,1,0},{},{1,1}};5.若有说明语句inty[]
[4]={0,0};则下面不正确的叙述是(D)A.数组y的每个元素都可以得到初值0;B.二维数组y的行数为1;C.该说明等价于inty[]
[4]={0};D.只有元素y
[0]
[0]和y
[0]
[1]可得到初值0,其余元素均得不到初值0;6.若有说明语句inta[]
[3]={1,2,3,4,5,6,7,8};则a数组的行数为(A)A.3B.2C.无确定值D.17.若二维数组y有m列,则在y[i][j]前的元素个数为(B)A.j*m+iB.i*m+jC.i*m+j-1D.i*m+j+18.若有以下语句,则正确的描述是(B)charx[]=“12345”;chary[]={‘1’,‘2’,‘3’,‘4’,‘5’};A.x数组与y数组的长度相同B.x数组长度大于y数组长度C.x数组长度小于y数组长度D.x数组等价于y数组9.下面程序段的运行结果是(B)A.‘a’‘b’B.abC.abcD.abccharc
[5]={‘a’,‘b’,‘\0’,‘c’,‘\0’};printf(“%s”,c);10.有两个字符数组a、b,则以下能正确为a、b进行赋值的语句是(D)A.gets(a,b);B.scanf(“%s%s”,a,b);C.getchar(a);getchar(b);D.gets(a);gets(b);11.有字符数组s1
[80]和s2
[80],则以下能正确对s
1、s2进行输出的语句是(BD)A.puts(s1,s2);B.printf(“%s,%s\n”,s1,s2);C.putchar(s1,s2);D.puts(s1),puts(s2);12.下面描述正确的是(D)A.两个字符串所包含的字符个数相同时,才能比较字符串;B.字符个数多的字符串比字符个数少的字符串大C.字符串“STOP”与“STOP”相等D.字符串“That”小于字符串“The”13.以下对字符数组的描述中错误的是(C)A.字符数组中可以存放字符串B.字符数组中的字符串可以整体输入、输出C.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值D.不可以用关系运算符对字符数组中的字符串进行比较14.语句printf(“%d\n”,strlen(“school”));的输出结果是(B)A.7B.6C.存在语法错误D.不定值15.有语句chars1
[10],s2
[10]={“books”};则能将s2的值正确赋给s1的语句是(B)A.s1={“books”};B.strcpy(s1,s2);C.s1=s2;D.strcpy(s2,s1);㈢.程序设计题1.编写程序打印九九乘法表2.用随机函数产生20个100以内的整数,用选择法对它们排序3.用随机函数产生50个200以内的整数,用冒泡法对它们排序4.打印杨辉三角形的前10行5.有一篇文章,共有3行文字,每行有80个字符要求统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数6.输入一行数字字符,请用数组元素作为计数器来统计每个字符的个数用下标为0的元素统计字符“1”的个数,下标为1的元素统计字符“2”的个数,依次类推第八章函数一.知识点1.函数定义的一般形式函数类型函数名(形参类型形参名,……){函数体}2.函数的参数注意形参与实参在类型、个数上的一一对应关系3.函数值函数的返回值,也就是函数类型,若函数无返回值,则为void;4.函数的调用注意调用的形式;5.函数原型与对被调函数的声明,注意整型函数可以不用声明;6.函数的嵌套调用7.函数的递归调用,要求能用递归编写求n!、1+2+……+n等问题的程序8.数组作为函数参数,注意其含义及使用的情况;9.变量的存储类型,注意static类型的初值、值的变化,外部变量的使用等;10.内部函数和外部函数注意其区别二.练习㈠.填空题1.以下程序的输出结果是12unsignedfun6(unsignednum){unsignedk=1;do{k*=num%10;num/=10;}while(num);returnk;}main(){unsignedn=26;printf(“%d\n”,fun6(n));}2.以下程序的输出结果是
9.000000doublesub(doublex,doubley,doublez){y-=
1.0;z=z+x;returnz;}main(){doublea=
2.5,b=
9.0;printf(“%f\n”,sub(b-a,a,a));}3.以下程序的输出结果是4fun1(inta,intb){intc;a+=a;b+=b;c=fun2(a,b);returnc*c;}fun2(inta,intb){intc;c=a*b%3;returnc;}main(){intx=11,y=19;printf(“%d\n”,fun1(x,y));}4.下面pi函数的功能是,根据以下公式返回满足精度ε要求的π的值请填空doublepi(doubleeps){doubles=
0.0,t=
1.0;intn;for(;teps;n++){s+=t;t=n*t/(2*n+1);return(
2.0*);}5.以下函数是求x的y次方请填空doublefun(doublex,inty){inti;doublez=1;for(i=1;i=y;i++)z=z*x;returnz;}6.以下程序的功能是计算s=请填空longf(intn){inti;longs;s=1;for(i=1;i=n;i++)s=s*n;returns;}main(){longs;intk,n;scanf(“%d”,n);s=0;for(k=0;k=n;k++)s=s+fk;printf(“%d\n”,s);}㈡.选择题1.以下说法中正确的是(C)A.C语言程序总是从第一个定义的函数开始执行B.在C语言程序中,要调用的函数必须在main函数中定义C.C语言程序总是从main函数开始执行D.C语言程序中的main函数必须放在程序的开始部分2.以下函数的类型是(C)A.与参数x的类型相同B.void类型C.int类型D.无法确定fff(floatx){printf(“%d\n”,x*x);}3.以下函数调用语句中,含有的实参个数是(B)A.1B.2C.4D.5func((exp1,exp2),(exp3,exp4,exp5));4.以下程序的输出结果是(C)A.11B.20C.21D.31func(inta,intb){intc;c=a+b;returnc;}main(){intx=6,y=7,z=8,r;r=func((x--,y++,x+y),z--);printf(“%d\n”,r);}5.以下程序的输出结果是(A)A.-1B.0C.1D.2main(){inti=2,p;p=f(i,i+1);printf(“%d\n”,p);}intf(inta,intb){intc;c=a;if(ab)c=1;elseif(a==b)c=0;elsec=-1;return(c);}6.以下程序输出的结果是(C)A.0B.1C.6D.无定值fun(inta,intb,intc){c=a*b;}main(){intc;fun(2,3,c);printf(“%d\n”,c);}7.以下程序输出的结果是(A)A.
5.500000B.
3.000000C.
4.000000D.
8.25doublef(intn){inti;doubles;s=
1.0;for(i=1;i=n;i++)s+=
1.0/i;returns;}main(){inti,m=3;floata=
0.0;for(i=0;im;i++)a+=f(i);printf(“%f\n”,a);}㈢.程序设计题1.书上P186页
8.
1、
8.
3、
8.
11、
8.182.用递归法求n!3.用递归法求1+2+……+n第九章预处理命令一.知识点1.宏定义注意带参宏定义2.文件包含注意两种书写方式的区别二.练习㈡.选择题1.以下程序的输出结果是(A)A.15B.100C.10D.150#defineMIN(x,y)(x)(y)?(x)(y)main(){inti,j,k;i=10;j=15;k=10*MIN(i,j);printf(“%d\n”,k);}2.以下程序中的for循环执行的次数是(D)A.5B.6C.8D.9#defineN2#defineMN+1#defineNUM(M+1)*M/2main(){inti;for(i=1;i=NUM;i++);printf(“%d\n”,i);}3.以下程序的输出结果是(B)A.11B.12C.13D.15#include“stdio.h”#defineFUDGF(y)
2.84+y#definePR(a)printf(“%d”,(int)(a))#definePRINT1(a)PR(a);putchar(‘\n’)main(){intx=2;PRINT1(FUDGF
(5)*x);}4.以下叙述正确的是(D)A.用#include包含的头文件的后缀不可以是“.a”B.若一些源程序中包含某个头文件;当该头文件有错时,只需对该头文件进行修改,包含此头文件所有源程序不必重新进行编译C.宏命令可以看做是一行C语句D.C编译中的预处理是在编译之前进行的5.以下有关宏替换的叙述不正确的是(D)A.宏替换不占用运行时间B.宏名无类型C.宏替换只是字符替换D.宏名必须用大写字母表示第十章指针一.知识点1.指针的概念2.指针变量3.指针与数组4.指针与字符串二.练习㈠.填空题1.若有定义charch;⑴使指针p可以指向变量ch的定义语句是char*p=ch;⑵使指针p指向变量ch的赋值语句是p=ch;⑶通过指针p给变量ch读入字符的scanf函数调用语句是scanf“%c”p;⑷通过指针p给变量ch赋字符的语句是*p=’a’;⑸通过指针p输出ch中字符的语句是putchar*p;或printf“%c”*p2.若有如图
8.1所示五个连续的int类型的存储单元并赋值,且p和s的基类型皆为int,p已指向存储单元a
[1]⑴通过指针p,给s赋值,使其指向最后一个存储单元a
[4]的语句是s=p+3;⑵用以移动指针s,使之指向中间的存储单元a
[2]的表达式是s-=2或s--s--⑶已知k=2,指针s已指向中间的存储单元a
[2],表达式*(s+k)的值是50⑷指针s已指向存储单元a
[2],不移动指针s,通过s引用存储单元a
[3]的表达式是*s+1⑸指针s指向存储单元a
[2],p指向存储单元a
[0],表达式s-p的值是2⑹若p指向存储单元a
[0],则以下语句的输出结果是1020304050for(i=0;i5;i++)printf(“%d”,*(p+i));printf(“\n”);㈡.选择题1.若有定义intx,*pb;则以下正确的赋值表达式是(A)A.pb=xB.pb=xC.*pb=xD.*pb=*x2.以下程序的输出结果是(B)A.因变量无定义输出不定值B.0C.-1D.1#include“stdio.h”main(){printf(“%d\n”,NULL);}3.已知指针p的指向如图
8.1所示,则表达式*++p的值是(B)A.20B.30C.21D.314.已知指针p的指向如图
8.1所示,则表达式++*p的值是(C)A.20B.30C.21D.315.以下程序的输出结果是(D)A.23B.24C.25D.26voidprtv(int*x){printf(“%d\n”,++*x);}main(){inta=25;prtv(a);}第十一章结构体与共用体一.知识点1.结构体的概念与定义2.结构体变量的定义3.结构体变量的引用4.结构体数组5.共用体的概念与定义6.枚举类型7.用户自定义类型二.练习㈠.填空题1.为了建立如图所示的存储结构(即每个结点含两个域,data是数据域,next是指向结点的指针域),请填空structlink{chardata;structlinknext;}node;2.访问结构体数组元素a[k]的成员b,写作a[k].b ㈡.选择题1.根据以下定义,能输出字母M的语句是(D)A.printf(“%c\n”,class
[3].name);B.printf(“%c\n”,class
[3].name
[1]);C.printf(“%c\n”,class
[2].name
[1]);D.printf(“%c\n”,class
[2].name
[0]);structperson{charname
[9];intage;};structpersonclass
[10]={“John”,17,“Paul”,19,“Mary”,18,“Adam”,16};2.以下程序的输出结果是(D)A.32B.16C.8D.24typedefunion{longx
[2];inty
[4];charz
[8];}MYTYPE;MYTYPEthem;main(){printf(“%d\n”,sizeof(them));}3.设有定义语句enumweekday{sunmontuewedthufrisat}workday;则以下语句中编译能通过的语句为BA.sun=0;B.workday=thu;C.workday=3;D.workday=1/7;
4.以下对结构体类型变量的定义中,不正确的是CAtypedefstructaaB#defineAAstructaa{intn;AA{intn;floatm;floatm;}AA;}td1;AAtd1;CstructDstruct{intn;{intn;floatm;floatm;}aa;}td1;stuctaatd1;第十二章位运算一.知识点1.位运算符与位运算赋值运算符二.练习㈠.填空题1.设变量a的二进制数是00101101,若想通过运算a^b使a的高4位取反,低4位不变,则b的二进制数应是111100002.a为任意整数,能将变量a清零的表达式是a03.a为任意整数,能将变量a中的各二进制位均置成1的表达式是a|14.能将两字节变量x的高8位置全1,低字节保持不变的表达式是x|ff005.运用位运算,能将八进制数012500除以4,然后赋给变量a的表达式是a=01250026.运用位运算,能将变量ch中的大写字母转换成小写字母的表达式是ch+=15㈡.选择题1.以下程序的输出结果是(D)A.100B.160C.120D.64main(){charx=040;printf(“%d\n”,x=x1);}2.以下程序段中c的二进制值是(B)A.00011011B.00010100C.00011100D.00011000chara=3,b=6,c;c=a^b2;3.以下程序的输出结果是(B)A.0B.1C.2D.3main(){intx=35;charz=‘A’;printf(“%d\n”,(x15)(z‘a’));}4.以下程序的输出结果是(A)A.0B.1C.2D.3main(){inta=5,b=6,c=7,d=8,m=2,n=2;printf(“%d\n”,(m=ab)(n=cd));}第十三章文件一.知识点1.文件类型指针FILE2.文件的打开与关闭fopen()、fclose()3.文件的读写fputc()、fgetc()、fread()、fwrite()、fprintf()、fscanf()4.文件的定位rewind()、fseek()、ftell()5.出错检测ferror()、clearerr()二.练习㈠.填空题1.在C程序中文件可以用两种方式存取,它们是顺序和随机2.在C程序中数据可以用两种代码形式存放,它们是ASCII码和二进制码3.在C语言中,文件的存取是以字节为单位的,这种文件被称作流式文件4.在C语言中,文件的打开使用fopen,文件的关闭使用fclose5.在C语言中,文件类型为文本文件或二进制文件㈡.选择题1.若执行fopen函数时发生错误,则函数的返回值是(D)A.随机值B.1C.NULLD.EOF2.若用fopen函数打开一个新的二进制文件,要求文件既能读也能写,则应选用的文件方式字符串是(A)A.“wb+”B.“r+”C.“rb+”D.“ab+”3.当正常执行了文件关闭操作时,fclose函数的返回值是(C)A.-1B.随机值C.0D.11020304050a
[0]a
[1]a
[2]a
[3]a
[4]图
8.1p↑datanext。