2016年计算机二级c语言题库及答案

时间:2019-05-12 17:59:14下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《2016年计算机二级c语言题库及答案》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《2016年计算机二级c语言题库及答案》。

第一篇:2016年计算机二级c语言题库及答案

2016年计算机二级c语言题库及答案

一、选择题(每小题1分,共40小题,共40分)

1.设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为()。

A.20

B.0或35

C.15

D.16

2.下列关于栈的叙述中,正确的是()。

A.栈底元素一定是最后入栈的元素

B.栈操作遵循先进后出的原则

C.栈顶元素一定是最先入栈的元素

D.以上三种说法都不对

3.下列链表中,其逻辑结构属于非线性结构的是()0、A.双向链表

B.带链的栈

C.二叉链表

D.循环链表

4.在关系数据库中,用来表示实体间联系的是()。

A.网状结构

B.树状结构

C.属性

D.二维表

5.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员间的联系是()。

A.1:m联系

B.m:n联系

C.1:1联系

D.m:l联系

6.右两个关系R和S如下:

则由关系R得到关系S的操作是()。

A.自然连接

B.并

C.选择

D.投影

7.数据字典(DD)所定义的对象都包含于()。

A.软件结构图

B.方框图

C.数据流图(DFD图)

D.程序流程图

8.软件需求规格说明书的作用不包括()。

A.软件设计的依据

B.软件可行性研究的依据

C.软件验收的依据

D.用户与开发人员对软件要做什么的共同理解

9.下面属于黑盒测试方法的是()。

A.边界值分析

B.路径覆盖

C.语句覆盖

D.逻辑覆盖

10.下面不属于软件设计阶段任务的是()。

A.制订软件确认测试计划

B.数据库设计

C.软件总体设计

D.算法设计

11.以下叙述中正确的是()。

A.在C语言程序中,main函数必须放在其他函数的最前面

B.每个后缀为C的C语言源程序都可以单独进行编译

C.在C语言程序中,只有main函数才可单独进行编译

D.每个后缀为.C的C语言源程序都应该包含一个main函数

12.C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的是()。

A.预定义标识符(如库函数中的函数名)可用做用户标识符,但失去原有含义

B.用户标识符可以由字母和数字任意顺序组成

C.在标识符中大写字母和小写字母被认为是相同的字符

D.关键字可用做用户标识符,但失去原有含义

13.以下选项中表示一个合法的常量是(说明:符号口表示空格)()。

A.9口9口9

B.0Xab

C.123E0.2

D.2.7e

14.C语言主要是借助以下哪个功能来实现程序模块化?()

A.定义函数

B.定义常量和外部变量

C.三种基本结构语句

D.丰富的数据类型

15.以下叙述中错误的是()。

A.非零的数值型常量有正值和负值的区分

B.常量是在程序运行过程中值不能被改变的量

C.定义符号常量必须用类型名来设定常量的类型

D.用符号名表示的常量叫符号常量

16.若有定义和语句:int a,b;scanf(“%d,%d”,&a,&b);以下选项中的输人数据,不能把值3赋给变量a、5赋给变量b的是()。

A.3,5,B.3,5,4

C.3,5

D.3,5

17.C语言中char类型数据占字节数为()。

A.3

B.4

C.1

D.2

18.下列关系表达式中,结果为“假”的是()。

A.(3+4)>6

B.(3!=4)>2

C.3<=4‖D.(3<4)=1

19.若以下选项中的变量全部为整型变量,且已正确定义并赋值,则语法正确的switch语句是()。

A.switch(a+9)

{case cl:y=a-b;

case c2:y=a+b;

}

B.switch a*b

{case l0:x=a+b;

default:y=a-b;

}

C.switch(a+b)

{casel:case3:y=a+b;break;

case0:case4:y=a-b;

}

D.switch(a*a+b*b)

{default:break;

case 3:y=a+b;break;

case 2:y=a-b;break;

}

20.有以下程序:

#include

main()

{ int a=-2,b=0;

while(a++&&++b);

printf(“%d,%dn”,a,b);

}

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

A.1,3

B.0,2

C.0,3

D.1,2

21.设有定义:int x=o,* P;,立刻执行以下语句,正确的语句是()。

A.p=x;

B.* p=x;

C.D=NULL;

D.* p=NULL;

22.下列叙述中正确的是()。

A.可以用关系运算符比较字符串的大小

B.空字符串不占用内存,其内存空间大小是0

C.两个连续的单引号是合法的字符常量

D.两个连续的双引号是合法的字符串常量

23.有以下程序:

#include

main()

{ rhar a=’H’;

a=(a>=’A’&&a<=’2’)?(a-’A’+’a’):a;

printf(“%cn”,a);

}

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

A.A

B.a

C.H

D.h

24.有以下程序:

#include

int f(int x);

main()

{ int a,b=0;

for(a=0;a<3;a++)

{b=b+f(a);putchar(’A’+b);}

}

int f(int x)

{ return x * xl;}

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

A.ABE B.BDI C.BCF D.BCD

25.设有定义:int x[2][3];,则以下关于二维数组X的叙述错误的是()。

A.x[0]可看做是由3个整型元素组成的一维数组

B.x[0]和x[l]是数组名,分别代表不同的地址常量

C.数组X包含6个元素

D.可以用语句x[o]=0;为数组所有元素赋初值0

26.设变量P是指针变量,语句P=NULL;是给指针变量赋NULL值,它等价于()。

A.p=“";

B.p=”0“;

C.p=0;

D.p=”;

27.有以下程序:

#include

main()

{int a[]={10,20,30,40},*p=a,j;

for(i=0;i<=3;i++){a[i]=*P;p++;}

printf(“oAdn”,a[2]);

}

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

A.30

B.40

C.10

D.20

28.有以下程序:

#include

#define N 3

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

{ int i,j;

for(i=0;i

for(j=i;j

}

main()

{int x[N][N]={1,2,3,4,5,6,7,8,9},y[N],i;

fun(x,y);

for(i=0;i

}

程序运行后的输出结果是(,)。

A.2,4,8,B.3,6,9,C.3,5,7,D.1,3,5,29.有以下程序(strcpy为字符串复制函数,strcat为字符串连接函数):

#include

#include

main()

{char a[10]=“abc”,b[10]=“012”,c[10]=“xyz”;

strcpy(a+1,b+2);

puts(strcat(a,c+1));

}

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

A.al2xyz

B.12yz

C.a2yz

D.bc2yz

30.以下选项中,合法的是()。

A.char str3[]={’d’,’e’,’b’,’u’,’g’,’’};

B.char str4;str4=“hello world”;

C.char name[10];name=“china”;

D.char strl[5]=“pass”,str2[6];str2=strl;

31.有以下程序:

#include

main()

{ char*s=“[2]34”;int k=0,a=0;

whil(s[k+1]!=’o’)

{ k++;

if(k%2=o){a=a+(s[k]-’0’+1);continue;}

a=a+(s[k]-’0’);

printf(“k=%d a=%dn”,k,a);

}

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

A.k=6 a=11

B.k=3 a=14

C.k=4 a=12

D.k=5 a=15

32.有以下程序:

#include

main()

{char a[5][10]={“one”,“tw0”,“three”,“four”,“five”};

int i,j;

char t:、for(i=0;i<4;i++)

for(j=i+1;j<5;j++)

if(a[i][O]>a[j][0])

{t=a[i][O];a[i][O]=a[j][O];a[j][O]=t;)

puts(a[1]);

}

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

A.fwo

B.fix

C.two

D.owo

33.有以下程序:

#include

int a=1,b=2:

void funl(int a,int b)

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

void fun2()

{ a=3;b=4;}

main()

{ funl(5,6);fun2();

printf(“%d%dn”,a,b);

}

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

A.1 2 5 6

B.5 6 3 4

C.5 6 1 2

D.3 4 5 6

34.有以下程序:

#include

void func(int n)

{ static int num=1);

num=num+n;printf(“%d”,num);

}

main()

{funo(3);func(4);printf(“n”);}

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

A.4 8

B.3 4

C.3 5

D.4 5

35.有以下程序:

#include

#include void fun(int*pl,int*p2,int*s){ s=(int*)malloc(sizeof(int));

*s=*pl+*p2;

free(s);

}

main()

{int a=1,b=40,*q=&a;

fun(&a,&b,q);

printf(“%dn”,*q);

}

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

A.42

B.0

C.1

D.41

36.有以下程序:

#include

struct STU{char name[9];char sex;int score[2];};

void f(struct STU a[])

{ struct STU b={“Zhao”,’m’,85,90);

a[1]=b;

}

main()

{struct STU c[2]={{“Qian”,’f’,95,92},{“Sun”,’m’ 98,99}};

f(c);

printf(”%s,%c,%d,%d,¨,c[o].name,c[o].sex,c[o].score[o],c[o].score[1]);

printf(“%s,%c,%d,%dn”,c[1].name,c[1].sex,c[1].score[o],c[1].score

[1]);

}

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

A.Zhao,m,85,90,Sun,m,98,99

B.Zhao,m,85,90,Qian,f,95,92

C.Qian,f,95,92,Sun,m,98,99

D.Qian,f,95,92,Zhao,m,85,90

37.以下叙述中错误的是()。

A.可以用typedef说明的新类型名来定义变量

B.typedef说明的新类型名必须使用大写字母,否则会出编译错误

C.用typedef可以为基本数据类型说明一个新名称

D.用typedef说明新类型的作用是用一个新的标识符来代表已存在的类型名

38.以下叙述中错误的是()。

A.函数的返回值类型不能是结构体类型,只能是简单类型

B.函数可以返回指向结构体变量的指针

C.可以通过指向结构体变量的指针访问所指结构体变量的任何成员

D.只要类型相同,结构体变量之间可以整体赋值

39.若有定义语句int b=2;,则表达式(b<<2)/(3‖b)的值是()。

A.4

B.8

C.0

D.2

40.有以下程序:

#include

main()

{ FILE*fp;int i,a[6]={1,2,3,4,5,6};

fp=fopen(“d2.dat”,“w+”);

for=(i=o;i<6;,i++)fpintf(fp,“%dn”,a[i]);

rewind(fp);

for(i=0;i%6;i++)fscanf(fp,“%d”,&a[5-i]);

fclose(fp);

for(i=0;i%6;i++)printf(“%d,”,a[i]);

}

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

A.4,5,6,1,2,3,B.1,2,3,3,2,1,C.1,2,3,4,5,6,D.6,5,4,3,2,1,二、基本操作题(共18分)

str是一个由数字和字母字符组成的字符串,由变量num传人字符串长度。请补充函数proc(),该函数的功能是:把字符串str中的数字字符转换成数字并存放到整型数组bb中,函数返回数组bb的长度。

例如,str=“abcl23de45f967”,结果为:l234567。

注意:部分源程序给出如下。

请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。

试题程序:

#include

#define M 80

int bb[M];

int proc(char str[],int bb[],int num)

{

int i,n=0;

for(i=0;i

if(【1】)

{

bb[n]=【2】;

n++;

}

}

return 【3】;

}

void main()

{

char str[M];

int num=0,n,i;

printf(“Enter a string:n”);

gets(str);

while(str[num])

num++:

n=proc(str,bb,num);

printf(“nbb=”);

for(i=0;i

}

三、程序改错题(共24分)

下列给定程序中,函数proc()的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCIl码升序排序后输出。

例如,输入opdye,则应输出deopy。

请修改程序中的错误,使它能得到正确结果。

注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include%string.h>

#include%stdlib.h>

#include

#include

//****found****

int proc(char str[])

{

char C;

unsigned i,j;

for(i=0;i

{

c=str[j]:

//****found****

str[j]=str[i++];

str[i]=C;

}

}

void main()

{

char st/[81];

system(“CLS”);

printf(“nPlease enter a character

string:”);

gets(str);

printf(“nknBefore sorting:n %s”,str);

proc(str);

printf(“nAfter sorting decendingly:n

%S”,str);

}

四、程序设计题(共18分)

请编写函数proc(),它的功能是计算:s=(In(1)4+ln(2)4+ln(3)+…+In(m))0.在C语言中可调用log(n)函数求ln(n)。

例如,若m的值为30,则proc()函数值为8.640500。

注意:部分源程序给出如下。

请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填人所编写的若干语句。

试题程序:

#include

#include

#inclllde

#include

double proc(int m)

{

}

void main()

{

system(“CLS”);

printf(“%fn”,proc(30));

}

【参考答案及专家详解】

一、选择题

1.B。【解析】Q(1:35)则队列的存储空间为35;对空条件:front=rear(初始化时:front=rear),队满时:(rear+1)%n= =front,n为队列长度(所用数组大小),因此当执行一系列的出队与入队操作,front=rear.则队列要么为空,要么为满。

2.B。【解析】栈是先进后出,因此,栈底元素是先入栈的元素,栈顶元素是后入栈的元素。

3.C。【解析】数据的逻辑结构是描述数据之间的关系,分两大类:线性结构和非线性结构。线性结构是n个数据元素的有序(次序)集合,指的是数据元素之间存在着“一对一”的线性关系的数据结构。常用的线性结构有:线性表,栈,队列,双队列,数组,串。非线性结构的逻辑特征是一个结点元素可能对应多个直接前驱和多个后驱。常见的非线性结构有:树(二叉树等),图(网等),广义表。

4.D。【解析】单一的数据结构——关系,现实世界的实体以及实体间的各种联系均用关系来表示。数据的逻辑结构——二维表,从用户角度,关系模型中数据的逻辑结构是一张二维表。但是关系模型的这种简单的数据结构能够表达丰富的语义,描述出现实世界的实体以及实体间的各种关系。

5.A。【解析】部门到职员是一对多的,职员到部门是多对一的,因此,实体部门和职员间的联系是l:m联系。

6.C。【解析】选择:是在数据表中给予一定的条件进行筛选数据。投影:是把表中的某几个属性的数据选择出来。连接:有自然连接、外连接,内连接等,连接主要用于多表之间的数据查询。并:与数学中的并是一样的。两张表进行并操作,要求它们的属性个数相同并且需要相容。

7.C。【解析】数据字典(DD)是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明。

8.B。【解析】《软件可行性分析报告》是软件可行性研究的依据。

9.A。【解析】黑盒测试方法主要有等价类划分、边界值分析、因果图、错误推测等。白盒测试的主要方法有逻辑驱动、路径测试等,主要用于软件验证。

10.A。【解析】软件设计阶段的主要任务包括丙个:一是进行软件系统的可行性分析,确定软件系统的建设是否值得,能否建成。二是进行软件的系统分析,了解用户的需求,定义应用功能,详细估算开发成本和开发周期。

11.B。【解析】C语言是一种成功的系统描述语言,具有良好的移植性,每个后缀为.C的C语言源程序都可以单独进行编译。

12.A。【解析】用户标识符不能以数字开头,C语言中标识符是区分大小写的,关键字不能用做用户标识符。

13.B。【解析】当用指数形式表示浮点数据时,E的前后都要有数据,并且E的后面数要为整数。

14.A。【解析】C语言是由函数组成的,函数是C语言的基本单位。所以可以说C语言主要是借助定义函数来实现程序模块化。

15.C。【解析】在C语言中,可以用一个标识符来表示一个常量,称之为符号常量。符号常量在使用之前必须先定义,其一般形式为:#define标识符常量。

16.C。【解析】在输入3和5之间除逗号外不能有其他字符。

17.C。【解析】Char类型数据占1个字节。

18.B。【解析】在一个表达式中,括号的优先级高,先计算3!=4,为真即是l,1>2为假。

19.D。【解析】选项A,当cl和c2相等时,不成立;选项B,a*b要用括号括起来;选项C,case与后面的数字用空格隔开。

20.D。【解析】输出的结果是:-1,1 0,2 1,2

21.C。【解析】如果没有把P指向一个指定的值,*P是不能被赋值的。定义指针变量不赋初始值时默认为null。

22.D。【解析】比较两个字符串大小用函数strcomp(S,t),空字符串有结束符,所以也要占用字节,两个双引号表示的是空字符串。

23.D。【解析】多元运算符问号前面表达式为真,所以(a-’A’+’a’)赋值给a,括号里的运算是把大写字母变成小写字母,所以答案应为选项D。

24.B。【解析】第一次循环时,b=1,输出结果为B;

第二次循环时,b=3,输出结果为D;

第三次循环时,b=8,输出结果为I。

25.D。【解析】x[0]是不能赋值的。

26.C。【解析】在C语言中null等价于数字0。

27.A。【解析】For循环结束后,数组a的值并没有变化,由于数组是由0开始,所以a[2]的值是30。

28.B。【解析】Fun函数功能是把数组a的每一行的最大值赋给b,a的第一行的最大值是3,第二行的最大值是6,第三行的最大值是9,所以答案是3,6,9。

29.C。【解析】第一次执行字符串的复制函数a的值是a2,第二次执行的是字符串的连接函数,所以运行结果为a2yz。

30.A。【解析】选项B不能把一个字符串赋值给一个字符变量,选项c和D犯了同样的错误是把字符串赋给了数组名。

31.C。【解析】输出结果:k=1 a=2

k=2 a=4 k=3 a=7

k=4 a=12

32.A。【解析】For循环完成的功能是把二维数组a的第一列的字母按从小到大排序,其他列的字母不变。

33.B。【解析】Funl是输出局部变量的值,fun2是把全局变量的值改成3和4,所以输出的结果是5634。

34.A。【解析】第一调用func函数时输出4,第二次调用func函数时num的值并不会释放,仍然是上次修改后的值4,第二次调用结果为8,所以输出结果是4 8。

35.C。【解析】Fun函数功能是新开辟内存空间存放a和b的地址,q的地址并没有变化,所以应该还是指向地址a。

36.D。【解析】F函数是为结构体数组的第二个数赋值,数组的第一个数没有变化,所以正确答案应选D。

37.B。【解析】用typedef说明的类型不是必须用大写,而是习惯上用大写。

38.A。【解析】函数返回值类型可以是简单类型和结构体类型。

39.B。【解析】2的二进制数为010,移两位后的二进制数为01000,转成十制数为8,(3||2)为真即1,8/ 1=8,所以结果为8。

40.D。【解析】这个是对文件的操作,把数组的数写到文件里,然后再从文件里倒序读出。所以输出结果为6,5,4,3,2,1。

二、基本操作题程序填空题

【1】str[i]>=’0’&&str[i]<=’9’【2】str[i]-’O’【3】n

【解析】题目中要求把字符串str中的数字字符转换成数字并存放到整型数组bb中。首先,应判断字符串str中每个字符是否是数字字符。因此,【1】处填“str[i]>=’0’&&str[i]<=’9’”将每一个数字字符转化为数字放在整型数组bb中,因此,【2】处填“str[i]-’0’;由函数proc()可知,变量n中存放整型数组bb中的元素个数,最后要返回到主函数当中,因此,【3】处填’n’。

三、程序改错题

(1)错误:int proc(char str[])

正确:void proc(char str[])

(2)错误:str[j]=str[i++];

正确:str[j]=str[i];

【解析】由主函数中的函数调用可知,函数proc()没有返回值。因此,“int proc(char str[])”应改为“void proc(char str[])”;由函数proc()可知,if语句块完成将字符串str中的第i个元素与第j个元素相交换。因此,“str[j]=str[i++];”应改为“str[j]=str[i];”。

四、程序设计题

double proc(int m)

{

int i;

double s=0.0;//s是表示其和

for(i=1;i<=m;i++)

s=s+log(i);//计算s=ln(1)+ln(2)+ln(3)+…+ln(m)

return sqrt(s);//最后将其开平方的值返回到主函数中

}

【解析】由题目中所给表达式可知,表达式的值为m项表达式的和然后开平方。可以首先通过m次循环求得m项表达式的和,然后将其和开平方并返回到主函数当中。

第二篇:计算机二级c语言试题及答案

计算机二级考试是全国计算机等级考试(National Computer Rank Examination,简称NCRE)四个等级中的一个等级,考核计算机基础知识和使用一种高级计算机语言编写程序以及上机调试的基本技能。计算机二级考试采用全国统一命题、统一考试的形式。那么计算机二级c语言会怎么考?以下仅供参考!

1.(A)是构成C语言程序的基本单位。

A、函数

B、过程

C、子程序

D、子例程

2.C语言程序从 C 开始执行。

A、程序中第一条可执行语句

B、程序中第一个函数

C、程序中的main函数

D、包含文件中的第一个函数

3、以下说法中正确的是(C)。

A、C语言程序总是从第一个定义的函数开始执行

B、在C语言程序中,要调用的函数必须在main()函数中定义

C、C语言程序总是从main()函数开始执行

D、C语言程序中的main()函数必须放在程序的开始部分

4.下列关于C语言的说法错误的是(B)。

A、C程序的工作过程是编辑、编译、连接、运行

B、C语言不区分大小写。

C、C程序的三种基本结构是顺序、选择、循环

D、C程序从main函数开始执行

5.下列正确的标识符是(C)。

A、-a

1B、a[i]

C、a2_i

D、int t

5~8题为相同类型题

考点:标识符的命名规则

只能由字母、数字、下划线构成数字不能作为标识符的开头

关键字不能作为标识符

选项A中的“-”,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3)

6.下列C语言用户标识符中合法的是(B)。

A、3ax

B、x

C、case

D、-e2 E)union

选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1);

7.下列四组选项中,正确的C语言标识符是(C)。

A、%x

B、a+b

C、a12

3D、12

3选项A中的“%”,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2)

8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。

A、print _3d db8 aBc

B、Iam one_half start$it 3pai

C、str_1 Cpp pow while

D、Pxq My->book line# His.age

选项B中的“”,”$”,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键字,不满足(3)

9.C语言中的简单数据类型包括(D)。

A、整型、实型、逻辑型

B、整型、实型、逻辑型、字符型

C、整型、字符型、逻辑型

D、整型、实型、字符型

10.在C语言程序中,表达式5%2的结果是 C。

A、2.5B、2C、1D、3%为求余运算符,该运算符只能对整型数据进行运算。且符号与被模数相同。5%2=1;5%(-2)=1;(-5)%2=-1;(-5)%(-2)=-1;

/为求商运算符,该运算符能够对整型、字符、浮点等类型的数据进行运算,5/2=

211.如果int a=3,b=4;则条件表达式"aA、3B、4C、0

D、1详见教材P97.表达式1?表达式2:表达式

3先计算表达式1,若表达式1成立,则选择计算表达式2,并表达式2的值作为整个大表达式的值;

若表达式1不成立,则选择计算表达式3,并将表达式3的值作为整个大表达式的值

此题中的aa为3,b为4。a12.若int x=2,y=3,z=4 则表达式x

A、4B、3C、2D、0

E)

113.C语言中,关系表达式和逻辑表达式的值是(B)。

A、0

B、0或

1C、1D、‘T’或’F’

14.下面(D)表达式的值为4.A、11/

3B、11.0/

3C、(float)11/

3D、(int)(11.0/3+0.5)

14~16题为同一类型

详见教材P54~56.(1)相同数据类型的元素进行数学运算(+、-、*、/)得到结果还保持原数据类型。

(2)不同数据类型的元素进行数学运算,先要统一数据类型,统一的标准是低精度类型转换为高精度的数据类型。

选项A,11与3为两个整数,11/3结果的数据类型也应为整数,因此将3.666666的小数部分全部舍掉,仅保留整数,因此11/3=3.选项B,11.0为实数,3为整数,因此首先要统一数据类型,将整型数据3转换为3.0,转换后数据类型统一为实型数据,选项B变为11.0/3.0,结果的数据类型也应为实型数据,因此选项B 11.0/3=3.666666

选项C,先将整数11强制类型转换,转换为实型11.0,因此选项C变为11.0/3,其后计算过程、结果与选项B同

选项D,首先计算11.0/3,其计算过程、结果与选项B同,得到3.666666;再计算3.666666+0.5=4.166666,最后将4.166666强制类型转换为整型,即将其小数部分全部舍掉,结果为

415.设整型变量 a=2,则执行下列语句后,浮点型变量b的值不为0.5的是(B)

A、b=1.0/a

B、b=(float)(1/A、C、b=1/(float)a

D、b=1/(a*1.0)

16.若“int n;float f=13.8;”,则执行“n=(int)f%3”后,n的值是(A)

A、1B、4C、4.33333

3D、4.6

“(int)f“表示将f中的值强制类型转换为整型,即将13.8的小数部分舍掉,转换为13;然后计算13%3,结果为1,再将结果赋给变量n,因此n的值为

117.以下对一维数组a的正确说明是: D

A、char a(10);

B、int a[];

C、int k=5,a[k];

D、char a[3]={‘a’,’b’,’c’};

详见教材P143~144,一维数组的定义、初始化

类型符 数组名 [常量表达式]

类型符是指数组中数组元素的类型;数组名要符合标识符命名规则;常量表达式是指数组的长度(数组中包含元素的个数),其值只能是整数,不可以是变量,而且从1开始计数。

选项A,常量表达式只能放在中括号 [ ]中

选项B,只有在对数组初始化(即赋值)的时候才可以省略数组的长度,B中并未对a进行初始化。

选项C,常量表达式不能为变量。

18.以下能对一维数组a进行初始化的语句是:(C)

A、int a[5]=(0,1,2,3,4,)

B、inta(5)={}

C、int a[3]={0,1,2}

D、int a{5}={10*1}

详见教材P145,一维数组的定义、初始化

选项B,D,常量表达式只能放在中括号 [ ]中

选项A,数组可以看做是若干个相同数据类型元素的有序集合,因此以集合的形式对其初始化,使用{ }对其初始化,选项A用了().19.在C语言中对一维整型数组的正确定义为 D。

A、int a(10);

B、int n=10,a[n];

C、int n;a[n];

D、#define N 10

int a[N];

20、已知:int a[10];则对a数组元素的正确引用是(D)。

A、a[10]

B、a[3.5]

C、a(5)

D、a[0]

详见教材P144,数组元素的引用

数组名[下标]

引用数组元素时,[ ]中的下标为逻辑地址下标,只能为整数,可以为变量,且从0开始计数

int a[10]表示定义了一个包含10个整型数据的数组a,数组元素的逻辑地址下标范围为0~9,即a[0] 表示组中第1个元素;a[1] 表示组中第2个元素;a[2] 表示组中第3个元素;......;a[9] 表示组中第10个元素.选项A,超过了数组a的逻辑地址下标范围;

选项B,逻辑地址下标只能为整数

选项C,逻辑地址下标只能放在[ ]中

21.若有以下数组说明,则i=10;a[a[i]]元素数值是(C)。

int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};

A、10

B、9

C、6

D、5先算a[a[i]]内层的a[i],由于i=10,因此a[i]即a[10].a[10]对应下面数组中的元素为9.因此a[a[i]]即为a[9]

a[9]对应下面数组中的元素为6.因此a[9]即为6

22.若有说明:int a[][3]={{1,2,3},{4,5},{6,7}};则数组a的第一维的大小为:(B)

A、2B、3C、4D、无确定值7

D、3 6 9

二维数组的一维大小,即指二维数组的行数,在本题中,按行对二维数组赋值,因此内层有几个大括号,数组就有几行

23.对二维数组的正确定义是(C)

详见教材P149~152,二维数组的定义、初始化

类型符 数组名 [常量表达式][常量表达式]

二维数组可以看做是矩阵

类型符是指数组中数组元素的类型;数组名要符合标识符命名规则;第一个常量表达式是指数组的行数;第二个常量表达式是指数组的列数;常量表达式的值只能是整数,不可以是变量,而且从1开始计数。

一维数组初始化时可以省略数组长度

二维数组初始化时可以省略行数,但不能省略列数

选项A,B,都省略了列数

选项D,不符合二维数组定义的一般形式,行、列常量表达式应该放在不同的[]中

A、int a[ ][ ]={1,2,3,4,5,6};

B、int a[2] []={1,2,3,4,5,6};

C、int a[ ] [3]={1,2,3,4,5,6};

D、int a[2,3]={1,2,3,4,5,6};

24.已知int a[3][4];则对数组元素引用正确的是__C___

A、a[2][4]

B、a[1,3]

C、a[2][0]

D、a(2)(1)

详见教材P150,数组元素的引用

数组名[下标] [下标]

引用数组元素时,[ ]中的下标为逻辑地址下标,只能为整数,可以为变量,且从0开始计数

第一个[下标]表示行逻辑地址下标,第二个[下标]表示列逻辑地址下标。

本题图示详见P149图6.7

因此a的行逻辑地址范围0~2;a的列逻辑地址范围0~3;

选项A,列逻辑地址下标超过范围

选项B,D,的引用形式不正确。

25.C语言中函数返回值的类型是由 A 决定的.A、函数定义时指定的类型

B、return语句中的表达式类型

C、调用该函数时的实参的数据类型

D、形参的数据类型

26.在C语言中,函数的数据类型是指(A)

A、函数返回值的数据类型

B、函数形参的数据类型

C、调用该函数时的实参的数据类型

D、任意指定的数据类型

27.在函数调用时,以下说法正确的是(B)

A、函数调用后必须带回返回值

B、实际参数和形式参数可以同名

C、函数间的数据传递不可以使用全局变量

D、主调函数和被调函数总是在同一个文件里

28.在C语言中,表示静态存储类别的关键字是:(C)

A、auto

B、register

C、static

D、extern

29.未指定存储类别的变量,其隐含的存储类别为(A)。

A、auto

B、static

C、extern

D、register

30.若有以下说明语句:

struct student

{ int num;

char name[ ];

float score;

}stu;

则下面的叙述不正确的是:(D)

A、struct是结构体类型的关键字

B、struct student 是用户定义的结构体类型

C、num, score都是结构体成员名

D、stu是用户定义的结构体类型名

31.若有以下说明语句:

struct date

{ int year;

int month;

int day;

}brithday;

则下面的叙述不正确的是__C___.A、struct是声明结构体类型时用的关键字

B、struct date 是用户定义的结构体类型名

C、brithday是用户定义的结构体类型名

D、year,day 都是结构体成员名

32.以下对结构变量stul中成员age的非法引用是 B

struct student

{ int age;

int num;

}stu1,*p;

p=&stu1;

A、stu1.age

B、student.age

C、p->age

D、(*p).age

33.设有如下定义:

struck sk

{ int a;

float b;

}data;

int *p;

若要使P指向data中的a域,正确的赋值语句是 C

A、p=&a;

B、p=datA、a;

C、p=&datA、a;

D、*p=datA、a;

34.设有以下说明语句:

typedef struct stu

{ int a;

float b;

} stutype;

则下面叙述中错误的是(D)。

A、struct是结构类型的关键字

B、struct stu是用户定义的结构类型

C、a和b都是结构成员名

D、stutype是用户定义的结构体变量名

35.语句int *p;说明了 C。

A、p是指向一维数组的指针

B、p是指向函数的指针,该函数返回一int型数据

C、p是指向int型数据的指针 // 指针的定义教材P22

3D、p是函数名,该函数返回一指向int型数据的指针

36.下列不正确的定义是(A)。

A、int *p=&i,i;

B、int *p,i;

C.int i,*p=&i;

D、int i,*p;

选项A先定义一个整型指针变量p,然后将变量i的地址赋给p。然而此时还未定义变量i因此编译器无法获得变量i的地址。(A与C对比,选项C先定义变量i,则在内存中为i分配空间,因此i在内存空间的地址就可以确定了;然后再定义p,此时可以为p赋i的地址,C正确)

37.若有说明:int n=2,*p=&n,*q=p,则以下非法的赋值语句是:(D)

A、p=q

B、*p=*q

C、n=*q

D、p=n

p,q同为整型指针变量,二者里面仅能存放整型变量的地址。

选项A,q中为地址,因此可将此地址赋给p

选项B,*p表示p所指向对象n的内容,即一个整数;*q表示q所指向对象的内容,由于在定义q时为其初始化,将p中n的地址给q,因此p中存放n的地址,*q表示q所指向对象n的内容.因此*p=*q 相当于 n=n;

选项C,n=*q 等价于n=n;

选项D,p中只能存放地址,不能将n中的整数值赋给p

38.有语句:int a[10],;则 B 是对指针变量p的正确定义和初始化。

A、int p=*a;

B、int *p=a;

C、int p=&a;

D、int *p=&a;

选项A,a是数组名,不是指针变量名,因此不可用*标注数组名a

选项C,a是数组名,数组名就是地址,无需再用地址符号。而且在定义指针变量p时,应在变量名前加*,标明p是指针变量

选项D,a是数组名,数组名就是地址,无需再用地址符号。

39.若有说明语句“int a[5],*p=a;”,则对数组元素的正确引用是(C)。

A、a[p]

B、p[a]

C、*(p+2)

D、p+

2首先定义一个整型数组a,a的长度为5,然后定义一个指针变量p,并同时对p进行初始化,将数组a的地址赋给p。因此此时p中存放的数组a的首地址,即数组中第一个元素a[0]的地址。

对于数组元素下标的引用(详见p144), 一般形式 数组名[下标] 其中下标为逻辑地址下标,从0开始计数,方括号中的下标可以是变量,可以是表达式,但结果一定要是整数。

选项A,p中存放的是地址,不是整数,不能做数组元素的下标

选项B,a是数组名,数组名就是地址,不是整数,不能做数组元素的下标

选项C,(重点!!详见p231~234)p+2表示指向同一数组中的下两个元素的地址,当前p指向a[0],则p+2表示a[2]的地址,因此*(p+2)表示a[2]的内容

40.有如下程序

int a[10]={1,2,3,4,5,6,7,8,9,10},*P=a;

则数值为9的表达式是 B

A、*P+9

B、*(P+8)

C、*P+=9

D、P+8

(重点!!详见p231~234)

首先定义一个整型数组a,a的长度为5,然后定义一个指针变量P,并同时对P进行初始化,将数组a的地址赋给P。因此此时P中存放的数组a的首地址,即数组中第一个元素a[0]的地址。

数组中9对应的是a[8], 选项B,P+8表示数组中后8个元素的地址,即a[8]的地址。*(P+8)则表示该地址内所存放的内容,即a[8]的值。

选项A,*P表示P所指向对象的内容,此时P指向a[0], *P即a[0]的值1.*P+9=1+9=10

选项C,*P表示P所指向对象的内容,此时P指向a[0], *P即a[0]的值。因此*P+=9 即*P =*P+9, 等价于a[0]=a[0]+9.选项D,P+8表示数组中后8个元素的地址,即a[8]的地址,而非a[8]中的值。

第三篇:计算机二级C语言考试试题及答案

C语言是一门通用计算机编程语言,应用广泛。下面小编整理了计算机二级C语言考试试题及答案,希望对大家有帮助!

1.(A)是构成C语言程序的基本单位。

A、函数

B、过程

C、子程序

D、子例程

2.C语言程序从(C)开始执行。

A、程序中第一条可执行语句

B、程序中第一个函数

C、程序中的main函数

D、包含文件中的第一个函数

3、以下说法中正确的是(C)。

A、C语言程序总是从第一个定义的函数开始执行

B、在C语言程序中,要调用的函数必须在main()函数中定义

C、C语言程序总是从main()函数开始执行

D、C语言程序中的main()函数必须放在程序的开始部分

4.下列关于C语言的说法错误的是(B)。

A、C程序的工作过程是编辑、编译、连接、运行

B、C语言不区分大小写。

C、C程序的三种基本结构是顺序、选择、循环

D、C程序从main函数开始执行

5.下列正确的标识符是(C)。

A、-a

1B、a[i]

C、a2_i

D、int t

5-8题为相同类型题

考点:标识符的命名规则

只能由字母、数字、下划线构成数字不能作为标识符的开头

关键字不能作为标识符

选项A中的“-”,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3)

6.下列C语言用户标识符中合法的是(B)。

A、3ax

B、x

C、case

D、-e2 E)union

选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1);

7.下列四组选项中,正确的C语言标识符是(C)。

A、%x

B、a+b

C、a12

3D、12

3选项A中的“%”,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2)

8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。

A、print _3d db8 aBc

B、Iam one_half start$it 3pai

C、str_1 Cpp pow while

D、Pxq My->book line# His.age

选项B中的“”,”$”,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键字,不满足(3)

9.C语言中的简单数据类型包括(D)。

A、整型、实型、逻辑型

B、整型、实型、逻辑型、字符型

C、整型、字符型、逻辑型

D、整型、实型、字符型

10.在C语言程序中,表达式5%2的结果是 C。

A、2.5B、2C、1D、3%为求余运算符,该运算符只能对整型数据进行运算。且符号与被模数相同。5%2=1;5%(-2)=1;(-5)%2=-1;(-5)%(-2)=-1;

/为求商运算符,该运算符能够对整型、字符、浮点等类型的数据进行运算,5/2=2


第四篇:计算机二级C语言测试题及答案解析

C语言的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,下面给大家整理了计算机二级C语言测试题及答案,欢迎阅读!

计算机二级C语言测试题及答案解析

1.(A)是构成C语言程序的基本单位。

A、函数

B、过程

C、子程序

D、子例程

2.C语言程序从 C 开始执行。

A、程序中第一条可执行语句

B、程序中第一个函数

C、程序中的main函数

D、包含文件中的第一个函数

3、以下说法中正确的是(C)。

A、C语言程序总是从第一个定义的函数开始执行

B、在C语言程序中,要调用的函数必须在main()函数中定义

C、C语言程序总是从main()函数开始执行

D、C语言程序中的main()函数必须放在程序的开始部分

4.下列关于C语言的说法错误的是(B)。

A、C程序的工作过程是编辑、编译、连接、运行

B、C语言不区分大小写。

C、C程序的三种基本结构是顺序、选择、循环

D、C程序从main函数开始执行

5.下列正确的标识符是(C)。

A、-a

1B、a[i]

C、a2_i

D、int t

5~8题为相同类型题

考点:标识符的命名规则

只能由字母、数字、下划线构成数字不能作为标识符的开头

关键字不能作为标识符

选项A中的“-”,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3)

6.下列C语言用户标识符中合法的是(B)。

A、3ax

B、x

C、case

D、-e2 E)union

选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1);

7.下列四组选项中,正确的C语言标识符是(C)。

A、%x

B、a+b

C、a12

3D、12

3选项A中的“%”,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2)

8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。

A、print _3d db8 aBc

B、Iam one_half start$it 3pai

C、str_1 Cpp pow while

D、Pxq My->book line# His.age

选项B中的“”,”$”,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键字,不满足(3)

9.C语言中的简单数据类型包括(D)。

A、整型、实型、逻辑型

B、整型、实型、逻辑型、字符型

C、整型、字符型、逻辑型

D、整型、实型、字符型

10.在C语言程序中,表达式5%2的结果是 C。

A、2.5B、2C、1D、3%为求余运算符,该运算符只能对整型数据进行运算。且符号与被模数相同。5%2=1;5%(-2)=1;(-5)%2=-1;(-5)%(-2)=-1;

/为求商运算符,该运算符能够对整型、字符、浮点等类型的数据进行运算,5/2=

211.如果int a=3,b=4;则条件表达式“aA、3B、4C、0

D、1详见教材P97.表达式1?表达式2:表达式

3先计算表达式1,若表达式1成立,则选择计算表达式2,并表达式2的值作为整个大表达式的值;

若表达式1不成立,则选择计算表达式3,并将表达式3的值作为整个大表达式的值

此题中的aa为3,b为4。a12.若int x=2,y=3,z=4 则表达式x

A、4B、3C、2D、0

E)

113.C语言中,关系表达式和逻辑表达式的值是(B)。

A、0

B、0或

1C、1D、‘T’或’F’

14.下面(D)表达式的值为4.A、11/

3B、11.0/

3C、(float)11/

3D、(int)(11.0/3+0.5)

14~16题为同一类型

详见教材P54~56.(1)相同数据类型的元素进行数学运算(+、-、*、/)得到结果还保持原数据类型。

(2)不同数据类型的元素进行数学运算,先要统一数据类型,统一的标准是低精度类型转换为高精度的数据类型。

选项A,11与3为两个整数,11/3结果的数据类型也应为整数,因此将3.666666的小数部分全部舍掉,仅保留整数,因此11/3=3.选项B,11.0为实数,3为整数,因此首先要统一数据类型,将整型数据3转换为3.0,转换后数据类型统一为实型数据,选项B变为11.0/3.0,结果的数据类型也应为实型数据,因此选项B 11.0/3=3.666666

选项C,先将整数11强制类型转换,转换为实型11.0,因此选项C变为11.0/3,其后计算过程、结果与选项B同

选项D,首先计算11.0/3,其计算过程、结果与选项B同,得到3.666666;再计算3.666666+0.5=4.166666,最后将4.166666强制类型转换为整型,即将其小数部分全部舍掉,结果为

415.设整型变量 a=2,则执行下列语句后,浮点型变量b的值不为0.5的是(B)

A、b=1.0/a

B、b=(float)(1/A、C、b=1/(float)a

D、b=1/(a*1.0)

16.若“int n;float f=13.8;”,则执行“n=(int)f%3”后,n的值是(A)

A、1B、4C、4.33333

3D、4.6

“(int)f“表示将f中的值强制类型转换为整型,即将13.8的小数部分舍掉,转换为13;然后计算13%3,结果为1,再将结果赋给变量n,因此n的值为

117.以下对一维数组a的正确说明是: D

A、char a(10);

B、int a[];

C、int k=5,a[k];

D、char a[3]={‘a’,’b’,’c’};

详见教材P143~144,一维数组的定义、初始化

类型符 数组名 [常量表达式]

类型符是指数组中数组元素的类型;数组名要符合标识符命名规则;常量表达式是指数组的长度(数组中包含元素的个数),其值只能是整数,不可以是变量,而且从1开始计数。

选项A,常量表达式只能放在中括号 [ ]中

选项B,只有在对数组初始化(即赋值)的时候才可以省略数组的长度,B中并未对a进行初始化。

选项C,常量表达式不能为变量。

18.以下能对一维数组a进行初始化的语句是:(C)

A、int a[5]=(0,1,2,3,4,)

B、inta(5)={}

C、int a[3]={0,1,2}

D、int a{5}={10*1}

详见教材P145,一维数组的定义、初始化

选项B,D,常量表达式只能放在中括号 [ ]中

选项A,数组可以看做是若干个相同数据类型元素的有序集合,因此以集合的形式对其初始化,使用{ }对其初始化,选项A用了().19.在C语言中对一维整型数组的正确定义为 D。

A、int a(10);

B、int n=10,a[n];

C、int n;a[n];

D、#define N 10

int a[N];

20、已知:int a[10];则对a数组元素的正确引用是(D)。

A、a[10]

B、a[3.5]

C、a(5)

D、a[0]

详见教材P144,数组元素的引用

数组名[下标]

引用数组元素时,[ ]中的下标为逻辑地址下标,只能为整数,可以为变量,且从0开始计数

int a[10]表示定义了一个包含10个整型数据的数组a,数组元素的逻辑地址下标范围为0~9,即a[0] 表示组中第1个元素;a[1] 表示组中第2个元素;a[2] 表示组中第3个元素;......;a[9] 表示组中第10个元素.选项A,超过了数组a的逻辑地址下标范围;

选项B,逻辑地址下标只能为整数

选项C,逻辑地址下标只能放在[ ]中

21.若有以下数组说明,则i=10;a[a[i]]元素数值是(C)。

int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};

A、10

B、9

C、6

D、5先算a[a[i]]内层的a[i],由于i=10,因此a[i]即a[10].a[10]对应下面数组中的元素为9.因此a[a[i]]即为a[9]

a[9]对应下面数组中的元素为6.因此a[9]即为6

22.若有说明:int a[][3]={{1,2,3},{4,5},{6,7}};则数组a的第一维的大小为:(B)

A、2B、3C、4D、无确定值7

D、3 6 9

二维数组的一维大小,即指二维数组的行数,在本题中,按行对二维数组赋值,因此内层有几个大括号,数组就有几行

23.对二维数组的正确定义是(C)

详见教材P149~152,二维数组的定义、初始化

类型符 数组名 [常量表达式][常量表达式]

二维数组可以看做是矩阵

类型符是指数组中数组元素的类型;数组名要符合标识符命名规则;第一个常量表达式是指数组的行数;第二个常量表达式是指数组的列数;常量表达式的值只能是整数,不可以是变量,而且从1开始计数。

一维数组初始化时可以省略数组长度

二维数组初始化时可以省略行数,但不能省略列数

选项A,B,都省略了列数

选项D,不符合二维数组定义的一般形式,行、列常量表达式应该放在不同的[]中

A、int a[ ][ ]={1,2,3,4,5,6};

B、int a[2] []={1,2,3,4,5,6};

C、int a[ ] [3]={1,2,3,4,5,6};

D、int a[2,3]={1,2,3,4,5,6};

24.已知int a[3][4];则对数组元素引用正确的是__C___

A、a[2][4]

B、a[1,3]

C、a[2][0]

D、a(2)(1)

详见教材P150,数组元素的引用

数组名[下标] [下标]

引用数组元素时,[ ]中的下标为逻辑地址下标,只能为整数,可以为变量,且从0开始计数

第一个[下标]表示行逻辑地址下标,第二个[下标]表示列逻辑地址下标。

本题图示详见P149图6.7

因此a的行逻辑地址范围0~2;a的列逻辑地址范围0~3;

选项A,列逻辑地址下标超过范围

选项B,D,的引用形式不正确。

25.C语言中函数返回值的类型是由 A 决定的.A、函数定义时指定的类型

B、return语句中的表达式类型

C、调用该函数时的实参的数据类型

D、形参的数据类型

26.在C语言中,函数的数据类型是指(A)

A、函数返回值的数据类型

B、函数形参的数据类型

C、调用该函数时的实参的数据类型

D、任意指定的数据类型

27.在函数调用时,以下说法正确的是(B)

A、函数调用后必须带回返回值

B、实际参数和形式参数可以同名

C、函数间的数据传递不可以使用全局变量

D、主调函数和被调函数总是在同一个文件里

28.在C语言中,表示静态存储类别的关键字是:(C)

A、auto

B、register

C、static

D、extern

29.未指定存储类别的变量,其隐含的存储类别为(A)。

A、auto

B、static

C、extern

D、register

30.若有以下说明语句:

struct student

{ int num;

char name[ ];

float score;

}stu;

则下面的叙述不正确的是:(D)

A、struct是结构体类型的关键字

B、struct student 是用户定义的结构体类型

C、num, score都是结构体成员名

D、stu是用户定义的结构体类型名

31.若有以下说明语句:

struct date

{ int year;

int month;

int day;

}brithday;

则下面的叙述不正确的是__C___.A、struct是声明结构体类型时用的关键字

B、struct date 是用户定义的结构体类型名

C、brithday是用户定义的结构体类型名

D、year,day 都是结构体成员名

32.以下对结构变量stul中成员age的非法引用是 B

struct student

{ int age;

int num;

}stu1,*p;

p=&stu1;

A、stu1.age

B、student.age

C、p->age

D、(*p).age

33.设有如下定义:

struck sk

{ int a;

float b;

}data;

int *p;

若要使P指向data中的a域,正确的赋值语句是 C

A、p=&a;

B、p=datA、a;

C、p=&datA、a;

D、*p=datA、a;

34.设有以下说明语句:

typedef struct stu

{ int a;

float b;

} stutype;

则下面叙述中错误的是(D)。

A、struct是结构类型的关键字

B、struct stu是用户定义的结构类型

C、a和b都是结构成员名

D、stutype是用户定义的结构体变量名

35.语句int *p;说明了 C。

A、p是指向一维数组的指针

B、p是指向函数的指针,该函数返回一int型数据

C、p是指向int型数据的指针 // 指针的定义教材P22

3D、p是函数名,该函数返回一指向int型数据的指针

36.下列不正确的定义是(A)。

A、int *p=&i,i;

B、int *p,i;

C.int i,*p=&i;

D、int i,*p;

选项A先定义一个整型指针变量p,然后将变量i的地址赋给p。然而此时还未定义变量i因此编译器无法获得变量i的地址。(A与C对比,选项C先定义变量i,则在内存中为i分配空间,因此i在内存空间的地址就可以确定了;然后再定义p,此时可以为p赋i的地址,C正确)

37.若有说明:int n=2,*p=&n,*q=p,则以下非法的赋值语句是:(D)

A、p=q

B、*p=*q

C、n=*q

D、p=n

p,q同为整型指针变量,二者里面仅能存放整型变量的地址。

选项A,q中为地址,因此可将此地址赋给p

选项B,*p表示p所指向对象n的内容,即一个整数;*q表示q所指向对象的内容,由于在定义q时为其初始化,将p中n的地址给q,因此p中存放n的地址,*q表示q所指向对象n的内容.因此*p=*q 相当于 n=n;

选项C,n=*q 等价于n=n;

选项D,p中只能存放地址,不能将n中的整数值赋给p

38.有语句:int a[10],;则 B 是对指针变量p的正确定义和初始化。

A、int p=*a;

B、int *p=a;

C、int p=&a;

D、int *p=&a;

选项A,a是数组名,不是指针变量名,因此不可用*标注数组名a

选项C,a是数组名,数组名就是地址,无需再用地址符号。而且在定义指针变量p时,应在变量名前加*,标明p是指针变量

选项D,a是数组名,数组名就是地址,无需再用地址符号。

39.若有说明语句“int a[5],*p=a;”,则对数组元素的正确引用是(C)。

A、a[p]

B、p[a]

C、*(p+2)

D、p+

2首先定义一个整型数组a,a的长度为5,然后定义一个指针变量p,并同时对p进行初始化,将数组a的地址赋给p。因此此时p中存放的数组a的首地址,即数组中第一个元素a[0]的地址。

对于数组元素下标的引用(详见p144), 一般形式 数组名[下标] 其中下标为逻辑地址下标,从0开始计数,方括号中的下标可以是变量,可以是表达式,但结果一定要是整数。

选项A,p中存放的是地址,不是整数,不能做数组元素的下标

选项B,a是数组名,数组名就是地址,不是整数,不能做数组元素的下标

选项C,(重点!!详见p231~234)p+2表示指向同一数组中的下两个元素的地址,当前p指向a[0],则p+2表示a[2]的地址,因此*(p+2)表示a[2]的内容

40.有如下程序

int a[10]={1,2,3,4,5,6,7,8,9,10},*P=a;

则数值为9的表达式是 B

A、*P+9

B、*(P+8)

C、*P+=9

D、P+8

(重点!!详见p231~234)

首先定义一个整型数组a,a的长度为5,然后定义一个指针变量P,并同时对P进行初始化,将数组a的地址赋给P。因此此时P中存放的数组a的首地址,即数组中第一个元素a[0]的地址。

数组中9对应的是a[8], 选项B,P+8表示数组中后8个元素的地址,即a[8]的地址。*(P+8)则表示该地址内所存放的内容,即a[8]的值。

选项A,*P表示P所指向对象的内容,此时P指向a[0], *P即a[0]的值1.*P+9=1+9=10

选项C,*P表示P所指向对象的内容,此时P指向a[0], *P即a[0]的值。因此*P+=9 即*P =*P+9, 等价于a[0]=a[0]+9.选项D,P+8表示数组中后8个元素的地址,即a[8]的地址,而非a[8]中的值。

41.在C语言中,以 D 作为字符串结束标志

A、’’

B、’ ’

C、’0’

D、’’

42.下列数据中属于“字符串常量”的是(A)。

A、“a”

B、{ABC}

C、‘abc’

D、‘a’

若干个字符构成字符串

在C语言中,用单引号标识字符;用双引号标识字符串

选项B,C,分别用{}和’’标识字符串

选项D,标识字符。

43.已知char x[]=”hello", y[]={'h','e','a','b','e'};, 则关于两个数组长度的正确描述是 B.A、相同

B、x大于y

C、x小于y

D、以上答案都不对

C语言中,字符串后面需要一个结束标志位'',通常系统会自动添加。

对一维数组初始化时可采用字符串的形式(例如本题数组x),也可采用字符集合的形式(例如本题数组y)。在以字符串形式初始化时,数组x不尽要存储字符串中的字符,还要存储字符串后的结束标志位,因此数组x的长度为6;在以字符集合形式初始化时,数组y,仅存储集合中的元素,因此数组y长度为5


第五篇:2018年3月二级C语言上机题库及答案

程序填空题:

给定程序中,函数fun的作用是:

注意:部分源程序在文件BLANK.C中。不得增行或删行,也不得更改程序的结构!

源程序如下

答案:

(1)x[i]<=’9’(2)j++(3)‘’

程序修改题:

给定程序中,函数fun的作用是:已知正整数n(规定n小于50000),统计它包含的0的个数,以及各位上最大的数。最大的数通过函数返回,0的个数通过形参传回。

注意:部分源程序在文件MODI1.C中。

不要改动main函数,不得增行或删行,也不得更改程序的结构!

源程序如下

答案:

t=0改为t==0 zero=count;改为*zero=count;

程序设计题:

请编写一个函数fun,它的功能是:比较一个数组中奇数的个数与偶数的个数,并计算个数多的数的算术平均数。

注意:部分源程序在文件PROG1.C中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

答案:

下载2016年计算机二级c语言题库及答案word格式文档
下载2016年计算机二级c语言题库及答案.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    二级C语言100道经典选择题及答案

    【1.1】以下不正确的C语言标识符是____。A) int B) a_1_2 C) ab1exe D) _x 【1.2】以下是正确的C语言标识符是____。A) #define B) _123 C) %d D) n 【1.3】下列四......

    计算机二级C语言题型和评分标准(合集5篇)

    1、选择题:40题,每题1分。按标答给分 2、程序填空:3处空,每空6分。共18分,按标答给分,如果和标答的写法不一样,就算对的也没有分。每一空有每一空的分数。做对一空就给6分 3、程序......

    计算机二级考试C语言知识点总结

    计算机二级考试C语言知识点总结 (完全针对考试大纲) 概述 总体上必须清楚的: 1)程序结构是三种: 顺序结构 , 循环结构(三个循环结构), 选择结构(if 和 switch) 2)读程序都......

    计算机二级C语言上机题型总结

    全国计算机二级C语言考试上机题型总汇 (一)关于“******”问题 1、将字符串中的前导*号全部删除,中间和后面的*号不删除。 void fun(char *a) { char *p=a; while(*p= =’*’)......

    2018计算机二级C语言考试真题汇总(本站推荐)

    模拟卷1 1 [填空题] 下列给定程序中,函数fun的功能是:在形参S所指字符串中寻找与参数C相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则不做任何处理。 例如,若......

    全国计算机二级c语言成绩查询

    全国计算机二级c语言成绩查询 篇一:2016年全国计算机等级考试二级C语言考试大纲及重点2016年全国计算机等级考试二级C语言考试大纲◆ 基本要求 1.熟悉 Visual C++ 6.0 集成......

    计算机二级C语言测试题含答案(5篇)

    C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。下面小编整理了计算机二级C语言测试题含......

    二级C语言上机题库_南开100题

    工作感受心得 我是体育部的部委李盟,在加入我们学校学生会体育部不久后加入前湖礼仪工作组,担任出礼仪的工作.在我出礼仪工作的工程中,收获很多,体会也很多 ,丰富了我在学生......