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赋值类运算符:=、+=、-=、*=、/=、%=,注意含义和数据类型的转换。14逗
4、号运算符的使用,注意逗号运算符的运算规那么。二练习填空题: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函数体由符号开场,用符号完毕。函数体的前面是定义局部,其后是执行局部。7C语言中的标识符可分为关键字、用户标识符和预定义标识符三
5、类。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当计算机用两个字节存放一个整数时,能存放的最大十进制整数是216-1(65535)、最小十进制整数是-215(-32768)。15在C语
6、言中整数可用十进制数、八进制数和十六进制数三种数制表示。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程序中无论是整数还是实数,只要在允许的围都能准确无误的表示。BC程序由主函数组成。CC程序由函数组成。DC程序由函数和过程组成。3以下选项中正确的整型常量是(B)。A12. B-20 C1,000 D4 5 6
7、4以下选项中正确的实型常量是(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假设变量已正确定义并赋值,符合C语言语法的表达式是(B)。Aa=a+7; Ba=7+b+c,a+ Cint12.3%4 Da=a+7=c+b9不合法的八进制数是(B)。A0 B028 C07
8、7 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(cmax)max=c;printf(“%d,max);第二章算法与顺序结构一知识点1算法:为解决一个问题而采取的方法和步骤。2算法的分类:数值算法、非数值算法。3算法的特点:有穷性、确定性、有零个或多个输入、有一个或多个输
9、出、有效性。4算法描述方法:自然语言、流程图、改良流程图、NS流程图、伪代码、计算机语言。5C语句的类型:控制语句、函数调用语句、表达式语句、空语句、复合语句。6输入输出的概念:输入输出是相对主机而言,C语言是由函数来实现输入输出的。7字符数据的输入/输出:getchar、putchar8格式输入/输出:scanf、printf9printf的格式符:d、i,o,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顺序结构的设
10、计思想:声明变量、输入数据、处理、输出结果。二练习填空题:1以下程序段执行后的输出结果是:200 2500i=-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复合语句在语法上被认为是一条语句。空语句的形式是;。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.78
11、9215,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“%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
12、,&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,&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;
13、 Ca=5,c=10 D ;3以下合法的C语言赋值语句是(D)。Aa=b=58 Bk=inta+b; Ca=58,b=58 D-i;4以下程序的输出结果是(C)。A0 B1 C3 D不确定的值main int x=10,y=3; printf“%dn,y=x/y;5假设变量已正确说明为int类型,要给a、b、c输入数据,正确的输入语句是D。Areada,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
14、=a-b; Bt=a,a=b,b=t;Ca=t;t=b;b=a; Dt=b;b=a;a=t;7假设变量已正确定义,以下程序段的输出结果是D。A输出格式说明与输出项不匹配,输出无定值B5.1700 C5.16800 D5.16900x=5.16894;printf“%fn,intx*1000+0.5/float1000;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=
15、b,b+3;printf“%d,%d,%dn,a,b,c;10以下程序的输出结果是D。Aa=%2,b=%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以下程序段的输出
16、结果是B。A9 8 B8 9 C6 6 D以上三个都不对#include main double a=-3.0,b=2; printf“%3.0f %3.0fn,powb,fabsa,powfabsa,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 D166f 70 71 6fk=
17、017;g=111;printf“%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以下程序的输出结果是C
18、。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,max; scanf(%d,&max); for (i=1;i
19、max) 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() int i,sum=0;i=1;while(i=100) s
20、um=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 1; int main() int i; for(i=100;i=
21、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(gongyueshu:%dn,a); printf(gongbei
22、shu:%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);elsem=b*b-4.0*a*c; if(m=0) x1=(-b+sq
23、rt(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;/商数 d=a%b;/余数 pritf(商数为: %dn,c);
24、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 - c) 1/2#include#includemain()floa
25、t 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=5f-32/9。#include main() double tem_c, tem_f; puts(=华氏温度至摄氏温度转换程序=); printf(请输入华氏温度:); scanf(%lf, &tem_f); tem_c = (tem_f - 12) * 5.0 / 9.0; printf(%f对应的摄氏温度为%
26、.2f, tem_f, tem_c); renturn 0; 第三章 选择结构程序设计一知识点1关系运算符、逻辑运算符、逻辑值的表示与含义;注意&、|的运算规那么。2三种if语句3选择结构的嵌套,注意if与else的配对;4条件运算符:?:5switch语句,注意其执行过程;6选择结构程序设计思想。二练习填空题:1C语言中用非0表示逻辑值“真,用0表示逻辑值“假。2C语言中的关系运算符按优先级别是、。答案:、=、=、=、=、!=、&、|5C语言中逻辑运算符的!优先级高于算术运算符。6将以下数学式改写成C语言的关系表达式或逻辑表达式:a=b或ac a=b|a4 x4|x100 printf“%d
27、n,a100; else printf(“%dn,a10 | a+be 1 !ae 0 a+ & e+ & c+ 0 !e & e=b=+c 1 (0a) & (a(d=c+b) 19当a=1、b=2、c=3时,执行以下if语句后,a= 3、b=1、c=1。ifac;b=a;a=c;c=b;10当a=1、b=2、c=3时,执行以下if语句后,a=3、b=2、c=2。ifacb=a;a=c;c=b;11当a=1、b=2、c=3时,执行以下if语句后,a=1、b=2、c=2。ifacb=a,a=c;c=b;12将以下两条if语句合并为一条if语句:。ifab scanf“%d,&x;else sc
28、anf“%d,&y;ifab scanf“%d,&x;j+;else scanf“%d,&y;i+;13将以下嵌套的if语句改写成不嵌套的if语句:。ifw0 k=0;else ifw=0&w=100k=1; else k=0;14以下程序判断输入的一个整数是否能被3或7整除,假设能整除,输出“YES,假设不能整除,输出“NO。请填空:#include main int k; printf“Enter a int number:;scanf“%d,&k; if k%3=0|k%7=0 printf“YESn;else printf“NOn;15在switch语句中,当执行到break语句时,使
29、流程跳出开关语句。选择题: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 D3main int a=2,b=-1,c=2; ifabifb0 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 :
30、 zy ? z : x;5假设执行以下程序时,从键盘上输入3和4,那么输出结果是 B。A14 B16 C18 D20main int a,b,s;scanf“%d %d,&a,&b; s=a; ifa= C类型 D,A| B% C! D=A= B!= C*(乘) D( )10假设a为整型变量,b为字符型变量,那么以下正确的switch语句是 A。Aswitchintx/10Bswitchb 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
31、=a+c;break; Cswitchintx/10; Dswitcha/100+10 case 0:a+;break; case2 :x=a/b;break; default:b+;break; case6 :x=a*b;break; case 3+1:c+;break; 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
32、#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+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语句,注意标号
33、的书写;3while语句,注意条件表达式的设计;4dowhile语句,注意条件表达式的设计,与while之后的分号;5for语句,注意for中三个表达式的一般含义;6循环的嵌套;7break与continue语句,注意二者之间的区别;8循环结构程序设计思想二练习填空题:1以下程序段的输出结果。y=7,x=21x=y=0;whilexb;+bi+;whilea+c j+;do k+;whilead+;3以下程序段的输出结果。死循环没有输出结果int k,m,n;n=10;m=1;k=1;whilek=n m*=2; printf“%dn,m;4以下程序的输出结果-1。main int x=2;whilex-;printf“%dn,x;5以下程序段的输出结果11。int i=0,sum=1;do sum+=i+;whilei5;printf“%dn,sum;6有以下程序段:s=1.0;fork=1;k=n;k+s=s+1.0/k*k+1;printf“%fn,s;要使下面的程序段的功能与上面程序段的功能一样,请填空:s=0.0;k=0;d1.0;do s=s+d;k+;d=1.0/k*k+1;whilek=0 ifxamaxamax=x; ifxaminamin=x; scanf“%f,&x; printf“namax=%fnamin=%fn,amax,a