计算机二级C语言选择题及答案(2)

Python03

计算机二级C语言选择题及答案(2),第1张

}

printf("%d\n",num)

}

程序执行后的输m结果是()。

A.35

B.37

C.39

D.3975

32.以下程序的'输出结果是()。

main()

{char st[20]="hello\0\t\\\"

printf("%d%d\n",strlen(st).sizeof(st))

}

A.9 9

B.5 20

C.13 20

D.20 20

33.若有以下的定义:‘int t[3][2]”,能正确表示t数组元素地址的表达式是()。

A.&t[3][2]

B.t[3]

C.t[l]

D.t[2][2]

34.函数fseek(pf,OL,SEEK END)中的SEEK ENE 代表的起始点是()。

A.文件开始

B.文件末尾

C.文件当前位置

D.以上都不对

35.下述程序的输出结果是()。

#include

main()

{ int i

for(i=li<=10i++)

{if(i*i>=20)&&(i*i<=100))

break

}

printf("%d\n",i*i)

}

A.49

B.36

C.25

D.64

36.若有定义“int b[8],*p=b”,则p+6表示()。

A.数组元素b[6]的值

B.数组元素b[6]的地址

C.数组元素b[7]的地址

D.数组元素b[o]的值加上6

37.设变量已正确定义,则以下能正确计算f=n!的程序是()。

A.f=0:

for(i=1i<=ni++)f*=i:

B.F=1:

for(i=li<2ni++)f*=i:

C.f=l:

for(i=ni>1i++)f*=i:

D.f=1

for(i=ni>=2i--)f*=i:

38.下述程序执行的输出结果是()。

#include

main()

{ char a[2][4]

strcpy(a,"are")strcpy(a[1],"you")

a[0][3]=’&’

printf("%s\n",a):

}

A.are&you

B.you

C.are

D.&

39.设x=011050,则x=x&01252的值是()。

A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

40.在“文件包含”预处理语句的使用形式中,当#include后面的文件名用(双引号)括起时,寻找被包含文件的方式是()。

A.直接按系统设定的标准方式搜索目录

B.先在源程序所在的目录搜索,如没找到,再按系统设定的标准方式搜索

C.仅仅搜索源程序所在目录

D.仅仅搜索当前目录

【答案与解析】

1.D。【解析】算法的空间复杂度,是指执行这个算法所需的存储空间。算法所占用的存储空间包括算法程序所占用的空间、输入的初始数据所占用的存储空间、算法执行过程中所需要的额外空间。

2.D。【解析】数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式,一种数据结构可以根据需要采用不同的存储结构,用的存储结构有顺序和链式结构。用不同的存储结构,其处理的效率是不同的。

3.D。【解析】所谓的交换排序方法是指借助数据元素之间的互相交换进行排序的一种方法,包括冒泡排序和快速排序,冒泡排序通过相邻元素的交换,逐步将线性表变成有序是一种最简单的交换排序方法。

4.C。【解析】结构化程序设计的原则和方法之一是限制使用GOT0语句,但不是绝对不允许使用GOT0语句。其他三项为结构化程序设计的原则。

5.D。【解析】文件系统所管理的数据文件基本上是分散、相互独立的。相对于数据库系统,以此为基础的数据处理存在3个缺点:数据冗余大、数据的不一致性、程序与数据的依赖性强。

6.C。【解析】面对象的设计方法的基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。它虽强调模拟现实世界中的概念而不强调算法,但是它鼓励开发者在软件开发的过程中从应用领域的概念角度去思考。

7.D。【解析】所谓的后序遍历是指,首先遍历左子树,然后遍历右子树,最后访问根结点,并且在遍历左、右树时,仍然先遍历左子树,然后遍历右子树,最后访问根点。因此,后序遍历二叉树的过程也是一个递归过程。

8.B。【解析】软件的过程设计是指系统结构部件转换成软件的过程描述。

9.A。【解析】①对软,牛开发的进度和费用估计不准确:②用户对已完成的软件系统不满意的现象时常发生③软件产品的质量往往靠不住④软件常常是不可维护的⑤软件通常没有适当的文档⑥软件成本在计算机系统总成本中所占的比例逐年上升⑦软件开发生产率提高的速度远远跟不上计算机应用迅速普能及深入的趋势。

10.C。【解析】对象的封装性是指从外面看只能看到对象的外部特性,而对象的内部,其处理能力的实行和内部状态对外是不可见的,是隐蔽的。

11.C。【解析】数据库系统由如下5个部分组成:数据库(DB)、数据库管理系统fDBMS)、数据库管理员(人员)、系统平台之一——硬件平台(硬件)、系统平台之二——软件平台(软件)。其中 DB(DataBase)即数据库,是统一管理的相关数据的集合DBMS即数据库管理系统,是位于用户与操作系统之间的一层数据管理软件,为用户或应用完程序提供访问DB的方法。由以上可知,选C为正确答案。

12.A。【解析】标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线。B选项int不是表达变量类型的标识符,它不能再用做变量名和函数名。C 选项do是C语言的一个关键字。D选项标识符只能以字母或下划线开始。

13.D。【解析】本题考查逻辑运算符的使用。当“&&”的两个运算对象都是逻辑1时,表达式返回值才是1“||” 的两个运算对象至少有一个是逻辑1时,表达式返回值也是1,x14.C。【解析】第1个printf函数,格式说明的个数是2,而输出项的个数是3,所以对于多余的输出项k不予输出第2个printf函数,有两个%说明,第1个%后面的字符要原样输出。本题考查printf函数的格式。①“%x”和“%0”分别表示以十六进制和八进制无符合型输出整型数据(不带前导ox或0)②printf函数中格式说明符之前插入的任何字符都原样输出③格式说明与输出项的个数,也要相等,如果格式说明的个数少于输出项的个数,则对于多余的输出项不予输出。

15.C。【解析】函数fun(int x,int y)的功能是返回x+y的值。在主函数中,变量a,b,c的初始值分别为1,2,3。因此,逗号表达式“a++,b++,aq b”的值等于5,表达式c++的值为3,调用于函数的表达式为“fun(5,3)”,其返回值等于8。

16.D。【解析】在x=2,y=x+3/2中,3/2=1。2+1= 3,因此表达式的值为3,因为x,y为double型变量,故选择D选项。

17.A。【解析】当x为1时,执行case 1,a自加等于1,因为case 1后没有break,接着执行case 2,此时a的值为2,b自加为1,故选择A选项。

18.D。【解析】本题考梦自增运算符“++”、逻辑与运算符“&&”和逻辑或运算符“||”。自增运算符“++”出现在变量之前,表示先使用变量的值加l,再使用变量的值进行运算出现在变量之后,表示先使用变量的值进行运算,再使用变量的值加l。当逻辑与运算符“&&’’两边的运算对象都为真时,逻辑表达式的值才为真当逻辑或运算符“||”只要一个值为1,值就为1。根据运算符的优先级,题中应先计算内层括号中的值。++j是先自加后运算,因此运算时j的值等于3,所以表达式++j=3成立,即表达式的值为11与任何数都为进行或(||)运算,结果都为1,因此k=3的表达式i++是先运算后自加,因此运算时i为1,所以i++=1成立,自加1后i=2。if语句的条件为真即“1”,所以输出i、j、k的值分别是2,3,3。

19.A。【解析】本题考查switch语句。当i一1时,执行case 1,因为没有遇到break语句,所以依次往下运行,“a=a+ 2=2,a=a+3=5”当i=2时,执行case 2,因为没有遇到break语句,所以依次往下执行,“a=a+2=7,a=a+3= 10”当i=3时,执行case 3,a=a+1=11,因为没有遇到break语句,所以依次往下运行,a—a+2—13,a—a+3一l6:当i=4时,执行default,a=a+3=19,结束循环。

20.C。【解析】只有当3个if条件同时成立,即能够同时被2、3、7整除时,才输出i的值,而从0到50能够同时被2、3、7整除的数只有42,故选择C选项。

21.A。【解析】循环的作用是求行下标从1到2列下标从0到i的元素之和,即s=a[1][0]+a[1][1]+a[2][0]+a [2][1]+a[2][2]=3+4+5+6+0=18。

22.A。【解析】在程序语句中,k的初始值为5,进行第l次while循环后,k自减1为4,非0,执行循环体里的printf语句,输出k,此时k的值变为1。程序执行第2次循环时,k 自减1变为0,为假,退出while循环语句。所以程序的最后结果为1。

23.A。【解析】通过地址来引用数组元素的方法有下列5种:

(1)a[i][j](2)*(a[i]+j)(3)*(*(a+j)+i)(4)* (a[i][j])(5)(&aE0][0]q-3*i+j)。故A正确。

24.C。【解析】选项A、B的空间不够字符串存储要有结束符’\0’,且要占用一个空间,printf用来输出字符,不能输入字符串。

25.D。【解析】由题目ee线性链表的定义可知,要将q 和r所指的结点交换前后位置,只要使q指向r的后一个结点,p指向r结点,r指向q结点即可。而在选项D由,r->next=q,这时r指向的节点为qp->next r,这时p指向的节点为rq->next=r->next,因为r节点已经指向q,所以执行这个语句后q又指向q,所以选项D不正确。

26.B。【解析】在第1次外层for循环中,首先x++得到x=1。进入到内层for循环,只有循环j的值为奇数时,变量x的值才自加1,所以在内层for循环执行过程中,变量x的值自加两次,当退出内层for循环时,x=3,然后执行x++,得到x=4。在进入执行第2次外层for循环中,首先x++得到x=5。进入到内层for循环,只有循环变量j的值为奇数时,变量x的值才自加1,所以在内层for循环执行过程中,变量X的值自加1两次,当退出内层for循环时,x=7,然后执行x++,得到x=8,所以打印输出变量x的值为8。

27.C。【解析】子函数fun1(double a)的功能是返回a的平方值的整数部分。子函数fun2(double x,double y)的功能是返回X的平方值的整数部分与Y的平方值的整数部分的和。又因为题中变量w的定义为double型,函数fun(2) 的定义为int型,按照各类数值型数据间的混合运算,整型数据被转换为实型数据。所以双精度型变量w的值为5.O。

28.C。【解析】在for循环语句中自变量i从0开始,每次自加2,执行s+=*(t+i)语句,因为C语言规定数组名做表达式相当于数组的首地址,也就是第一个元素的地址。因此,*(t+i)代表数组的第i+1个元素。所以程序运行的结果是1+3+5+7+9=25,即变量S的值等于25。

29.A。【解析】本题在函数int fun(int n)的定义中又出现了对函数fun的调用,所以函数fun是递归函数。因而在主函数中调用x=fun(x)时,当输入10赋给变量x时,递归调用的过程为

fun(10)=10…fun(9)=104-94-fun(8)=104-9+84- fun(7)

=10+9++8++7++fun(6)=10+9++8+7+6+fun (6)

=10+9++8+7+6+5+fun(4)

=10+9++8+7+6+5+4+fun(3)

=10+9++8+7+6+5+4+3+fun(2)

=10+9++8+7+6+5+4+3+2+fun(1)

=10+9++8+7+6+5+4+3+2=55

2011年3月全国计算机等级考试二级笔试试卷

C语言程序设计

(考试时间90分钟,满分100分)

一、 选择题(1-10,21-40每题2分,11-20每题1分,共70分)

(1)下列关于栈叙述正确的是

A)栈顶元素最先能被删除

B)栈顶元素最后才能被删除

C)栈底元素永远不能被删除

D)以上三种说法都不对

(2)下列叙述中正确的是

A)有一个以上根结点的数据结构不一定是非线性结构

B)只有一个根结点的数据结构不一定是线性结构

C)循环链表是非线性结构

D)双向链表是非线性结构

(3)某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层)

A)3 B)4 C)6 D)7

(4)在软件开发中,需求分析阶段产生的主要文档是

A)软件集成测试计划 B)软件详细设计说明书

C)用户手册 D)软件需求规格说明书

(5)结构化程序所要求的基本结构不包括

A)顺序结构 B)GOTO跳转

C)选择(分支)结构 D)重复(循环)结构

(6)下面描述中错误的是

A)系统总体结构图支持软件系统的详细设计

B)软件设计是将软件需求转换为软件表示的过程

C)数据结构与数据库设计是软件设计的任务之一

D)PAD图是软件详细设计的表示工具

(7)负责数据库中查询操作的数据库语言是

A)数据定义语言

B)数据管理语言

C)数据操纵语言

D)数据控制语言

(8)一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的联系是

A)1:1联系 B)1:m联系

C)m:1联系 D)m:n联系

(9)有三个关系R、S和T如下:

则由关系R和S得到关系T的操作是

A)自然连接 B)交 C)除 D)并

(10)定义无符号整数类为UInt,下面可以作为类UInt实例化值的是

A)-369 B)369 C)0.369 D)整数集合{1,2,3,4,5}

(11)计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是

A)C语言程序仅可以编译执行

B)C语言程序仅可以解释执行

C)C语言程序既可以编译执行又可以解释执行

D)以上说法都不对

(12)以下叙述中错误的是

A)C语言的可执行程序是由一系列机器指令构成的

B)用C语言编写的源程序不能直接在计算机上运行

C)通过编译得到的二进制目标程序需要连接才可以运行

D)在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe文件

(13)以下选项中不能用作C程序合法常量的是

A)1,234 B)'123'

C)123 D)"\x7G"

(14)以下选项中可用作C程序合法实数的是

A).1e0 B)3.0e0.2

C)E9 D)9.12E

(15)若有定义语句:inta=3,b=2,c=1,以下选项中错误的赋值表达式是

A)a=(b=4)=3B)a=b=c+1

C)a=(b=4)+cD)a=1+(b=c=4)

(16)有以下程序段

char name[20]

int num

scanf("name=%s num=%d",name&num)

当执行上述程序段,并从键盘输入:name=Lili num=1001<回车>后,name的值为

A)Lili B)name=LiliC)Lili num= D)name=Lili num=1001

(17)if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是

A)必须是逻辑值 B)必须是整数值

C)必须是正数 D)可以是任意合法的数值

(18)有以下程序

#include

main()

{ int x=011

printf("%d\n",++x)

}

程序运行后的输出结果是

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

 

(19)有以下程序

#include

main()

{ int s

scanf("%d",&s)

while(s>0)

{ switch(s)

{ case1:printf("%d",s+5)

case2:printf("%d",s+4)break

case3:printf("%d",s+3)

default:printf("%d",s+1)break

}

scanf("%d",&s)

}

}

运行时,若输入1 2 3 4 5 0<回车>,则输出结果是

A)6566456 B)66656 C)66666 D)6666656

(20)有以下程序段

int i,n

for(i=0i<8i++)

{ 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)

}

以下关于程序段执行情况的叙述,正确的是

A)for循环语句固定执行8次 B)当产生的随机数n为4时结束循环操作

C)当产生的随机数n为1和2时不做任何操作D)当产生的随机数n为0时结束程序运行

 

(21)有以下程序

#include

main()

{ char s[]="012xy\08s34f4w2"

int i,n=0

for(i=0s[i]!=0i++)

if(s[i]>='0'&&s[i]<='9') n++

printf("%d\n",n)

}

程序运行后的输出结果是

A)0 B)3 C)7 D)8

(22)若i和k都是int类型变量,有以下for语句

for(i=0,k=-1k=1k++) printf("*****\n")

下面关于语句执行情况的叙述中正确的是

A)循环体执行两次B)循环体执行一次C)循环体一次也不执行D)构成无限循环

(23)有以下程序

#include

main()

{ char b,cint i

b='a'c='A'

for(i=0i<6i++)

{ if(i%2) putchar(i+b)

else putchar(i+c)

} printf("\n")

}

程序运行后的输出结果是

A)ABCDEF B)AbCdEf C)aBcDeF D)abcdef

(24)设有定义:doublex[10],*p=x,以下能给数组x下标为6的元素读入数据的正确语句是

A)scanf("%f",&x[6])B)scanf("%lf",*(x+6))

C)scanf("%lf",p+6)D)scanf("%lf",p[6])

(25)有以下程序(说明:字母A的ASCII码值是65)

#include

void fun(char *s)

{ while(*s)

{ if(*s%2) printf("%c",*s)

s++

}

}

main()

{ char a[]="BYTE"

fun(a)printf("\n")

}

程序运行后的输出结果是

A) BY B) BT C)YT D) YE

(26)有以下程序段

#include

main()

{ …

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

}

以下叙述中正确的是

A)此while语句将无限循环

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

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

D)当执行此while语句时,按任意键程序就能继续执行

(27)有以下程序

#include

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)3 B)2 C)1 D) 0

(28)若有定义语句:chars[3][10],(*k)[3],*p,则以下赋值语句正确的是

A)p=sB)p=kC)p=s[0]D)k=s

(29)有以下程序

#include

void fun(char *c)

{ while(*c)

{ if(*c>='a'&&*c<='z') *c=*c-('a'-'A')

c++

}

}

main()

{ char s[81]

gets(s)fun(s)puts(s):

}

当执行程序时从键盘上输入Hello Beijing<回车>,则程序的输出结果是

A)hello beijing B)Hello Beijing C)HELLO BEIJING D)hELLO Beijing

(30)以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。

#include

#define N 10

void fun(int x[N])

{ int i=0

while(i<>

}

在程序中下划线处应填入的是

A)x+i B)&x[i+1]C)x+(i++) D)&x[++i]

(31)有以下程序

#include

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? B)how I am fine are you? I am fine

C)how are you? I am fine D)row are you?

(32)设有如下函数定义

int fun(int k)

{ if (k<1) return 0

else if(k==1) return 1

else return fun(k-1)+1

}

若执行调用语句:n=fun(3),则函数fun总共被调用的次数是

A)2 B)3 C)4 D)5

(33)有以下程序

#include

int fun (int x,int y)

{ if (x!=y) return ((x+y)2)

else return (x)

}

main()

{ int a=4,b=5,c=6

printf("%d\n",fun(2*a,fun(b,c)))

}

程序运行后的输出结果是 A)3 B)6 C)8 D)12

(34)有以下程序

#include

int fun()

{ static int x=1

x*=2

return x

}

main()

{ int i,s=1

for(i=1i<=3i++) s*=fun()

printf("%d\n",s)

}

程序运行后的输出结果是 A)0 B)10 C)30 D)64

(35)有以下程序

#include

#define S(x) 4*(x)*x+1

main()

{ int k=5,j=2

printf("%d\n",S(k+j))

}

程序运行后的输出结果是A)197 B)143 C)33 D)28

(36)设有定义:struct {charmark[12]int num1double num2} t1,t2,若变量均已正确赋初值,则以下语句中错误的是

A)t1=t2B)t2.num1=t1.num1C)t2.mark=t1.markD)t2.num2=t1.num2

(37)有以下程序

#include

struct ord

{ int x,y}dt[2]={1,2,3,4}

main()

{

struct ord *p=dt

printf("%d,",++(p->x))printf("%d\n",++(p->y))

}

程序运行后的输出结果是 A)1,2 B)4,1 C)3,4 D)2,3

(38)有以下程序

#include

struct S

{ int a,b}data[2]={10,100,20,200}

main()

{ struct S p=data[1]

printf("%d\n",++(p.a))

}

程序运行后的输出结果是 A)10 B)11 C)20 D)21

(39)有以下程序

#include

main()

{ unsigned char a=8,c

c=a>>3

printf("%d\n",c)

}

程序运行后的输出结果是 A)32 B)16 C)1 D)0

(40)设fp已定义,执行语句fp=fopen("file","w")后,以下针对文本文件file操作叙述的选项中正确的是

A)写操作结束后可以从头开始读 B)只能写不能读

C)可以在原有内容后追加写 D)可以随意读和写

二、填空题

(1)有序线性表能进行二分查找的前提是该线性表必须是 【1】 存储的。

(2)一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF,则后序遍历结果为 【2】 。

(3)对软件设计的最小单位(模块或程序单元)进行的测试通常称为【3】 测试

(4)实体完整性约束要求关系数据库中元组的 【4】 属性值不能为空。

(5)在关系A(S,SN,D)和关系B(D,CN,NM)中,A的主关键字是S,B的主关键字是D,则称 【5】 是关系A的外码。

(6)以下程序运行后的输出结果是 【6】。

#include

main()

{ int a

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

printf("%d\n",a)

}

(7)有以下程序

#include

main()

{ int x

scanf("%d",&x)

if(x>15) printf("%d",x-5)

if(x>10) printf("%d",x)

if(x>5) printf("%d\n",x+5)

}

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

(8)有以下程序(说明:字符0的ASCII码值为48)

#include

main()

{ char c1,c2

scanf("%d",&c1)

c2=c1+9

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

}

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

(9)有以下函数

void prt(char ch,int n)

{ int i

for(i=1i<=ni++)

printf(i%6!=0?"%c":"%c\n",ch)

}

执行调用语句prt('*',24)后,函数共输出了 【9】 行*号。

(10)以下程序运行后的输出结果是 【10】。

#include

main()

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

if(x==y)t=xx=yy=t

printf("%d %d\n",x,y)

}

(11)己知a所指的数组中有N个元素。函数fun的功能是,将下标k(k>0)开始的后续元素全部向前移动一个位置。请填空。

void fun(int a[N],int k)

{ int i

for(i=ki

}

(12)有以下程序,请在 【12】 处填写正确语句,使程序可正常编译运行。

#include

【12】

main()

{ double x,y,(*p)()

scanf("%lf%lf",&x,&y)

p=avg

printf("%f\n",(*p)(x,y))

}

double avg(double a,double b)

{ return((a+b)/2)}

(13)以下程序运行后的输出结果是 【13】。

#include

main()

{ int i,n[5]={0}

for(i=1i<=4i++)

{ n[i]==n[i-1]*2+1printf("%d",n[i])}

printf("\n")

}

(14)以下程序运行后的输出结果是 【14】。

#include

#include

#include

main()

{ char *pint i

p=(char *)malloc(sizeof(char)*20)

strcpy(p,"welcome")

for(i=6i>=0i--) putchar(*(p+i))

printf("\n-")free(p)

}

(15)以下程序运行后的输出结果是 【15】。

#include

main()

{ FILE *fpint x[6]={1,2,3,4,5,6},i

fp=fopen("test.dat","wb")

fwrite(x,sizeof(int),3,fp)

rewind(fp)

fread(x,sizeof(int),3,fp)

for(i=0i<6i++) printf("%d",x[i])

printf("\n")

fclose(fp)

}

2011年3月全国计算机等级考试二级笔试试卷

C语言程序设计答案

一.选择题1-5 ABDDB

6-10 ACDCB 11-15 ADBAA

16-20 ADCAD 21-25 BDBCD

26-30 CDCCC 31-35 BBBDB

36-40 CDDCB

二,填空题

1) 顺序 2) DEBFCA 3) 单元测试 4) 主键 5) D 6) 3 7) 1217

8) 09 9) 4 10) 20 0 11) i-1 12) double avg(doublea,double b) 13) 13715

14) e(E)moclew 15) 123456

2010年9月全国计算机等级考试二级C笔试试卷答案

一、选择题

1~5: BCDAA 6~10:DDCCA 11~15:CBBAD 16~20: DAACB

21~25: BCBDC 26~30 :CBDDA 31~35:ACBCD36~40 :BACBD

二、填空

1.1DCBA23452.n-1 3.25 4.结构化 5.物理设计6.2008

7.15 8.非0 9. 1 4 13 4010.i11.2

12.a[row][col]13.3 14.*s 15.FILE

一、选择题

1、x,y,z被定义为int型变量,若从键盘给x,y,z输入数据,正确的输入语句是( B ).

A.INPUT x、y、z B.scanf("%d%d%d",&x,&y,&z)

C.scanf("%d%d%d",x,y,z) D.read("%d%d%d",&x,&y,&z)

2、当用户要求输入的字符串中含有空格时,应使用的输入函数是( C ).

A.scanf( ) B.getchar( ) C.gets( ) D.getc( )

3、关于if后一对圆括号中的表达式,以下叙述中正确的是( D ).

A.只能用逻辑表达式 B.只能用关系表达式

C.既可以用逻辑表达式也可以用关系表达式 D.可以用任意表达式

4、以下语句的输出结果是( D ).

printf("%d\n",strlen("\t"\065\xff\n"))

A.5B.14 C.8D.输出项不合法,无正常输出

5、若x是int型变量,y是float型变量,所用的scanf调用语句格式为:

scanf("x=%d,y=%f",&x,&y)

则为了将数据10和66.6分别赋给x和y,正确的输入应是( A ).

A.x=10,y=66.6 B.10 66.6 C.10<回车>66.6 D.x=10<回车>y=66.6

6、若有说明:int 6、*p,m=5,n以下正确的程序段是( D ).

A.p=&nscanf("%d",&p)B.p=&nscanf("%d",*p)

C.scanf("%d",&n)*p=nD.p=&n*p=m

7、若在定义行:int a,b,c,*p=&c之后,接着执行以下选项中的语句,则能正确给变量赋值的是( C ).

A.scanf("%d",a,b,c)B.scanf("%d%d%d",a,b,c)

C.scanf("%d",p) D.scanf("%d",&p)

8、若执行下面的程序时,从键盘上输入5和2,则输出结果是( C ).

main( )

{ int a,b,k

scanf("%d,%d ",&a,&b)

k=a

if(a<b) k=a%b

else k=b%a

printf("%d\n ",k)

}

A.5B.3C.2D.1

9、若执行下述程序时,若从键盘输入6和8时,结果为( B ).

main( )

{ int a,b,s

scanf("%d%d",&a,&b)

s=a

if(a<b) s=b

s*=s

printf("%d",s)

}

A.36B.64C.48D.以上都不对

10、设变量x和y均已正确定义并赋值.以下if语句中,在编译时将产生错误信息的是( C ).

A.if(x++) B.if(x>y&&y!=0)

else y++

C.if(x>0)x-- D.if(y<0){}

else x++

11、设变量均已正确定义,若要通过scanf("%d%c%d%c",&a1,&c1,&a2,&c2)语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y.以下所示的输入形式中正确的是( D ).

A.10 X 20 Y B.10 X20 Y C.10 X <回车>20 Y D.10X<回车>20Y

12、下列程序的运行结果是( D ).

main( )

{ int x=-9,y=5,z=8

if(x<y)

if(y<0)z=0

else z+=1

printf("%d\n",z)

}

A.6B.7C.8D.9

13、现有格式化输入语句,scanf("x=%d ,sum y=%d,line z=%d",&x,&y,&z),

已知在输入数据后,x,y,z的值分别是12,34,45,则下列数据是正确的输入格式的是( D ).

A.12,34,45 B.x=12,y=34,z=45

C.x=12,sumy=34,z=45D.x=12,sumy=34,linez=45

14、已有定义和语句:double a, b,cscanf("%lf%lf%lf",&a,&b,&c),

要求给a、b、c分别输入10.0、20.0、30.0,不正确的输入形式是( D ).

A.10.0<回车>�20.0<回车>�30.0 B.10.0<回车>�20 30

C.10 20<回车>�30.0D.10.0,20.0,30.0

15、已知int afloat b所用的scanf调用语句格式为: scanf("a//%d,b=%f",&a,&b)

为了将数据3和25.08分别赋给x和y,正确的输入形式是( C ).

A.3,25.08 B.a=3,b=25.08 C.a//3,b=25.08 D.a//3<回车>b=25.08

16、已知int x=1,y=2,z=3以下语句执行后x,y,z的值是( B ).

if(x>y) z=xx=yy=z

A.x=1, y=2, z=3 B.x=2, y=3, z=3 C.x=2, y=3, z=1 D.x=2, y=3, z=2

17、以下程序的输出结果是( A ).

main( )

{ int a=15,b=21,m=0

switch(a%3)

{ case 0:m++break

case 1:m++

switch(b%2)

{ default:m++

case 0:m++break

}

}

printf("%d\n",m)

}

A.1B.2C.3D.4

18、以下程序段的输出结果是( C ).

int a=1234

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

A.12B.34C.1234 D.提示出错、无结果

19、以下程序输出结果是( A )

main( )

{ int a=5,b=4

printf("%d\n", a>b?a+b:a-b)

}

A.9B.1C.10D.无法确定

20、以下叙述中正确的是( C ).

A.用C程序实现的算法必须要有输入和输出操作

B.用C程序实现的算法可以没有输出但必须要有输入

C.用C程序实现的算法可以没有输入但必须要有输出

D.用C程序实现的算法可以既没有输入也没有输出

21、有定义:int bchar c[10],则正确的输入语句是( B ).

A.scanf("%d%s",&b,&c) B.scanf("%d%s",&b,c)

C.scanf("%d%s",b,c) D.scanf("%d%s",b,&c)

22、有如下程序

main( )

{ float x=2.0,y

if(x<0.0) y=0.0

else if(x<10.0) y=1.0/x

else y=1.0

printf("%f\n",y)

}

该程序的输出结果是( C ).

A.0.000000 B.0.250000 C.0.500000 D.1.000000

23、有如下程序:

main( )

{ int x=1,a=0,b=0

switch(x)

{ case 0: b++

case 1: a++

case 2: a++b++

}

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

}

该程序的输出结果是( A ).

A.a=2,b=1 B.a=1,b=1 C.a=1,b=0 D.a=2,b=2

24、有以下程序,其中%u表示按无符号整数输出

main( )

{ unsigned int x=0xFFFF/* x的初值为十六进制数 */

printf("%u\n",x)

}

程序运行后的输出结果是( B ).

A.-1B.65535 C.32767 D.0xFFFF

25、有以下程序段

int jfloat ychar name[50]

scanf("%2d%f%s",&j,&y,name)

当执行上述程序段,从键盘上输入55566 7777abc后,y的值为( B ).

A.55566.0 B.566.0 C.7777.0 D.566777.0

26、阅读下面的程序,该程序( D ).

main( )

{ int a=5,b=0,c=0

if(a=b+c) printf("***\n")

else printf("$$$\n")}

A.有语法错不能通过编译B.可以通过编译但不能通过连接

C.输出*** D.输出$$$

27、运行下面程序,若从键盘输入字母b,则输出结果是( C ).

main( )

{ char c

c=getchar( )

if(c>='a'&&c<='u') c=c+4

else if(c>='v'&&c<='z') c=c-21

else printf("input error!\n")

putchar(c)

}

A.gB.wC.f D.d

28、执行下列程序时输入:123<空格>456<空格>789<回车>输出结果是( D ).

main( )

{ char s[100]int c, i

scanf("%c",&c)

scanf("%d",&i)

scanf("%s",s)

printf("%c,%d,%s\n",c,i,s)

}

A.123,456,789 B.1,456,789 C.1,23,456,789 D.1,23,456

29、当输入为"quert?"时,下面程序的执行结果是( A ).

#include "stdio.h"

main( )

{ char c

c=getchar( )

while(c!='?')

{ putchar(c)

c=getchar( )

}

}

A.quert B.Rvfsu C.quert? D.rvfsu?

30、若变量已正确定义,则下面程序段的输出结果是( B ).

i=0

do printf("%d,",i)while(i++)

printf("%d\n",i)

A.0,0 B.0,1 C.1,1 D.程序进入无限循环

31、若有如下语句

int x=3

do

{printf("%d\n",x-=2)}while(!(--x))

则上面程序段( B ).

A.输出的是1 B.输出的是1和-2 C.输出的是3和0 D.是死循环

32、设有程序段

int k=10

while(k=0)k=k-1

下面描述中正确的是( C ).

A.while循环执行10次 B.循环是无限循环

C.循环体语句一次也不执行D.循环体语句执行一次

33、设有程序段

int k=10

while(k=0) k=k-1

则下面描述中正确的是( C ).

A.while循环执行10次 B.循环是无限循环

C.循环体语句一次也不执行D.循环体语句执行一次

34、设有以下程序

main( )

{ int x=0,s=0

while(!x!=0) s+=++x

printf("%d",s)

}

则该程序的运行情况是( B ).

A.运行程序后输出0 B.运行程序后输出1

C.程序中的控制表达式是非法的 D.程序执行无限次

35、下列程序的输出结果是( B ).

main( )

{ int i,a=0,b=0

for(i=1i<10i++)

{ if(i%2==0)

{a++

continue}

b++

}

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

}

A.a=4,b=4 B.a=4,b=5 C.a=5,b=4 D.a=5,b=5

36、下列说法中错误的是( A ).

A.只能在循环体内使用break语句

B.在循环体内使用break语句可以使流程跳出本层循环体,从而提前结束本层循环

C.在while和do…while循环中,continue语句并没有使整个循环终止

D.continue的作用是结束本次循环,即跳过本次循环体中尚未执行的语句,接着再一次进行循环判断

37、下面程序的运行结果是( B ).

#include "stdio.h"

main( )

{ char a[]="morning",t

int i,j=0

for(i=1i<7i++)

if(a[j]<a[i]) j=i

t=a[j]a[j]=a[7]a[7]=a[j]

puts(a)

}

A.mrgninr B.moC.moring D.morning

38、下面的表达式while(!x)中的表达式 !x 与下面条件( A )等价.

A.x==0 B.x==1 C.x==0||x==1 D.x!=0

39、现有如下程序

main( )

{ int k[30]={12,324,45,6,768,98,21,34,453,456}

int count=0,i=0

while(k[i])

{ if(k[i]%2==0‖k[i]%5==0) count++

i++

}

printf("%d,%d\n",count,i)

}