全国计算机等级考试二级C语言考前复习资料 下载本文

学习必备 欢迎下载

【说明】

这是真题分类解析,比较经典。为了节省时间,提高效率,希望大家按这样一种方式阅读这份资料:

直接做例题 不懂,看解析

再不懂,看知识点介绍,书本,课堂笔记 再不懂,留着下次课问我

不要从头开始,一个字一个字地读

全国计算机等级考试二级C语言考前复习资料

第二章 运算符与表达式

1.知识点:C运算符简介

算术运算符: +、—、*、/、%

赋值运算符: =、+=、—=、*=、/=、%=、<<=、>>=、 &=、 ^=、 |= 关系运算符: >、>=、<、<=、= =、!= 逻辑运算符: !、&&、|| 条件运算符: ?: 逗号运算符: ,

2.知识点:运算符的结合和优先级

3.知识点:强制类型转换运算符

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

? 功能:把表达式的运算结果强制转换成类型说明符所表示的类型 例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)→(int)(4.500000) →4。

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

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

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

例1:(2010-09-14)有以下定义:int a;long b;double x,y;则以下选项中正确的表达式是(A)

学习必备 欢迎下载

A)a%(int)(x-y) B)a=x!=y; C) (a*y)%b D)y=x+y=x

【解析】参与%运算的左右操作数均为整型,故A项正确,C项错误。B项是赋值语句,不是表达式。赋值运算符左边必须是变量,而不是表达式,而D项中x+y=x,错误。

5.知识点:逗号表达式

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

? 嵌套形式:表达式1,表达式2,表达式3,…表达式n

? 求值过程:先求解表达式1,再求解表达式2,以表达式2的值为整个逗号表达式的值。 例1:(2009-04-14)设有定义:int x=2;以下表达式中,值不为6的是(D) A)x*=x+1 B)x++,2*x C)x*=(1+x) D)2*x,x+=2

【解析】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,整个逗号表达式的值为4。故答案是D。

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

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

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

例1:(2009-09-06)若有定义语句:int a=5;则表达式:a++的值是 5 。 【解析】表达式a++的值是a未加1之前的值,即5。.

7.知识点:赋值表达式

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

? 赋值运算符左边必须是变量,而不是表达式。

例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:(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。故答案是D。

第三章 顺序结构

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

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

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

例1:(2009-04-07)若变量x,y已定义为int类型且x的值为99,y的值为9,请将输出语句printf(“ x/y=%d ”,x/y);补充完整,使其输出的计算结果形式为:x/y=11。 (3)格式字符串

? 输出最小宽度:若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义

的宽度则补以空格或0。

? 精度:若输出数字,则表示小数的位数,若输出的是字符,则表示输出字符的个数,若

实际位数大于所定义的精度数,则截去超过的部分。

例3:(2009-04-15)程序段:int x=12;double y=3.141593;printf(“%d%8.6f”,x,y);的输出结果是(A)

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

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

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

(2)若格式控制字符串中有非格式字符串,则按原样输入。若格式控制字符串中没有非格式字符作输入数据之间的间隔,则可用空格、Tab、回车作间隔。 例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); }

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

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