输出第二个整数的通过码

| 结构师考试 |

【www.guakaob.com--结构师考试】

第二章、第三章笔试习题答案及解释
输出第二个整数的通过码(一)

第二章 顺序结构

一 选择题

1, 答案是 C

随意使用空语句会导致逻辑上出现错误,不要随便使用。

2, 答案是 B

语句必须以分号结尾,A,C,D表达式后面均没有分号。

3, 答案是 C

int x=13,y=4;说明x,y均为整型,所以x/y只取整数部分(舍去法),值为3,把3赋值给x,整个x=x/y表达式的值为左边变量x的值,所以输出为3。

4, 答案是 A

a,b均为整型,a/b是取a÷b所得商的整数部分,所以是0,再把0赋值给 c,所以是c的值是0。

5, 答案是 D

A 注释语句可以放在代码的任何位置

B 将r定义为整型不会在编译时出错,会自动进行类型转换

C 变量s为浮点型,格式描述符%f时正确的

D π是非法的变量

6, 答案是 D

(x,y)是逗号表达式,它的值只有一个,所以格式说明符的个数和输出项的个数是相等的。并且逗号表达式的值为最后一个表达式的值,最后一个表达式是y=2003,所以整个表达式的值是2003,因此输出值为2003。

7, 答案是 A

m是十进制整数以十进制有符号的形式输出,即照原样输32767,n=032767,032767是八进制的整数以八进制无符号形式输出,去掉前面的0。见教材P34

8, 答案是 C

m,n的值都是十六进制数0xabc,m-=n即是m=m-n, 把m-n的值赋给m,

即把0赋给m,再把m值以十六进制无符号的形式输出,输出的十六进制

数不用在前面0x或者0X。见教材P35

9, 答案是 B

表达式i--的值是在变量自减之前的值,i的初值为10,所以该表达式的值也为10;表达式j++的值是变量自加之后的值,j初值为1,所以该表达

式在值是2。

10, 答案是 C

m=0256,即m是八进制的数0256,要以八进制无符号的形式输出,即输出

256;n=256,即n是十进制的数256,也要以八进制无符号的形式输出,首

先要把十进制数转化为八进制数,256转化为八进制为0400,以无符号形

式输出,即输出400。

11, 答案是 B

在printf语句中,格式控制的个数只有一个,即%d,而输出项有两项,即a和b。而得到的结果应该只有一个,所以应该输出第一个变量的值,即变量a的值。

12, 答案是 C

第一个数据的输出控制宽度是2位,但是x的值是102,占3位,要输出的数据宽度大于规定的输出宽度,所以按数据的实际宽度输出,输出102。第二个数据要求以十进制形式输出,输出控制宽度是2,y的值为012,是八进制数,所以要转换成十进制数10后再输出。

13, 答案是 B

表达式a=f/=c*=(x=6.5),按从右到左结合,先把6.5赋值给x,再执行c=c*6.5,c的值变为65,再执行f=f/65,为浮点数的除法,f的值为1.53„„,再把f的值赋给a,a为整型数据,执行强制类型转换,a的值为1。a对应的输出格式为%d,即输出1;c对应的输出格式为%d,输出65,f对应的输出格式%3.1f,即输出控制宽度为3位,保留小数点后一位小数,即输出1.5,x对应的输出格式也为%3.1f,输出6.5。

14, 答案是 D

float x=-123.456;说明x为单精度浮点数据,单精度浮点数据对应的输出格式应该为%f。

15, 答案是 C

m=(k+=i*=k);按从右到左结合,先执行i=i*k;即i被赋值为4,再执行k=k+4;k被赋值为6,最后把6赋给m,输出m和i的值。

16, 答案是 C

略(参考12题)

17, 答案是 D

-m++遵循从右向左结合的原则;m++的值为m自增之前的值,所以执行完x=-m++以后,x被赋值为-3;表达式x=x+8/++n中有加号除号,先算8/++n,++n的值为自增之后的值为5,8/5取整为1,即x=x+8/++n转化为x=x+1,即把x+1的值赋给x,x的值变为-2。

18, 答案是 D

A 输入函数应为scanf();

B,C 输入数据列表必须是地址表达式;

19, 答案是 A

从键盘输入数据的格式必须与输入控制要求的格式一样

B答案三个之间不要有空格;C答案用逗号分开是多余的;D答案格式不匹配。

20, 答案是 A

格式控制要求输入的两个数据之间要用逗号隔开,A没有逗号所以错误,D两个输入数之间的回车换行可以忽略。

21, 答案是 C

x乘以100是为了把x小数点后的两位小数变为整数,再加上0.5,如果小数点后一位大于等于5则会进一位,如果小数点后一位小于5则不会出现进位的情况,再对其进行强制类型转换,采用舍去法丢掉小数部分,即对x乘上100后的数实现了小数位到整数位的四舍五入。最后再除以100.0,把数字变回原来的大小,整数与浮点数相除结果为浮点数,即实现了要求。

22, 答案是 C

从键盘输入数据的格式必须与输入控制要求的格式一样。

23, 答案是 B

输入控制中第一个数要求以“%2d”形式输入,即要求输入一个两位的数,而从键盘输入的数为876,所以从左到右取两位数字87,即把87赋值给整型变量a,余下的6再赋值给浮点型变量b,自动进行类型转换,b的值为6.000000,后面输入的543则没有赋值给变量。

24, 答案是 D

“%%”会输出一个“%”,“d”会照原样输出,因为没有格式说明,m,n无法输出到屏幕。 25, 答案是 D

第1个输出语句要求ch以%c(字符)形式输出所以为输出“a”,以%d(整数)形式输出为,字符转换为整型要使用ASCII码所以为“97”,k没有对应的输出符所以没有输出,第2个输出语句要求以整型方式输出k得到“12”。结果为“a,97,k=12”

26, 答案是 B

a+b的结果为30,按照“a+b=%d\n”的输出格式得到输出结果“a+b=30”B

27, 答案是 B

printf可以没有输出项,没有输出项的printf只是没有输出内容;整数不能以十二进制输出,getchar()只能读入字符。

28, 答案是 A【输出第二个整数的通过码】

getchar()可以读入空格符合回车符。

二 填空题

1, 一条语句 分号

2, 88

首先将八进制数0210转化为十六进制的数0X88,输出格式说明要以十六进制无符号的形式输出,所以省略0X,直接输出88。

3, 11

把十进制数转化为八进制数,以无符号的形式输出

4, 25 21 37

b为八进制数025,c为十六进制数0X25,首先把b、c都转化为十进制的整数,分别为21、37,按照输出格式要求a、b、c以十进制整数形式输出,中间以空格分开,所以输出为25 21 37。

5, n1=%d\nn2=%d

除了n1,n2的值之外,还必须加入“n1=”“n2=”照原样输出的字符,很明显在两个数据之间还加了换行符。

6, i=10,j=20<回车>

格式控制中加入了格式说明以外的其他字符,则在输入数据时这些字符也要同样输入。输入格式控制为i=%d,j=%d,所以则应该从键盘输入i=10,j=20

7, 261

a为十进制数177转化为八进制的数为0261,以无符号的形式输出为261

8, 16

a的初值为0,在表达式a+=(a=8)中,a首先被赋值为8,再执行操作a=a+a,所以a最后被赋值为16,即输出a的值为16

9, printf(“a=%d,b=%d”, a, b);

10, B 66

B在ASCII码中派在A的后面A为65,那么B为66。

11, 10

012为八进制数,转换为十进制为10。

12, 12 34

在scanf函数中指定了宽度为2,输入123456,a=12,b=34,后面的567无效。

13, 12

程序运行时输入12,getchar()函数只能接受单个字符,所以ch1=’1’,ch2=’2’。 n1=ch1-‘0,转化为ASCII码计算n1=50-49,n1的值为1。n2=n1*10+(ch2-‘0’)转化为ASCII码计算n2 = 1*10+(51-49),n2的值为12。

第三章 选择结构

一、选择题

1、D 此题主要是考语句的特征。一条语句只包含一个分号,D项有两个分号,应该是两条语句,

所以选D。

2、C此题主要是考真假条件的等价。题目中的E为非0时条件为真,为0时为假。那么把非0和

0带到选项中可知,C项正好是E为0时表达式为真,非0时为假,所以选C。

3、D 任意合法的表达式都可以作为逻辑运算符的运算对象

4、D 此题主要是考逻辑运算和关系运算的优先级别.只要掌握!、算术运算和&&的优先级别便可选

对.这几种运算符的具体优先级关系见见教材P188,附录三。

5、A 此题主要是考逻辑运算符!、&&和||之间的优先级别。!最高,&&次之,||最低。先求得!a

为0,所以不必计算!b的值,即!a&&!b的值为0,由c=0,!c=1,而0||1=1,所以选A。

6、A 此题主要是考了逻辑、关系和算术运算,熟练掌握逻辑运算、关系运算和算术运算的优先级

别后,就不难了。A 选项中!a为0,所以!a==1为假,那么就不用计算&&后面的表达式了,因为0与任何数均为假;B项中先计算出a<b为假,则(a<b)&&!c也为假,而0||1=1; C项中a和b均为真,所以a&&b的值为1;D项中先计算出(b+b)&&(c-a)=1,又a=2,2||1=1 所以选A。

7、D 此题考到了++运算符以及逻辑运算。当计算机碰到a&&b时,先计算表达式a的值,若为真

才会计算表达式b的值,否则将不会去计算b的值,因为一旦a=0,则0&&b必为0;而a||b则正好是相反的,即先计算表达式a的值,若a为假才会计算表达式b的值,否则将不会去计算b的值,因为一旦a=1,则1||b的值必为1,理解了这两点后,我们在看题目:i++==1的值为1,此时i为2,所以计算&&后的表达式,首先计算++j==3的值为1,j的值为3,由上面的原理我们可知,||后面的表达式不用再计算,所以此时i,j,k的值分别为2,3,3。

8、D 此题和题2非常的相似,也是考真假条件的转换,其中D项中只有k为0时,!k%2==1才成

立,显然和A、B、C三项不同。

9、C 此题主要是考if和else的配对问题。见教材P51。

10、D 此题主要是考if和else的一般形式。if后面的语句要么是单条语句,要么是由{ }扩起

来的复合语句,不能是if后有两条语句的,所以本题程序在运行的时候会出错。

11、C 此题考到了关系运算和逻辑运算及一定数学知识。|x-y|<10可等价为-10<x-y<10,首先选

项A表示x-y的绝对值小于10,与题中的数学关系一样;将-10<x-y<10用逻辑表达式表示的话就是B选项;而D选项只是数学变换,所以选择C

12、D 此题也是考到了真假条件的变换和if-else语句。A、B、C三项都是表示a为真时输出x,

为假时输出y,而D则是a为假时输出x,为真时输出y。

13、D 此题考查了赋值表达式的一般格式,=的左边是变量名,右边是表达式,所以D项错误。

14、C 此题主要是考查逻辑运算符||,当计算机碰到a||b, 先计算表达式a的值,若为假才会计

算表达式b的值,否则将不会去计算b的值,因为一旦a=1,则0||b必为0。题中b>a为真,所以(n=b>a)为1,那么将不会去计算m=a<b的值,k被并赋值1,所以m依然为0 。

15、C 此题主要是考查if-else-if和if语句。具体分析见教材第49页例7。

C语言第四次作业
输出第二个整数的通过码(二)

第四次作业:数组

1. 字符筛选

编写一个程序,先输入一个字符串str1(长度不超过20),再输入一个单独的字符ch,然后程序会把字符串str当中出现的所有的ch字符都删掉,从而得到一个新的字符串str2,然后把这个字符串打印出来。例如:

 输入:字符串str1为:86-010-62785001

字符ch为:-

 输出:字符串str2为:861062785001

程序代码:

#include<stdio.h>

#include<string.h>

void main()

{

int i,j=0,length;

char str1[21],str2[21],ch;

printf("字符串str1为:");

gets(str1);

printf("字符ch为:");

scanf("%c",&ch);

length=strlen(str1);

for(i=0;i<=length;i++)

{

if(str1[i]!=ch)

【输出第二个整数的通过码】

{

str2[j]=str1[i];

j++;

}

else continue;

}

puts(str2);

}

2. 数据合并

编写一个程序,能够输入两个预先从小到大排列的整数型数组(假设数组长度最大为20,数组输入时遇到数字0结束);要求将这两个数组的数字能够合并成为一个新的从小到大顺序排列的整数型数据,并将新数组输出。例如:

 输入:请输入第一个数组:1,2,3,12,16,20,25,40,0

请输入第二个数组:4,5,6,15,18,20,21,22,25,38,45,0

 输出:合并后的数组为:1,2,3,4,5,6,12,15,16,18,20,20,21,22,25,25,38,40,45

/*编写一个程序,能够输入两个预先从小到大排列的整数型数组(假设数组长度最大为20,数组输入时遇到数字0结束);

要求将这两个数组的数字能够合并成为一个新的从小到大顺序排列的整数型数据,并将新数组输出。

例如:

输入:请输入第一个数组:1,2,3,12,16,20,25,40,0

请输入第二个数组:4,5,6,15,18,20,21,22,25,38,45,0

输出:合并后的数组为:1,2,3,4,5,6,12,15,16,18,20,20,21,22,25,25,38,40,45*/

程序代码:

#include<stdio.h>

#include<string.h>

void main()

{

int i,j,t,k,m,n,r;

int a[20],b[20],c[40];

printf("请输入第一个数组:");

}

{ scanf("%d",&a[i]); m=i-1; if (a[i]==0) break; } printf("请输入第二个数组:"); for (j=0;;j++) { scanf("%d",&b[j]); n=j-1; if (b[j]==0) break; } for (i=0;i<=m;k++,i++) c[k]=a[i]; for (j=0;j<=n;k++,j++) c[k]=b[j]; for (r=0;r<=m+n;r++) { for (k=0;k<=m+n;k++) if (c[k]>c[k+1]) { t=c[k]; c[k]=c[k+1]; c[k+1]=t; } } for (k=0;k<=m+n;k++) printf("%d ",c[k]);

3. 数制转换

请使用数组编写一个程序,输入一个二进制的字符串(长度不超过32),然后计算出相应的十进制整数,并把它打印出来。例如,

 输入:请输入二进制数字符串:111011101110111011101110

 输出:对应的十进制数:15658734

程序代码:

#include<stdio.h>

#include<string.h>

#include<math.h>

void main()

{

char str[32];

int i,j=0,k=0;

long int t=0;

printf("请输入二进制字符串:");

gets(str);

j=strlen(str);

for(i=j-1;i>=0;i--)

{

t+=(str[i]-48)*pow(2,k);

k++;

}

printf("对应的十进制数:%d\n",t);

}

4. 对称数字

一辆汽车在开始出发前其里程表上的读数是一个对称数 95859,后匀速行驶两个小时后,发现里程表上是一个新的对称数。问该新的对称数是多少?汽车的速度是多少?

注:所谓对称数是指从左向右读与从右向左读完全一样的数字。

请在合理的范围内(提示,车速别太快也不能太慢,假设介于30~120公里/小时),编程解决上述问题。

程序代码:

#include<stdio.h>

#include<math.h>

void main()

{

int a[5];

int m=95859,i,s,v,t=2;

for(v=30;v<=120;v++)

{

s=m+v*t;

for(i=0;i<=4;i++)

{

a[i]=fmod((floor(s/(pow(10,i)))),10);

}

if(a[0]==a[4]&&a[1]==a[3])

printf("新的对称数为:%d,速度为:%d\n",s,v);

}

}

C语言习题(详细解答)
输出第二个整数的通过码(三)

程序设计基础(C语言版)习题

第01章

一.选择题

1.以下叙述中正确的是________。

A)程序设计的任务就是编写程序代码并上机调试

B)程序设计的任务就是确定所用数据结构

C)程序设计的任务就是确定所用算法

D)以上三种说法都不完整

【解析】 程序设计通常分为问题建模、算法设计、编写代码和编译调试四个阶段。所以选项A)、B)、C)说法都不完整。

2.以下关于简单程序设计的步骤和顺序的说法中正确的是。

A)确定算法后,整理并写出文档,最后进行编码和上机调试

B)首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档

C)先编码和上机调试,在编码过程中确定算法和数据结构,最后整理文档

D)先写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构

【解析】设计一个能解决实际问题的计算机程序需要经过以下几个过程:① 建立模型。② 算法设计:给出解决问题的步骤,即算法。③ 算法表达:选择一种表达算法的工具,对算法进行清晰的表达。④ 编写程序:选择一种程序设计语言,把以上算法程序化,这称为编写程序。⑤ 程序调试:对编写好的程序进行调试,修改程序中的错误。⑥ 程序文档编写与程序维护。综上所述,B)选项是符合上述描述的,其他选项不恰当。

3,叙述中正确的是________。

A)C程序的基本组成单位是语句

B)C程序中的每一行只能写一条语句

C)简单C语句必须以分号结束

D)C语句必须在一行内写完

【解析】函数是C程序的基本组成单位;C语言书写风格很自由,不但一行可以写多个语句,还可以将一个语句写在多行中。故本题答案为C)。

4.以下叙述中正确的是。

A)C程序中的注释只能出现在程序的开始位置和语句的后面

B)C程序书写格式严格,要求一行内只能写一个语句

C)C程序书写格式自由,一个语句可以写在多行上

D)用C语言编写的程序只能放在一个程序文件中

【解析】在C语言中,注释可以加在程序中的任何位置,选项A)错误。C程序可以分模块写在不同的文件中,编译时再将其组合在一起,选项D)错误。C程序的书写风格很自由,不但一行可以写多个语句,还可以将一个语句写在多行中。所以正确答案为选项C)。

5.以下关于C语言的叙述中正确的是。

A)C语言中的注释不可以夹在变量名或关键字的中间【输出第二个整数的通过码】

B)C语言中的变量可以在使用之前的任何位置进行定义

C)在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致

D)C语言的数值常量中夹带空格不影响常量值的正确表示

【解析】C语言中注释可以放在任何位置,但不能夹在变量名或关键字中间,选项A正确;C语言中的变量要在使用之前定义,C标准规定定义位置在相关程序块的首部,选项B错误;C语言中两侧数据类型可以不一致,系统可进行强制类型转换,选项C错误;C语言数值常量中不允许存在空格,选项D错误。

6.以下关于C语言数据类型使用的叙述中错误的是。

A)若要准确无误差地表示自然数,应使用整数类型 绪论

B)若要保存带有多位小数的数据,应使用双精度类型

C)若要处理如"人员信息"等含有不同类型的相关数据,应自定义结构体类型

D)若只处理"真"和"假"两种逻辑值,应使用逻辑类型

【解析】C语言中没有逻辑类型,若只处理"真"或"假"两种逻辑值,可以使用整型数"1"或"0"表示,故选D。

第02章

一.选择题【输出第二个整数的通过码】

1.有以下定义:int a;long b;double x,y;则以下选项中正确的表达式是。

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

【解析】A)选项中如果x与y的值相等那么取余时就会有除数为0的情况。C)选项中取余的两个数据都应为整数,不能有一方为实型变量,而a*y的结果为double型。D)选项表达式本身就错误,不能给表达式赋值。所以,本题答案为B)。

2.有以下程序

#include<stdio .h>

main()

{ int s,t,A=10;double B=6;

s=sizeof(A); t=sizeof(B);

printf("%d,%d\n",s,t);

}

在VC6平台上编译运行,程序运行后的输出结果是

A)2,4 B)4,4 C)4,8 D)10,6

【解析】sizeof的作用就是返回一个对象或者类型所占的内存字节数。在VC6中整型占4个字节,双精度实型占8个字节,所以选C)。

3.若有定义:double a=22;int i=0,k=18;,则不符合C语言规定的赋值语句是。

A)a=a++,i++; B)i=(a+k)<=(i+k);

C)i=a%11; D)i=!a;

【解析】C语言中取余运算符两侧的操作数只能是整型(若为char型,则会自动转换成整型)。

4.有以下程序:

#include <stdio.h>

main()

{ int a=1,b=0;

printf("%d,",b=a+b);

printf("%d\n",a=2*b);

}

程序运行后的输出结果是________。

A)0,0 B)1,0

C)3,2 D)1,2

【解析】 执行第一个printf语句时,b=a+b=1,所以输出1,执行第二个printf语句时,a=2*b=2,所以输出结果为2。

5.若有定义语句:int a=3,b=2,c=1;,以下选项中错误的赋值表达式是。

A)a=(b=4)=3; B)a=b=c+1; C)a=(b=4)+c; D)a=1+(b=c=4); 基本数据类型

【解析】在A)选项中,赋值语句b=4先把4赋值给整型变量b,之后执行(b=4)=3是把常量3赋值给常量4,但是由于C语言规定赋值运算符的左侧只能是变量,不能是常量或者表达式,因此A)选项错误。

6.有以下定义:int a;long b;double x,y;则以下选项中正确的表达式是。

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

【解析】A)选项中如果x与y的值相等那么取余时就会有除数为0的情况。C)选项中取余的两个数据都应为整数,不能有一方为实型变量,而a*y的结果为double型。D)选项表达式本身就错误,不能给表达式赋值。所以,本题答案为B)。

7.若有定义语句:int x=10;,则表达式x-=x+x的值为________。

A)-20 B)-10

C)0 D)10

【解析】 x-=x+x可化为:x=x-(x+x),由于x初始值为10,所以计算后,x=10-20=-10,因此选B)。

二.填空题

1.以下程序的功能是:将值为三位正整数的变量x中的数值按照个位、十位、百位的顺序拆分并输出。请填空。

#include<stdio.h>

main()

{int x=256;

printf("%d-%d-%d\n",__,x/10%10,x/100);

}

参考答案:x%10

【解析】x=256,x%10=6。

2.以下程序运行后的输出结果是 。

#include<stdio.h>

main()

{ int a;

a=(int)((double)(3/2)+0.5+(int)1.99*2);

printf("%d\n",a);

}

参考答案:3

【解析】本题中3/2=1,(double)(3/2)=1,(int)1.99*2=1*2=2,因此(int)(1+0.5+2)=(int)3.5=3。

3.若有定义语句:int a=5;,则表达式:a++的值是____。

参考答案:5

【解析】 a++的含义是在使用a值以后,使a值加1,所以a++的值为5。

4.若有语句double x=17;int y;,当执行y=(int)(x/5)%2;之后y的值为____。

参考答案:1

【解析】 y=(int)(x/5)%2=(int)(3.4)%2=3%2=1。

5.设变量a和b已正确定义并赋初值。请写出与a-=a+b等价的赋值表达式 ____。

参考答案:a=-b

【解析】a-=a+b等价于a=a-(a+b),等价于a=-b。

第03章

一.选择题

1.有以下程序

#include<stdio.h>

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列开始,<CR>代表回车,注意,回车也是一个字符)

12<CR>

34<CR> 顺序结构

则输出结果是

A)1234 B)12 C)12 D)12

3 34

【解析】程序根据用户输入分别给字符型变量a、b、c、d赋值为'1'、'2'、'<CR>'、'3',因此输出到屏幕得到选项C中的格式。

2.有以下程序段:

char ch;

int k;

ch=′a′;

k=12;

printf("%c,%d,",ch,ch,k);

printf("k=%d\n",k);

已知字符a的ASCII码值为97,则执行上述程序段后输出结果是

A)因变量类型与格式描述符的类型不匹配输出无定值

B)输出项与格式描述符个数不符,输出为零或不定值

C)a,97,12k=12

D)a,97,k=12

【解析】输出格式控制符%c表示将变量以字符的形式输出;输出格式控制符%d表示将变量以带符号的十进制整型数输出。所以第一个输出语句输出的结果为a,97,第二个输出语句输出的结果为k=12,所以选项D)为正确答案。

3.有以下程序

#include<stdio.h>

main()

{ char a[30],b[30];

scanf("%s",a);

gets(b);

printf("%s\n%s\n",a,b);

}

程序运行时若输入:

how are you? I am fine <回车>

【输出第二个整数的通过码】

则输出结果是

A)how are you?

I am fine B)how

are you? I am fine

C)how are you? I am fine

D)how are you?

解析】scanf函数会把空格字符作为输入的字符串之间的分隔符,因此字符串a为"how"。gets()函数读取字符串时,直至接受到换行符或EOF时才停止,并将读取的结果存放在指针所指向的字符数组中,因此其余输入的内容赋值给b。

二.填空题

1.以下程序运行后的输出结果是 。

#include<stdio.h>

main()

{ int a=200,b=010;

printf("%d%d\n",a,b);

}

参考答案:2008

【解析】整型变量a的值为200,b的值"010"是用八进制表示的"10"即十进制的"8",最后输出格式均为%d,即十进制格式,所以输出为"2008"。

2.有以下程序(说明:字符0的ASCIl码值为48)

#include<stdio.h>

main()

{ char c1,c2;

scanf("%d",&c1);

c2=c1+9;

printf("%c%c\n",c1,c2);

}

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

参考答案:09

【解析】本题中通过ASCII码对字符变量赋值,由于字符0的ASCII码是48,因此字符变量c1为0,c2的ASCII码比c1大9,因此c2为9。

第04章

一.选择题

1.若变量已正确定义,在if(W)printf("%d\n",k);中,以下不可替代W的是。

A)a<>b+c B)ch=getchar() C) a==b+c D)a++

【解析】在C语言中,表示不等于不能用"<>",而只能使用"!="。其他选项均满足题目的要求。

2.当变量c的值不为2、4、6时,值也为"真"的表达式是。

A)(c==2)||(c==4)||(c==6)

B)(c>=2&& c<=6)||(c!=3)||(c!=5)

C)(c>=2&&c<=6)&&!(c%2)

D)(c>=2&& c<=6)&&(c%2!=1)

【解析】满足表达式(c>=2&& c<=6)的整型变量c的值是2,3,4,5,6。当变量c的值不为2,4,6时,其值只能为3或5,所以表达式c!=3和c!=5中至少有一个为真,即不论c为何值,选项B)中表达式的值都为"真"。正确答案为B)。

3.已知字母A的ASCII码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是。

A)kk>=′A′&& kk<=′Z′

B)!(kk>=′A′||kk<=′Z′)

C)(kk+32)>=′a′&&(kk+32)<=′Z′

D)isalpha(kk)&&(kk<91)

【解析】C语言的字符以其ASCII码的形式存在,所以要确定某个字符是大写字母,只要确定它的ASCII码在'A'和'Z'之间就可以了,选项A)和C)符合此要求。在选项D)中,函数isalpha用来确定一个字符是否为字母,大写字母的ASCII码值的范围为65到90,所以如果一个字母的ASCII码小于91,那么就能确定它是大写字母。本题答案选B)。

4.有以下程序:

#include < stdio.h>

main()

{ int a=l,b=2,c=3,d=0;

if(a==l && b++==2)

if(b!=2||c--!=3)

printf("%d,%d,%d\n",a,b,c);

else printf("%d,%d,%d\n",a,b,c); 选择结构

本文来源:http://www.guakaob.com/jianzhugongchengkaoshi/400380.html

    上一篇:薪资管理

    下一篇:装剪刀门要多少钱