好文档 - 专业文书写作范文服务资料分享网站

2013年全国计算机等级考试二级C语言复习资料 - 图文 

天下 分享 时间: 加入收藏 我要投稿 点赞

聪智学校

{char c1,c2; c1=?A?+?8?-?4?; c2=?A?+?8?-?5?; printf(“%c,%d\\n”,c1,c2); }

已知字母A的ASCII码为65,程序运行后的输出结果是(A) A)E,68 B)D,69 C)E,D D)输出无定值

printf(“%d%d\\n”,a,b); }

【解析】八进制数010转换成十进制数为8,按“%d%d”格式分别输出a、b,即2008。

9.知识点:运算符的优先级

级别由大到小:(逻辑)非 >算(术运算符) >关(系运算符) >(逻辑)与 >(逻辑)或 >条(件运算符) >赋(值运算符)

一般形式:(类型说明符)(表达式)

功能:把表达式的运算结果强制转换成类型说明符所表示的类型

【解析】?A?的ASCII码值为65,?8?的ASCII码值为56,?4?的ASCII码值为10.知识点:强制类型转换运算符 52,65+56-52=69,对应于字符?E?。?5?的ASCII码值为53,65+56-53=68,对应于字? 符?D?。字符变量c1以%c格式输出,即?E?。字符变量c2以%d格式输出,即68。? 故答案是A。

例1:(2009-04-06)表达式(int)((double)(5/2)+2.5)的值是4。

【解析】(int)((double)(5/2)+2.5)→(int)((double)2)+2.5)→(int)(2.000000+2.5)

8.知识点:进制转换

?

十进制转换成二进制、八进制、十六进制:将十进制的数字除以2(8、16),→(int)(4.500000) →4。

得到的商数继续除以2,直到商为0,然后将各次相除所得的余数从后往前排列。 例2:以下程序运行后的输出结果是 () 。 ?

二进制、八进制、十六进制转换成十进制:将二(八、十六)进制数的每一位

main() { int a;

a=(int)((double)(3/2)+0.5+(int)1.99*2); printf(\} 答案:3

【解析】(3/2)=1,(double)(3/2)+0.5=1.5,(int)1.99*2=2,所以(double)(3/2)+0.5+(int)1.99*2=3.5,故a=3。

数从高位到低位乘以2的n-1次幂,n为该位所在的位数。 ? ?

二进制与八进制之间的转换:每个八进制数字转换成3位二进制数字。 二进制与十六进制之间的转换:每个十六进制数字转换成4位二进制数字。

例1:(2010-09)以下程序运行后的输出结果是 2008 。 #include main()

{int a=200,b=010;

11.知识点:算术运算符: +、—、*、/、%

%:参与运算的量均为整型。

第 6 页 共 61 页

聪智学校

/:当除号左右两边都是整数的时候,商也要是整数,如果不是整数则舍弃小数部分。当参与运算量有一个为实型,则商为double型。

【解析】A项x=x*(x+1)=2*(2+1)=6;B项x++后,x的值为3,2*x的值为6,整个逗号表达式的值为6;C项x=x*(1+x)=2*3=6;D项x=x+2=2+2=4,整个逗号表达

例1:(2011-09-14)若有定义语句:int a=10;double b=3.14;,则表达式‘A’+a+b值式的值为4。故答案是D。 得类型是 (C)

A.char

B.int

C.double

D.float

13.知识点:自增自减运算符

++i i自加1后再参与运算 i++ i参与运算后再自加1 --i i自减1后再参与运算

【解析】各种类型数据混合运算时,最终结果的类型可依据以下转换规律:

char -> short -> int -> long -> float -> double

例1:(2011-09-15)如有定义语句:int x=12,y=8,z;,在其后执行语句z=0.9+x/y,则zi-- i参与运算后再自减1 的值为 (B)

A.1.9

B.1 C.2

D.2.4

++和- -的运算对象只能为变量,不能是常量或表达式。

例1:(2009-09-06)若有定义语句:int a=5;则表达式:a++的值是 5 。

【解析】x,y,z均为整型变量,因此x/y结果为1,即z=0.9+1=1.9,z最终结果为1 【解析】表达式a++的值是a未加1之前的值,即5。. 例1:(2010-09-14)有以下定义:int a;long b;double x,y;则以下选项中正确? 当++或—与printf语句结合时,若++/--x的形式,则先自增/自减,然后输出;

若x++/--的形式,则先输出x原值,在进行自增/自减操作。

的表达式是(A)

例2:(2011-03-26)有以下程序

A)a%(int)(x-y) B)a=x!=y; C) (a*y)%b D)y=x+y=x #include 【解析】参与%运算的左右操作数均为整型,故A项正确,C项错误。B项是赋值 main()

{ int x=011; 语句,不是表达式。赋值运算符左边必须是变量,而不是表达式,而D项中x+y=x, printf(\

错误。

}

12.知识点:逗号表达式 程序运行后的输出结果是(C)

A)12 B)11 C)10 D)9

【解析】011是一个八进制的数,转为十进制则为1*8+1=9;++x是x先自增1再

? 求值过程:自左向右依次求解,最后一个表达式的值为整个逗号表达式的值。

参与其他运算,所以先x自增1为10再输出即为10,故选C。

例1:(2009-04-14)设有定义:int x=2;以下表达式中,值不为6的是(D)

14.知识点:赋值表达式

A)x*=x+1 B)x++,2*x C)x*=(1+x) D)2*x,x+=2

? 一般形式:变量名=表达式 ?

一般形式:表达式1,表达式2??表达式n

第 7 页 共 61 页

聪智学校

? 赋值运算符左边必须是变量,而不是表达式。 规则:~0=1 ~1=0

左移运算<<

n

例1:(2010-03-14)若有定义:double a=22;int i=0,k=18;则不符合C语言规? 定的赋值语句是( C)

A)a=a++,i++; B)i=(a+k)<=(i+k); C)i=a; D)i=!a; 【解析】a为double型,参与%运算的操作数均为整型,故C项错误。 例2:(2011-03-26)若有定义语句:int a=3,b=2,c=1;,以下选项中错误的赋值表达式是(A)

A)a=(b=4)=3; B)a=b=c+1; C)a=(b=4)+c; D)a=1+(b=c=4); 【解析】赋值表达式的左边必须是变量不能是表达式。而答案A中,(b=4)是一个赋值表达式。 ?

复合赋值运算符和表达式

规则:把<<左边的运算数的各二进位全部左移若干位,高位丢弃,低位补0。左移一位相当于该数乘以2。左移n位相当于该数乘以2。 例1:(2010-09-40)有以下程序 #include main() {short c=124; c=c____D____; printf(“%d\\n”,c); }

若要使程序的运行结果为248,应在下划线处填入的是 A)>>2 B)|248 C)&0248 D)<<1

+=、—=、*=、/=、%=、<<=、>>=、 &=、 ^=、 |= 例2:(2010-09-16)表达式a+=a-=a=9的值是(D) A)9 B)-9 C)18 D)0

【解析】赋值运算符的结合性是从右到左,a=9→a=a-9=0→a=a+0=0+0=0。故答案【解析】左移一位相当于该数乘以2,124>>1相当于124乘以2,等于248。故答是D。

案是D。

例2:(2009-04-39)有以下程序 #include main() {int a=5,b=1,t; t=(a<<2)|b; printf(“%d\\n”,t); }

第 8 页 共 61 页

15.知识点:位运算

?

按位与运算&

规则:0&0=0 0&1=0 1&0=0 1&1=1 ?

按位或运算|

规则:0|0=0 0|1=1 1|0=1 1|1=1 ?

按位异或运算∧

规则:0∧0=0 0∧1=1 1∧0=1 1∧1=0 ?

求反运算~

聪智学校

程序运行后的输出结果是(A) A)21 B)11 C)6 D)1

【解析】左移2位相当于该数乘以2。5<<2相当于5乘以4等于20。20|1=21。故答案是A。 ?

右移运算>>

n

2

? 逻辑运算的真值表

a 真 真 假 假 b 真 假 真 假 a&&b 真 假 假 假 a||b 真 真 真 假 !a 假 假 真 真 把>>左边的运算数的各二进位全部右移若干位。高位补0,低位丢弃。右移一位相当于该数除以2。右移n位相当于除以2。 例3:(2009-09-39)若有以下程序段 int r=8;

printf(“%d\\n”,r>>1); 输出结果是(C)

A)16 B)8 C)4 D)2

?

进行逻辑运算时,若&&左边的值为0,则不再对右边的运算对象进行运算,整个表达式的值为0。

例1:(2011-09-17)若有定义语句:int k1=10,k2=20;,执行表达式(k1=k1>k2)&&(k2=k2>k1)后,k1和k2的值分别为 (B) A. 0和1

B.0和20

C.10和1D. 10和20

【解析】k1>k2为假,因此k1= k1>k2结果0,逻辑与左边表达式为假,右边表达

【解析】右移一位相当于该数除以2。8>>1相当于除以2,等于4,故答案是C。 式不再处理,因此k1结果为0,k2不变,仍为20

16.知识点:关系运算符和表达式

值为

非0 时表示逻辑值“真”。

例2:int a=2;则表达式(!a==1)&&(a++==2)的值为0,a的值为2。

例1:(2010-09-08)在C语言中,当表达式值为0时表示逻辑值“假”,当表达式【解析】!a为0,!a==1的值为0,&&左边的值为0,则不再对右边的运算对象进

行运算,所以a的值为2。 ?

若||左边的运算对象的值为1,则不再对右边的运算对象进行运算,整个表达

例2:(2010-03-06)设x为int型变量,请写出一个关系表达式 式的值为1。

(x%3==0)&&(x%7==0) ,用以判断x同时为3和7的倍数时,关系表达式的例2:(2010-03-17)若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是(A) 值为真。

A)1 B)0 C)2 D)不知道a的值,不能确定

【解析】a的值有两种情况:a等于1或a不等于1。故逻辑表达式(a==1)||(a!=1)的值为1。

第 9 页 共 61 页

17.知识点:逻辑运算符和表达式

?

逻辑运算符优先级从高到低:!、&&、||

聪智学校

18.知识点:格式输入函数printf()

(1)一般形式:printf(“格式控制字符串”,输出列表);

(2)遇到控制字符,按照控制字符的规定输出,遇到非格式字符串按原样输出。

}若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是(A)

A)m=123n=456p=789 B)m=123 n=456 p=789

例1:(2009-04-07)若变量x,y已定义为int类型且x的值为99,y的值为9,请将C)m=123,n=456,p=789 D)123 456 789

输出语句printf(“ x/y=%d ”,x/y);补充完整,使其输出的计算结果形式为:x/y=11。 【解析】scanf(“m=%dn=%dp=%d”,&m,&n,&p); 格式控制字符串中有非格式字符例2:(2009-04-15)程序段:int x=12;double y=3.141593;printf(“%d%8.6f”,x,y);的串,则按原样输入,故答案是A。 例2:(2011-03-26)有以下程序段 输出结果是(A)

A)123.141593 B)12 3.141593 C)12,3.141593 D)123.1415930 【解析】以%8.6f格式输出,即输出的总宽度为8,小数的位数为6。

char name[20]; int num;

scanf(\

当执行上述程序,并从键盘输入:name=Lili num=1001<回车>后,name的值(A) A)Lili B)name=Lili C)Lili num= D)name=Lili num=1001

【解析】scanf中格式字符串的非格式字符串原样输入,如其中的‘name=’和‘num=’,所以接受到的name值是后面的Lili,num值为1001。故选A。 (3)在输入字符数据时,若格式控制字符串中无非格式字符,则认为所有输入的字符均为有效字符。空格会被当作字符赋值给变量。 例3:(2009-04-23)有以下程序 #include main()

{int a1,a2; char c1,c2;

scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2); printf(“%d,%c,%d,%c”,a1,c1,a2,c2);

}若想通过键盘输入,使得a1的值为12,a2的值为34,c1的值为字符a,c2的值为字符b,程序输出结果是:12,a,34,b则正确的输入格式是(以下_代表空格,

第 10 页 共 61 页

19.知识点:格式输入函数scanf()

(1)一般形式:scanf(“格式控制字符串”,地址列表);

(2)若格式控制字符串中有非格式字符串,则按原样输入。若格式控制字符串中没有非格式字符作输入数据之间的间隔,则可用空格、Tab、回车作间隔。 例1:(2011-09-16)若有定义:int a,b;,通过语句scanf(“%d;%d”,&a,&b);,能把整数3赋给变量a,5付给变量b的输入数据是

A.3 5 B.3,5

C.3;5 D.35

【解析】scanf格式字符串中两个%d之间带有非格式字符分号,运行时应原样输入。 例1:(2005-04-19)有以下程序 main() {int m,n,p;

scanf(“m=%dn=%dp=%d”,&m,&n,&p); printf(“%d%d%d\\n”,m,n,p);

2013年全国计算机等级考试二级C语言复习资料 - 图文 

聪智学校{charc1,c2;c1=?A?+?8?-?4?;c2=?A?+?8?-?5?;printf(“%c,%d\\n”,c1,c2);}已知字母A的ASCII码为65,程序运行后的输出结果是(A)A)E,68B)D,69C)E,DD)输出无定值
推荐度:
点击下载文档文档为doc格式
9a6vy17nnd0wekt4q39j
领取福利

微信扫码领取福利

微信扫码分享