26
1.设数据元素的集合D={ 1,2,3,4,5 },则满足下列关系R的数据结构中为线性结构的是
A.R={ (1,2), (3,4), (5,1) }
B.R={ (1,3), (4,1), (3,2), (5,4) }
C.R={ (1,2), (2,3), (4,5) }
D.R={ (1,3), (2,4), (3,5) }
2.下列叙述中正确的是
A.链表结点中具有两个指针域的数据结构可以是线性结构,也可以是非线性结构
B.线性表的链式存储结构中,每个结点必须有指向前件和指向后件的两个指针
C.线性表的链式存储结构中,每个结点只能有一个指向后件的指针
D.线性表的链式存储结构中,叶子结点的指针只能是空
3.一个栈的初始状态为空。现将元素A,B,C,D,E依次入栈,然后依次退栈三次,并将退栈的三个元素依次入队(原队列为空),最后将队列中的元素全部退出。则元素退队的顺序为
A.ABC
B.CBA
C.EDC
D.CDE
4.某二叉树的中序序列为DCBAEFG,后序序列为DCBGFEA,则该二叉树的深度(根结点在第1层)为
A.5
B.4
C.3
D.2
5.软件生命周期是指
A.软件产品从提出、实现、使用、维护到停止使用退役的过程
B.软件的需求分析、设计与实现
C.软件的开发与管理
D.软件的实现和维护
6.某系统结构图如下图所示
该系统结构图的深度是
A.1
B.2
C.3
D.4
7.下面属于应用软件的是
A.学生成绩管理系统
B.UNIX操作系统
C.汇编程序
D.编译程序
8.将E-R图转换为关系模式时,E-R图中的属性可以表示为
A.属性
B.键
C.关系
D.域
9.有两个关系R与S如下,由关系R和S得到关系T,则所使用的操作为
A.并
B.自然连接
C.除法
D.交
10.优化数据库系统查询性能的索引设计属于数据库设计的
A.需求分析
B.概念设计
C.逻辑设计
D.物理设计
11.结构化程序由顺序、选择、循环三种基本结构组成,以下相关叙述错误的是
A.三种基本结构不可以嵌套使用
B.顺序结构是按语句在程序中的先后顺序逐条执行,没有分支,没有转移
C.选择结构是根据不同的条件执行不同分支中的语句
D.循环结构是根据条件决定是否重复、重复执行多少次循环体语句
12.以下能正确表述算式 sin(2πr+30°)的C语言表达式是
A.sin(2*3.14*r+3.14*30/180.0)
B.sin(2*π*r+ 30 )
C.sin(2*3.14*r+ 30 )
D.sin(2*3.14*r+30*3.14/360.0)
13.设有定义:int x=11,y=12,z=0;,以下表达式值不等于12的是
A.z=(x==y)
B.(z=x,y)
C.z=(x,y)
D.(z,x,y)
14.以下可以将任意一个两位整数n的个位数与十位数对换的表达式为
A.(n-n/10*10)*10+n/10
B.n-n/10*10+n/10
C.n/10+(n-n/10)
D.(n-n/10)*10+(n/10)
15.设有以下程序段
int y;
y=rand() % 30+1;
则变量y的取值范围是
A.0<y≤30
B.0≤y≤30
C.1<y<30
D.1<y≤30
16.以下程序段中,循环次数不超过10的是
A.int i=10;do{ i=i+1;} while(i<0);
B.int i=5;do{ i+=1;} while(i>0);
C.int i=1;do{ i+=2;} while(i!=10);
D.int i=6;do{ i-=2;} while(i!=1);
17.有以下程序
#include
main()
{
int x;
scanf("%d",&x);
if(x>10) printf("1");
else if(x>20) printf("2");
else if(x>30) printf("3");
}
若运行时输入:35,则输出结果是
A.1
B.2
C.3
D.123
18.若要实现total=1+2+3+4+5求和,以下程序段错误的是
A.inti=1,total=1;
while(i<5)
{total+=i;
i+=1;
}
B.inti=1,total=0;
while(i<=5)
{total+=i;
i+=1;
}
C.inti=0,total=0;
while(i<5)
{i+=1;
total+=i;
}
D.inti=0,total=0;
while(i<=5)
{total+=i;
i+=1;
}
19.有以下程序
#include
main()
{
inti=1,k=0;
for(;i<6 ; )
{switch(i%3)
{case 0: k++;
case 1: k++; break;
case 2: k++; continue;
}
i+=1;
}
printf("%d\n",k);
}
程序的运行情况是
A.形成无限循环
B.输出6
C.输出5
D.输出4
20.以下不能输出小写字母a的选项是
A.printf("%c\n","a");
B.printf("%c\n",'A'+32);
C.putchar(97);
D.putchar('a');
21.有以下程序段
char c1,c2,c3;
scanf("%c%c%c",&c1,&c2,&c3);
若要给c1、c2、c3分别输入字母A、B、C,则以下对输入形式的描述正确的是
A.字母A、B、C之间不能有分隔符
B.字母A、B、C之间可以用空格分隔
C.字母A、B、C之间可以用回车符分隔
D.字母A、B、C之间可以用Tab键分隔
22.有以下程序段
scanf("%d%d%d",&a,&b,&c);
if(a
if(a
printf("%d\n",a);
该程序段的功能是
A.输出a的原始值
B.输出a、b、c中的最大值
C.输出a、b、c中的最小值
D.输出a、b、c中值相等的数值
23.以下程序的功能是:通过调用calc函数,把所求得的两数之和值放入变量add中,并在主函数中输出。
#include
void calc(float x,float y, float *sum)
{________ = x+y;}
main()
{float x,y,add;
scanf("%f%f",&x,&y);
calc(x,y,&add);
printf("x+y=%f\n",add);
}
calc函数中下划线处应填入的是
A.*sum
B.sum
C.&sum
D.add
24.有以下程序
#include
main()
{ char a[4][4]={' '};
int i,j;
for(i=0;i<4; i++)
{a[i][0]=a[i][3]='#';
for(j=1; j<3; j++)
{a[0][j]=a[3][j]='#';
if((i!=0)&&(i!=3)) a[i][j]='o';
}
}
for(i=1;i<3; i++)
{for(j=0; j<4;j++)
printf("%2c",a[i][j]);
printf("\n");
}
}
程序的运行结果是
A.# o o #
# o o #
B.# # # #
# o o #
C.# o o #
# # # #
D.# # # #
# # # #
25.设有函数定义:void sub(int k,char ch){…}则以下对函数sub的调用语句中,正确的是
A.sub(1,97);
B.sub(2,'97');
C.n=sub(3,'a');
D.sub(4,"a");
26.有以下程序
#include
void fun(int *x,int s,int n)
{int i;
for(i=s; i>=n; i--)
*(x+i+3) = *(x+i);
}
main()
{int m[]={0,1,2,3,4,5,6,7,8,9},k;
fun(m,10-4,3);
for(k=0; k<10;k++)
printf("%d",m[k]);
}
程序的运行结果是
A.0123453456
B.0123456345
C.0123456666
D.0123454569
27.若有定义语句:int m[ ][3]={1,2,3,4,5,6,7};,则与该语句等价的是
A.int m[ ][3]={{1,2,3},{4,5,6},{7}};
B.int m[ ][3]={{1,2},{3, 4 },{5, 6,7}};
C.int m[ ][3]={{1,2,3},{4,5},{6,7}};
D.int m[ ][3]={{1},{2,3,4},{5,6,7}};
28.设有以下说明和语句:intx[3][4],(*p)[4]; p=a;,则与表达式*(*p+2)等价的选项是
A.a[0][2]
B.*(a+2)[0]
C.(*a+2)[0]
D.a[2][0]
29.以下不能将键盘输入的字符串:This is a string读入到str中的程序段是
A.char str[80];scanf("%s",str) ;
B.char str[80];int i=0;while((str[i++]=getchar())!='\n');str[i]=0;
C.char str[80];gets(str);
D.char str[80], *ps=str;do{ scanf("%c",ps); } while(*ps++ !='\n'); *(ps)=0;
30.有以下程序
#include
main()
{char s[10]="verygood", *ps=s;
ps+=4;
ps="nice";
puts(s);
}
程序的运行结果是
A.verygood
B.verynice
C.nicegood
D.nice
31.有以下程序
#include
int fun(char *s)
{char *p=s;
while( *p != '\0') p++;
return(p-s);
}
main()
{char *p="01234";
printf("%d\n",fun(p));
}
程序的运行结果是
A.5
B.6
C.4
D.3
32.有以下程序
#include
main()
{int findmax(int,int,int),m;
┋
m=findmax(a,b,c);
┋
}
int findmax(int x,int y,int z)
{…}
则以下叙述正确的是
A.在main函数中声明了findmax函数
B.在main函数中定义了findmax函数
C.在main函数中两次调用了findmax函数
D.在main函数内、外重复定义了findmax函数
33.有以下程序
#include
void fun(int n)
{int i;
if((i=n/10)!=0)
fun(i);
putchar(n%10+'0');
}
main()
{fun(256); }
程序运行后的输出结果是
A.256
B.652
C.2560
D.52
34.有以下程序
#include
#include
void fun(int *p1, int *s)
{int *t;
t=(int *)malloc(2 * sizeof(int));
*t=*p1 + *p1++;
*(t+1)=*p1+ *p1;
s=t;
}
main()
{
int a[2]={1,2},b[2]={0};
fun(a,b);
printf("%d,%d\n",b[0],b[1]);
}
程序运行后的输出结果是
A.0,0
B.2,6
C.2,4
D.1,2
35.有以下程序
#include
#define FNA(x)x*x
#define FNB(x)x+x
main()
{int a=2,b=4;
printf("%d,%d\n",FNA(FNB(a)),FNB(FNA(b)));
}
程序运行后的输出结果是
A.8,32
B.16,32
C.8,16
D.16,16
36.设有如下语句
typedef struct Date{
int year;
int month;
int day;
} DATE;
则以下叙述中错误的是
A.DATE是用户定义的结构体变量
B.struct Date是用户定义的结构体类型
C.DATE是用户说明的新结构体类型名
D.struct是结构体类型的关键字
37.设有如下定义
struct{ int n; char c; } a[2],*p=a;
则以下错误引用结构体成员n的是
A.(*a)->n
B.a[0].n
C.p->n
D.(*p).n
38.有以下程序
#include
#include
typedef struct {
char name[10];
char sex;
int age;
} STU;
void fun(STU t)
{strcpy(t.name,"Tong");
t.age++;
}
main()
{STU s[2]={"Hua",'m',18,"Qin",'f',19};
fun(s[1]);
printf("%s,%d,%s,%d\n",s[0].name,s[0].age,s[1].name ,s[1].age );
}
程序运行后的输出结果是
A.Hua,18,Qin,19
B.Hua,18,Tong,20
C.Tong,19,Qin,19
D.Hua,19,Tong,19
39.设有定义:int a=64,b=8;,则表达式(a&b)||(a&&b)和(a|b)&&(a||b)的值分别为
A.1和1
B.1和0
C.0和1
D.0和0
40.有以下程序段
FILE *fp;
if( (fp=fopen("test.txt","w")) == NULL)
{printf("不能打开文件!");
exit(0);}
else
printf("成功打开文件!");
若文件test.txt已存在,则以下叙述正确的是
A.程序运行后,文件test.txt中的原有内容将全部消失
B.程序运行时,会因文件存在而出错
C.对文件test.txt进行写操作后,可以随机进行读取
D.对文件test.txt写入的内容总是被添加到文件尾部
1.B2.A3.C4.B5.A6.C7.A8.A9.C10.D11.A12.A13.A14.A15.A16.A17.A18.A19.A20.A21.A22.A23.A24.A25.A26.A27.A28.A29.A30.A31.A32.A33.A34.A35.A36.A37.A38.A39.A40.A