C20609

一、选择题

((1)~(10)每题2分,(11)~(50)每题1分,共60分)

下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。

(1)下列选项中不符合良好程序设计风格的是____D____。

A)源程序要文档化

B)数据说明的次序要规范化

C)避免滥用goto语句

D)模块设计要保证高耦合、高内聚

(2)从工程管理角度,软件设计一般分为两步完成,它们是____A____。

A)概要设计与详细设计

B)数据设计与接口设计

C)软件结构设计与数据设计

D)过程设计与数据设计

(3)下列选项中不属于软件生命周期开发阶段任务的是___C_____。

A)软件测试

B)概要设计

C)软件维护

D)详细设计

(4)在数据库系统中,用户所见的数据模式为____B____。

A)概念模式

B)外模式

C)内模式

D)物理模式

(5)数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和____D____。

A)编码设计

B)测试阶段

C)运行阶段

D)物理设计

(6)设有如下三个关系表

下列操作中正确的是____C____。

A) T=R∩S

B) T=R∪S

C) T=R×S

D) T=R/S

(7)下列叙述中正确的是____D____。

A)一个算法的空间复杂度大,则其时间复杂度也必定大

B)一个算法的空间复杂度大,则其时间复杂度必定小

C)一个算法的时间复杂度大,则其空间复杂度必定小

D)上述三种说法都不对

(8)在长度为64的有序线性表中进行顺序查找,最环境情况下需要比较的次数为____B____。

A)63

B)64

C)6

D)7

(9)数据库技术的根本目标是要解决数据的___B_____。

A)存储问题

B)共享问题

C)安全问题

D)保护问题

(10)对下列二叉树进行中序遍历的结果是____B____。

A)ACBDFEG

B)ACBDFGE

C)ABDCGEF

D)FCADBEG

(11)下列叙述中错误的是____A____。

A)一个C语言程序只能实现一种算法

B)C程序可以由多个程序文件组成

C)C程序可以由一个或多个函数组成

D)一个C函数可以单独作为一个C程序文件存在

(12)下列叙述中正确的是_____D___。

A)每个C程序文件中都必须有一个main()函数

B)在C程序中main()函数的位置是固定的

C)C程序可以由一个或多个函数组成

D)在C程序的函数中不能定义另一个函数

(13)下列定义变量的语句中错误的是______D__。

A)int _int;

B)double int_;

C)char For;

D)float US$

(14)若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是____D____。

A)++x,y=x--

B)x+1=y

C)x=x+10=x+y

D)double(x)/10

(15)以下关于逻辑运算符两侧运算对象的叙述中正确的是____D____。

A)只能是整数0或1

B)只能是整数0或非0的整数

C)可以是结构体类型的数据

D)可是任意合法的表达式

(16)若有定义int x,y;并已正确给变量赋值,则以下选项中与表达式(x-y)?(x++): (y++)中的条件表达式(x-y)等价的是___C_____。

A)(x-y>0)

B)(x-y<0)

C)(x-y<0║x-y>0)

D)(x-y==0)

(17)有以下程序

main()
{
    int x,y,z;
    x=y=1;
    z=x++,y++,++y;
    printf("%d,%d,%d\n",x,y,z);
}

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

A)2,3,3

B)2,3,2

C)2,3,1

D)2,2,1

(18)设有以下语句:

int a; float b;
scanf("%2d%f",&a,&b);

若从键盘输入876 543.0<回车>,a和b的值分别是____B____。

A)876和543.000000

B)87和6.000000

C)87和543.000000

D)76和543.000000

(19)有以下程序

main()
{
    int a=0,b=0;
    a=10; /*给a赋值
    b=20; /*给b赋值 */
    printf("a+b=%d\n",a+b); /* 输出计算结果 */
}

程序运行后输出结果是___B_____。

A)a+b=0

B)a+b=30

C)30

D)出错

(20)在嵌套使用if语句时,C语言规定else总是___C_____。

A)和之前与其具有相同缩进位置的if配对

B)和之前与其最近的if配对

C)和之前与其最近的且不带else的if配对

D)和之前的第一个if配对

(21)下列叙述中正确的是____D____。

A)break语句只能用于switch语句

B)在switch语句中必须使用default

C)break语句必须与switch语句中的case配对使用

D)在switch语句中,不一定使用break语句

(22)有以下程序

main()
{
    int k=5;
    while(-k)
        printf("%d",k-=3);
    printf("\n")
}

执行后的输出结果是____D____。

A)1

B)2

C)4

D)死循环

(23)有以下程序

main()
{
    int i;
    for(i=1;i<=40;i++)
    {
        if(i++%5=0)
            if(++i%8=0)
            printf("%d",i)
    }
    printf("\n")
}

执行后的输出结果是___C_____。

A)5

B)24

C)32

D)40

(24)以下选项中,值为1的表达式___B_____。

A)1-"0"

B)1-"\0"

C)"1"-0

D)"\0"-"0"

(25)有以下程序

fun(int x,int y){
    return(x+y);}
main()
{
    int a=1,b=2,c=3,sum;
    sum=fun((a++,b+++b,a+b),c++);
    printf("%d\n",sum);
}

执行后的输出结果是_____C___。

A)6

B)7

C)8

D)9

(26)有以下程序

main()
{
    char s[ ]= "abcde";
    s+=2;
    printf("%d\n",s[0]);
}

执行后的结果是____A____。

A)输出字符a的ASCII码

B)输出字符c的ASCII码

C)输出字符c

D)程序出错

(27)有以下程序

fun(int x,int y)
{
    static int m=0,i=2;
    i+=m+1;
    m=i+x+y;
    return m;
}
main()
{
    int j=1,m=1,k;
    k=fun(j,m);
    printf("%d,",k);
    k=fun(j,m);
    printf("%d\n",k)
}

执行后的输出结果是____B____。

A)5,5

B)5,11 C)11,11

D)11,5

(28)有以下程序

fun(int x)
{
    int p;
    if(x==0 || x==1)
        return(3);
    p=x-fun(x-=2); // 先执行的x-=2这部分的
    return p;
}
main()
{
    prinf("%d\n",fun(7));
}

执行后的输出结果是____D____。

A)7

B)3

C)3

D)0

(29)在16位编译系统上,有以下代码: int a[]={10,20,30},*p=&a; p++;

执行后,下列说法错误的是______A__。

A)p向高地址移了一个字节

B)p向高地址移了一个存储单元

C)p向高地址移了两个字节

D)p与a+1等价

(30)有以下程序

main()
{
    int a=1,b=3,c=5;
    int *p1=&a,*p2=&b,*p=&c;
    *p=*p1*(*p2);
    printf("%d\n",c);
}

执行后的输出结果是 C

A)1

B)2

C)3

D)4

(31)若有定义:int w[3][5];,则以下不能正确表示该数组元素的表达式是___B_____。

A)*(*w+3)

B)*(w+1)[4]

C)*(*(w+1))

D)*(&w[0][0]+1)

(32)若有以下函数首部

int fun(double x[10],int *n)

则下面针对此函数声明语句中正确的是___D_____。

A)int fun(double x,int *n);

B)int fun(double ,int);

C)int fun(double*x,int n);

D)int fun(double *,int*);

(33)若有定义语句:int k[2][3],*pk[3];,则以下语句中正确的是___B_____。

A)pk=k;

B)pk[0]=&k[1][2];

C)pk=k[0];

D)pk[1]=k;

(34)有以下程序

void change(int k[]){
    k[0]=k[5];}
main()
{
    int x[10]={1,2,3,4,5,6,7,8,9,10},n=0
    while(n<=4) {
        change(&x[n]);
        n++;}
    for(n=0;n<5;n++)
        printf("%d",x[n]);
    printf("\n");
}

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

A)678910

B)13579

C)12345

D)62345

(35)若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是 D

A)#define N 10 int a[N];
B)#define n 5 int a[2*n];
C)int a[5+5];
D)int n=10,a[n];

(36)有以下程序

main()
{
    int x[3][2]={0},I;
    for(I=0;I<3;I++)
        scanf("%d",x[i]);
    printf("%3d%3d%3d\n",x[0][0],x[0][1],x[1][0]);
}

若运行时输入:2 4 6<回车>,则输出结果为____B____。

A)2 0 0

B)2 0 4

C)2 4 0

D)2 4 6

(37)有以下程序

main()
{
    char s[]={ "aeiou"},*ps;
    ps=s;
    printf("%c\n",*ps+4);
}

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

A)a

B)e

C)u

D)元素s[4]的地址

(38)以下语句中存在语法错误的是_____A___。

A)char ss1[6][20];ss1[1]= "right? ";
B)char ss2[][20]={ "right? "};
C)char *ss3[6];ss3[1]= "right? ";
D)char *ss4[]={"right? "};

(39)若有定义:char *x= "abcdefghi";,以下选项中正确运用了strcpy函数的是____B____。

A)char y[10]; strcpy(y,x[4]);
B)char y[10]; strcpy(++y,&x[1]); // '++' needs l-value
C)char y[10],*s; strcpy(s=y+5,x);
D)char y[10],*s; strcpy(s=y+1,x+1);

(40)有以下程序

int add(int a,int b){
    return+b};}
main()
{
    int k,(*f)(int,int),a=5,b=10;
    f=add;
    //…
}

则以下函数调用语句错误的是____C____。

A)k=(*f)(a,b);

B)k=add(a,b);

C)k=*f(a,b);

D)k=f(a,b);

(41)有以下程序

#include <string.h>
main(int argc,char *argv[])
{
    int i=1,n=0;
    while(i<argc){
        n=n+strlen(argv[i]);
        i++;}
    printf(“%d\n”,n);
}

该程序生成的可执行文件名为:proc.exe。若运行时输入命令行:

proc 123 45 67

则程序的输出结果是____C____。

A)3

B)5

C)7

D)11

(42)有以下程序

void fun2(char a, char b){
    printf(“%b%c”,a,b);}
char a= ‘A’,b= ‘B’;
void fun1(){
    a= ‘C’;
    b= ‘D’; }
main( )
{
    fun1()
    printf( “%c%c”,a,b);
    fun2(‘E’, ‘F’);
}

程序的运行结果是____A____。

A)CDEF

B)ABEF

C)ABCD

D)CDAB

(43)有以下程序

#include <stdio.h>
#define N 5
#define M N+1
#define f(x) (x*M)
main()
{
    int i1,i2;
    i1=f(2);
    i2=f(1+1);
    printf(“%d %d\n”,i1,i2);
}

程序的运行结果是_____B___。

A)12 12

B)11 7

C)11 11

D)12 7

(44)设有以下语句

typedef struct TT
{
    char c;
    int a[4];
}CIN;

则下面叙述中正确的是_____C___。

A)可以用TT定义结构体变量

B)TT是struct类型的变量

C)可以用CIN定义结构体变量

D)CIN是struct TT类型的变量

(45)有以下结构体说明、变量定义和赋值语句

struct STD
{
    char name[10];
    int age;
    char sex;
}s[5],*ps;
ps=&s[0];

则以下scanf函数调用语句中错误引用结构体变量成员的是____D____。

A)scanf(“%s”,s[0].name);

B)scanf(“%d”,&s[0].age); C)scanf(“%c”,&(ps->sex));

D)scanf(“%d”,ps->age);

(46)若有以下定义和语句

union data
{
    int i;
    char c;
    float f;
}x;
int y;

则以下语句正确的是____B____。

A)x=10.5;

B)x.c=101;

C)y=x;

D)printf(“%d\n”,x);

(47)程序中已构成如下图所示的不带头结点的单向链表结构,指针变量s、p、q均已正确定义,并用于指向链表结点,指针变量s总是作为头指针指向链表的第一个结点。

data next
a 
b 
c NULL

若有以下程序段

q=s;
s=s>next;
p=s;
while(p->next)
    p=p->next;
p->next=q;
q->next=NULL;

该程序段实现的功能是_____B___。

A)首结点成为尾结点

B)尾结点成为首结点

C)删除首结点

D)删除尾结点

(48)若变量已正确定义,则以下语句的输出结果是____B____。

s=32; 
s^=32;
printf(“%d”,s);

A)-1

B)0

C)1

D)32

(49)以下叙述中正确的是______A__。

A)C语言中的文件是流式文件,因此只能顺序存取数据

B)打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖

C)在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据

D)当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失

(50)有以下程序

#include <stdio.h>
main()
{
    FILE *fp; int i;
    char ch[]="abcd",t;
    fp=fopen("abc.dat","wb+");
    for(i=0;i<4;i++)
        fwrite(&ch[i],1,1,fp);
    fseek(fp,-2L,SEEK_END);
    fread(&t,1,1,fp);
    fclose(fp);
    printf("%c\n",t);
}

程序执行后的输出结果是_____B___。

A)d

B)c

C)b

D)a

本页共460段,15289个字符,20151 Byte(字节)