二级C语言分类模拟题546
(总分65, 做题时间90分钟)
选择题
1.
有以下程序
#include<stdio.h>
struct S
{int a,b;}data[2]={10,100,20,200};
main()
{ struct S p=data[1];
printf("%d\n",++(p.a));
}
程序运行后的输出结果是______。
#include<stdio.h>
struct S
{int a,b;}data[2]={10,100,20,200};
main()
{ struct S p=data[1];
printf("%d\n",++(p.a));
}
程序运行后的输出结果是______。
A 21
B 11
C 20
D 10
分值: 2
答案:A
[解析] 声明 data 是结构体型S的数组。初始化时data[0].a=10; data[0].b=100;data[1].a=20;data[1].b=200。主函数中p=data[1] ; 即p.a=data[1].a;p.b=data[1].b;执行语句printf("%dn",++(p.a)); 打印输出时 p.a 先增1再打印。即p.a = data[1].a=20,先增1等于21,因此程序运行结果是21。
2.
有以下程序(说明:字母A的ASCII码值是65):
#include<stdio.h>
void fun(char*s)
{ while(*s)
{ if(*s%2)printf("%c",*s);
s++;
}
}
main()
{ char a()="BYTE";
fun(a);
printf("\n");
}
程序运行后的输出结果是______。
#include<stdio.h>
void fun(char*s)
{ while(*s)
{ if(*s%2)printf("%c",*s);
s++;
}
}
main()
{ char a()="BYTE";
fun(a);
printf("\n");
}
程序运行后的输出结果是______。
A BT
B YE
C YT
D BY
分值: 1
答案:B
[解析] 本题中执行fun(a)时,会取字符串a的第一个字母B,因为字母B的ASCII码值为66,所以不会输出字母B,函数只会输出ASCII码值为奇数的字母,字母Y的ASClI码值为89,字母T的ASCII码值为84,字母E的ASCII码值为69,因此B选项正确。
3.
可在C程序中用作用户标识符的一组标识符是______。
A void define WORD
B as_b3 _123 If
C For —abc case
编写c语言的软件D 2c DO SIG
分值: 2
答案:B
4.
下面for语句的循环次数为______。
for(x=1, y=0; (y!=19)&&(x<6); x++);
for(x=1, y=0; (y!=19)&&(x<6); x++);
A 是无限循环
B 循环次数不定
C 最多执行6次
D 最多执行5次
分值: 2.5
答案:D
[解析] 本题考查for循环的使用。根据条件考虑x的取值变化,x从1取到5,可以循环5次,但并不知道y如何变化,有可能出现y=19提前跳出循环的情况,所以最多执行5次。
5.
下面描述中,不属于软件危机表现的是______。
A 软件过程不规范
B 软件开发生产率低
C 软件质量难以控制
D 软件成本不断提高
分值: 1.5
答案:A
[解析] 软件危机主要表现在:软件需求的增长得不到满足;软件开发成本和进度无法控制;软件质量难以保证;软件不可维护或维护程度非常低;软件的成本不断提高;软件开发生产率的提高赶不上硬件的发展和应用需求的增长。因此本题答案为A。
6.
下列叙述中正确的是______。
A 对长度为n的有序链表进行查,最坏情况下需要的比较次数为n
B 对长度为n的有序链表进行对分查,最坏情况下需要的比较次数为(n/2)
C 对长度为n的有序链表进行对分查,最坏情况下需要的比较次数为(log2n)
D 对长度为n的有序链表进行对分查,最坏情况下需要的比较次数为(nlog2n)
分值: 1
答案:C
[解析] 二分法查只适用于顺序存储的有序表,对于长度为n的有序线性表,最坏情况只需比较log 2 n次。
7.
以下选项中不能用作C程序合法常量的是______。
A 1,234
B \123
C 123
D "\x7G"
分值: 2
答案:A
[解析] 选项A中的1,234在两侧加双引号才是C程序的合法常量。
8.
若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是______。
A 函数的实参和其对应的形参共占同一存储单元
B 形参只是形式上的存在,不占用具体存储单元
C 同名的实参和形参占同一存储单元
D 函数的形参和实参分别占用不同的存储单元
分值: 2.5
答案:D
[解析] 在C语言中,函数的实参单元与形参单元在内存中分配不同的存储单元。
9.
对关系S和关系R进行集合运算,结果中既包含关系S中的所有元组也包含关系R中的所有元组,这样的集合运算称为______。
A 并运算
B 交运算
C 差运算
D 除运算
分值: 2.5
答案:A
[解析] 关系的并运算是指,由结构相同的两个关系合并,形成一个新的关系,其中包含两个关系中的所有元组。
10.
有以下程序
#include<stdio.h>
#include<stdio.h>
main()
{
int i,j,x=0;
for(i=0;i<2;i++)
{
x++;
for(j=0;j<=3;j++)
{
if(j%2)continue;
x++;
}
x++;
}
printf("x=%d\n",x);
}
程序执行后的输出结果是______。
{
int i,j,x=0;
for(i=0;i<2;i++)
{
x++;
for(j=0;j<=3;j++)
{
if(j%2)continue;
x++;
}
x++;
}
printf("x=%d\n",x);
}
程序执行后的输出结果是______。
A x=8
B x=4
C x=6
D x=12
分值: 2
答案:A
[解析] 本题考查的是for循环的嵌套。外循环的循环变量i从0递增到1会循环2次,内循环的循环变量j从0递增到3会循环4次。但是内循环中有一条if语句,每当j%2为真,即j为奇数时会跳过下面的x++;语句,所以4次内循环只有2次执行到x++;语句,再加上外循环中包含的2条x++;语句,所以每次外循环会使x自增4次,2次外循环下来x的值为8。故应该选择A。
11.
设有条件表达式:(EXP)?i++;j-,则以下表达式中(EXP)完全等价的是______。
A (EXP==0)
B (EXP!=0)
C (EXP==1)
D (EXP!=1)
分值: 2
答案:B
12.
以下定义语句中正确的是______。
A char a="A"b="B";
B flo at a=b=10.0;
C int a=10,*b=&a;
D float *a,b=&a;
分值: 1
答案:C
[解析] 在A选项中,定义了两个char型的变量,但是在这两个变量之间应该加上逗号;在B选项中,没有对b进行定义,只是对b进行了赋值,因此是错误的;在D选项中,把一个指针赋值给了一个float型的变量,因此是错误的。
13.
以下程序的输出结果是______。
main()
{ int a=3;
printf("%d\n", (a+a-=a*a));
}
{ int a=3;
printf("%d\n", (a+a-=a*a));
}
A -6
B 12
C 0
D -12
分值: 2.5
答案:D
[解析] 本题可以写成:a+a+(a-(a*a)),因为*的优先级最高,其次是-=的,+的优先级最低,所以先求a-=a*a=9,表达式变为a+a+-=9,即a=a-9=-6,再次变为a+(-6)=-12,故选择D选项。
14.
有三个关系R、S和T如下:
R | ||
A | B | C |
a | 1 | 2 |
b | 2 | 1 |
c | 3 | 1 |
S | |
A | D |
c | 4 |
T | |||
A | B | C | D |
c | 3 | 1 | 4 |
则由关系R和S得到关系T的操作是______。
A 自然连接
B .交
C 投影
D .并
分值: 2
答案:A
[解析] 自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,因此根据T中元组可以判断关系R和S做的是自然连接操作,答案为A。
15.
请读程序段:
char str[]="ABCD",*p=str,
printf("%d\n",*(p+4));
程序段的输出结果是______。
char str[]="ABCD",*p=str,
printf("%d\n",*(p+4));
程序段的输出结果是______。
A 68
B 0
C 字符"D"的地址
D 不确定的值
分值: 1
答案:B
[解析] 在对字符数组赋字符串值时,系统会自动在字符串的末尾加上一个字符串结束标志“\0”,故指向字符数组的指针p的*(p+4)的值为“\0”。由于“\0”的编码值就是0,所以本题输出为0。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论