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

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

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

聪智学校

代表回车)

A)12a34b B)12_a_34_b C)12,a,34,b D)12_a34_b 【解析】空格会被当作字符赋值给变量,故B、D错误;C项中逗号会被当作字符赋值给变量,故C项错误。 (4)格式字符串 ? ? ?

一般形式:%[*][输入数据宽度][长度]类型 *表示该输入项,读入后不赋予相应的变量。 输入数据宽度:用十进制数指定输入的字符数。

和整型两种类型,其他数据类型不可以。)整型和字符型之间通过ASCALL可以相互转化。 例6:(2011-03-12)有以下程序 (说明:字符0的ASCII码值为48) main()

{ char c1,c2;

scanf(\c2=c1+9;

printf(\

}若程序运行时从键盘输入48<回车>,则输出结果为 (09)。

【解析】输入48,则c1=48,c2=48+9,以字符输出c1和c2,则为输出ASCII码为48和57对应的字符,分别为0和9。

例4:(2010-09-07)有以下程序 #include main() {int x,y;

scanf(“-%ld”,&x,&y); printf(“%d\\n”x+y);

}程序运行时输入:1234567程序的运行结果是 34579 。

【解析】-输入的数据宽度为2,x的值为12,y的值为34567,x+y=34579。 例5:(2009-04-16)若有定义语句:double x,y,*px,*py;执行了px=&x;py=&y;之后,正确的输入语句是(C)

A) scanf(“%f%f”,x,y); B)scanf(“%f%f”,&x,&y); C)scanf(“%lf%le”,px,py); D)scanf(“%lf%lf”,x,y);

【解析】A、D项地址列表,应为&x,&y;x、y为double型,格式控制字符串不是%f%f,故B项错误。 ?

当定义的变量类型和scanf中“格式符”类型不一致时(这里只限定在字符型

20.知识点:字符输出函数putchar()

一般形式:putchar(?a?);putchar(?\\101?);

21.知识点:字符输入函数getchar()

一般形式:getchar();或ch=getchar(); 例1:(2010-03-15)有以下程序 #include main() {char a,b,c,d;

scanf(“%c%c”,&a,&b); c=getchar(); d=getchar(); printf(“%c%c%c%c\\n”,a,b,c,d);

}当执行程序时,按下列方式输入数据(从第1列开始,代表回车,注意:回车也是一个字符)

第 11 页 共 61 页

聪智学校

12 34

{ ?

while( getchar()!='\\n'); ?

则输出结果是(B) }以下叙述中正确的是(C)

A)此while语句将无限循环 A)1234 B)12 C)12 D)12

B) getchar()不可以出现在while语句的条件表达式中

3 34

C)当执行此while语句时,只有按回车键程序才能继续执行

【解析】以%c格式读取一个字符,以getchar()形式也是读取一个字符。空格会被D)当执行此while语句时,按任意键程序就能继续执行 当作字符赋值给变量。所以,a=?1?,b=?2?,c=?\\n?,d=?3?。 【解析】while条件表达式getchar()!='\\n'只要输入的字符不是回车,就一直执行循? getchar经常作为while循环条件,判断输入哪一个字符时,循环结束。例如,环,而循环内是一个空语句,所以按回车键程序才能继续执行,选择C。

输入字符串,直到输入‘0’,程序结束,则可写成while( getchar()!='0') 例2:(2011-03-26)有以下程序段 main()

第二课 选择结构与循环结构

第 12 页 共 61 页

聪智学校

本课重要知识点:

1.知识点:if语句

第 13 页 共 61 页

聪智学校

? if(表达式),其中表达式可以是任意合法的C语言表达式。

例1:(2011-09-19)下列条件语句中输出结果与其他语句不同的是(D) A.if(a) 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);

{ int x=10,y=20,t=0;

if(x==y)t=x;x=y;y=t; printf(\}

【解析】x=10,y=20,所以x==y为false,t=x;不执行,直接执行x=y;y=t;x为20,y为0。注意和if(x==y){t=x;x=y;y=t;}区别。 ?

当多个if(表达式)单分支形式并行出现时,其执行顺序是:先判断第一if单分

D.if(a==0) printf(“%d\\n”,x); else printf(“%d\\n”,y);

支的条件,如果为真,执行其后面的语句,执行完后,继续向下执行。判断第

【解析】作为if语句的条件,a等价于a!=0,因此 A和C是等价的。

二个if单分支语句,依次类推。如果第一个if表达式的值为假,则不执行其例2:(2011-03-26)if语句的基本形式是:if(表达式)语句,以下关于“表达式”值

的叙述中正确的是(D) 后的语句,而去判断第二个if单分支条件。 A)必须是逻辑值 B)必须是整数值 C)必须是正数 D)可以是任意合法的数值 例1:(2011-03-26)有以下程序 【解析】表达式不限于关系表达式、逻辑表达式,也可以是任意的数值类型,其中main() 非0为真,0为假。故选D。 { int x;

scanf(\? 对于单个if语句,其后跟随的受if控制的只能是1个语句或者是1个复合语

if(x>15) printf(\

句。

if(x>10) printf(\

例1:(2009-09-17)设有定义:int a=1,b=2,c=3;以下语句中执行效果与其它三个不

if(x>5) printf(\

同的是(C) }若程序运行时从键盘输入12<回车>,则输出结果为 1217

【解析】输入12,比较不大于15所以不执行if(x>15)内的语句;大于10执行A)if(a>b) c=a,a=b,b=c; B)if(a>b){ c=a,a=b,b=c;}

printf(\输出12;大于5执行printf(\输出17。

C)if(a>b) c=a;a=b;b=c; D)if(a>b){ c=a;a=b;b=c;} 【解析】对于单个if语句,其后跟随的受if控制的只能是1个语句或者是1个复合语句。故C项,if(a>b)条件成立时,语句c=a;才被执行,而无论if(a>b)条件成立与否,语句a=b;b=c;都会被执行。A、B、D项,只有if(a>b)条件成立时,语句c=a; a=b;b=c; 才被执行。 例2:(2011-03-26)以下程序运行后的输出结果是 200

main()

2.知识点:if语句的嵌套

?

语句。

内嵌结构中,else总是与前面最近的且未曾配对的if语句配对,组成一对if-else

例2:(2010-09-18)有以下程序 #include main()

第 14 页 共 61 页

聪智学校

{int a=1,b=0; if(!a) b++;

else if(a==0) if(a) b+=2; else b+=3; printf(“%d\\n”,b);

}程序运行后的输出结果是(A) A)0 B)1 C) 2 D)3

同时当a>b时,a>b?1:0的值为1,此时k=1。否则k=0。故答案为A。

4.知识点:switch语句

? ? ?

switch语句的圆括号中的表达式的值必须是整型或字符型,不能为实型。 case后的表达式可以是求得整型和字符型的常量表达式,但不能含有变量。 default的位置对程序的执行没有影响。

例1:(2010-09-19)若有定义语句int a,b;double x;则下列选项中没有错误是(C) A)switch(x%2) B) switch((int)x%2.0)

【解析】else总是与前面最近的且未曾配对的if语句配对,组成一对if-else语句。{case 0:a++;break; {case 0:a++;break; 即else b+=3;

case 1:b++;break; case 1:b++;break;

与if(a) b+=2;配对。if(!a)不成立,不执行b++;else if(a==0)不成立,不执行if(a) b+=2; default:a++;b++; default:a++;b++; else b+=3;故直接执行printf(“%d\\n”,b);,输出结果为0。

} }

C)switch((int)x%2) D)switch((int)(x)%2) {case 0:a++;break; {case 0.0:a++;break;

3.知识点:条件表达式

? ?

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

执行过程:表达式1的值为真,条件表达式取表达式2的值;表达式1的值为 case 1:b++;break; case 1.0:b++;break; 假,条件表达式取表达式3的值。

default:a++;b++; default:a++;b++;

例1:(2009-09-19)以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是(A) } } A)if((a>b)&&(b>c)) k=1; B) if((a>b)||(b>c)) k=1; else k=0; else k=0; C) if(a<=b) k=0; D) if(a>b) k=1; else if(b<=c) k=1; else if(b>c) k=1;

else k=0;

【解析】switch语句的圆括号中的表达式的值必须是整型或字符型,不能为实型。x是double型,x%2不合法,A项错误。(int)x%2.0不合法,B项错误。(int)x%2值为整型,故C项正确。case后面的表达式可以是求得整型量和字符型量的常量表达式,故D项错误。 例2:(2009-09-18)有以下程序

【解析】条件运算符的结合性是从右至左。当b>c时,b>c?1:0的值为1,k=a>b?1:0,#include

第 15 页 共 61 页

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

聪智学校代表回车)A)12a34bB)12_a_34_bC)12,a,34,bD)12_a34_b【解析】空格会被当作字符赋值给变量,故B、D错误;C项中逗号会被当作字符赋值给变量,故C项错误。(4)格式字符串???一般形式:%[*][输入数据
推荐度:
点击下载文档文档为doc格式
9a6vy17nnd0wekt4q39j
领取福利

微信扫码领取福利

微信扫码分享