二级C语言选择题专项强化真题试卷25
选择题
1.将E-R图转换为关系模式时,实体和联系都可以表示为( )。(C)
A. 属性
B. 键
C. 关系
D. 域
解析:E-R图转换为关系模式时,实体和联系都可以表示为关系。
2.下列叙述中正确的是( )。(B)
A. 有一个以上根结点的数据结构不一定是非线性结构
B. 只有一个根结点的数据结构不一定是线性结构
C. 循环链表是非线性结构
D. 双向链表是非线性结构
解析:线性结构应满足:①有且只有一个根结点;②每个结点最多有一个前驱,也最多有一个后继,所以B选项正确。有一个以上根结点的数据结构一定是非线性结构,所以A选项错误。循环链表和双向链表都是线性结构的数据结构,所以CD选项错误。故B选项正确。
3.有以下程序:
#include<stdio.h>
int ml(int x,int y)
{return x<=y,gx:y;}
int m2(int x,int y)
{return x<=y?y:x;}
int fun(int a,int b)
{return a+b;}
main()
{
int x=2,y=3,z=1;
printf(\\(A)
A. 5
B. 6
C. 4
D. 3
解析:函数m1()返回两个参数中较小的数值,函数m2()返回两个参数中较大的数值,函数fun()返回两个参数之和,所以fun(m1(x,y),m2(y,z))=fun(m1(2,3),m2(3,1))=fun(2,3)=5,答案选A。
4.有以下程序:
#include<stdio.h>
main()
{
int aaE3][3]={{2),{4),{6)),i,*p=&aa[0][0]:
for(i=0;i<2;i++)
{
if(i==0)
aa[i][i+1]=*p+1;
else++p:
printf(\\(B)
A. 2 6
B. 2 3
C. 4 3
D. 4 6
解析:本题主要考查指针与数组。观察题目,可以发现,*p=&[0][0]语句实际是将数组a的首地址赋给了指针变量p。将i的值带入for循环中,i=0时,aa[0][1]=3,*p=2,*p输出的是指针所指向的数组值,此时p所指向的是aa[0][0],输出2;i=1时执行++p操作,使得指针向后移动指向aa[0][1],所以在输出*p时应为3。故B选项正确。
5.有以下程序:
#include<stdio.h>
main()
{
char b,c;int i;
b=’a’;
c=’A’;
for(i=0;i<6;i++)
{
if(i%2)putchar(i+b);
else putchar(i+c);
}
printf(\\(B)
A. ABCDEF
B. AbCdEf
C. aBcDeF
D. abcdef
解析:字符常量与其ASCII码值一一对应,计算时一般用字符常量对应的ASCII码参与运算,输出时会依据输出函数的不同决定输出是字符或者对应的ASCII码值。该程序的运算逻辑是,i从0循环到5,若i为奇数则输出i+b;’a’+i对应的字符即小写字符,若i为偶数则输出i+c;’A’+i对应的字符即大写字符。答案选B。
6.设a,b,c是整型变量,且已正确赋初值,以下选项中错误的赋值语句是( )。(D)
A. a=1%(b=c=2);
B. a=(b=3)*c;
C. a=b=c/10;
D. a=2=(b=9)=1;
解析:D选项中,“()”具有最高优先级,b先赋值9,再根据赋值运算符号自右向左进行赋值,再给b赋值为1,再计算2=b,赋值运算符左边必须是一个变量,但数值2是常量,语法错误,答案为D选项。
7.有以下程序:
#include<stdio.h>
main( )
{
char ch[]=\\(A)
A. z
B. 0
C. 元素ch[5]的地址
D. 字符y的地址
解析:语句pc=ch;使得指针变量指向字符数组ch的首地址,即指向字符‘u’。则pc+5指向的是字符向后移动5位,指向字符‘z’。所以输出的*pc+5的值即为‘z’。因此A选项正确。
8.若有定义:float x=1.5;int a=1,b=3,c=2;则正确的switch语句是( )。
A
解析:B)选项中switch((int)x);语句中不应该有最后的分号。switch(expr1),中的expr1不能用浮点类型或long类型,也不能为一个字符串,所以C)错误。case后面常量表达式的类型必须与switch后面表达式的类型一致,所以D)错误。
9.算法的有穷性是指( )。(A)
A. 算法程序的运行时间是有限的
B. 算法程序所处理的数据量是有限的
C. 算法程序的长度是有限的
D. 算法只能被有限的用户使用
解析:算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。有穷性是指算法程序的运行时间是有限的。
10.有下列程序
#include<stdio.h>
void f(int x[],int n)
{if(n>1)
{prinff(\\(C)
A. 1234321
B. 43211234
C. 4321234
D. 12344321
解析:f( )函数有两个参数:数组首地址x和数组元素个数n,当n大于1时,执行首先输出最后一个元素x[n-1],然后递归调用自身;直到n等于1时再次输出x[n-1],然后回到上一层调用,输出x[n-1];main( )函数定义一个数组a,包含四个元素:1,2,3,4,然后调用f函数f(a,4),此时形参x等于a,形参n的值是4,所以输出a[3]即4,接着调用f(a,3),输出3,调用f(a,2)输出2,调用f(a,1)输出1;接着再逐步回到上一层的调用:f(a,2)输出2,f(a,3)输出3,f(a,4)输出4,最终程序输出结果为:4,3,2,1,2,3,4,本题答案为C。
11.有以下程序I
#include
main()
{
int i,*ptr;
int array[4]={0,1};
for(ptr=array,i=0;i<3;i++,ptr++)
{
if(*ptr==0
本文档预览:3600字符,共8821字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载