收藏 分享(赏)

国家计算机二级C语言考试复习知识点.doc

上传人:wspkg9802 文档编号:6543994 上传时间:2019-04-16 格式:DOC 页数:48 大小:313.50KB
下载 相关 举报
国家计算机二级C语言考试复习知识点.doc_第1页
第1页 / 共48页
国家计算机二级C语言考试复习知识点.doc_第2页
第2页 / 共48页
国家计算机二级C语言考试复习知识点.doc_第3页
第3页 / 共48页
国家计算机二级C语言考试复习知识点.doc_第4页
第4页 / 共48页
国家计算机二级C语言考试复习知识点.doc_第5页
第5页 / 共48页
点击查看更多>>
资源描述

1、二 教学讲点1. C 语言的基本构成和格式#include “stdio.h”main()int a,b,sum;/* 定义变量 */a=10; /*把整数 10 赋值给变量 a*/b=20; /*把整数 20 赋值给变量 b*/sum=a+b; /*把两数之和赋值给变量 sum*/printf(“a=%d,b=%d,sum=%dn”,a,b,sum);/*输出计算结果*/(1).C 程序由函数组成,一个程序必须且只能有一个主函数(main(),C 程序总是从主函数开始执行,在主函数中结束。(2).定义函数时函数名后必须有一对小括号,函数体必须放在一对花括号内,在函数体中,函数体有两个部分:定

2、义部分和执行部分。定义语句必须出现在执行语句之前,我们先定义了 a,b,sum,然后才给它们赋值。(3).C 语言中每条语句都以分号“;”结束,分号时 C 语句的一部分。即使是程序的最后一个语句也不例外。分号是语句结束的标志。(4). 一行可以写多条语句,一条语句也可以分在多行上写,但是,不能将一个整体分开。例如:i nt 是错误的,而 int 正确。(5). C 语言的 注释必须放在“/*”和“*/”之间, “/”和“*”之间不允许有空格。 “/*”和“*/”之间不允许再插入“/*”或“*/” 。注释可以出现在程序中的任意位置。注释部分不被执行。(6).C 语言程序书写格式自由,语句可以从任

3、一列开始书写,一行内可以写多个语句。但是过于“自由”的程序书写格式往往使人们很难读懂程序,初学者应该从一开始就养成好的习惯,是程序便于阅读。2. 标识符(1) 标识符只能由字母、数字和下划线组成。(2) 标识符的第一个字符必须是字母或下划线。(3) 标识符的大小写字母是有区别的,如 abc 和 ABC 是两个完全不同的标识符。 (3) 标识符的分类:关键字:关键字是具有特定的含义的、专门用来说明 C 语言特定成分的一类标识符。详细的查阅附录二。预定义标识符:在 C 语言中它也有特定的含义。预定义标识符可以用位 “用户表标识符”使用,只是这将使这些标识符失去了原来的意义。用户标识符:由用户根据需

4、要定义的标识符被成为用户标识符。用户标示符用来给变量、函数、数组或者指针等命名。3. C 语言的数据类型3.1 数据可以分为常量和变量。常量是指在程序执行中不变的量,常量分为:整型常数、实型常数、字符常量、字符串常量。整型数据:进制间的转换3.11.二、八、十六进制转为十进制规则:“按权相加”3.12.十进制转为二、八、十六进制规则:整数部分:基数除取余,逆序排列小数部分:基数乘取整,顺序排列3.13.二进制转为八、十六进制规则:三(四)合一,按序相拼(整数部分,从右向左取,小数部分从左向右取,位数不足补零) 。3.14.八、十六进制转为二进制规则:一分三(四) ,按序相拼3.2 整型数据在内

5、存中的存放形式1 字节8 位,1Byte 8bit字长:指 CPU 能同时处理的二进制位数。由 CPU 的型号而定。如:16 位微机的字长就是 16 位或2 字节。1GB=1024MB,1MB=1024KB,1KB=1024BB:表示字节,字节是表示存储容量的最小单位。位(bit):是计算机中信息表示的最小单位。3.21.正整数在内存中用“原码”形式存放。 (直接转换为二进制即可) 。如:5 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1二字节能存放的最大数是:327670 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1对带符号数,最高位是符号位,用 0 表示正,用

6、 1 表示负。3.22.负整数在内存中用“补码”形式存放。取补码的步骤:(1)忽略负号,求出原码。(2)将原码按位取反(0 、1 互换) 。(3)在第二步的基础上加 1。如:取-5 的补码。(1)0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1(2)1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0(3)1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1将补码转换成相应的整数的步骤:(1)将补码按位取反加 1。(2)将步骤 1 得到的二进制数转换成十进制数,然后加上负号即可。例如:1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0按位取反加 1

7、0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0转换成十进制:12 15 32768 加负号:-32768几个特殊的带符号整数:1000000000000000 -327680111111111111111 327671111111111111111 -13.23.无符号整数:只有正整数,没有负整数,最高位不表示符号位,每一位均参与转换。二进制 带符号整数 无符号整数1111111111111111 -1 655351000000000000000 -32768 32768例 2-12:若有: int a=-1;

8、unsigned b=65535;则printf(“%d,%u,%d,%u”,a,a,b,b); 输出结果是:-1,65535,-1,65535数据益出问题:例 2-13:若有 int a=32767;则 a=a+1 的结果是:-32768例 2-14:若有 unsigned b=65536;则 b 的值是:0分析:32767:01111111111111111+1100000000000000将 100000000000000 按照带符号数转为十进制为-3276865535:1111 1111 1111 1111+11111111111111111+11 00000000 000000006

9、5536unsigned b=655536;而 b 属于无符号整型,在内存中只占两字节,所以只能包括 16 位。标准 C 没有具体要求规定各类型数据所占内存的字节数, 现以这次考试标准 viusal c+6.0 为例,说明各类型变量所占的位数。 类型 所占位数 所占字节数 类型 所占位数 所占字节数short 16 2 unsigned int 32 4int 32 4 unsigned long 32 4Long 32 4 Float 32 4unsigned short 16 2 Double 64 83.3 实型数据(浮点数)3.31.实型常量(1)小数形式:由数字和小数点组成,必须有小

10、数点,小数点的某一侧可以没有数字。如:.23 ,123.876 ,123. (2)指数形式:用“e ”或“E ”后接一个整数,表示以 10 为底的幂数。注意: “e”或“E ”之前之后必须有数字,且之后的数字必须是整数。他们和前后的数字之间不能有空格。例如:例 2-15:下列合法的常量是( ) 。A.-32169 B.0128 C.0XDEFG D.13E0.5例 2-16:下列合法的实型常量是( ) 。(A) 0Xff (B)124E (C) 1.23E5.0 (D) 3.E2 (E) 1.25E+2 (F).23e+02 3.32.实型变量单精度型 float 占 4 字节双精度型 dou

11、ble 占 8 字节长双精度 long double 占 16 字节(较少用)4. 表达式与运算符4.1 算术运算符及其表达式:+ - * / %:(求余运算)注意:(1)%两边必须是整型数据。12.0%3 表达式是错误的。(2)求余(%)的方法是:忽略符号,求出余数,再将所得余数的符号定为与被除数相同。例如:17%3 结果是:217%-3 结果是:2,-17%3 结果是:-2,-17%-3 结果是:-24.2 强制类型转换强制类型表达式:(类型名)表达式注意:类型名(表达式)这种形式是 C+的强制类型表达方式。5.赋值运算符及其表达式5.1.赋值运算符 =格式:变量名=表达式功能:将表达式的

12、值赋给左边的变量。注:(1)赋值运算符左边只能是一个变量,不能是常量,也不能是表达式。a+b=3 4=3 是非法的表达式a=6 a+(b=3) 都是合法的表达式a=b=20 a=(b=10)/(c=2) 都是合法的表达式(2)实型数据赋给整型变量时,小数部分被舍去,整型数据赋给实型变量时,系统自动将整型数据转换为实型数据。例如:float a; int b;表达式 a=10%3 的值是 1.0表达式 b=a=10%3 的值是 1书本:5.2.复合赋值运算符及其表达式:+= -= *= /= %= 输出结果:386, 1234,3456 ,12345printf(“%2d”,12345);输出结

13、果:12345(2)u 格式u:以无符号十进制形式输出整数。printf(“%u”,-1); 65535ptintf(“%u”,-32768);32768(3)o 格式o:以无符号八进制形式输出整数,不输出前导符 0。printf(“%d,%o”,-1,-1); -1,177777(4)x 或 X 格式x 或X 以无符号十六进制形式输出整数。不输出前导符 0x 或 0X,小写对小写,大写对大写。printf(“%d,%x,%X,%x”,-1,-1,0xabc,0XAbc);-1,ffff,ABC,abc注:若要输出十六进制和八进制的前导符,则要用o 和x、X 格式。printf(“%#o,%#

14、x,%#X”,-1,-1,0xaBc);0177777,0xffff,0XABC(5)c 格式c 用来输出一个字符,不输出单引号定界符。c 和d 可以相互转换。printf(“%c,%d”,a,a); a,97printf(“%c,%d”,100,100); d,100(6)s 格式用来输出一个字符串,不输出双引号和字符串结束符。s:输出字符串的有效字符。printf(“%s”,”china0yunnan”); china%ms:输出占 m 列,若小于 m 列,左边补空格,大于 m 列,按实际输出。printf(“%5s,%-5s,%2s”,”swfc”,”swfc”,”swfc”);swfc

15、,swfc ,swfc%m.ns:输出占 m 列,只输出字符串的左 n 个字符到 m 列的右端。如:printf(“%7.5s”,”yunnan”);yunna(7)f 格式:按小数形式输出实型数据。f:默认输出 6 位小数。如:printf(“%f,%f”,543.12,5.4312e+2);543.120000,543.120000%m.nf:输出占 m 列,其中有 n 位小数。若超过 m 列,确保 n 位小数后按实际输出。注意四舍五入问题。如:printf(“%7.3f,%-7.3f,%4.2f”,3.1415726,3.1415926,314.5926);3.142,3.142 ,31

16、4.59(8)e 格式以指数形式输出一个实数。小数点前只有一位非零数,5 位小数,3 位指数。如:printf(“%e,%e”,123.4,123.45e-7);234000e+002,1.234500e-005(9)g 格式自动在f 和e 中选择较短的一种输出,对于小数部分不输出无意义的 0。如:printf(“%g,%g”,123.45,123.45e-2);123.45,1.2345printf(“%g”,123000000.0);23e+08小结:(1)表示输出一个。如:printf(“%d=%d”,10,10);%d=10(2)除了 x,e,g 大小写均可外,其它都只能小写。如:pr

17、intf(“%d=%D”,20,20);20=%D(3)输出格式说明符所能操作的数据类型必须与输出项的类型一致。如:printf(“%d”,1.234);/*出错*/2.2. scanf()函数格式:scanf(“格式控制” ,地址列表) ;注意:(1)可指定数据所占的列数,输入后由系统自动截取相应的位数。如:scanf(“%3d%2d”,若输入:3863018则:a 的值是:386b 的值是:30若输入:3863a 的值是:386b 的值是:3scanf(“%3c%2d”,若输入:3863018则: ch 的值是:3b 的值是:30(2)*md:表示跳过 m 列不读。如:scanf(“%*3

18、d%3d%4d”,若输入:123456则:a 的值是:456b 的值是:原来的值 。(3)不能在 scanf()函数中指定输入数据的小数位数。如:scanf(“%7.5f”,/* 出错*/在 scanf()函数中,输入时普通字符原样输入。如:scanf(“a=%d,b=%d”,若要给 a 赋值 5,b 赋值 10,正确的输入是:a5,b 10scanf(“%d*,%d#,%d”,若要让 a,b, c 分别得到 1,2,3,正确的输入是:1*,2#,3若两个格式说明符之间没有其它字符,则在输入数据时,两数据之间要用回车或空格分隔,回车或空格可以是多个。但是,c 格式除外。如:scanf(“%d%

19、d”,若想让 a 的值为 5,b 的值为 10。则正确的输入是:5 空格 10 或 510或 5 空格 空格 空格 10(6)多个%c 格式之间没有其它字符,仍然不能用回车或空格来分隔。如:scanf(“%c%c%c”,若输入:a 空格 b 空格 ca 的值是a, b 的值是空格,c 的值是b。(7)格式说明符所能操作的数据类型必须与对应变量的类型相同。如:int a; scanf(“%f”, /*出错*/总结:1.普通字符原样输入,原样输出。2.对于d 格式,指定宽度小于输出宽度,原样输出。3.#o,#x,#X 表示要输出八进制的前导符数字 0,和十六进制的前导符 0x,0X 。4.x,X

20、格式,小写对小写,大写对大写。5.*md:表示跳过相应的输入项。6.注意进制间的转换,以及无符号数和带符号数之间的转换。7.在 scanf()函数中,给 double 类型变量输入数据时,应该使用 lf 类型说明符,而输出时,可以用lf,也可以用lf。三 试题分析1.2008年4月试题分析(16)有以下程序段 char ch; int k; ch=a; k=12; printf(“%c,%d,“,ch,ch,k); printf(“k=%dn“,k); 已知字符a的ASCll 十进制代码为 97,则执行上述程序段后输出结果是 A)因变量类型与格式描述符的类型不匹配输出无定值 B)输出项与格式描

21、述符个数不符,输出为零值或不定值 C)a,97,12k=12 D)a,97,k=12 2.2007年9月试题分析(15)若在定义语句:int a,b,c,*p= 之后,接着执行以下选项中的语句,则能正确执行的语句是A)scanf(“%d“,a,b,c); B)scanf(“%d%d%d“,a,b,c);C)scanf(“%d“,p); D)scanf(“%d“,(18)有以下程序段int j; float y; char name50;scanf(“%2d%f%s“, 当执行上述程序段,从键盘上输入 55566 7777abc 后,y 的值为A)55566.0 B)566.0 C)7777.0

22、 D)566777.0填空(6)执行以下程序时输入 1234567,则输出结果是 【6】 。#include main() int a=1,b;scanf(“%2d%2d“, printf(“%d %dn“,a,b);3.2007年4月试题分析(16)设变量均已正确定义,若要通过 scan(“%d%c%d%c”,语句为变量 a1和 a2 赋数值 10 和 20,为变量 c1 和 c2 赋字符 X 和 Y。以下所示的输入形式中正确的是(注:代表空格字符)( D)A)10X20Y 回车 B)10X20Y回车 C)10X回车 D)10X回车20Y回车 20Y回车 填空(6) 执行以下程序后的输出结果

23、是 。main()int a=10;a=(3*5,a+4); printf(“a=%dn”,a); 第三章 选择结构一教学重点、难点知识点 所占分值 考核几率 专家点评关系运算符及优先次序 0-1 40% 简单识记关系表达式 0-1 50% 简单,属重点识记知识点逻辑运算符及优先级 1-2 50% 简单识记逻辑表达式 1-2 50% 简单,属重点识记知识点if 语句的几种形式 1-2 100% 简单识记if 语句的嵌套 1-2 100% 难度适中,重点掌握条件运算符 0-1 100% 难度适中,重点掌握switch 语句 2-4 100% 简单,重点掌握重点理解语句标号 0-1 10% 偏难,

24、不是重点goto 1-2 10% 简单识记二教学内容1.关系运算与逻辑运算1.1逻辑值真(非零值) 假(零)1.2 关系运算符及其表达式= = !=关系运算符优先级别低于算术运算符,高于赋值运算符。( =)优先级别高于(= !=)如:ab+c 等价于 a(b+c)a=b4 结果是:03if(m+5) printf(“m=%d”,m);else printf(“m=%d”,m-);例 2:main()int m=5;if(+m5) printf(“m=%d”,m);else printf(“m=%dn”,m-);printf(“m=%d”,m);2.3 if 语句的嵌套if(表达式 1)if(表

25、达式 2) 语句 1;else 语句 2;elseif(表达式 3) 语句 3;else 语句 4;else 总是与前面最近的且未配对的 if 语句配对,组成一对 if-else 语句。if(表达式 1)if(表达式 2) 语句 1;elseif(表达式 3) 语句 2;else 语句 3;第一个 else 语句有的同学会把它误以为和第一个 if 配对,但是实际的情况是和第二个 if 语句配对,即:if(表达式 1)if(表达式 2) 语句 1;elseif(表达式 3) 语句 2;else 语句 3;例 1请分析下列程序的输出结果。main() int s,t,a,b;sanf(“%d%d”

26、,s=1;t=1;if(a0) s=s+1;if(ab) t=s+1;else if(a=b) t=s;else t=2*s;printf(“%dn”,t);若运行时输入 5 10 回车,则程序的执行结果是?main() int s,t,a,b;sanf(“%d%d”,s=1;t=1;if(a0) s=s+1;if(ab) t=s+1;else if(a=b) t=s;else t=2*s;printf(“%dn”,t);若运行时输入 5 10 回车,则输出结果是?例 2分析下列程序的输出结果main() int a=4,b=3,c=5,t=0;if(ab?a:b;相当于:if(ab)max=

27、a;elsemax=b;ab?a:cd?c:d 相当于 ab?a:(cd?c:d)注意:表达式 1、2、3 的值不要求具有相同的类型,最后结果的类型为表达式 2、3 中较高类型的一种。如:(x=6)(y=5)?1:1.5 表达式的值是 1.0 而不是 1。4.switch语句格式:switch(表达式) case 常量表达式 1:语句 1;break;case 常量表达式 2:语句 2;break;case 常量表达式 n:语句 n;break;default :语句 n+1;break;说明:(1) switch、case、default、break 都是关键字。花括号里面的语句叫做 swi

28、tch 语句体。Switch语句体中可以没有 break 语句和 default 部分。(2) Switch 语句的圆括号中表达式的值必须是整型或是字符型 ,不能为实型。case 后的表达式可以是求得整型量的常量表达式,但是常量表达式中不能含有变量。(3) 执行 Switch 语句时,首先计算 Switch 后圆括号的表达式的值,然后将这个值与语句体中case 后的常量表达式的值相比较,如果某个常量表达式的值与之相等,则执行该 case 后的语句块;如果没有任何一个常量表达式的值与之相等,则执行 default 后的语句块。(4) 在执行的时候如果遇到 break 语句,则跳出 switch

29、语句。如果执行完一个 case 或者 default语句块后没有遇到 break,则继续顺序往下执行,知道遇到 break 语句或者语句体被执行完毕为止。(5) default 最多只能有一个,通常出现在 switch 语句的最后部分,但也可以出现在 case 之间或所有的 case 之前。四试题分析1.2008 年 4 月试题分析:(17)已知字母 A的ASC代码值为65,若变量kk为char 型,以下不能正确判断出kk中的值为大写字母的表达式是 A)kk=A c=a; if(c!=a) c=b; printf(“%d,%d,%dn“,a,b,c); 其输出结果是 A)程序段有语法错 B)3

30、,5,3 C)3,5,5 D)3 ,5,7 (20)有以下程序 #include main() int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0: a+; break; case 1: b+; break; case 2: a+; b+; break; case 3: a+; b+; printf(“a=%d,b=%dn”,a,b); 程序的运行结果是 A)a=1 ,b=0 B)a=2,b=2 C)a=1,b=1 D)a=2,b=1 2.2007年9月试题分析(20)有以下计算公式 )0(xy若程序前面已在命令行中包含 math.h

31、 文件,不能够正确计算上述公式的程序段是A) if(x=0) y=sqrt(x); B) y=sqrt(x);else y=sqrt(-x); if(x=0) y=sqrt(x); D) y=sqrt(x=0?x :-x);if(xmain( ) int a,b,c,t1,t2;scanf(“%d%d%d“,t1= ay C)if( xy) x- - D)if(y0 for( ; x0; x-) if(x%3) printf(“%d,”,x-); continue; printf(“%d,”,-x); 程序的运行结果是 A)7,4,2 B)8,7,5,2 C)9,7,6,4 D)8,5,4,2

32、 (22)以下不构成无限循环的语句或者语句组是 A)n=0; B)n=0; do+n;while(n main() int s12=1,2,3,4,4,3,2,1,1,1,2,3,c5=0,i; for(i=0;i void fun(int *s,int nl,int n2) int i,j,t; i=nl; j=n2; while(i #include void fun(char *s ,int n) char *t; int i,j; for(i=0;istrlen(sj) t=si;si=sj;sj=t; main() char *ss=“bcc”,”bbcc”,”xy”,”aaaacc

33、”,”aabcc”; fun(ss,5); printf(“%s,%sn”,ss0,ss4); 程序的运行结果是 A)xy,aaaacc B)aaaacc,xy C)bcc,aabcc D)aabcc,bcc (35) 有以下程序 #include void fun(char *a,char *b) while(*a=*) a+; while(*b=*a) b+;a+; main() char *s=”*a*b*”,t80; fun(s,t); puts(t); 程序的运行结果是 A)*a*b B) a*b C) a*b* D) ab(8)若有定义:int k; , 以下程序段的输出结果是【8

34、】 。 for(k=2;k main() int x=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,*p4,i; for(i=0;imain() int y=9;for( ; y0; y-)if(y%3=0) printf(“%d“, -y);程序的运行结果是A)741 B)963 C)852 D)875421(24)有以下程序#include main() int i,j, m=55;for(i=1;ivoid fun(int *a, int n) /* fun 函数的功能是将 a 所指数组元素从大到小排序 */ int t, i, j;for (i=0; i

35、main() int n=12345, d;while(n!=0) d=n%10; printf(“%d“, d); n/=10; (9)有以下程序段,且变量已正确定义和赋值for(s=1.0, k=1; kmain() int i;for(i=a; i0While(ch=getchar() )=0) printf(“#” );第五章 字符型数据 位运算一教学内容1.字符型数据1.1 字符常量:用一对单引号括起的一个字符。例如:A, a,6是合法的字符型常量。”a”,ab,A, 5, 12都是不合法的字符型常量。1.2 转义字符常量:必须以一个反斜杠“”开头.常见的转义字符见表 5-1。n:回

36、车换行 t:横向跳格 v:竖向跳格b:退格 r:回车 f:换页: : ”:”1.3 ddd:ddd 表示最多可以有三位 8 进制数。1.4 xhh:hh 表示最多可以有二位 16 进制数。注意:三位 8 进制数不一定以 0 开头,只要是 07 之间的数字即可。例:下列字符常量中合法的是( )A027 B.028 C.x12 D.0x1fE.1234 F.xffh G.AB H.123I.12 J.”A” K.xf例:下列字符常量中合法的是( )A./ B./t C. D. ” E.bF. G. H./ I, J.”1.5 字符型变量关键字:char ,字符型变量在内存中占 1 字节。例:cha

37、r a=5;a字符的 ASCII 码值是 97A 字符的 ASCII 码值是 65(小大)同一字母的大小写之差是 32,那么我们要把小写字母变成大写字母就相应的字母减去 32 即可,同样大写字母加上 32 后就变成了与其相对应的小写字母。数字09对应的 ASCII 码值是 4857。2.字符数据的输入输出2.1.putchar()和 printf( )格式:putchar(字符), printf(“%c”,ch);功能:输出一个字符,但不输出单引号。其中“字符”可以是一切合法的字符型或整型数据。它会自动将整型数据转换为相应的字符输出。putchar(a ) ;a printf(“%c”,a);

38、 aputchar(65) ;A printf(“%c”,65); Achar chg;putchar(ch) ;输出:gchar chg;printf(“%c”,ch); 输出:g2.2.getchar()格式:getchar ()功能:接收一个从键盘输入的字符。注意:1.它可以接收从键盘上输入的任何字符,包括回车符、空格符等。2.任何输入都是在回车后方按顺序送入内存中,即才被函数接收。如:char a,b;a getchar() ;bgetchar () ;若输入:1 则变量 a 的值为字符 1 变量 b 的值为 回车符。2.3.scanf 函数输入数据:在进行字符数据输入的时候,空格符、

39、回车、横向跳格都是合法有效的字符,都将被读入并赋值给相应的变量。3位运算(详细的见课本 52 页)二试题分析1.2008 年试题分析(13)以下选项中不属于字符常量的是 A) C B) “C“ C)xCC0 D) 072 (16)有以下程序段 char ch; int k; ch=a; k=12; printf(“%c,%d,“,ch,ch,k); printf(“k=%dn“,k); 已知字符a的ASCll 十进制代码为 97,则执行上述程序段后输出结果是 A)因变量类型与格式描述符的类型不匹配输出无定值 B)输出项与格式描述符个数不符,输出为零值或不定值 C)a,97,12k=12 D)a

40、,97,k=12 (17)已知字母 A的ASC代码值为65,若变量kk为char 型,以下不能正确判断出kk中的值为大写字母的表达式是 A)kk=Afor(i=a; i ,则其中 while 循环体将执行 次。include main()char ch;While(ch=getchar() )=0) printf(“#” );第六章 函数一教学重点、难点知识点 所占分值 考核几率 专家点评库函数 1-2 60% 简单,重点识记知识点函数的定义 0-1 50% 简单,重点识记知识点形参和实参及函数调用 2-3 80% 难度适中,重点理解重点掌握函数调用的一般形式和调用方式 2-3 90% 偏难,

41、重点掌握重点理解函数的说明及其位置 0-1 60% 简单识记函数的嵌套调用 1-3 90% 偏难,重点掌握重点理解函数的递归调用 1-2 80% 偏难,重点掌握重点理解二教学内容函数是 C 程序的基本单位。1. 函数的定义:函数返回值的类型名 函数名(类型名 1 形参名 1,类型名 2 形参名 2,.)说明部分语句部分说明:1.1 一个 C 程序可以由一个或多个源程序文件组成。一个源程序文件可以由一个或多个函数组成。 C 程序 源程序 函数1.2 函数返回值的类型名缺省时,返回值类型默认为 int 型,而不是没有返回值。若没有返回值的时候应该为 void.1.3 函数名是用户自定义标识符,唯一

42、且独有,不得与同一程序中其他函数相同。主函数的函数名必须是 main。1.4 函数后面的括号是必不可少的,括号中的为形式参数列表。形式参数用于数据的传递,同样是用户标识符。在同一函数内形式参数必须是唯一的。如果函数不带形式参数,则形式参数列表可以省略。1.5 函数体部分的一对花括号必不可少。1.6 函数之间的关系是相互平行、独立的,不是相互隶属的。1.7 函数不能嵌套定义,不能在一个函数体内定义另一个函数。1.8 函数可以相互调用,但不能调用 main()函数。1.9 函数的分类:1.从形式分:无参函数:如:main() getchar()带参函数:如:strlen(“abc”)2.从用户使用

43、的角度分标准函数(库函数):如:getchar()用户自定义函数:double add(int a,int b)函数体1.10 函数的定义的比较类型名 函数名(类型名 形参 1,类型名 形参 2,)/* 函数首部*/函数体int min(int x, int y) int min( x,y)函数体 int x,y;/*现代方式*/ 函数体/*传统方式*例如:float fun(int x,int y) float fun(x,y) int x;int y; 以上函数的定义是合法的。int fun(int x,y) int fun(int x;int y) int fun(int x,y)int

44、 y; int fun(x,y)int x,y;int fun(x,y)int x,y,z; 以上函数的定义均是非法的。2. 函数的参数和函数值2.1.函数的参数可以分为:形式参数和实际参数。形参:函数定义时函数名后小括号内的参数。实参:函数调用时函数名后小括号内的参数。注意:(1)形参只有在该函数被调用时才占内存单元,即该变量才可用;函数调用结束时形参所占的内存单元被释放,即不可用。(2)实参和形参的数据类型应该对应相同。否则,必须将函数的定义放在函数调用之前或在调用之前对函数作原型声明。例如:void sum(int x,int y)/函数定义, x,y 是被调用函数的参数,我们叫它形参p

45、rintf(“%d”,x+y);main( ) sum(3,5);/函数调用,这里的 3 和 5 是调用函数的参数,我们叫为实参/*类型对应不相同*/2.2.函数值:函数的返回值即函数值。return 语句的格式: retrun 表达式;或 return (表达式);功能:将表达式的值作为函数值返回给主调函数,并结束本函数的执行。注意:2.21.函数值应通过 return 语句返回,一个函数中可以有多条 return 语句,只要执行其中任何一条return 语句,该函数立即结束执行,并将该 retrun 后表达式的值返回。例如:int max(int a,int b)if(ab) return

46、 a;else return b;2.22.函数值的类型保持与函数定义时所指定的类型相同,而与 retrun 后表达式的值的类型无关。若定义函数时不指定函数的类型,则默认是 int。max(float a,float b) int max(float a,float b)return a/b; return a/b;2.23.为了明确函数无返回值,可将函数指定为空类型(void) 。例如:void fun( int a)printf(“%d”,a);3.函数调用调用格式:函数名(实参)无参调用格式:函数名() clrscr();带参调用格式:函数名(实参列表)3.1 调用函数时,函数名必须一致

47、。函数名是唯一区别函数的标志。3.2 实参和形参的类型匹配,个数一致,形式上一一对应。3.3 一般情况下,函数应该先定义后调用。3.4 函数可以直接或者间接调用自己,称为递归调用。例如:void swap(int a,int b)/*函数定义*/a=a+b;b=a-b;a=a-b;main()int a=2,b=5;swap(a,b);/*函数调用*/printf(“a=%d,b=%d”,a,b);4函数的原型声明格式:函数类型 函数名(形参类型,形参类型,); 或函数类型 函数名(形参类型 形参名,形参类型 形参名) ;对上例中的 swap 函数作原型声明的格式:void swap(int,int);void swap(int a,int b);void swap(int x,int y);注意:若被调函数定义在主调函数之前时,可以不作原型声明。若被调函数定义在主调函数之后,则在调用前应作原型声明。例如:void swap(int a,int b)/*函数定义*/a=a+b;b=a-b;a=a-b;main()int a=2,b=5;swap(a,b);/*函数调用*/printf(“a=%d,b=%d”,a,b);main()int a=2,b=5;void swap(int,int);/*原型声明 */s

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > C/C++资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报