《C语言程序设计考点知识点.doc》由会员分享,可在线阅读,更多相关《C语言程序设计考点知识点.doc(163页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第一章 程序设计基本概念1.1程序和程序设计 程序:连续执行的一条条指令的集合称为“程序”。 对于计算机来说,它不能识别由高级语言编写的程序,它只能接受和处理由0和1的代码构成的二进制指令或数据。由于这种形式的指令是面向机器的,因此也被称为“机器语言”。所以所有由高级语言编写的程序都要经过编译,编译成二进制代码。这种具有翻译功能的软件称为编译程序。 语言有很多种,我们现在要谈论的就是C语言。为什么计算机会能进行各种各样的操作,就是由不同的指令来实现的。而不是只有C语言才可以实现这样的功能。还有其它很多语言。但是我们一般说C语言是其它语言的母语。会了C语言其它的语言在学习的过程就会感到轻松一些。
2、1.1.2程序设计 1.确定数据结构 2.确定算法 3.编码 4.在计算机上调试程序 5.整理并写出文档资料1.2算法 定义:是指为了解决某个特定的问题而采取的确定且有限的步骤。1. 有穷性2. 确定性3. 可行性4. 有零个或多个输入5. 有一个或多个输出1.3结构化程序设计和模块化结构 结构化程序由三种基本结构组成1. 顺序结构语句1语句22. 选择结构 判断表达式子不满足语句1语句23. 循环结构判断表达式不满足满足循环体循环体判断表达式满足不满足12)计算机能直接执行的程序是(B )。A)源程序 B)目标程序 C)汇编程序 D)可执行程序13)以下叙述中正确的是( D )A)程序设计的
3、任务就是编写程序代码并上机调试B)程序设计的任务就是确定所用数据结构C)程序设计的任务就是确定所用算法D)以上三种说法都不完整第二章 :C程序设计的初步知识21 C语言程序的构成和格式#include Main()double a,b,area; a=1.2,b=3.6; /*将矩形的两条边长分别赋给a和b 变量*/area=a*b;printf(“a=%f,b=%f,area=%fn”,a,b,area);/*输出矩形的两条边长和面积*/#include :每当写一个程序时,第一条语句永远是这个语句,因为一个程序可以没有输入但必须要有输出,而这个语句就是控制输入输出的。所以任何一个程序都必须
4、由这个语句开始。Main():是一个程序的主函数。一个程序是由多个函数组成的,而任何一个程序都要有一个主函数,有且只有一个。任何程序都是由主函数开始执行的。:它们两个必须要成对出现,它们中的语句是主函数体。包括定义部分和执行部分。它们中的语句,每一条必须由;结束。;是C语句的一个组成部分而不是一个结束标识。/*/:注释符一定要成对出现,不允许嵌套。两个符号间的语句不被执行。 例年真题: #include main() Int a;A=5; /*给A变量赋值5A+=3; 再赋值后再加3*/Printf(“%d”,a);(11)以下叙述中正确的是( C )。A)C 程序的基本组成单位是语句 B)C
5、 程序中的每一行只能写一条语句二级C 语言程序设计试卷)C)简单C 语句必须以分号结束 D)C 语句必须在一行内写完(11)以下叙述中正确的是( C ) A)C程序中的注释只能出现在程序的开始位置和语句的后面 B)C程序书写格式严格,要求一行内只能写一个语句 C)C程序书写格式自由,一个语句可以写在多行上 D)用C语言编写的程序只能放在一个程序文件中 第二课:C语言的基础知识2.2标识符,常量和变量2.2.1 标识符:定义:由字母,数字和下划线组成,并且第一个字符必须为字母或下划线的。这样的组成就是标识符。下列合法的是:else what #$123 34a a34 a_b a-b Ifa=3
6、 A=4注意:在C中大写字母与小字字母被认为是两个不同的字符。分类: 关键字:在C中已经定义好了的,不能用作它用的。如if double int 等等。 预定义标识符:如printf scanf 用户标识符:用户根据自己的需求来定义的。(12)以下选项中,能用作用户标识符的是( C )A)voidB)8_8C)_0_D)unsigned(11)以下选项中合法的标识符是( C )A) 1-1 B)11 C)-11 D)1(12)以下选项中不合法的标识符是 ( C ) A)print B)FOR C)&a D)_002.2.2常量: 定义:是指在程序的执行的过程中,其值不会被改变的量。 分类:整型
7、常量:没有小数的常量 如:3 9 1234等等都是。 实型常量:有小数点的常量 如:3.9 3.0 3. 字符常量:由单个字符组成的量 如:a b 3 字符串常量:至少由一个字符组成的量 如:“a” “abc” “ beijing” 符号常量:符号常量的值到底是多少,这是由在来定义符号常量时来决定的 ?2*pi(13)以下选项中,能用作数据常量的是 ( D )A)o115 B) 0118 C)1.5e1.5 D) 115L(13)以下选项中不能作为C 语言合法常量的是( A )。A)cd B)0.1e+6 C)a D)011(13)以下选项中不属于字符常量的是 ( B ) A)C B)C C)
8、xCC0 D)0722.3整型常量与实型常量 整型常量的几个表示方法 十进制数: 八进制数:以0开头的数字,由0-7组成。 下列合法的八进制数是 A,0 B,028 C,-077 D,01.0 十六进制数:以0X开头,由0-9和A-F组成。 A,oxff B,0xabc C,0x11 D,0x19 实型常量 123.4 小数形式:123.4 指数形式:1.234e2 1. 字母e和E之前必须要有数字 2.字母e和E之后的数字必须是整数 3.字母e和数字之间不能有空格。A,2.607E-1 0.8103E 2 -77.77 456E-2 0.1e+6 1.23E1.22.2.4变量: 1.定义:
9、在程序的运行过程中其值可以被改变的量,就叫变量。 2.原则:变量必须先定义后使用。变量定义的过程就是给变量开辟存储单元的过程。 3.分类: 整型变量:用关键字int来表示. short int 短整型 long int 长整型 在内存中占4个字节 如123L unsigned 无符号 如有-200U这就是错的。 变量的定义:int a 这是定义了一个整型变量a. 实型变量:用关键字 double 或float来表示。 float 单精度 在内存中占4个字节 double 双精度 在内存中占8个字节。2.2.5 算术表达式一、基本的算术运算符 + - * / % 这些是双目运算符(就是指操作对象
10、有两个) 注意: 除%外,其它的运算符的运算对象可以是整型也可以是实型。%的操作对象只能是整型。 如10%3=1 10.7%3 10%4.5 x%3=0 + - 也可以做为单目运算。-5.4 +4.9 说明: 1.如果双目运算符两边运算数的类型一致,则所得结果的类型与运算数的类型一致。如 1.0/2.0=0.5 1/2=0 2.如果双目运算符两边运算数的类型不一致,则系统会自动进行类型转换,使两边的类型一致后,再进行运算。 1.0/2=0.5 3.所有的单精度数据,在运算过程中都以双精度进行运算。二、优先级 () + - * / % + - 由高低 如 (5+1)/2=? 2.5.3 强制类型
11、转换表达式 格式:(类型名) (表达式) 例:(int)3.234=3 (double)10%3=?(14)表达式:4-(9)%2的值是( B ) A)0 B)3 C)4 D)5 (14)设变量已正确定义并赋值,以下正确的表达式是 ( C ) A)x=y*5=x+z B)int(15.8%5) C)x=y+z+5,+y D)x=25%5.02.6赋值表达式格式:变量名=表达式注:1.不可以颠倒(左边必须是变量名,右边必须是C语言中合法的表达式) 2.功能就是先求出右边表达式的值,然后把此值赋值给赋值号左边的变量。确切的说是把数据存入以该变量为标识的存储单元中去。a=4 , a=7 3.结合性的
12、优先级仅高于逗号表达式。顺序是自右向左的。如a=2+7/3 4.=是一个赋值号,不是一个等号。 5.x=y。变量的值也是可以传递和赋值的。它的意思就是将变量Y中的值赋值到X中去。同样N=N+1也成立 6.赋值运算符的左侧只能是变量,不能是常量或表达式 a+b=c这就是违法的 7。赋值号的右边也可以是一个赋值表达式。如a=b=7+1; 补充;表达式与语句的区别, 表达式后面加一个分号就是语句。 2.6.2复合赋值表达式例: a+=3-a=a+3 同理可得a*=3 /= -= a+=a-=a+a a 的初值是9 a+=a-=18 a+=(a=a-18) a+=(a=-9) a+=a -18(15)
13、若有定义语句:int x=10;,则表达式x-=x+x的值为( B ) A)-20 B)-10 C)0 D)10(14)设有定义:int x=2;,以下表达式中,值不为6的是 ( D )A) x*=x+1 x=x*(x+1)B) x+,2*xC)x*=(1+x)D)2*x,x+=2(17)若变量均已正确定义并赋值,以下合法的C语言赋值语句是 (A)A)x=y=5;B)x=n%2.5; C)x+n=ID)x=5=4+1; 2.7 + 和 的讲解+:自身加1-:自身减1如i=3 i+_I=i+1 i=4单目3+I I+当+在前,先自身加1,然后再干别人让干的事情 。当+在后,先别人让干的事情然后再
14、干 自身加1。int i=3;int a;a=i+; a=3a=+I;a=4 第三课:输入和输出语句3.2输出语句的讲解 一、printf函数的一般调用形式 格式:printf(格式控制,输出项1,输出项2,.); 在printf函数的最后面写上;号就是输出语句。 1,给输出项白提供输出格式说明 格式说明符: 作用:就是使数据按格式说明符的要求进行输出。 组成:由%号和紧跟在其后的格式描述符组成。 int-%d float或double-%f或e% char-%c 2.提供原样输出的文字或字符 在 “ ” 中除了格式说明符之外的内容要全部原样输出。 各个输出项之间要用逗号隔开。 输出项可以是任
15、意合法的常量,变量或表达式。 printf中常用的格式说明 在格式说明符中,每一个格式说明符都必须以%号开头由相应的类型标识字母结束。但在他们之间可以有其它的一个内容:%c :输出一个字符%d:输出一个十进制的数据%o:以八进制格式输出。%X:以十六进制输出%U:无符号十进制输出%f:以带小数点的数字输出%e:以指数形式输出%s:输出一个字符串。%:输出一个%号%4d:输出的数据长度是4个长度,当原来的长度大于4个时会自动突破。小于4个时会填充空格。%x.yf: x代表数制的宽度(包括小数点)。Y代表小数点后面的小数位数。注意事项:1.输出比较自由一些,输出有的各个数之到底是什么,取决于格式说
16、明符之间的内容。2.格式说明符要与输出项一一对应。3.输出语句中还可以有 n r t a4.尽量不要在输出语句中改变输出变量的值。5.输出的数据中如果存在变量,一定要定义过的。习题讲解(13)阅读以下程序 #include main() int case; float printF; printf(“请输入2个数:”); scanf(“%d %f”,&case,&pjrintF); printf(“%d %fn”,case,printF); 该程序编译时产生错误,其出错原因是( A ) A)定义语句出错,case是关键字,不能用作用户自定义标识符 B)定义语句出错,printF不能用作用户自定
17、义标识符 C)定义语句无错,scanf不能作为输入函数使用 D)定义语句无错,printf不能输出case的值(16)有以下程序 #include main() int a=1,b=0; printf(“%d,”,b=a+b); printf(“%dn”,a=2*b); 程序运行后的输出结果是 ( D ) A)0,0 B)1,0 C)3,2 D)1,2(15)程序段:int x=12;double y=3.141593; printf(“%d%8.6f”,x,y);的输出结果是 ( A )A)123.141593B)123.141593C)12,3.141593D)12 3.141593#in
18、clude main()double a=123.456;printf(%6.2f,a);输入语句格式: scanf(格式控制,输入项1,输入项2,.);例如:想通过键盘输入3个数分别给变量a,b,c。并且他们分别为整型,浮点型,双精度型。 输入语句为scanf(%d%f%lf,&k,&a,&y);说明: 1.格式说明符与输出语句一样。 2.在格式串中,必须含有与输入项一一对应的格式转换说明符。 3.在VC6.0的环境下,要收输入的DOUBLE型数据的格式说明符一定要用%lf,否则数据不能正确的输入4.由于输入是一个字符流,所以当输入的数据少于输入项时,程序会等待用户输入,直到满足要求。当输入
19、的数据多于输入项时,多余的数据会自动作废。例题:int x;x=11/3;int y=5;printf(%d,%dn,x,y); 结果是:%d,%33.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);3.6 若变量已正确说明为float类型,要通过以下赋值语句给a赋予10、b赋予22、c赋予33,以下不正确的输入形式是( A )A)10 B)10.0,22.0
20、,33.0 C)10.0 D)10 22 22 22.0 33.0 33 33scanf(“ %f %f %f” ,&a,&b,&c);复合语句:多个语句被括起来,当成一条语句来执行。空语句:最后的表示只有一个;程序举例:1。编写一个程序,从键盘上输入两个数字,让后让他们互换一下。#includemain()int a,b;printf(请输入两个数字:);scanf(%2d%3d,&a,&b);printf(qian:%d%d,a,b);int c;c=a,a=b,b=c;printf(后:%d%d,a,b);2。编写程序,对一个double型数据进行四舍五入运算。要求保留两位有效小树。12
21、3.45671234567*100=12345.6712345.67+0.5=12346.17(int)(12346.17)=1234612346/100=123.463。编写程序,使从键盘中输入的三位数倒着输出。选择题 3.1 若a、b、c、d、都是int类型变量且初值为0,以下选项中不正确的赋值语句是( C )A)a=b=c=d=100; B)d+; C)c+b; D)d=(c=22)-(b+);3.2 以下选项中不是C语句的是( C )A)int i; i+; printf(“%dn”,i); B); C)a=5,c=10 D) ; 3.3 以下合法的C语言赋值语句是( D )A)a=b
22、=58 B)k=int(a+b); C)a=58,b=58 D)-i;3.4 以下程序的输出结果是( C )A)0 B)1 C)3 D)不确定的值 main( ) int x=10, y=3; printf(“%dn”,y=x/y); 3.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);3.6 若变量已正确说明为float类型,要通过以下赋值语句给a赋予10、
23、b赋予22、c赋予33,以下不正确的输入形式是( B )A)10 B)10.0,22.0,33.0 C)10.0 D)10 22 22 22.0 33.0 33 33 scanf(“ %f %f %f” ,&a,&b,&c);3.7 若变量已正确定义,要将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;3.8 若变量已正确定义,以下程序段的输出结果是( D )A) 输出格式说明与输出项不区配,输出无定值 B)5.17C)5.168 D)5.169X=5.1689
24、4;Printf(“ %fn”,(int)(x*1000+0.5)/(float)1000);3.9 若有以下程序段,c3中的值是( A )A)0 B)1/2 C)0.5 D)1int c1=1,c2=2,c3;c3=c1/c2;3.10 若有以下程序段,其输出结果是( B )A)3,0,-10 B)0,0,5 C)-10,3,-10 D)3,0,3int a=0,b=0,c=0;c=(a-=a-5),(a=b,b+3); printf(“ %d,%d,%dn”,a,b,c); 填空题3.21 若有以下定义,请写出以下程序段中输出语句执行后的输出结果。(1)-200,2500(2)i=-200
25、,j=500 (3)i=-200 回车 j=2500int i=-200,j=2500;printf(“ (1) %d %d”,i,j);printf(“ (2) i=%d,j=%dn” ,i,j);printf(“ (3) i=%dn j=%dn”,i,j);3.22 变量i、j、k已定义为int类型并有初值0,用以下语句进行输入时scanf(“ %d”,&I); scanf(“ %d”,&j); scanf(“ %d” ,&k);当执行第一个输入语句,从键盘输入:12.3 表示Enter键则变量i、j、k的值分别是_12_、_0_、_0_。3.23 复合语句在语法上被认为是 一条语名。空语
26、句的形式是 ;3.24 C语句的最后用 ;结束。3.25 以下程序段,要求通过scanf语句给变量赋值,然后输出变量的值。写出运行时给k输入100,给a输入25.81,给x输入1.89234 时的三种可能的输入形式_、_、_。int k; float a; double x; scanf(“ %d%f%lf”,&k,&a,&x);pirntf(“ k=%d,a=%f,x=%fn”,k,a,x);编程题和改错题3.29 以下程序多处有错。要按下面指定的形式输入数据和输出数据时,请对该程序做相应的修改。maindouble a,b,c,s,v;printf(input a,b,c:n);scanf
27、(“%d%d%d”,a,b,c);s=a*b; /*计算长方形面积*/v=a*b*c; /*计算长方体体积*/printf(“%d %d %d”,a,b,c);printf(“s=%fn”,s,”v=%dn”,v);当程序执行时,屏幕的显示和要求输入形式如下: input a,b,c:2.0 2.0 3.0 此处的2.0 2.0 3.0是用户输入的数据 a=2.000000,b=2.000000,c=3.000000 此处是要求的输出形式 s=4.000000,v=12.0000003.30 编写程序,把560分钟换算成用小时和分钟表示,然后进行输出。3.31 编写程序,输入两个整数:1500
28、和350,求出它们的商数和余数并进行输出。3.32 编写程序,读入三个双精度数,求它们的平均值并保留此平均值小数后一位数,对小数点后第二位数进行四舍五入,最后输出结果。3.33 编写程序,读入三个整数给a、b、c,然后交换它们中的数,把a中原来的值给b,把b中原来的值给c, 把c中原来的值给 a。第四课:C语言的程序结构4-1节、关系运算与逻辑运算一、简介 关系表达式与逻辑表达式的运算结果都会得到一个逻辑值。就是“真”、“假” 在C语言中0表示“假”,非0(无论是负数还是正数都是真,更多时候用1来代替)表示“真”。二、几个简单的关系运算符 = = != 注意: 1,由两个字符组成的运算符,中间
29、不能有空格 2,它们都是双目运算符,具有自左至右的结合性。 3,上面的6个运算符中,前4个的优先级要比后2个的优先级要高。先计算,后判断,最后进行赋值运算。三、几个简单的逻辑运算符 & 与 一假则假 | 或 一真则真 ! 非 非假则真,非真则假 1&2=1 0&6=0 int a=4 ,b=7; a&7=1int x=0,y=7; x+&y+ ?x= 1 y= 7 +x&y+ ?x=1 y=8同样放在|中也是一样的。4-2、4-3节、 if语句一、定义: 只有两种结果。要么执行这条语句,要么执行那条语句。 if(条件表达式) 上述条件成立执行的句子 else 上述条件不成立执行的句子如: if
30、(成绩60) 显示及格 else 显示不及格二、分类 1.不含有else的语句 if(表达式) 语句 if(ab) t=a; a=b; b=t; 2.含有else语句 if(条件) 语句1; else 语句2; 语句3; 注: 1.没有分号 2.控制的是与if或者else紧临的“一条”语句。if(a=90) printf(a);elseif(a=80) printf(b);elseif(a=70) printf(c);elseif(a=60) printf(d);else printf(e);4-5、节7)设有定义:int a=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是 ( C
31、 ) A)if(ab) c=a,a=b,b=c; B)if(ab) c=a,a=b,b=c; C)if(ab) c=a;a=b;b=c; D)if(ab) c=a;a=b;b=c;(18)有以下程序应该选( B )#include main()int x;scanf(“%d”,&x);if(x=3 ; elseif(x!=10)printf(“%dn”,x);程序运行时,输入的值在哪个范围才会有输出结果A)不等于10的整数B)大于3且不等于10的整数C)大于3或等于10的整数D)小于3的整数(19)有以下程序 ( C)#includeMain()int a=1,b=2,c=3,d=0;if(a
32、= =1 &b+= =2)if(b!=2 | c-!=3)printf(“%d,%d,%dn”,a,b,c);else printf(“%d,%d,%dn”,a,b,c);else printf(“%d,%d,%dn”,a,b,c);程序运行后的输出结果是A)1,2,3B)1,3,2C)1,3,3D)3,2,14-6节、条件表达式 是C语言中唯一的一个三目运算。格式 :表达式1?表达式2:表达式3 当1成立(非零时)时,表达 式的值就是2的值,否则就是3的值。如: 1.12?4:5 2.printf(%d,x3?(x3?a:b):b4-7节、switch语句(一)switch(表达式) cas
33、e 常量表达 式1:语句1case 常量表达 式2:语句2case 常量表达 式3:语句3case 常量表达 式4:语句4case 常量表达 式5:语句5。case 常量表达 式N:语句N4-8节、switch语句(二)switch(A/10) case 10:printf(A); case 9:printf(A); case 8;printf(b); case 7;printf(c); case 6;printf(d); default :printf(e);4-9节-4-15节、选择题4.1 下列运算符中优先级最高的运算符是( A )A)! B)% C)-= D)&4.2 下列运算符中优先
34、级最低的运算符是 ( A )A)| B)!= C) =y=z, 应使用的C语言表达式是 ( A )A) (x=y)&(y=z) B) (x=y)AND (y=z)C) (x=y=z) D) (x=y)&(y=z)4.4 设 a、b 和c 都是int 型变量,且a =3,b=4, c=5;则以下的表达式中,值为0的表达式是 ( D )A) a&b B)a=b C)a|b+c&b-c D)!(ab)&!c|1)4.5 以下程序的输出结果是:( C )A) 0 B)1 C)2 D)3main() int a=2,b=-1,c=2; if (ab) if (b0) c=0; else c+=1; pr
35、intf(“%dn”,c);4.6 以下程序的输出结果是:( A )A) 1 B) 2 C) 3 D) 4main() int w=4,x=3,y=2,z=1; printf(“%dn”,(wx?w:zy?z:x);4.7 若执行以下程序时从键盘上输入3和4,则输出结果是( B ) A)14 B)16 C)18 D)20 main() int a, b,s; scanf(“%d%d”,&a,&b); s=a; if (ab) s=b; s*=s; printf(“%dn”,s);4.9 运行以下程序后,输出( D ) A)# B)&C)#& D)有语法错误不能通过编译 main() int k
36、=-3;if (k=0) printf(“*n”); else printf(“&n”); 4.10 若a和b均是正整数型变量,以下正确的switch语句是 ( A )A) switch ( pow(a,2)+pow(b,2) (注:调用求幂的数学函数) case 1: case 3: y=a+b; break ; case 0: case 5: y=a-b; B) switch (a*a+b*b); case 3: case 1: y=a+b; break ; case 0: y=b-a; break; C) switch ()a default : x=a+b; case 10 : y=a-b;break; case 11 : y=a*d; break; D) switch(a+b) case 10: x=a+b; break; case11: y=a-b; break; 二、 填空题4.11 C语言中用 非0 表示逻辑值“真”,用 0 表示逻辑值“假”。4.12 C语言