二级C语言复习资料选择结构
- 格式:doc
- 大小:509.50 KB
- 文档页数:27
全国计算机等级考试二级C语言考试复习资料及复习计划一、C语言的特点C语言是近年来非常流行的语言,很多人宁愿放弃已经熟悉的其他语言而改用C语言,其原因是C语言有优于其他语言的一系列特点。
下面是C语言的主要特点: (1)语言简洁、紧凑,并且使用方便、灵活;(2)运算符丰富;(3)数据结构丰富;(4)具有结构化的控制语句;(5)语法限制不太严格,使程序设计比较自由; (6)C语言允许用户直接访问物理地址,能进行位(bit)操作,可以直接对硬件进行操作。
二、源程序的书写规则C语言的书写规则。
C语言书写格式自由,一行内可以写几个语句,一个语句也可以分写在多行上。
C程序没有行号,每个语句和数据定义的最后必须有一个分号。
C语言中分号是语句中不可少的,即使是程序中的最后一个语句也应该包含分号。
C语言中的注释可以用″/*″用″*/″结束,注释可以在任何允许插入空格符的地方插入。
C语言中注释不允许嵌套,注释可以用西文,也可以用中文。
三、C语言的风格由于C语言对语法限制不太严格,为了保证程序的准确性和可读性,建议在书写程序采用阶梯缩进格式。
也就是按如下格式书写C语言程序:**********;*****(){**********;********;{******;......}*********;}概括起来,C语言程序具有如下的风格:①C语言程序的函数具体模块结构风格,使得程序整体结构清晰、层次清楚,为模块化程序设计提供了强有力的支持。
②C语言的源程序的扩展名都是.C。
③C语言中的注释格式为:/*注释内容*//与*之间不允许有空格,注释部分允许出现在程序中的任何位置。
④C语言中的所有语句都必须以分号“;”结束一、程序的构成尽管C程序的内容千变万化,但是它们的构成都是一致的,一个完整的C源程序的格式可以如下表示: 编译预处理主函数()函数()..函数()从上面中可以看出,一个C源程序实际上就是若干函数的集合,这些函数中有一个是程序的主函数,任何C 的源程序执行时,都是从主函数开始执行的,其它的函数最终必将被这个主函数所调用。
C语言最重要的知识点总体上必须清楚的:1)程序结构是三种: 顺序结构, 循环结构(三个循环结构), 选择结构(if 和switch)2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。
3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址.4)bit是位是指为0 或者1。
byte 是指字节, 一个字节= 八个位.5)一定要记住二进制如何划成十进制。
概念常考到的:1、编译预处理不是C语言的一部分,不再运行时间。
C 语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。
2、每个C语言程序中main函数是有且只有一个。
3、在函数中不可以再定义函数。
4、算法的是一定要有输出的,他可以没有输入。
5、break可用于循环结构和switch语句。
6、逗号运算符的级别最低。
第一章1)合法的用户标识符考查:合法的要求是由字母,数字,下划线组成。
有其它元素就错了。
并且第一个必须为字母或则是下划线。
第一个为数字就错了。
关键字不可以作为用户标识符号。
main define scanf printf 都不是关键字。
迷惑你的地方If是可以做为用户标识符。
因为If中的第一个字母大写了,所以不是关键字。
2)实型数据的合法形式:2.333e-1 就是合法的,且数据是2.333×10-1。
考试口诀:e前e后必有数,e后必为整数。
.3)字符数据的合法形式::'1' 是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。
'0' 的ASCII数值表示为48,'a' 的ASCII数值是97,'A'的ASCII数值是65。
4)整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节:考试时候一般会说,在16位编译系统,或者是32位系统。
碰到这种情况,不要去管,一样做题。
全国计算机二级C语言(完整复习资料)考试题型(1)选择。
——40(40个)(2)程序填空。
——18(1个)(3)程序改错。
——18(1个)(4)程序编程。
——24(1个)考试时间3.30-4.3120min 无纸化考试进制之间的转换二进制与八进制之间的联系:二进制八进制000 0001 1010 2011 3100 4101 5110 6111 7 如00100000则000 100 000(二进制) 0 4 0(八进制)十进制转二进制:除2取余法二进制转十进制:2的幂次法八进制转十进制:除8取余法附录很重要!!尤其是红色字体的。
附录A 常用字符与ASCII代码对照表(这个记048,065,097三个就好)ASCⅡ值字符ASCⅡ值字符ASCⅡ值字符ASCⅡ值字符000 NUL037 %074 J111 O001 SOH038 &075 K112 p002 STX039 ‘076 L113 q003 ETX040 (077 M114 r004 EOT041 )078 N115 s005 END042 *079 O116 t006 ACK043 +080 P117 u007 BEL044 ,081 Q118 v008 BS045 -082 R119 w009 HT046 。
083 S120 x010 LF047 /084 T121 y011 VT048 0085 U122 z012 FF049 1086 V123 {013 CR050 2087 W124 |014 SO051 3088 X125 }015 SI052 4089 Y126 ~016 DLE053 5090 Z017 DC1054 6091 [018 DC2055 7092 \019 DC3056 8093 ]020 DC4057 9094 ^021 NAK058 :095 _022 SYN059 ;096 ,023 ETB060 < 097 a024 CAN061 =098 b025 EM062 > 099 c026 SUB063 ?100 d027 ESC064 @101 eASCⅡ值字符ASCⅡ值字符ASCⅡ值字符ASCⅡ值字符028 FS065 A102 f029 GS066 B103 g030 RS067 C104 h031 US068 D105 i032 (space)069 E106 j033 !070 F107 k034 “071 G108 l035 #072 H109 m036 $073 I110 n附录B C语言中的关键字auto break case char const continue default do double elseenum extern float for gotoif int long register returnshort signed sizeof static structswitch typedef union unsigned voidvolatile while附录C 运算符和结合性优先级运算符含义要求运算对象的个数结合方向1 ( ) 圆括号自左至右[ ] 下标运算符->指向结构体成员运算符·结构体成员运算符2! 逻辑非运算符1(单目运算符)自右至左~ 按位取反运算符++ 自增运算符--自减运算符-负号运算符(类型) 类型转换运算符* 指针运算符& 取地址运算符优先级运算符含义要求运算对象的个数结合方向sizeof 长度运算符3 * 乘法运算符2(双目运算符)自左至右/ 除法运算符% 求余运算符4 + 加法运算符 2(双目运算符)自左至右-减法运算符5 << 左移运算符 2(双目运算符)自左至右>> 右移运算符6 < <= > >= 关系运算符2(双目运算符)自左至右7 == 等于运算符 2(双目运算符)自左至右!= 不等于运算符8 & 按位与运算符2(双目运算符)自左至右9 ∧按位异或运算符2(双目运算符)自左至右10 | 按位或运算符2(双目运算符)自左至右11 && 逻辑与运算符2(双目运算符)自左至右12 | | 逻辑或运算符2(双目运算符)自左至右13 ? : 条件运算符3(三目运算符)自右至左15 , 逗号运算符(顺序求值运算符)自左至右说明:(1)同一优先级的运算符,运算次序由结合方向决定。
全国计算机⼆级C语⾔《选择结构》知识点复习全国计算机⼆级C语⾔《选择结构》知识点复习 《全国计算机等级考试⼆级C语⾔》是2009年6⽉由电⼦⼯业出版社出版的图书,作者是桂阳,王功明。
[1] 本书主要基于历年试题,利⽤统计分析的⽅法,科学地对题⽬做出结论并预测以后的出题动向。
下⾯是⼩编整理的全国计算机⼆级C语⾔《选择结构》知识点复习,欢迎参考! 特别要注意:c语⾔中是⽤⾮0表⽰逻辑真的,⽤0表⽰逻辑假的`。
【考点1】关系运算 关系运算符有6个,分别是>,>=,<,<=,==,!=,前四种优先级⾼于后两种。
关系表达式: 关系表达式真时为1,假时为0 当关系的表达是为真的时候得到1。
如9>8这个是真的,所以表达式的数值就是1。
【考点2】逻辑运算 只能为1(表⽰为真),或0(表⽰假) a)共有三种逻辑运算符号。
逻辑⾮(!),辑与(&&),逻辑或(||)。
b)!>&&>||优先的级别。
c)注意短路现象。
考试⽐较喜欢考到。
例a++||b++,如果表达式a++的值⾮零,则表达式b++不再执⾏。
d)要表⽰x是⽐0⼤,⽐10⼩的⽅法。
【考点3】if语句 可以单独出现,也可以与else匹配出现。
if语句可以嵌套,这时else总是与离它最近的且没有与else匹配的if匹配。
注意if语句的⼦句是紧接if或else的⼀句,如有多句需要⽤{}括起来。
【考点4】条件运算 是唯⼀的三⽬运算符,格式:表达式1?表达式2:表达式3 表达式1值为⾮0时,整个表达式值为表达式2的值,表达式1值为0时,整个表达式值为表达式3的值。
考试⼝诀:真前假后。
【考点5】switch语句 a)⼀定要注意有break和没有break的差别,书上(53,54页)的两个例⼦,没有break 时候,只要有⼀个case匹配了,剩下的都要执⾏,有break则是直接跳出了switch语句。
C 语言总复习总体上必须清楚的:1)程序结构是三种: 顺序结构 , 循环结构(三个循环结构), 选择结构(if 和switch)2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。
3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址.4)bit是位是指为0 或者1。
byte 是指字节, 一个字节 = 八个位.5)一定要记住二进制如何划成十进制。
概念常考到的:1、编译预处理不是C语言的一部分,不再运行时间。
C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。
2、每个C语言程序中main函数是有且只有一个。
3、在函数中不可以再定义函数。
4、算法的是一定要有输出的,他可以没有输入。
5、break可用于循环结构和switch语句。
6、逗号运算符的级别最低。
第一章1)合法的用户标识符考查:合法的要求是由字母,数字,下划线组成。
有其它元素就错了。
并且第一个必须为字母或则是下划线。
第一个为数字就错了。
关键字不可以作为用户标识符号。
main define scanf printf 都不是关键字。
迷惑你的地方If是可以做为用户标识符。
因为If中的第一个字母大写了,所以不是关键字。
2)实型数据的合法形式:2.333e-1 就是合法的,且数据是2.333×10-1。
考试口诀:e前e后必有数,e后必为整数。
.3)字符数据的合法形式::'1' 是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。
'0' 的ASCII数值表示为48,'a' 的ASCII数值是97,'A'的ASCII数值是65。
4)整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节:考试时候一般会说,在16位编译系统,或者是32位系统。
碰到这种情况,不要去管,一样做题。
1.有以下程序#include <stdio.h>main(){ int a=0,b=0,c=0,d=0;if(a=1) b=1;c=2;else d=3;printf("%d,%d,%d,%d\n",a,b,c,d); }程序输出()。
答案:AA)编译有错B)0,0,0,3C)1,1,2,0D)0,1,2,02.有以下程序#include <stdio.h>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=%d\n", a, b); }程序的运行结果是()。
A)a=2,b=1B)a=2,b=2C)a=1,b=1D)a=1,b=03.有以下程序段#include <stdio.h>int i, n;for( i=0; i<8; i++ ){ n = rand( ) % 5;switch (n){ case 1:case 3: printf("%d \n", n); break;case 2:case 4: printf("%d \n", n); continue;case 0: exit(0);}printf("%d \n",n);}以下关于程序段执行情况的叙述,正确的是()。
答案:AA)当产生的随机数n为0时结束程序运行B)当产生的随机数n为4时结束循环操作C)当产生的随机数n为1和2时不做任何操作D)for循环语句固定执行8次4.若有定义int x,y; 并已正确给变量赋值,则以下选项中与表达式(x-y)?(x++) : (y++)中的条件表达式(x-y) 等价的是()。
A)(x-y<0||x-y>0)B)(x-y<0)C)(x-y>0)D)(x-y==0)5.有以下程序#include <stdio.h>main(){ int x=1, y=0;if (!x) y++;else if (x==0)if (x) y+=2;else y+=3;printf("%d\n", y);}程序运行后的输出结果是()。
答案:A A)0B)2C)1D)36.若有定义:float x=1.5;int a=1,b=3,c=2;则正确的switch语句是()。
A)switch(a+b){ case 1: printf("*\n");case 2+1: printf("**\n"); }B)switch((int)x);{ case 1: printf("*\n");case 2: printf("**\n"); }C)switch(x){ case 1.0: printf("*\n"); case 2.0: printf("**\n"); }D)switch(a+b){ case 1: printf("*\n");case c: printf("**\n"); }7.若变量已正确定义,在if (W)printf("%d\n" ,k ); 中,以下不可替代W的是()。
答案:AA)a<>b+cB)ch=getchar()C)a==b+cD)a++8.下列叙述中正确的是()。
A)在switch语句中,不一定使用break语句B)在switch语句中必须使用defaultC)break语句必须与switch语句中的case配对使用D)break语句只能用于switch语句9.有以下程序#include <stdio.h>main(){ int c=0,k;for (k=1;k<3;k++)switch (k){ default: c+=k;case 2: c++;break;case 4: c+=2;break;}printf("%d\n",c);}程序运行后的输出结果是()。
答案:A A)3B)5C)7D)910.设有定义:int a=1,b=2,c=3;以下语句中执行效果与其它三个不同的是()。
A)if(a>b) c=a;a=b;b=c;B)if(a>b) {c=a,a=b,b=c;}C)if(a>b) c=a,a=b,b=c;D)if(a>b) {c=a;a=b;b=c;}11.if语句的基本形式是:if (表达式) 语句,以下关于"表达式"值的叙述中正确的是()。
答案:AA)可以是任意合法的数值B)必须是整数值C)必须是正数D)必须是逻辑值12.有如下嵌套的if语句if(a<b)if(a<c) k=a;else k=c;elseif(b<c) k=b;else k=c;以下选项中与上述if语句等价的语句是()。
A)k=(a<b)?((a<c)?a:c):((b<c)?b:c);B)k=(a<b)?((b<c)?a:b):((b>c)?b:c);C)k=(a<b)?a:b;k=(b<c)?b:c;D)k=(a<b)?a:b;k=(a<c)?a:c;13.答案:AA)y=sqrt(x);if(x<0) y=sqrt(-x);B)if(x>=0) y=sqrt(x);else y=sqrt(-x);C)if(x>=0) y=sqrt(x);if(x<0) y=sqrt(-x);D)y=sqrt(x>=0?x :-x);14.有以下程序#include <stdio.h>main(){ int s;scanf("%d", &s);while( s>0 ){ switch(s){ case 1: printf("%d", s+5);case 2: printf("%d", s+4); break;case 3: printf("%d", s+3);default: printf("%d", s+1); break;}scanf("%d", &s);}}运行时,若输入1 2 3 4 5 0<回车>,则输出结果是()。
A)6566456B)66656C)66666D)666665615.有以下程序#include <stdio.h>main(){ int x;scanf("%d", &x);if(x<=3) ; elseif(x!=10) printf("%d\n", x);}程序运行时,输入的值在哪个范围才会有输出结果()。
答案:AA)大于3且不等10的整数B)不等于10的整数C)大于3或等于10的整数D)小于3的整数16.以下程序段中,与语句:k=a>b?(b>c ? 1 : 0) : 0;功能相同的是()。
A)if((a>b) && (b>c)) k=1;else k=0;B)if((a>b)||(b>c)) k=1;else k=0;C)if(a<=b) k=0;else if(b<=c) k=1;D)if(a>b) k=1;else if(b>c) k=1;else k=0;17.以下选项中与if(a==1)a=b;else a++;语句功能不同的switch语句是()。
答案:AA)switch(a==1){case 0:a=b;break;case 1:a++;}B)switch(a){case 1:a=b;break;default : a++;}C)switch(a){default:a++;break;case 1:a=b;}D)switch(a==1){case 1:a=b;break;case 0:a++;}18.有以下程序#include <stdio.h>main(){ int a=1,b=2,c=3,d=0;if (a==1 && b++==2)if (b!=2||c--!=3)printf("%d,%d,%d\n",a,b,c);else printf("%d,%d,%d\n",a,b,c); else printf("%d,%d,%d\n",a,b,c); }程序运行后的输出结果是()。
A)1,3,3B)1,3,2C)1,2,3D)3,2,119.有以下程序段int i, n;for( i=0; i<8; i++ ){ n = rand( ) % 5;switch (n){ case 1:case 3: printf("%d \n", n); break;case 2:case 4: printf("%d \n", n); continue;case 0: exit(0);}printf("%d \n",n);}以下关于程序段执行情况的叙述,正确的是()。
答案:AA)当产生的随机数n为0时结束程序运行B)当产生的随机数n为4时结束循环操作C)当产生的随机数n为1和2时不做任何操作D)for循环语句固定执行8次20.下列条件语句中,输出结果与其他语句不同的是()。
A)if ( a==0 ) printf("%d\n", x); else printf("%d\n", y);B)if ( a==0 ) printf("%d\n", y); else printf("%d\n", x);C)if ( a!=0 ) printf("%d\n", x); else printf("%d\n", y);D)if ( a ) printf("%d\n", x); elseprintf("%d\n", y);21.有以下程序#include <stdio.h>main(){ int x=1,y=2,z=3;if(x>y)if(y<z) printf("%d",++z);else printf("%d",++y);printf("%d\n", x++ );}程序的运行结果是()。