计算机二级C语言完整复习资料.pdf_第1页
计算机二级C语言完整复习资料.pdf_第2页
计算机二级C语言完整复习资料.pdf_第3页
计算机二级C语言完整复习资料.pdf_第4页
计算机二级C语言完整复习资料.pdf_第5页
已阅读5页,还剩50页未读 继续免费阅读

计算机二级C语言完整复习资料.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章第一章 C 语言概述语言概述 第二章变量及表达式第二章变量及表达式 二二 教学重点教学重点,难点分析难点分析 1. C C 语言概述语言概述 知识点知识点 所占分值所占分值 考核几率考核几率 专家点评专家点评 C 语言概述语言概述 0-1 分分 20% 简单识记简单识记 C 语言程序的构成语言程序的构成 0-1 分分 30% 简单识记简单识记 标识符标识符 1-2 分分 60% 简单简单,属重点识记知识点属重点识记知识点 常量常量 1-2 分分 80% 简单简单,属重点识记知识点属重点识记知识点 变量变量 2-3 分分 100% 难度适中难度适中,重点理解重点掌握重点理解重点掌握 注意注意: 从几年的试题分析看从几年的试题分析看 C 语言的概述和程序的构成合起来考试语言的概述和程序的构成合起来考试已经已经 是一个惯例了是一个惯例了。 2. 运算符与表达式运算符与表达式 知识点知识点 所 占 分所 占 分 值值 考核几率考核几率 专家点评专家点评 C C 运算符简介运算符简介 0 0- -1 1 分分 10%10% 简单识记简单识记 运算符的结合和优先级运算符的结合和优先级 0 0- -1 1 分分 60%60% 简单识记简单识记 强制类型转换运算符强制类型转换运算符 0 0- -1 1 分分 30%30% 简单识记简单识记 逗号运算符和逗号表达式逗号运算符和逗号表达式 0 0- -1 1 分分 40%40% 简单简单,属重点识记知识点属重点识记知识点 基本的算术运算符基本的算术运算符 1 1- -2 2 分分 100%100% 简单简单,属重点识记知识点属重点识记知识点 算术表达式和运算符的算术表达式和运算符的 1 1- -2 2 分分 100%100% 难度适中难度适中,重点理解重点掌握重点理解重点掌握 优先级与结合优先级与结合、自增自减运算符自增自减运算符 2 2- -3 3 分分 100%100% 难度适中难度适中,重点理解重点掌握重点理解重点掌握 赋值运算符和赋值表达式赋值运算符和赋值表达式 2 2- -4 4 分分 100%100% 简单简单,重点掌握重点理解重点掌握重点理解 复合的赋值运算符复合的赋值运算符 1 1- -2 2 分分 80%80% 偏难偏难,不是重点不是重点 赋值运算中的类型转换赋值运算中的类型转换 0 0- -1 1 分分 75%75% 偏难偏难,不是重点不是重点 位运算符和位运算位运算符和位运算 0 0- -1 1 分分 80%80% 偏难偏难,属重点识记知识点属重点识记知识点 三三 教学讲点教学讲点 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).定义函数时函数名后必须有一对小括号定义函数时函数名后必须有一对小括号,函数体必须放在一对花括号内函数体必须放在一对花括号内,在在 函数体中函数体中,函数体有两个部分函数体有两个部分:定义部分和执行部分定义部分和执行部分。定义语句必须出现在执定义语句必须出现在执 行语句之前行语句之前,我们先定义了我们先定义了 a,b,sum,然后才给它们赋值然后才给它们赋值。 (3).C 语言中每条语句都以分号语言中每条语句都以分号“; ”结束结束,分号时分号时 C 语句的一部分语句的一部分。即使是程即使是程 序的最后一个语句也不例外序的最后一个语句也不例外。分号是语句结束的标志分号是语句结束的标志。 (4). 一行可以写多条语句一行可以写多条语句,一条语句也可以分在多行上写一条语句也可以分在多行上写,但是但是,不能将一个整不能将一个整 体分开体分开。 例如例如:i nt 是错误的是错误的,而而 int 正确正确。 (5). C 语言的注释必须放在语言的注释必须放在“/*”和和“*/”之间之间, “/”和和“*”之间不允许有空格之间不允许有空格。 “/*”和和“*/”之间不允许再插入之间不允许再插入“/*”或或“*/” 。注释可以出现在程序中的任意注释可以出现在程序中的任意 位置位置。注释部分不被执行注释部分不被执行。 (6).C 语言程序书写格式自由语言程序书写格式自由,语句可以从任一列开始书写语句可以从任一列开始书写,一行内可一行内可 以写多个语句以写多个语句。但是过于但是过于“自由自由”的程序书写格式往往使人们很难读懂的程序书写格式往往使人们很难读懂 程序程序,初学者应该从一开始就养成好的习初学者应该从一开始就养成好的习惯惯,是程序便于阅读是程序便于阅读。 2. 标识符标识符 (1) 标识符只能由字母标识符只能由字母、数字和下划线组成数字和下划线组成。 (2) 标识符的第一个字符必须是字母或下划线标识符的第一个字符必须是字母或下划线。 (3) 标识符的大小写字母是有区别的标识符的大小写字母是有区别的,如如 abc 和和 ABC 是两个完全不是两个完全不 同的标识符同的标识符。 (3) 标识符的分类标识符的分类: 关键字关键字:关键字是具有特定的含义的关键字是具有特定的含义的、专门用来说明专门用来说明 C 语言特定成分的语言特定成分的 一类标识符一类标识符。详细的查阅附录二详细的查阅附录二。 预定义标识符预定义标识符:在在 C 语言中它也有特定的含义语言中它也有特定的含义。预定义标识符可预定义标识符可 以用位以用位“用户表标识符用户表标识符”使用使用,只是这将使这些标识符失去了原只是这将使这些标识符失去了原 来的意义来的意义。 用户标识符用户标识符:由用户根据需要定义的标识符被成为用户标识符由用户根据需要定义的标识符被成为用户标识符。 用户标示符用来给变量用户标示符用来给变量、函数函数、数组或者指针等命名数组或者指针等命名。 3. C 语言的数据类型语言的数据类型 3.1数据可以分为常量和变量数据可以分为常量和变量。常量是指在程序执行中不变的量常量是指在程序执行中不变的量,常量常量 分为分为:整型常数整型常数、实型常数实型常数、字符常量字符常量、字符串常量字符串常量。 整型数据整型数据: 进制间的转换进制间的转换 3.11.二二、八八、十六进制转为十进制十六进制转为十进制 规则规则: “按权相加按权相加” 3.12.十进制转为二十进制转为二、八八、十六进制十六进制 规则规则: 整数部分整数部分:基数除取余基数除取余,逆序排列逆序排列 小数部分小数部分:基数乘取整基数乘取整,顺序排列顺序排列 3.13.二进制转为八二进制转为八、十六进制十六进制 规则规则:三三(四四)合一合一,按序相拼按序相拼(整数部分整数部分,从右向左取从右向左取,小数部分从左向右小数部分从左向右 取取,位数不足补零位数不足补零) 。) 。 3.14.八八、十六进制转为二十六进制转为二进制进制 规则规则:一分三一分三(四四) ,) ,按序相拼按序相拼 3.2 整型数据在内存中的存放形式整型数据在内存中的存放形式 1 字节字节8 位位,1Byte8bit 字长字长:指指 CPU 能同时处理的二进制位数能同时处理的二进制位数。由由 CPU 的型号而定的型号而定。如如:16 位微机位微机 的字长就是的字长就是 16 位或位或 2 字节字节。 1GB=1024MB,1MB=1024KB,1KB=1024B B:表示字节表示字节,字节是表示存储容量的最小单位字节是表示存储容量的最小单位。位位(bit) :) :是计算机中信息表示是计算机中信息表示 的最小单位的最小单位。 3.21.正整数在内存中用正整数在内存中用“原码原码”形式存放形式存放。 (。 (直接转换为二进制即可直接转换为二进制即可) 。) 。 如如:5 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 二字节能存放的最大数是二字节能存放的最大数是:32767 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 对带符号数对带符号数,最高位是符号位最高位是符号位,用用 0 表示正表示正,用用 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 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 转换成十进制转换成十进制:1215 32768 加负号加负号:-32768 几个特殊的带符号整数几个特殊的带符号整数: 1000000000000000 -32768 0111111111111111 32767 1111111111111111 -1 3.23.无符号整数无符号整数:只有正整数只有正整数,没有负整数没有负整数,最高位不表示符号位最高位不表示符号位,每一位均每一位均 参与转换参与转换。 二进制二进制 带符号整数带符号整数 无符号整数无符号整数 1111111111111111 -1 65535 1000000000000000 -32768 32768 例例 2-12:若有若有:int a=-1; 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 +1 100000000000000 将将 100000000000000 按照带符号数转为十进制为按照带符号数转为十进制为-32768 65535:1111111111111111 +1 11111111 11111111 +1 1 00000000 00000000 65536 unsigned b=655536;而而 b 属于无符号整型属于无符号整型,在内存中只占两字节在内存中只占两字节,所以所以 只能包括只能包括 16 位位。 标准标准 C 没有具体要求规定各类型数据所占内存的字节数没有具体要求规定各类型数据所占内存的字节数, 现以这次考试标现以这次考试标 准准 viusal c+6.0 为例为例,说明各类型变量所占的位数说明各类型变量所占的位数。 类型类型 所 占 位所 占 位 数数 所 占 字所 占 字 节数节数 类型类型 所占位所占位 数数 所 占 字 节所 占 字 节 数数 shortshort 1616 2 2 unsignedunsigned intint 3232 4 4 intint 3232 4 4 unsignedunsigned lonlon g g 3232 4 4 longlong 3232 4 4 floatfloat 3232 4 4 unsignedunsigned shorshor t t 1616 2 2 doubledouble 6464 8 8 3.3 实型数据实型数据(浮点数浮点数) 3.31.实型常量实型常量 (1)小数形式小数形式:由数字和小数点组成由数字和小数点组成,必须有小数点必须有小数点,小数点的某一侧可以没有小数点的某一侧可以没有 数字数字。如如:.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 字节字节 双精度型双精度型 double 占占 8 字节字节 长双精度长双精度 long double 占占 16 字节字节(较少用较少用) 4. 表达式与运算符表达式与运算符 4.1 算术运算符及其表达式算术运算符及其表达式:+ - * / % %: (: (求余运算求余运算) 注意注意: (1)%两边必须是整型数据两边必须是整型数据。12.0%3 表达式是错误的表达式是错误的。 (2)求余求余(%)的方法是的方法是:忽略符号忽略符号,求出余数求出余数,再将所得余数的符号定为与被再将所得余数的符号定为与被 除数相同除数相同。 例如例如:17%3 结果是结果是:2 17%-3 结果是结果是:2,-17%3 结果是结果是:-2,-17%-3 结果是结果是:-2 4.2 强制类型转换强制类型转换 强制类型表达式强制类型表达式: (: (类型名类型名)表达式表达式 注意注意:类型名类型名(表达式表达式)这种形式是这种形式是 C+的强制类型表达方式的强制类型表达方式。 5.赋值运算符及其表达式赋值运算符及其表达式 5.1.赋值运算符赋值运算符 = 格式格式:变量名变量名=表达式表达式 功能功能:将表达式将表达式的值赋给左边的变量的值赋给左边的变量。 注注: (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 ,12345 printf(“%2d”,12345); 输出结果输出结果:12345 (2)u 格式格式 u:以无符号十进制形式输出整数以无符号十进制形式输出整数。 printf(“%u”,-1); 65535 ptintf(“%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,%#x,%#X”,-1,-1,0xaBc); 0177777,0xffff,0XABC (5)c 格式格式 c 用来输出一个字符用来输出一个字符,不输出单引号定界符不输出单引号定界符。c 和和d 可以相互转换可以相互转换。 printf(“%c,%d”,a,a); a,97 printf(“%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,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 ,314.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.2345 printf(“%g”,123000000.0); 23e+08 小结小结: (1)表示输出一个表示输出一个。 如如:printf(“%d=%d”,10,10); %d=10 (2)除了除了 x,e,g 大小大小写均可外写均可外,其它都只能小写其它都只能小写。 如如:printf(“%d=%D”,20,20); 20=%D (3)输出格式说明符所能操作的数据类型必须与输出项的类型一致输出格式说明符所能操作的数据类型必须与输出项的类型一致。 如如:printf(“%d”,1.234);/*出错出错*/ 2.2. scanf()函数函数 格式格式:scanf( “格式控制格式控制” ,地址列表地址列表) ;) ; 注意注意: (1)可指定数据所占的列数可指定数据所占的列数,输入后由系统自动截取相应的位数输入后由系统自动截取相应的位数。 如如:scanf(“%3d%2d”, 若输入若输入:3863018 则则:a 的值是的值是:386 b 的值是的值是:30 若输入若输入:3863 a 的值是的值是:386 b 的值是的值是:3 scanf(“%3c%2d”, 若输入若输入:3863018 则则: ch 的值是的值是:3 b 的值是的值是:30 (2)*md:表示跳过表示跳过 m 列不读列不读。 如如:scanf(“%*3d%3d%4d”, 若输入若输入:123456 则则:a 的值是的值是:456 b 的值是的值是:原来的值原来的值。 (3)不能在不能在 scanf()函数中指定输入数据的小数位数函数中指定输入数据的小数位数。 如如:scanf(“%7.5f”,/*出错出错*/ 在在 scanf()函数中函数中,输入时普通字符原样输入输入时普通字符原样输入。 如如:scanf(“a=%d,b=%d”, 若要给若要给 a 赋值赋值 5,b 赋值赋值 10,正确的输入是正确的输入是:a5,b10 scanf(“%d*,%d#,%d”, 若要让若要让 a,b,c 分别得到分别得到 1,2,3,正确的输入是正确的输入是:1*,2#,3 若两个格式说明符之间没有其它字符若两个格式说明符之间没有其它字符,则在输入数据时则在输入数据时,两数据之间要用回车两数据之间要用回车 或空格分隔或空格分隔,回车或空格可以是多个回车或空格可以是多个。但是但是,c 格式除外格式除外。 如如:scanf(“%d%d”, 若想让若想让 a 的值为的值为 5,b 的值为的值为 10。则正确的输入是则正确的输入是: 5 空格空格 10 或或 5 10 或或 5 空空格格 空格空格 空格空格 10 (6)多个多个%c 格式之间没有其它字符格式之间没有其它字符,仍然不能用回车或空格来分隔仍然不能用回车或空格来分隔。 如如:scanf(“%c%c%c”, 若输入若输入:a 空格空格 b 空格空格 c a 的值是的值是a,b 的值是空格的值是空格,c 的值是的值是b。 (7)格式说明符所能操作的数据类型必须与对应变量的类型相同格式说明符所能操作的数据类型必须与对应变量的类型相同。 如如:int a; scanf(“%f”, /*出错出错*/ 总结总结: 1.普通字符原样输入普通字符原样输入,原样输出原样输出。 2.对于对于d 格式格式,指定宽度小于输出宽度指定宽度小于输出宽度,原样输出原样输出。 3.#o,#x,#X 表示要输出八进制的前导符数字表示要输出八进制的前导符数字 0,和十和十六进制的前导符六进制的前导符 0x,0X。 4.x,X 格式格式,小写对小写小写对小写,大写对大写大写对大写。 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)输出项与格式描述符个数不符输出项与格式描述符个数不符,输出为零值或不定值输出为零值或不定值 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 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) 执行以下程序后的输出结果是执行以下程序后的输出结果是 。 main()() int a=10; a=(3*5,a+4); printf(“a=%dn”,a); 第四第四章章 选择结构选择结构 一一教学重点教学重点、难点难点 知识点知识点 所占分值所占分值 考核几率考核几率 专家点评专家点评 关系运算符及优先次序关系运算符及优先次序 0 0- -1 1 40%40% 简单识记简单识记 关系表达式关系表达式 0 0- -1 1 50%50% 简单简单,属重点识记知识点属重点识记知识点 逻辑运算符及优先级逻辑运算符及优先级 1 1- -2 2 50%50% 简单识记简单识记 逻辑表达式逻辑表达式 1 1- -2 2 50%50% 简单简单,属重点识记知识点属重点识记知识点 ifif 语句的几种形式语句的几种形式 1 1- -2 2 100%100% 简单识记简单识记 ifif 语句的嵌套语句的嵌套 1 1- -2 2 100%100% 难度适中难度适中,重点掌握重点掌握 条件运算符条件运算符 0 0- -1 1 100%100% 难度适中难度适中,重点掌握重点掌握 switchswitch 语句语句 2 2- -4 4 100%100% 简单简单,重点掌握重点理解重点掌握重点理解 语句标号语句标号 0 0- -1 1 10%10% 偏难偏难,不是重点不是重点 gotogoto 1 1- -2 2 1 10%0% 简单识记简单识记 二二教学内容教学内容 1.关系运算与逻辑运算关系运算与逻辑运算 1.1逻辑值逻辑值 真真(非零值非零值) 假假(零零) 1.2 关系运算符及其表达式关系运算符及其表达式 = = != 关系运算符优先级别低于算术运算符关系运算符优先级别低于算术运算符,高于赋值运算符高于赋值运算符。 ( =)优先级别高于优先级别高于(= !=) 如如:ab+c 等价于等价于 a(b+c) a=b4 结果是结果是:0 3 if(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(表达式表达式 2) 语句语句 1; else 语句语句 2; else if(表达式表达式 3) 语句语句 3; else 语句语句 4; else 总是与前面最近的且未配对的总是与前面最近的且未配对的 if 语句配对语句配对,组成一对组成一对 if-else 语句语句。 if(表达式表达式 1) if(表达式表达式 2) 语句语句 1; else if(表达式表达式 3) 语句语句 2; else 语句语句 3; 第一个第一个 else 语句有的同学会把它误以为和第一个语句有的同学会把它误以为和第一个 if 配对配对,但是实际的情况是和但是实际的情况是和 第二个第二个 if 语句配对语句配对,即即: if(表达式表达式 1) if(表达式表达式 2) 语句语句 1; else if(表达式表达式 3) 语句语句 2; else 语句语句 3; 例例 1请分析下列程序的输出结果请分析下列程序的输出结果。 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 回车回车,则程序的执行结果是则程序的执行结果是? 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=a; else max=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 都是关键字都是关键字。花括号里面的语句叫做花括号里面的语句叫做 switch 语句体语句体。Switch 语句体中可以没有语句体中可以没有 break 语句和语句和 default 部分部分。 (2) Switch 语句的圆括号中表达式的值必须是整型或是字符型语句的圆括号中表达式的值必须是整型或是字符型,不能为实型不能为实型。 case 后的表达式可以是求得整型量的常量表达式后的表达式可以是求得整型量的常量表达式,但是常量表达式中不但是常量表达式中不 能含有变量能含有变量。 (3) 执行执行 Switch 语句时语句时,首先计算首先计算 Switch 后圆括号的表达式的值后圆括号的表达式的值,然后将这然后将这 个值与语句体中个值与语句体中 case 后的常量表达式的值相比较后的常量表达式的值相比较,如果某个常量表达式如果某个常量表达式 的值与之相等的值与之相等,则执行该则执行该 case 后后的语句块的语句块;如果没有任何一个常量表达如果没有任何一个常量表达 式的值与之相等式的值与之相等,则执行则执行 default 后的语句块后的语句块。 (4) 在执行的时候如果遇到在执行的时候如果遇到 break 语句语句,则跳出则跳出 switch 语句语句。如果执行完一如果执行完一 个个 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,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( )0( xx xx y 若程序前面已在命令行中包含若程序前面已在命令行中包含 math.h 文件文件,不能够正确计算上述公式的程不能够正确计算上述公式的程 序段是序段是 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(x main( ) 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 (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”,”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】 。】 。 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;i main() 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;i void fun(int *a, int n) /* fun 函数的功能是将函数的功能是将 a 所指数组元素从大到小所指数组元素从大到小 排序排序 */ int t, i, j; for (i=0; i main() int n=12345, d; while(n!=0) d=n%10; printf(“%d“, d); n/=10; (9)有以下程序段有以下程序段,且变量已正确且变量已正确定义和赋值定义和赋值 for(s=1.0, k=1; k main() int i; for(i=a; i0 While( ( (ch=getchar() )() )=0) printf(“#”); 字符型数据字符型数据 位运算位运算 一一教学内容教学内容 1.字符型数据字符型数据 1.1 字符常量字符常量:用一对用一对单引号单引号括起的括起的一个一个字符字符。 例如例如:A,a,6是合法的字符型常量是合法的字符型常量。 ”a”,ab,A, 5, 12都是不合法的字符型常量都是不合法的字符型常量。 1.2 转义字符常量转义字符常量:必须以一个反斜杠必须以一个反斜杠“”开头开头.常见的转义字符见表常见的转义字符见表 5-1。 n:回车换行回车换行 t:横向跳格横向跳格 v:竖向跳格竖向跳格 b:退格退格 r:回车回车 f:换页换页 : : ”:” 1.3 ddd:ddd 表示最多可以有三位表示最多可以有三位 8 进进制数制数。 1.4 xhh:hh 表示最多可以有二位表示最多可以有二位 16 进制数进制数。 注意注意:三位三位 8 进制数不一定以进制数不一定以 0 开头开头,只要是只要是 07 之间的数字即可之间的数字即可。 例例:下列字符常量中合法的是下列字符常量中合法的是( ) A027 B.028 C.x12 D.0x1f E.1234 F.xffh G.AB H.123 I.12 J.”A” K.xf 例例:下列字符常量中合法的是下列字符常量中合法的是( ) A./ B./t C. D. ” E.b F. G. H./ I, J.” 1.5 字符型变量字符型变量 关键字关键字:char ,字符型变量在内存中占字符型变量在内存中占 1 字节字节。 例例:char a=5; a字符的字符的 ASCII 码值是码值是 97 A 字符的字符的 ASCII 码值是码值是 65 同一字母的大小写之差是同一字母的大小写之差是 32,那么我们要把小写字母变成大写字母就相应的字那么我们要把小写字母变成大写字母就相应的字 母减去母减去 32 即

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论