}
main()
{ intaa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(aa+2,5);
for(i=0;i<10;i++)printf("%d,",aa[i]);
printf("\n");
}
程序运行后的输出结果是( )。
A)1,2,3,4,5,6,7,8,9,10,
B)1,2,7,6,3,4,5,8,9,10,
C)1,2,7,6,5,4,3,8,9,10,
D)1,2,9,8,7,6,5,4,3,10,
24.设变量已正确定义并赋值,以下正确的表达式是( )。
A)x=y*5=x+z
B)int(15.8%5)
C)x=y+z+5,++y
D)x=25%5.0
25.有以下程序:
#include
voidfun(inta,intb){intt;
t=a;a=b;b=t;
}
main(){intc[10]={1,2,3,4,5,6,7,8,9,0},i;
for(i=0;i<10;i+=2)fun(c[i],c[i+1]);
for(i=0;i<10;i++)printf("%d,",c[i]);
printf("\n");
}
程序的运行结果是( )。
A)1,2,3,4,5,6,7,8,9,0,
B)2,1,4,3,6,5,8,7,0,9,
C)0,9,8,7,6,5,4,3,2,1,
D)0,1,2,3,4,5,6,7,8,9,
26.设有如下程序段:
chars[20]="beijing",*p;
p=s;
则执行p=s;语句后,以下叙述中正确的是( )。
A)可以用*p表示s[0]
B)s数组中元素的个数和p所指字符串长度相等
C)s和p都是指针变量
D)数组s中的内容和指针变量p中的内容相等
27.有以下程序:
#include
voidfun(intp){intd=2;
p=d++;printf("%d",p);}
main(){
inta=1;
fun(a);printf("%d\n",a);}
程序运行后的输出结果是( )。
A)32
B)12
C)21
D)22
28.以下程序的输出结果是( )。
fun(charp[][10]){intn=0,i;
for(i=0;i<7;i++)if(p[i][0]==T)n++;
returnn;
}
main(){charstr[][10]={"Mon","Tue","Wed","Thu","Fri","Sat","Sun"};
printf("%d\n",fun(str));
}
A)1
B)2
C)3
D)0
29.下面程序由两个源程序文件t4.h和t4.c组成,程序编译运行的结果是( )。
t4.h的源程序为:
#defineN10
#definef2(x)(x*N)t4.c的源程序为:
#include
#defineM8
#definef(x)((x)*M)#include"t4.h"
main(){inti,j;
i=f(1+1);j=f2(1+1)printf("%d%d\n",i,j);
}
A)920
B)1611
C)911
D)1610
30.下面的程序段运行后,输出结果是( )。
inti,j,x=0;
staticinta[8][8];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
a[i][j]=2]
for(i=0;i<8;i++)
x+=a[i][j];
printf("%d",x);
A)9
B)0
C)不确定值
D)18
31.有以下程序:
#include
intf(intn);
main(){inta=3,s;
s=f(a);s=s+f(a);printf("%d\n",s);
}
intf(intn){staticinta=1;
n+=a++;
returnn;
}
程序运行后的输出结果是( )。
A)7
B)8
C)9
D)10
32.有以下程序:
#include
main(){
intc=0,k;
for(k=1;k<3;k++)switch(k){default:
c+=k;
case2:
c++;break;
case4:
c+=2;break;
}
printf("%d\n",c);
}
程序运行后的输出结果是( )。
A)9
B)7
C)5
D)3
33.有以下程序:
#include
structord
{ intx,y;}dt[2]={11,12,13,14};
main(){
structord*p=dt;
printf("%d,",++(p->x));printf("%d\n",++(p->y));
}
程序运行后的输出结果是( )。
A)11,12
B)12,13
C)13,14
D)14,1l
34.有以下程序:
#definef(x)(x*x)main()
{ inti1,i2;
i1=f(8)/f(4);i2=f(4+4)/f(2+2);
printf("%d,%d\n",i1,i2);
}
程序运行后的输出结果是( )。
A)64,28
B)4,4
C)4,3
D)64,64
35.设有以下说明语句:
structex
{intx;floaty;charz;}example;
则下面的叙述中不正确的是( )。
A)struct结构体类型的关键字
B)example是结构体类型名
C)x,y,z都是结构体成员名
D)structex是结构体类型名
36.有以下程序:
intfun1(doublea){return(int)(a*=a);}
intfun2(doublex,doubley)
{doublea=0,b=0;
a=fun1(x);b=fun1(y);return(int)(a+b);
}
main()
{doublew;w=fun2(1.1,2.0);…}
程序执行后变量w中的值是( )。
A)5.21
B)5
C)5.0
D)0.0
37.有以下程序:
#include
#include
main(){charstr[][20]={"One*World","one*Dream!
"},*p=str[1];
printf("%d,",strlen(p));printf("%s\n",p);
}
程序运行后的输出结果是( )。
A)9,One*World
B)9,One*Dream!
C)10,One*Dream!
D)10,One*World
38.阅读下列程序,当运行函数时,输入abcdefgz10,则输出为( )。
#include
#include
#include
intfun(char*str)
{inti,j=0;
for(i=0;str[i]!
=\0;i++)if(str[i]!
=)str[j++]=str[i];
str[j]=\0;
}
main()
{
charstr[81];
intn;
printf("Inputastring:
");
gets(str);
puts(str);
fun(str);
printf("%s\n",str);
}
A)abc
B)z10
C)abcdefgz10
abcdefgz10
D)abcdefgz10
39.下面程序的运行结果是( )。
#include
main()
{ staticchara[]="Languagef",b[]="programe";
char*p1,*p2;intk;
p1=a;p2=b;
for(k=0;k<=7;k++)
if(*(p1+k)==*(p2+k))printf("%c",*(p1+k));}
A)gae
B)ga
C)Language
D)有语法错
40.有以下程序:
#include
main()
{inta=5,b=1,t;
t=(a<<2)|b;printf("%d\n",t);
}
程序运行后的输出结果是( )。
A)21
B)11
C)6
D)1
1、参考答案:
B
【解析】线性链式存储结构中每个结点都由数据域与指针域两部分组成,增加了存储空间,所以一般要多于顺序存储结构。
2、参考答案:
D
【解析】栈是一种先进后出的线性表,队列是一种先进先出的线性表,栈与队列都是线性结构。
3、参考答案:
D
【解析】软件测试是为了发现错误而执行程序的过程,测试要以查找错误为中心,而不是为了演示软件的正确功能。
不是为了评估软件或改正错误。
4、参考答案:
D
【解析】需求分析阶段的工作可以概括为:
需求获取、需求分析、编写需求规格说明书、需求评审四个方面。
所以选择D)。
5、参考答案:
A
【解析】通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。
也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期
6、参考答案:
D
【解析】继承是面向对象的方法的一个主要特征,是使用已有的类的定义作为基础建立新类的定义技术。
广义的说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制。
7、参考答案:
D
【解析】层次模型的基本结构是树形结构,网状模型是一个不加任何条件限制的无向图,关系模型采用二维表来表示,所以三种数据库的划分原则是数据之间的联系方式。
8、参考答案:
C
【解析】因为一个人可以操作多个计算机,而一台计算机又可以被多个人使用,所以两个实体之间是多对多的关系。
9、参考答案:
C
【解析】数据库系统的三级模式是概念模式、外模式和内模式。
概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户公共数据视图。
外模式也称子模式或用户模式,它是用户的数据视图,给出了每个用户的局部数据描述,所以选择C)。
内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法。
10、参考答案:
B
【解析】关系T中的元组是R关系中有而S关系中没有的元组的集合,所以进行的是差的运算。
11、参考答案:
B
【解析】C语言是一种结构化程序设计语言。
结构化程序设计是以模块化设计为中心的,有三种基本结构:
顺序、选择和循环结构。
各模块相互独立,因而可将原来较为复杂的问题化简为一系列简单模块并充分利用现有模块搭建新系统,提高程序的重用性和可维护性。
12、参考答案:
A
【解析】C语言规定的标识符只能由字母、数字和下划线3种字符组成,第一个字符必须为字母或下划线,并且不能使用C语言中的关键字作为标识符。
选项A)中goto和int是关键字,c-b中'-'不是组成标识符的3种字符之一;选项B)中do是关键字;选项C)中float是关键字;选项D)中goto是关键字;所以,均是不合法用户标识符的选项是A)。
13、参考答案:
B
【解析】字符常量0的值是48,1的值是49,\0的值是0。
所以1-0=-47,1-\0=1,1-0=49,\0-0=-48。
14、参考答案:
A
【解析】"%"是求余运算符或模运算符,"%"两侧均应为整型数据,选项A)中的x是double型数据。
15、参考答案:
B
【解析】(int)(x*100+0.5)把float型数据(x*100+0.5)强转成int,这样就可以去掉小数点,+0.5就是为了四舍五入。
例如x=1.234,则(1.234*100+0.5)=123.9,则(int)123.9/100.0=123/100.0=1.23。
16、参考答案:
D
【解析】首先i++==1&&(++j==3||k++==3)是一个逻辑表达式,i++==1&&(++j==3||k++==3)分为两部分i++==1和(++j==3||k++==3),它们的关系是"且"的关系,所以两部分都会被执行,其中i++==1是先判断i是否等于1(因为++在后面)此时i=1,在执行完后i=2。
然后执行第二部分(++j==3||k++==3),又分为两部分:
++j==3和k++==3两部分,这两部分是"或"的关系,如果第一部分满足条件就不执行后面的,如果第一部分不满足条件,就执行后面的部分。
++j==3是j先自己加1然后判断j是否等于3,这部分的结果为真,所以后面的部分不执行,因此最后的结果为i=2j=3k=3。
17、参考答案:
B
【解析】满足表达式(c>=2&&c<=6)的整型变量c的值是2,3,4,5,6。
当变量c的值不为2,4,6时,其值只能为3或5,所以表达式c!
=3和c!
=5中至少有一个为真,即不论c为何值,表达式B)都为"真"。
18、参考答案:
D
【解析】本题中,scanf函数的格式控制没有空格,所以,对于选项A)、B)、C),输入的第一个空格会作为字符赋值给变量c1,而不会被解释成分隔符。
19、参考答案:
C
【解析】选项C)中int(f)不正确,因为强制类型转换表示为:
(类型名)(表达式),正确表示为(int)f。
20、参考答案:
B
【解析】本题考查循环语句的嵌套以及条件的判断问题。
在程序中,内层循环判断条件为"j<=i",而j的初值为3,故当i的值为1和2时,内层循环体都不会被执行。
只有当i和j都等于3时才会执行一次。
m的值为55对3取模,计算结果为1。
21、参考答案:
B
【解析】在格式输入中,要求给出的是变量的地址,而B)答案中给出的s[1]是一个值的表达式
22、参考答案:
B
【解析】函数调用的一般形式为:
函数名(形参表)若函数无形参,调用形式为:
函数名(),当所调用的函数用于求出某个值时,函数的调用可作为表达式出现在允许表达式出现的任何地方,本题中调用语句的参数个数为2个。
23、参考答案:
C
【解析】本题重点考查的是函数的调用。
程序中sort函数的作用是将指定的数由大到小排序。
被调函数"sort(aa+2,5);"中的实参aa+2是指aa[2]的地址,将其传给了形参a[],使得形参中a[0]的值为主函数中aa[2]的值,即3;实参中的5传给形参中的n,在sort函数中起着限制循环次数的作用,即使得参加排序的只有5个数,从aa[2]到aa[6],所以本题输出的结果是1,2,7,6,5,4,3,8,9,10,。
24、参考答案:
C
【解析】赋值运算符左边必须是单一变量名,而A)选项中的"y*5=x+z"部分是非法赋值。
在求余运算中的操作对象中只能是整型,故选项B)和选项D)是错误的。
选项C)为逗号表达式。
25、参考答案:
A
【解析】在C语言中函数参数的传递是"传值"的,即形参和实参是两个没有关系的变量,函数fun虽然看似交换了参数值,但是只交换了形参的值,其结果不会传递给实参,因此数组C没有变化。
主函数中给数组C元素赋值1,2,…,9,0。
第一个for循环语句中调用fun函数,该函数功能是交换变量的数值,注意循环变量i的增量。
第二个for循环语句将数组C中元素的值进行输出。
26、参考答案:
A
【解析】p=s;后,指针p指向s的首地址,*p=s[0],因此选项A)是正确的;p是字符串指针,所指向的字符串为"beijing",其长度为7,而数组s中元素的个数为20,因此选项B)和D)是错误的;s是数组,不是指针变量,所以选项C)也是错误的。
27、参考答案:
C
【解析】C语言中函数参数传递满足"单向传递",只由实参传给形参,而不能由形参传给实参。
Fun函数体内输出p的值为2,而并没有影响到fun函数外a的值,a的值在main函数体内依然为1,所以选项C)正确。
28、参考答案:
B
【解析】此程序是统计一周七天中英文名称首字母为"T"的个数,p[i][0]是字符串的首字符,一共有两个"T",因此n=2。
29、参考答案:
B
【解析】i=f(1+1)展开后为i=(1+1)*M=(1+1)*8=16。
j=f2(1+1)展开后为j=1+1=1+1*10=11。
30、参考答案:
B
【解析】本题主要考查的是用二维数组首地址和下标来引用二维数组元素的方法。
通过分析可知,程序中的双重循环定义了一个如下的二维数组:
0 1 2 0 0 0 0 0
2 3 4 0 0 0 0 0
4 5 6 0 0 0 0 0
0 0 0 0 0 0 0 0
……
0 0 0 0 0 0 0 0
由于数组的下标是从0开始的,所以二维数组元素a[i][j]表示的是二维数组a的第i+1行、第j+1列对应位置的元素。
从第二次的嵌套循环结束后j的值为,所以
for(i=0;i<8;i++)x+=a[i][