1、第一章 数据类型与表达式一知识点1C语言的特点:语言简洁、紧凑,使用方便、灵活; 运算符丰富;数据结构丰富; 具有结构化控制语句;语法限制不太严格,程序设计自由度大;可以进行位操作,能实现汇编语言的大部分功能,能直接对硬件进行操作;生成的目的代码质量高,程序执行效率高; 程序的移植性好。2C程序的组成:C程序是由函数构成的;一个函数涉及函数的首部(即函数的第一行)和函数体(即花括号部分);函数体一般涉及声明部分和执行部分;一个C程序总是从main函数开始执行,从main函数结束;C程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多行上;每个语句和数据定义的最后必须有一个分号;C语言自
2、身没有输入输出语句,是通过函数实现输入输出的;可以用/*/对C程序的任何部分作注释。3C语言程序的运营:源程序文献的扩展名为.c,目的程序文献的扩展名为.obj,可执行程序文献的扩展名为.exe。4C的数据类型:基本、构造、指针和空类型,char、int、short、long、unsigned、float、double、enum、struct、union、typedef。5常量与变量的概念,注意符号常量的定义与使用;6整型、实型、字符型常量的表达,注意整型常量的十进制、八进制、十六进制的书写。7变量的定义,C的标记符涉及关键字、预定义标记符、用户定义标记符;用户定义标记符的可用字符为字母、数字
3、、下划线,第一个字符为字母或下划线。8常见数据类型的取值范围,int为-32768+32767,unsigned int为065535。9转义字符:n、t、b、r、f、”、ddd、xhh10不同数值型数据的混合运算,低档类型转换为高级类型运算11C的运算符:注意结合方向和运算的优先级12算术运算符:+、-、*、/、%、+、-,注意自加、减运算符分前缀和后缀两种方式。其中前缀方式为先自加、减,后引用;后缀方式为先引用,后自加、减;运算符%规定运算量为整数,运算结果也为整数。注意除运算时,若运算量为整型时,其运算结果也是整型的规则。13赋值类运算符:=、+=、-=、*=、/=、%=,注意含义和数据
4、类型的转换。14逗号运算符的使用,注意逗号运算符的运算规则。二练习填空题:1在TURBO C环境中用RUN命令运营一个C程序时,所运营的程序的后缀是 .exe 。2C语言源程序文献的后缀是 .c ,通过编译后,生成文献的后缀是 .obj ,通过连接后,生成文献的后缀是 .exe 。3结构化程序由 顺序、 选择(分支) 、 循环 三种基本结构组成。4若k为整型变量且赋值11。请写出运算k+后表达式的值 11 和变量的值 12 。5若x为double型变量,运算x=3.2,+x后表达式的值 4.2 和变量的值 4.2 。6函数体由符号 开始,用符号 结束。函数体的前面是 定义 部分,其后是 执行
5、部分。7C语言中的标记符可分为 关键字、 用户标记符 和预定义标记符三类。8在C语言程序中,用关键字 int 定义基本整型变量,用关键字 float定义单精度实型变量,用关键字 double 定义双精度实型变量。9把a1、a2定义成单精度实型变量,并赋初值1的定义语句是 float a1=1.0,a2=1.0;。10C程序中定义的变量,代表内存中的一个 存储空间。11表达式3.5+1/2的计算结果是 3.5。12写出数学表达式三个等价的C语言表达式 a*b/(c*d)、a /(c*d)*b、b/(c*d)*a。13通常一个字节包含 8 个二进制位。14当计算机用两个字节存放一个整数时,能存放的
6、最大(十进制)整数是216-1(65535)、最小(十进制)整数是 -215(-32768) 。15在C语言中整数可用 十 进制数、 八 进制数和 十六 进制数三种数制表达。16C语言中,int型数据占 2 个字节,long型数据占 4 个字节,unsigned int型数据占 2 个字节,short型数据占 2 个字节, float型数据占 4 个字节,double型数据占 8 个字节,char型数据占 1 个字节。选择题:1组成C语言程序的是( )(C)。A子程序 B过程 C函数 D主程序和子程序2以下叙述中对的的是( )(C)。A在C程序中无论是整数还是实数,只要在允许的范围内都能准确无
7、误的表达。BC程序由主函数组成。CC程序由函数组成。DC程序由函数和过程组成。3以下选项中对的的整型常量是( )(B)。A12. B-20 C1,000 D4 5 64以下选项中对的的实型常量是( )(D)。A0 B3. 1415 C0.329102 D.8715以下选项中不合法的用户标记符是( )(C)。A_123 Bprintf CA$ DDim6C语言中运算对象必须是整型的运算符是( )(A)。A% B/ C! D*7可在C程序中用作用户标记符的一组标记符是( )(B)。Avoid Bas_b3 CFor D2c define _123 -abc DO WORD If case SIG8
8、若变量已对的定义并赋值,符合C语言语法的表达式是( )(B)。Aa=a+7; Ba=7+b+c,a+ Cint(12.3%4) Da=a+7=c+b9不合法的八进制数是( )(B)。 A0 B028 C077 D0110不合法的十六进制数是( )(A)(零X)。Aoxff B0Xabc C0x11 D0x19程序设计题:1编写一个C程序,输入a、b、c三个数,输出其中最大者。#includevoid main()int a,b,c,max; printf(“input 3 num:n”); scanf(“%d%d%d”,&a,&b,&c); max=a;if(bmax)max=b;if(cma
9、x)max=c;printf(“%d”,max);第二章 算法与顺序结构一知识点1算法:为解决一个问题而采用的方法和环节。2算法的分类:数值算法、非数值算法。3算法的特点:有穷性、拟定性、有零个或多个输入、有一个或多个输出、有效性。4算法描述方法:自然语言、流程图、改善流程图、NS流程图、伪代码、计算机语言。5C语句的类型:控制语句、函数调用语句、表达式语句、空语句、复合语句。6输入输出的概念:输入输出是相对主机而言,C语言是由函数来实现输入输出的。7字符数据的输入/输出:getchar()、putchar()8格式输入/输出:scanf()、printf()9printf的格式符:d、i,o
10、,x、X,u,c,s,f,e、E,g、G;l,m,n,-。10scanf的格式符:d、i,o,x、X,u,c,s,f,e、E,g、G;l,m,*;&。注意输入数据时数据流的分隔符,系统默认的分隔符为空格、tab键和回车。11顺序结构的设计思想:声明变量、输入数据、解决、输出结果。二练习填空题:1以下程序段执行后的输出结果是: 200 2500 i=-200,j=2500 。int i=-200,j=2500;printf(“ %d %d”,i,j);printf(“ i=%d,j=%dn”,i,j);printf(“ i=%dn j=%dn”,i,j);2复合语句在语法上被认为是 一条语句。空
11、语句的形式是 ; 。3C语句的最后用 ;结束。4以下程序段的输出结果是 x= 127,x= 177,x= 7f,x= 127 。int x=0177;printf(“x=%6d,x=%6o,x=%6x,x=%6un”,x,x,x,x);5以下程序段的输出结果是 a=513.789215,a= 513.79,a=513.78921500,a= 531.78921500。double a=513.789215;printf(“a=%8.6f,a=%8.2f,a=%14.8f,a=%14.8lfn”,a,a,a,a);6以下程序段的输出结果是 8,3 。a=3+5,a*4;x=11/3;printf
12、(“%d,%dn”,a,x);7以下程序输入三个整数值给a、b、c,程序把b中的值给a,把c中的值给b,把a中的值给c,互换后输出a、b、c的值。请填空:#include main() int a,b,c, m ; printf(“Enter a,b,c:”); scanf(“%d,%d,%d”, &a,&b,&c); m=a ;a=b;b=c; c=m ; printf(“a=%d,b=%d,c=%dn”,a,b,c);8以下程序不借助任何变量把a、b中的值进行互换。请填空:#include main() int a,b; printf(“Input a,b:”); scanf(“%d,%d
13、”, &a,&b); a+= b ;b=a- b ;a=a- b ; printf(“a=%d,b=%dn”,a,b);选择题:1若a、b、c、d都是int型变量且初始值为0,下列不对的的赋值语句是( )(C)。Aa=b=c=100; Bd+; Cc+b; Dd=(c=22)-(b+);2以下选项中不是C语句的是( )(C)。Aint i;i+;printf(“%dn”,i); B; Ca=5,c=10 D ;3以下合法的C语言赋值语句是( )(D)。Aa=b=58 Bk=int(a+b); Ca=58,b=58 D-i;4以下程序的输出结果是( )(C)。A0 B1 C3 D不拟定的值mai
14、n() int x=10,y=3; printf(“%dn”,y=x/y);5若变量已对的说明为int类型,要给a、b、c输入数据,对的的输入语句是( )D。Aread(a,b,c); Bscanf(“%d%d%d”,a,b,c);Cscanf(“%D%D%D”,&a,&b,&c); Dscanf(“%d%d%d”,&a,&b,&c);6若变量已对的定义,要将a和b中的数进行互换,下面不对的的语句组是( )C。Aa=a+b,b=a-b,a=a-b; Bt=a,a=b,b=t;Ca=t;t=b;b=a; Dt=b;b=a;a=t;7若变量已对的定义,以下程序段的输出结果是( )D。A输出格式说明
15、与输出项不匹配,输出无定值B5.1700 C5.16800 D5.16900x=5.16894;printf(“%fn”,(int)(x*1000+0.5)/(float)1000);8执行以下程序段后,c3中的值是( )A。A0 B1/2 C0.5 D1int c1=1,c2=2,c3;c3=c1/c2;9执行以下程序段后,其输出结果是( )B。A0,0,-10 B0,0,3 C-10,3,-10 D3,3,-10int a=0,b=0,c=0; c=(a-=a-5),(a=b,b+3);printf(“%d,%d,%dn”,a,b,c);10以下程序的输出结果是( )D。Aa=%2,b=%
16、5 Ba=2,b=5 Ca=%d,b=%d Da=%d,b=%dmain() int a=2,b=5; printf(“a=%d,b=%dn”,a,b);11若int型占两个字节,以下程序段的输出是( )D。A-1,-1 B-1,32767 C-1,32768 D-1,65535int a=-1;printf(“%d,%un”,a,a);12以下程序段的输出结果是( )C。A|3.1415| B| 3.0| C| 3| D| 3.|float a=3.1415;printf(“|%6.0f|n”,a);13以下程序段的输出结果是( )B。A9 8 B8 9 C6 6 D以上三个都不对#incl
17、ude main() double a=-3.0,b=2; printf(“%3.0f %3.0fn”,pow(b,fabs(a),pow(fabs(a),b);14若a为整型变量,则以下语句( )B。A赋值不合法 B输出值为-2 C输出为不拟定值 D输出值为2a=-2L;printf(“%dn”,a);15若有定义char s=092;则该语句( )B。A使s的值包含1个字符 B定义不合法,s的值不拟定C使s的值包含4个字符 D使s的值包含3个字符16若k、g均为int型变量,则下列语句的输出为( )D。A15 B16 C15 D16 6f 70 71 6fk=017;g=111;print
18、f(“%dn”,+k);printf(“%xn”,g+);17已知字母a的ASCII十进制代码为97,执行下列语句后的输出为( )C。Ab,c Ba-运算不合法,故有语法错误C98,c D格式描述和输出项不匹配,输出无定值char a=a;a-;printf(“%d,%cn”,a+2-0,a+3-0);18下列程序的输出为( )A。A27.000000 B27.500000 C28.000000 D28.500000#include main() int m=7,n=4; float a=38.4,b=6.4,x; x=m/2+n*a/b+1/2;printf(“%fn”,x); 19下列程序
19、的输出结果是( )C。A18 B9 C-18 D-9main() int a=9;a+=a-=a+a;printf(“%dn”,a); 20下列程序的输出结果是( )A。A0 B5 C1 D不拟定值main() int a=7,b=5;printf(“%dn”,b=b/a);21下列程序的输出结果是( )C。A12 B11 C10 D9main() int a=011;printf(“%dn”,+a);程序设计题:用NS图表达下列问题:1有两个瓶子A和B,分别盛放醋和酱油,规定将它们互换。 编写程序2依次将10个数输入,规定将其中最大的数打印出来。#include main() int i,a
20、,max; scanf(%d,&max); for (i=1;imax) max=a; printf(%d,max); 3有3个数a、b、c,规定按从大到小的顺序把它们打印出来。main() float a,b,c,t; scanf(%f,%f,%f,&a,&b,&c); if(ab) t=a;a=b;b=t; /*实现a和b的互换*/ if(ac) t=a;a=c;c=t; /*实现a和c的互唤*/ if(bc) t=b;b=c;c=t; /*实现b和c的互换*/ printf(%5.2f,%5.2f,%5.2fn,a,b,c); 4求1+2+3+100。#include int main(
21、) int i,sum=0;i=1;while(i=100) sum=sum+i; i=i+1; printf(“%d”,sum);5判断一个数n能否同时被3和5除。include main(void) intn; scanf(%d,&n);if(n%3=0&n%5=0) printf(%d能否同时被3和5整除n,n); else printf(%d不能否同时被3和5整除n,n); return0; 6将100200之间的素数打印出来。#include int isPrime(int n) int i; for(i=2;i*i=n;i+) if(n%i=0) return 0; return
22、1; int main() int i; for(i=100;i=200;i+) if(isPrime(i) printf(%dn,i); 7求两个整数m和n的最大公约数和最小公倍数。main() int a,b,num1,num2,temp; printf(please input two numbers:n); scanf(%d,%d,&num1,&num2); if(num1 temp=num1; num1=num2; num2=temp; a=num1;b=num2; while(b!=0)/*运用辗除法,直到b为0为止*/ temp=a%b; a=b; b=temp; printf(
23、gongyueshu:%dn,a); printf(gongbeishu:%dn,num1*num2/a); 8求方程ax2+bx+c=0的根#include #include /用到平方根函数void main()float a,b,c,x1,x2,p,q,m;scanf(%f%f%f,&a,&b,&c);if (a=0.0)&(b=0.0)&(c!=0.0)printf(“no value!);else if (a=0.0)&(b=0.0)&(c=0.0)printf(any value!);else if (a=0.0)&(b!=0.0)printf(x1=x2=%f,-c/b);els
24、em=b*b-4.0*a*c; if(m=0) x1=(-b+sqrt(m)/(2.0*a);x2=(-b-sqrt(m)/(2.0*a);printf(x1=%fn,x1);printf(x2=%fn,x2); else p=-b/(2.0*a);q=sqrt(-m)/(2.0*a);printf(x1=%f+%fin,p,q);printf(x2=%f-%fin,p,q); 9编写程序,输入两个整数1500和350,求出它们的商和余数并进行输出。#include #inclued void main() int a; int b; int c,d; a=1500,b=350; c=a/b;
25、/商数 d=a%b;/余数 pritf(商数为: %dn,c); printf(余数为:%dn,d); return 0; 10编写程序,读入三个双精度数,求它们的平均值并保存此平均值小数点后一位数,对小数点后第二位数进行四舍五入,最后输出结果。#include main() double a, b, c, d; printf(输入三个双精度数n); scanf(%lf%lf%lf, &a, &b, &c); d = ( a + b + c) / 3; printf(%.1fn, d); 11求三角形的面积:a,b,c是边长,p是半边长,s是面积,则s=p(p - a)(p - b)(p -
26、c) 1/2#include#includemain()float a,b,c,p,s;printf(input 3 num:);scanf(%f%f%f,&a,&b,&c);p=(a+b+c)/2;s=p*(p-a)(p-b)(p-c);s=pow(s,0.5);printf(s=%f,s);12输入一个华氏温度,规定输出摄氏温度。公式为:c=5(f-32)/9。#include main() double tem_c, tem_f; puts(=华氏温度至摄氏温度转换程序=); printf(请输入华氏温度:); scanf(%lf, &tem_f); tem_c = (tem_f - 1
27、2) * 5.0 / 9.0; printf(%f相应的摄氏温度为%.2f, tem_f, tem_c); renturn 0; 第三章 选择结构程序设计一知识点1关系运算符、逻辑运算符、逻辑值的表达与含义;注意&、|的运算规则。2三种if语句3选择结构的嵌套,注意if与else的配对;4条件运算符:?:5switch语句,注意其执行过程;6选择结构程序设计思想。二练习填空题:1C语言中用 非0 表达逻辑值“真”,用 0 表达逻辑值“假”。2C语言中的关系运算符按优先级别是 、 、 、 、 、 。答案:、=、=、=、=、!=、&、|5C语言中逻辑运算符的 ! 优先级高于算术运算符。6将下列数学
28、式改写成C语言的关系表达式或逻辑表达式:a=b或ac a=b|a4 x4|x100) printf(“%dn”,a100); else printf(“%dn”,a10 | a+be 1 !ae 0 a+ & e+ & c+ 0 !e & e=b=+c 1 (0a) & (a(d=c+b) 1 9当a=1、b=2、c=3时,执行以下if语句后,a= 3 、b= 1 、c= 1 。if(ac);b=a;a=c;c=b;10当a=1、b=2、c=3时,执行以下if语句后,a= 3 、b= 2 、c= 2 。if(ac)b=a;a=c;c=b;11当a=1、b=2、c=3时,执行以下if语句后,a=
29、 1 、b= 2 、c= 2 。if(ac)b=a,a=c;c=b;12将以下两条if语句合并为一条if语句: 。if(ab) scanf(“%d”,&x);else scanf(“%d”,&y);if(ab) scanf(“%d”,&x);j+;else scanf(“%d”,&y);i+;13将以下嵌套的if语句改写成不嵌套的if语句: 。if(w0) k=0;else if(w=0&w=100)k=1; else k=0;14以下程序判断输入的一个整数是否能被3或7整除,若能整除,输出“YES”,若不能整除,输出“NO”。请填空:#include main() int k; printf
30、(“Enter a int number:”);scanf(“%d”,&k); if( k%3=0|k%7=0 )printf(“YESn”);else printf(“NOn”);15在switch语句中,当执行到break语句时,使流程 跳出开关语句 。选择题:1若给定条件表达式(M)?(a+):(a-),则和表达式M等价的表达式为( )C。AM=0 BM=1 CM!=0 DM!=12为表达关系xyz,应使用的C语言表达式是( )A。A(x=y) & (y=z) B(x=y)AND(y=z) C(x=y=z) D(x=y)&(y=z)3以下程序的输出结果是( )D。A0 B1 C2 D3m
31、ain() int a=2,b=-1,c=2; if(ab)if(b0) c=0; else c+=1; printf(“%dn”,c); 4以下程序的输出结果是( )A。A1 B2 C3 D4main() int w=4,x=3,y=2,z=1;printf(“%dn”,(wx ? w : zy ? z : x);5若执行以下程序时,从键盘上输入3和4,则输出结果是( )B。A14 B16 C18 D20main() int a,b,s;scanf(“%d %d”,&a,&b); s=a; if(a= C(类型) D,A| B% C! D=A= B!= C*(乘) D( )10若a为整型变量
32、,b为字符型变量,则以下对的的switch语句是( )A。Aswitch(int)x/10) Bswitch(b) case 1:a+;break; case 042;x=a/b;break; case 2:b+;break; case 6;x=a*b;break; case 3:c+;break; case 010;x=a+c;break; Cswitch(int)x/10); Dswitch(a/100+10) case 0:a+;break; case2 :x=a/b;break; default:b+;break; case6 :x=a*b;break; case 3+1:c+;bre
33、ak; case8 :x=a+c;break; case 3:d+;break; case10 :x=a-c;break; 程序设计题:1从键盘输入一个字母,若是大写字母,规定改用小写字母输出。#includevoid main()char var; var=getchar(); if(var=65&var=0.#include#includevoid main()float a,b,c,p,x1,x2; printf(input 3 numbers:n); scanf(%f%f%f,&a,&b,&c); if(b*b-4*a*c=0) p=pow(b*b-4*a*c,0.5); x1=(-b
34、+p)/2; x2=(-b-p)/2; printf(x1=%f,x2=%f,x1,x2); else p=pow(-b*b+4*a*c,0.5); printf(x1=%f+%fi,x2=%f-%fi,-b/2,p/2,-b/2,p/2); 第四章 循环结构程序设计一知识点1循环的概念,C实现循环的方法;2goto语句,注意标号的书写;3while语句,注意条件表达式的设计;4dowhile语句,注意条件表达式的设计,及while之后的分号;5for语句,注意for中三个表达式的一般含义;6循环的嵌套;7break与continue语句,注意两者之间的区别;8循环结构程序设计思想二练习填空题:1以下程序段的输出结果 。y=7,x=21x=y=0;while(xb;+b)i+;while(a+c) j+;do k+;while(ad+);3以下程序段的输出结果 。死循环没有输出结果int k,m,n;n=10;m=1;k=1;while(k=n) m*=2; printf(“%dn”,m);4以下程序的输出结果 -1 。main() int x=2;while(x-);printf(“%dn”,x);5以下程序段的输出结果 11 。int i