二级C语言笔试354
(总分110, 做题时间90分钟)
一、选择题
下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的
下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的
1.
执行以下的程序段后,m的值是______。 int a[2][3]={{1,2,3},{4,5,6}}; int m,*p; P=&a[0][0]; m=p[4];
A 4
B 5
C 3
D 不确定
分值: 2
答案:B
评析;程序中定义了一个指向整型变量的指针变量,并对其赋值为二维整型数组a的首元素的地址。p[4]等价于*(p+4),即二维数组a中第四个元素的值,而a是一个2*3的二维数组,其第四个元素为a[1][1],即5。
2.
以下各选项企图说明—种新的类型名,其中正确的是______。
A typedef vi int;
B typedef V2=int;
C typedef int v3;
D lypedef v4:int
分值: 2
答案:C
[评析] C语言中可以使用typedef来重新定义已有的数据类型,相当于数据类型取个别名。
3.
以下程序运行后的输出结果是______。 int d=1; fun(int p) { static int d=5;d+=p printf("%d,d");retum d; } main() {int a=3;printf("%d\n",fun(a+fun(d) ));}
A 699
B 9
C 61515
D 6615
分值: 2
答案:C
[评析] 静态局部变量在编译时赋初值,即只赋初值—次,在程序运行时它已有初值。以后每次调用时不再重新赋初值而只是保留上次函数调用结束时的值,而对自动变量赋初值,不是在编译时进行的,而在函数调用时进行,每调用—次函数重新给—次初值,相当于执行—次赋值语句。本题在程序开头定义了全局变量d并赋初值1,在被调函数fun()中,定义了静态局部变量d,初值为5。在第—次调用函数fun时,d初值为5,p由主函数传递过来的值为1,则d=d+p=5+1=6,由于d是静态局部变量,在函数调用结束后,它仍保留d=6。再次调用fun函数,d的初值为6,而由主函数传递的p的值为9,则此时d=d+p=6+9=15,最后打印输出d的值并返回主函数。
4.
以下程序的输出结果是______。 main() {int a=3; printf("%d\n",(a+=a-+a*a) ) }
A -6
B 1
C 2
D -12
分值: 2
答案:D
[评析] 赋值运算符的结合方向是自右至左,所以表达式a+=a=a*a先运算最右边的a*a得9,再
运算a=a-9,即a=3-9,所以此时a的值由3变成了-6,最后运算a=a+(-6)=-12。
5.
以下程序的输出结果是______。 main() { int i,a[10]; for(i=9;i>=0;i--)a[i]=1O-i; printf("%d%d%d",a[2],a[5],a[8]); }
A 258
B 741
C 852
D 369
分值: 2
字符串拷贝函数strcpy作用答案:C
[评析] 在本题运行时主要注意的是当i=9时,a[i]=l0-9=1;a[i]=8时,a[i]=10-8=2;i=7时,a[i]=10-7=3;……依此类推,直到i=O时,a[i]=10-0=10;此时,i的值已变为-1,判断for的循环条件,不成立,然后输出a[2],a[5],a[8]分别为8,5,2。
6.
SQL语言又称为______。
A 结构化定义语言
B 结构化控制语言
C 结构化查询语言
D 结构化操纵语言
分值: 2
答案:C
[评析] 结构化查询语言(structured Query Language,简称SQL)是集数据定义、数据操纵和数据控制功能于一体的数据库语言。
7.
以下程序的结果是______。 int a,b; void fun() { a=100;b=200; } main() { int a=5,b=7; fun(); printf("%d%d\n",a,b); }
A 100200
B 57
C 200100
D 75
分值: 2
答案:B
[评析] 全程变量是可以在子函数中对其值作改变,且它也可作为函数间的值传递。但当函数或子函数中定义了与全程变量名称相同的局部变量,则全程变量将被屏蔽。
8.
以下程序的输出结果是______。 main() { int a[4][4]={{1,3,5},{2,4,6},{3,5,7}} printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]); }
A 0650
B 1470
C 5430
D 输出值不定
分值: 2
答案:A
[评析] 对未给出初始值的整数数组元素,被默认初始化为零。
9.
整型变量X和Y的值相等,且为非0值,则以下选项中结果为0的表达式是______。
A X||Y
B X|Y
C X&Y
D X^Y
分值: 2
答案:D
[评析] “||”为或运算符,当其左右表达式中只要—个为非零则整个表达式的值1。|是按位或,&是按位与,^是按位异或,这三位运算符是按值的二进制位来比较的。
10.
以下程序的输出结果是______。 #include<stdio.h> main() { int a=200; #define a 100 printf("%d",a); #undef a printf("%d",a); }
A 200 100
B 100 100
C 100 200
D 200 200
分值: 2
答案:C
[评析] #define宏名的有效范围为定义命令之后到本源文件结束,可以在程序中使用#undef命令终止宏定义的作用域。本题由#undef的作用,使a的作用范围在#define a 100到#undef a之间,故答案为C
11.
在数据流图(DFD) 中,带有名字的箭头表示______。
A 控制程序的执行顺序
B 模块之间的调用关系
C 数据的流向
D 程序的组成成分
分值: 2
答案:C
[评析] 在数据流图中,用标有名字的箭头表示数据流。数据流可以从加工流向加工,也可以从加工流向文件或从文件流向加工,并且可以从外部实体流向系统或从系统流向外部实体。
12.
若有以下说明和语句: struct st{int n;char*ch;} struct st a[3]={5,"abc"7,"def",9",ghk"),*p=a; 则值为6的表达式是______。
A p++->n
B p->n++
C (*.n++
D ++P>n
分值: 2
答案:D
[评析] 根据结构变量的存储特点,p+l意味着增加地址值为结构体数组a的—个元素所占的字节数,即P++使p由a[0]指向a[1]起始地址。本题++p->n得到p指向的结构体变量中成员n的值使之加1。因为p指向数组a起始地址,p->n的值为5,再执行自加l运行,结果为6。
13.
在说明语句int*f()中,标识符f代表的是______。
A —个用于指向整型数据的指针变量
B —个用于指向一维数组的行指针
C —个用于指向函数的指针变量
D 一个返回值为指针型的函数名
分值: 2
答案:D
[评析] 返回指针值的函数,其—般定义形式为:类型标识符 *函数名(参数表);
例如:int*f(x,y); 其中,f是函数名,调用它以后能得到—个指向整型数据的指针(地址),x,y是函数f的形参。在f的两侧为别为*运算符和()运算符,而()优先级高于*,因此f先与()结合,显然是函数形式。这个函数前面有一个*,表示此函数是指针型函数(函数值是指针)。前面的int表示返回的指针指向整型变量。
14.
设x为int型变量,执行以下语句,x=10;x+=x-=x-x;x的值为______。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论