[计算机软件及应用]2013年9月全国计算机等级《二级C语言程序
》终极押密卷1--5整理版 2
2013年9月全国计算机等级
《二级C语言程序设计》终极押密卷(1) 一、选择题(每小题1分,共40分)
1两个或两个以上模块之间关联的紧密程度称为( A )。
耦合度内聚度复杂度数据传输特性A. B. C. D.
(模块的独立性是指每个模块保证完成系统要求的独立功能,并且与其他模块的联系少且接口简单。衡量软件的模块独立性有内聚性和耦合性两个定性度量
。耦合性是模块间互相连接紧密程度的度量。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,以利于提高模块的独立性。)
2简单的交换排序方法是( D )。
快速排序选择排序堆排序冒泡排序A. B. C. D.
解析:所谓的交换排序方法是指借助数据元素之间的互相交进行排序的一种方法,包括冒泡排序和快速排序,冒泡排序通过相邻元素的交换,逐步将线性表变成有序是一种最简单的交换排序方法。
3若i和k都是int类型变量,有以下for语句:for(i=0,k=-1;k=1;k++)printf("*****,n");下面关于语句执行情况的叙述中正确的是(D )。
循环体执行两次循环体执行一次循环体一次也不执行构成无限循环A. B. C. D. (循环条件k=1这个循环条件是一个为值1的赋值表达式,因此永真,为死循环,答案D) 4若有定义语句:“int kl=10,k2=20;”,执行表达式(kl=kl>k2)&&(k2=k2> k1)后,kl和k2的值分别为( A )。
和和和和A. 01 B. 020 C. 101 D. 1020
解析:此表达式为逻辑表达式,k1=k1>k2的意义是,如果k1>k2,则k1为真,同理k2=k2>k1,如果k2>k1,则k2为真。所以答案为A。
5下列叙述中正确的是( A )。
为了建立一个关系,首先要构造数据的逻辑关系A.
表示关系的二维表中各元组的每一个分量还可以分成若干数据项B.
一个关系的属性名表称为关系模式C.
一个关系可以包括多个二维表D.
解析:元组分量的原子性要求二维表中元组的分量是不可分割的基本数据项。关系的框架称为关系模式。一个称为关系的二维表必须同时满足关系的7个性质。
6有以下程序段
#include
main( )
{ .
while(getchar( )!=',n');
}
以下叙述中正确的是( C )。
此语句将无限循环A. while
( )不可以出现在语句的条件表达式中B. getcharwhile
当执行此语句时,只有按回车键程序才能继续执行C. while
当执行此语句时,按任意键程序就能继续执行D. while
解析主要是考查和函数,函数是输入字符函数,是循环语句,:whilegetchargetcharwhile所以当输入的字符为换行符时将执行
若有定义,;,则表示( )。7“int b[8]*p=b”p+6B
数组元素的值数组元素的地址A. b[6] B. b[6]
数组元素的地址数组元素的值加上C. b[7] D. b[0]6
解析:指针中存放的是变量的地址,指针也可以进行增减运算,这时指针移动的最小单位是一个存储单元,而不是一个字节。所以题中p+6指的是将指针向后移动了6个存储单元,即指向b[6],存放的是b[6]的地址。
8以下程序段中,与语句“k—a>b?(b>c?1:O):0;”功能相同的是( A )。
;A. if(a>b)&&(b>c)k=1
; else k=0
;B. if((a>b)‖(b>c))k=1
; else k=0
;C. if(a<=b)k=0
; else if(b>c)k=1
;D. if(a>b)k=1
; else if(b<=c)k=1
: else k=0
解析:本题考查了双重三目运算符的用法。例如:表达式a>b?c:d可以看成,当a>b时取C的值,否则取d的值。在本题中k=a>b?(b>c?1:0):0可以看做:当b>c时为真,则k=a>b?1:0。当bb?0:0。也就是说,当a>b并且b>C时,k=1,否则k=0。所以A选项符合题意。
9有以下程序:
#include
struct ord
{int X,y;)dt[2]={1,2,3,4};
main( )
{
struct ord*p=dt;
printf("%d,",++(p->x));printf("%d\n",++(p->y));
}
程序运行后的输出结果是( D )。
,,,,A. 12 B. 41 C. 34 D. 23
解析:p一>x的值为1,++(p->x)作用是取p->x的值加1作为表达式的值即值为2,同理++(p->y)的值为3。所以选D。
10设有定义:“struct{char markp[l2];int numl;double num2;}tl,t2;”,若变量均已正确赋初值,则以下语句中错误的是( C )。
;((;A. t1=t2 B. t2num1=tlnuml
((;((;C. t2mark=tlmarkD. t2num2=tlnum2
解析:结构体不能通过结构体名字整体赋值,通过结构体名(成员名的方式赋值。所以C选项错
11若有定义语句:“int x=10;”,则表达式x-=x+x的值为( B )。
A. -20 B. -l0 C. 0 D. 10
解析:表达式x-=x+X可以写成x=x-(x+x),所以X的值为-l0。
12有下列程序:
int fun(int x[],int n)
{ static int sum=0,i;
for(i=0;i
void fun(int x)
{if(x/Z>1)fun(x/Z);
printf("%d",x);
}
main()
{fun(7);printf("\n");}
程序运行后的输出结果是( D )。
A. 1 3 7 B. 7 3 1 C. 7 3 D. 3 7
解析:本程序主要考查递归函数。fun(7),首先将参数代入函数,因为(7,2)>1,所以执行f(3),依此类推直到f(1(5),(1(5,2)<1,所以执行打印函数,此时X值为3,然后退出f(1(5),返回f(3),打印x值即7。所以选D。
15右两个关系R和S如下:
则由关系R得到关系S的操作是(C )。
自然连接并选择投影A. B. C. D.
解析:选择:是在数据表中给予一定的条件进行筛选数据。投影:是把表中的某几个属性的数据选择出来。连接:有自然连接、外连接,内连接等,连接主要用于多表之间的数据查询。并:与数学中的并是一样的。两张表进行并操作,要求它们的属性个数相同并且需要相容。 16有以下程序:
#include
main( )
{int b[3][3]=(0,1,2,0,1,2,0,1,2},i,j,t=l;
for(i=0;i<3;i++)
for(j=1;j<=i;j++)t+=b[i][b[j][i]];
printf("%d\n",t);
}
程序运行后的输出结果是( C )。
A. 1 B. 3 C. 4 D. 0
解析:本题考查了两层for循环。外层循环增量i的值作为内层循环执行次数的值使用。 17有以下程序
#include
main( )
{char cl,c2;
c1='A'+'8'-'4'
c2='A'+'8'-'5';
printf(",C,,d\n",cl,c2);
}
已知字母A的ASCIl码为65,程序运行后的输出结果是(A )。
,,,输出无定值A. E69 B. D69 C. ED D.
解析:本值输出两个值,,c为输出一个字母,0,4d输出一个数字。“A”的ASCIl码为65,再加 4之后为69,也就是字母E,所以本题A正确。
18数据库设计中,用E—R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的( C)。
需求阶段逻辑设计阶段概念设计阶段物理设计阶段A. B. C. D. 解析:E-R(Entity—Relationship)图为实体一联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。
19数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是( C )。
包含和包含和A. DBDBSDBMS B. DBMSDBDBS
包含和没有任何关系C. DBSDBDBMS D.
解析:数据库系统DBS包括数据库DB和数据库管理系统DBMS!!
20若有以下定义和语句:
char s [10]="abcd!",*s2="\nl23\\";
Drintf("%d%d\n",strlen(sl),strlen(s2));
则输出结果是( A)。
A. 5 5 B. 10 5 C. 10 7 D. 5 8
解析:\n和\\分别为转义字符,各占据一个字符的位置
21以下选项中表示一个合法的常量是(说明:符号口表示空格)( B )。
口口((A. 999 B. 0Xab C. 123E02 D. 27e
解析:当用指数形式表示浮点数据时,E的前后都要有数据,并且E的后面数要为整数 有以下程序:22
(#include
int f(int m)
;{ static int n=0
;n+=m
;return n
}
( )main
;{ int n=0
,;printf("%d"f(++n))
,;printf("%d\n"f(n++))
}
程序运行后的输出结果是( )。A
,,,,A. 12 B. 11 C. 23 D. 33
解析:由题可知,输出是调用了f函数,其中有f(++n)和f(n++),其中n=0,所以输出的结果为l,2。
23有以下程序
#include
main( )
{char a[3O],b[30];
scanf("%S",a);
gets(b);
printf("%s\n%s\\n",a,b);
}
程序运行时若输入:
how are you? I am fine<回车>
则输出结果是( B )。
A. how are you? I am fine B. how are you?I am fine
C. how are you?I am fine D. how are you?
解析:此题主要考查scanf函数和gets函数的区别。答案为B。
scanf("",&a)一遇到空格就认不出来,例如你输入hi nihao则scanf只能取到hi,而若换成
gets则都能去
24下列叙述中正确的是( D )。
A. 可以用关系运算符比较字符串的大小
空字符串不占用内存,其内存空间大小是B. 0
两个连续的单引号是合法的字符常量C.
两个连续的双引号是合法的字符串常量D. 解析:比较两个字符串大小用函数strcomp(S,t),空字符串有结束符,所以也要占用字节,
两个双引号表示的是空字符串。
有下列程序:25
( )main
,,;{int ijx=0
,;for(i=0i<2i++)
;{x++
;;for(j=0j<=3j++)
;{if(j%2)continue
:x++
}
:x++
}
,;printf("x=%dn"x)
}
程序执行后的输出结果是( )。B A. x=4 B. x=8 C. x=6 D. x=12
解析:在第1次外层for循环中,首先x++得到x=1。进入到内层for循环,只有循环j的值为奇数时,变量x的值才自加1,所以在内层for循环执行过程中,变量x的值自加两次,当退出内层for循环时,x=3,然后执行x++,得到x=4。在进入执行第2次外层for循环中,首先x++得到x=5。进入到内层for循环,只有循环变量J的值为奇数时,变量X的值才自加1,所以在内层for循环执行过程中,变量X的值自加l两次,当退出内层for循环时,x=7,然后执行x++,得到x=8,所以打印输出变量x的值为8。
26有以下程序:
#include
main( )
{ FILE*fp;
int k,n,i,a[6]={1,2,3,4,5,6};
fp=fopen("d2(dat","w");
for(i=0;i<6;i++) fprintf(fp,"%d\n",a[i]);
fclose(fp);
fp(i=0;i<3;i++) fscanf(fp,"%d%d",&k,&n);
fclose(fp);
printf("%d\n,%d\n,k,n);
}
程序运行后的输出结果是(C )。
,,,A. 1, 2 B. 34 C. 56 D. 123456
解析:此题是考查fprintf和fscanf,其中fprintf是向文件输出,文件为da2(dat文件,fscanf是向文件输入,所以根据程序循环写入和写出(可知答案为C。
27设x=011050,则x=x,01252的值是(A )。
A. 0000001000101000
B. 1111110100011001
C. 0000001011100010
D. 1100000000101000
解析:本题主要考查按位与运算,x=Oll050的二进制形式为00010010000101000,Ol252的二进制形式为0000001010101010,两者相与得0000001000101000。
28设有以下语句
char chl,ch2; scanf("%c%C",&chl,&ch2);
若要为变量chl和ch2分别输入字符A和B,正确的输入形式应该是( B )。
和之间用逗号间隔和之间不能有任何间隔符A. AB B. AB
和之间可以用回车间隔和之间用空格间隔C. AB D. AB
解析:scanf输入函数中,格式控制J必须严格按照函数中的要求进行输入,在scanf("%c%c", &chl,,ch2)的格式控制语句中没有任何字符进行间隔,所以在输入时也不能使用任何字符进行间隔,所以答案选择B。
29下列叙述中正确的是(C )。
对长度为的有序链表进行查找,最坏情况下需要的比较次数为A. nn
对长度为的有序链表进行对分查找,最坏情况下需要的比较次数为B. n(n/2)
对长度为的有序链表进行对分查找,最坏情况下需要的比较次数为C. n(log2n)
对长度为的有序链表进行对分查找,最坏情况下需要的比较次数为D. n(nlog2n) 解析:分法查找只适用于顺序存储的有序表,对于长度为n的有序线性表,最坏情况只需比较log2n次。
30某二叉树共有7个结点,其中叶子结点只有l个,则该二叉树的深度为(假设根结点在第1层)( D )。
A. 3 B. 4 C. 6 D. 7
解析:有一个叶子节点而节点的总个数为7,根据题意,这个二叉树的深度为7 31有以下程序
#include
#incl ude
main( )
{char a[10]=”abcd”;
printf(",d,,d\n",strlen(a),sizeof(a));
}
程序运行后的输出结果是( B )。
,,,A. 74 B. 410 C. 88 D. 10,10
解析:strlen是求字符串的长度,结果为4,sizeof是求数组的长度,而数据在定义时已给出长度为10
32相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和( D )。 可重用性差安全性差非持久性冗余性A. B. C. D.
解析:文件系统所管理的数据文件基本上是分散、相互独立的。相对于数据库系统,以此为基础的数据处理存在3个缺点:数据冗余大、数据的不一致性、程序与数据的依赖性强 33有以下程序:
#includc
void fun(int *p)
{printf("%d\n",p[5]);}
main( )
{int a[10]={1,2,3,4,5,6,7,8,9,10};
fun(&a[3]);
}
程序运行后的输出结果是( B )。
A. 5 B. 6 C. 8 D. 9
解析:由题可知,fun(&a[3])是将&a[3]作为参数,而fun(int*p)后执行的语句为p[5],由数组a可知输出的为6。
34有以下程序:
#include
main( )
{char s[]="012xy\O8s34f4w2„;
int i;n=0; ,
for(i=0;s[i]!=0;i++)
if(s[i]>='0'&&s[i]<='9')n++;
printf("%d\n",n);
}
程序运行后的输出结果是( B )。
A. 0 B. 3 C. 7 D. 8
解析:考查简单的C程序数组和循环。for循环是指i=0,如果s,[3]!=0,则i自动加1。if循环指的是s[i]中的元素大于等于0且小于等于9,则n加l,所以答案为B。 35软件生命周期中的活动不包括(B )。
软件维护市场调研软件测试需求分析A. B. C. D.
解析:软件生命周期是指从软件的产生到消亡的一个过程,其中包含需求分析、软件的开发、软件测试、软件维护等阶段。其中不包含市场调研,所以答案选择B。 36.C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的是(A )。
预定义标识符如库函数中的函数名可用做用户标识符,但失去原有含义A. ()
用户标识符可以由字母和数字任意顺序组成B.
在标识符中大写字母和小写字母被认为是相同的字符C.
关键字可用做用户标识符,但失去原有含义D.
解析:用户标识符不能以数字开头,C语言中标识符是区分大小写的,关键字不能用做用户标识符。
37以下叙述中正确的是( B )
在语言程序中,函数必须放在其他函数的最前面A. Cmain
每个后缀为的语言源程序都可以单独进行编译B. CC
在语言程序中,只有函数才可单独进行编译C. Cmain
每个后缀为(的语言源程序都应该包含一个函数D. CCmain
解析:C语言是一种成功的系统描述语言,具有良好的移植性,每个后缀为(C的C语言源程序都可以单独进行编译。
38下列关系表达式中,结果为“假”的是( B )。
A. (3+4)>6 B. (3!=4)>2 C. 3<=4 D.E. 3 F. (3<4)=1
解析:在一个表达式中,括号的优先级高,先计算3 !=4,为真即是l,1>2为假 39若有定义和语句:int a,b;scanf("%d,%d",&a,&b);以下选项中的输人数据,不能把值3赋给变量a、5赋给变量b的是( C )。
,,,,,,A. 35 B. 354 C. 35 D. 35
解析:在输入3和5之间除逗号外不能有其他字符。
40数据库管理系统中负责数据模式定义的语言是( C)。
数据定义语言数据管理语言数据操纵语言数据控制语言A. B. C. D. 解析:模式描述语言(Data Description Language,DDL)来描述、定义的,体现、反映了数据
库系统的整体观。
二、基本操作题(共18分)
41请补充main()函数,该函数的功能是:把一个字符串中的所有小写字母字符全部转换成
大写字母字符,其他字符不变,结果保存原来的字符串中。
例如,当str[M]="abcdefl23ABCD",结果输出:"ABCDEFl23ABCD"。
注意:部分源程序给出如下。 请勿改动main()函数和其他函数中的任何内容,仅在横线上填人所编写的若干表达式或语
句。
试题程序:
#include
#include
#include
#define M 80
void main()
{
int j;
char str[M]="abcdefl23ABCD";
char*pf=str;
system("CLS");
printf("***original string***,n");
puts(str);
【1】
while(*(pf+j))
{
if(*(pf+j)>='a'&&*(pf+j)<='Z')
{
*(pf+j)= 【2】 ;
【3】 ;
}
else
j++;
}
printf("****new string****,n");
puts(str);
system("pause");}
【1】j=0【2】*(pf+j)-32【3】j++
【解析】由程序中可知,变量j为字符数组的下标,其初始值为0。因此【l】处填“j=0”;大
写字母的ASCIl码值比小写字母的4、32,要将小写字母变为大写字母,因此,【2】处填“*
(pf+j)-32”;要将字符串数组中的所有小写字母变为大写字母,需要检查其中的每一个字符,
因此,【3】处填“j++”。
三、程序改错题(共24分)
42下列给定的程序中,函数proc()的功能是:用选择法对数组中的m个元素按从小到大的
顺序进行排序。
例如,排序前的数据为:11 32-5 2 14 则排序后的数据为:-5 2 11 14 32 请修改程序中的错误,使它能得到正确结果。 注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#define M 20
void proc(int a[],int n)
{
int i,j,t,P;
//****found****
for(j=0;j记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数,其功能是:求出该学生的平均分,并放入记录的ave成员中。 例如,学生的成绩是:85(5,76,69(5,85,91,72,64(5,87(5,则他的平均分应为78(875。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数fun()部位中填入你编写的若干语句。
试题程序:
#include
#define N 8
typedef struct
{
char num[10];
double s[N];
double ave;
}STREC;
vold fun(STREC*a)
{
}
void main()
STREC s={"GA005",85(5,76,69(5,85,91,72,64.5,87.5};
int i;
fun(&s);
printf("The%s's student data:\n",s.num);
for(i=0;iave=0(0;
for(i=0;iave=a->ave+a->s[i];
,*求各门课程成绩的总和*,
a->ave=a->ave,N;,*求平均分*,
}
【解析】本题考查的是指向结构体类型的指针变量做参数和结构体类型成员的运算。fun()
函数中求出平均成绩,要带回主函数则必须定义一个指针类型的形参STREC*a,同时引用成员使用指向运算符,a->ave和a->s[i]。
2013年9月全国计算机等级《二级C语言程序设
计》终极押密卷(2) 1有以下程序:
#include
int fun( )
{static int x=1;
X*=2;return X;
main( )
{int i,S=1;
for(i=1;i<=2;i++)s=fun( );
printf{?%d\n",s);
}
程序运行后的输出结果是(C )。
A. 0 B. 1 C. 4 D. 8
解析:本题考查了static的用法。当static用于局部变量中,成为静态局部变量。静态局部变量有两个用法,记忆功能和全局生存期。当static用于全局变量,主要作用是限制此全局变量被其他的文件调用。当static用于类中的成员,表示这个成员是属于这个类,但是不属于类中任意特定对象。所以本题答案为C。
2有以下程序:
#include
main( )
{int a=1,b=0;
printf(",d,",b=a+b);
printf(",d\n",a=2+b); „?
}
程序运行后的输出结果是( B )。
,,,,A. 00 B. 13 C. 32 D. 12
解析:本题输出两个值,第一个printf语句输出b的值'b=a+b=1。第二个printf语句输出了a的值,a=2*b,此时b的值为1,所以a的值为2。
3若有定义:“int a,b;”,通过语句“scan[("%d;%d"(,&a,&b);”,能把整数3赋给变量a,5赋给变量b的输入数据是( C)。
A. 3 5 B. 3,5 C. 3;5 D. 35
解析:在输入时必须遵守scanf函数中的格式才能正确地赋值给相应的变量,由于scanf函数为“%d;%d”,所以在输入时要输入3;5,答案为C。
4若有定义:“double a=22;int i=0,k=18;”,则不符合C语言规定的赋值语句是( C )。
,;;;;A. a=a++i++ B. i=(a+k)<=(i+k) C. i=a D. i=!a 解析:运算符,要求两个运算对象都为整型。C中a为double型,不符合要求 5下列关于C语言文件的叙述中正确的是( C )。
文件由一系列数据依次排列组成,只能构成二进制文件A.
文件由结构序列组成,可以构成二进制文件或文本文件B.
文件由数据序列组成,可以构成二进制文件或文本文件C.
文件由字符序列组成,其类型只能是文本文件D.
解析:本题考查文件的知识点,文件是由数据序列组成的,可以构成二进制文件或文本文件 6有以下程序:
#include
main( )
{int X=011;
printf("%d\n",++x);
}
程序运行后的输出结果是(C )。
A. 12 B. 11 C. 10 D. 9
解析:考查简单的c程序,题目中x=011而输出函数中是++x,说明是先加l,所以为l0,答案选择C。
7有以下程序:
#include
main( )
{ FILE*fp; int i,a[6]={1,2,3,4,5,6};
fp=fopen("d2(dat","w+");
for=(i=o;i<6;,i++)fpintf(fp,"%d\n",a[i]);
rewind(fp);
for(i=0;i%6;i++)fscanf(fp,"%d",&a[5-i]);
fclose(fp);
for(i=0;i%6;i++)printf("%d,",a[i]);
}
程序运行后的输出结果是( D )。
,,,,,,,,,,,,A. 456123 B. 123321
,,,,,,,,,,,,C. 123456 D. 654321 解析:这个是对文件的操作,把数组的数写到文件里,然后再从文件里倒序读出。所以输出
结果为6,5,4,3,2,1
8有下列程序:
int fun(int n)
{if(n= =1))return l;
else
return(n+fun(n-1)):
}
main( )
{ int x;
seanf("%d",&x);x=fun(x);printf("%d,n",x); }
执行程序时,给变量x输入l0,程序的输出结果是( A )。 A. 55 B. 54 C. 65 D. 45
解析:本题在函数int fun(int n)的定义中又出现了对函数fun的调用,所以函数fun是递归函
数。因而在主函数中调用x=fun(x)时,当输入10赋给变量X时,递归调用的过程为
fun(10)=l0+fun(9)=10+9+fun(8)=10+9+8+fun(7)
=10+9++8+7+fun(6)=10+9++8+7+6+fun(6)
=10+9++8+7+6+5+fun(4)
=10+9++8+7+6+5+4+fun(3) =10+9++8+7+6+5+4+3+fun(2) =10+9++8+7+6+5+4+3+2+fun(1) =10+9++8+7+6+5+4+3+2=55
下列叙述中正确的是( )。9A
程序执行的效率与数据的存储结构密切相关A.
程序执行的效率只取决于程序的控制结构B.
程序执行的效率只取决于所处理的数据量C.
以上三种说法都不对D.
解析:数据的存储结构、程序处理的数据量、程序的算法等都会影响程序执行效率
10数据流程图(DFD)是( D )。
软件概要设计的工具A.
软件详细设计的工具B.
结构化方法的需求分析工具C.
面向对象方法的需求分析工具D.
解析:数据流程图是一种结构化分析描述模型,用来对系统的功能需求进行建模
11以下叙述中正确的是( D )。
程序设计的任务就是编写程序代码并上机调试A.
程序设计的任务就是确定所用数据结构B.
程序设计的任务就是确定所用算法C.
以上三种说法都不完整D.
解析:程序设计是指设计、编制、调试程序的方法和过程。内容涉及有关的基本概念、工具、
方法以及方法学等。程序设计通常分为问题建摸、算法设计、编写代码和编译调试4个阶段。
12假定x和Y为double型,则表达式x=2,y—x+3,2的值是( B )。
(((A. 3500000 B. 3 C. 2000000 D. 3000000 解析:在x=2,y=x+3,2中,3,2=1,2+1=3,因此表达式的值为3,因为X,y为double型
变量,故选择D选项。
13有以下程序:
#include
main( )
{ char a[5][10]={"one","tw0","three","four","five"};
int i,j;
char t: 、
for(i=0;i<4;i++)
for(j=i+1;j<5;j++)
if(a[i][O]>a[j][0])
{t=a[i][O];a[i][O]=a[j][O];a[j][O]=t;)
puts(a[1]);
}
程序运行后的输出结果是( A )。
A. fwo B. fix C. Two D. Owo
解析:For循环完成的功能是把二维数组a的第一列的字母按从小到大排序,其他列的字母不
变。
14有以下程序:
#include
main( )
{ char a[20],b[20],c[20];
scanf("%s%s",a,b);
gets(c);
printf("%S%S%s\n",a,b,c);
}
程序运行时从第一列开始输入:
This is a cat!<回车>
则输出结果是(D )。
A. Thisisacat! B. Thisis a C. Thisis a cat! D. Thisisa cat ! 解析:在输入字符串时,空格表示输入结束,所以a="This",b="is",c="a cat",所以在输出时会输出Thisis a cat!
15有三个关系R、S和T如下:
则由关系R和S得到关系T的操作是( A )。
自然连接交投影并A. B. C. D.
解析:关系之间的操作包括自然连接、交、并、投影等,由题可得此操作属于自然连接,选择A选项。
16有以下程序:
#include (
main( )
{char s[]={"012xy"};int i,n=o;
for(i=0;s[i]!=0;i++)
if(s[i]>='a'&&s[i]<='z')n++;
printf(",d\n",n);
}
程序运行后的输出结果是(B )。
A. 0 B. 2 C. 3 D. 5
解析:本题考查for循环。当i=0时,开始for循环,因为数组的下标是从0开始的,所以s[o]=0,不符合for循环,不执行下边的语句,当i=1时,继续执行if语句,if语句的功能是如果在小写字母a, z,则记数n加1。所以本题结果为2。
17设有定义"double a[10],*s=a;",以下能够代表数组元素a[3]的是( B )。 A. (*s)[3] B. *(s+3) C. *s[3] D. *s+3
解析:用带下标的指针变量引用一维数组元素若有以下定义和语句:“int*P,s[10],i;P=s}”,且o?i<10,可以用,(s[i]、s+i和p+i三种表达式来表示s[i]的地址。同时可以用s[i]、*(s+i)和*(p+i)三种表达式来表示数组元素s[i]。
18以下选项中有语法错误的是( D )。
;A. char*str[]={"guest")
;B. char str[][lO]={"guest")
;;C. char*str[3]str[t]="9uest"
;;D. char str[3][lO]str[1]="guest"
解析:在D选项中,首先定义了一个二维数组str,str[1]="9uest,在赋值时"使用一个字符串进行赋值是错误的,所以答案选择D。
19下面描述中错误的是( A )。
系统总体结构图支持软件系统的详细设计A.
软件设计是将软件需求转换为软件表示的过程B.
数据结构与数据库设计是软件设计的任务之一C.
图是软件详细设计的表示工具D. PAD
解析:软件系统的总体结构图是软件架构设计的依据,它并不能支持软件的详细设计。 20以下选项中,合法的是( A )。
,,,,,;A. char str3[]={'d''e''b''u''g''\0'}
;;B. char str4str4="hello world"
;;C. char name[10]name="china"
,;;D. char strl[5]="pass"str2[6]str2=strl
解析:选项B不能把一个字符串赋值给一个字符变量,选项c和D犯了同样的错误是把字符串赋给了数组名。
21若有定义语句:“int a=10;double b=3(14;”,则表达式'A'+a+b值的类型是(C )。 A. char B. Int C. Double D. Float
解析:如果是字符数据和整数运算将先转换成整型再进行运算,当整型和浮点数进行运算,为了提高精度将会转化为双精度类型然后进行运算,所以此题结构的数值类型为double类型。
22以下程序段完全正确的是( C )。
;,;;,;A. int*Pscanf("%d"&p) B. int*Pscanf("%d"p)
,;,;,;;,;C. int k*p=&kscanf("%d"p) D. int k*p*p=&kscanf("%d?p) 解析:A中P是指针,没有初始化,且取P的地址即类型为指向地址的地址,与输出参数类型不符。B中指针P没有初始化,且P所指变量值不明。D*p是整型变量,&k是整型变量的地址。所以选C。
23有以下程序:
#include
main()
{int y=10;
while(y--);
printf("y=%d\n",y);
}
程序执行后的输出结果是( B )。
构成无限循环A. y=0 B. y=-1 C. y=l D. while
解析:y--的作用是先取其值作为表达式的值,然后Y的值减1存入Y。当y>0时循环继续,直到y=0时循环结束,然后Y值减l存入Y中,所以选B。
24下面结构体的定义语句中,错误的是( B )。
;;;;;A. struct ord{int xint Yint Z}struet ord a
;;;;B. struct ord{int xint yint Z}struct ord a
;;;;C. struct ord{int Xint Yint Z}a
;;;;D. struct{int Xint yint Z}a
解析:结构体定义的类型说明的一般形式为:struct结构体标识名{类型名1结构成员名表l;类型名2结构成员名表2;???};。注意:?结构体说明同样要以分号结尾;?紧跟在结构体类型说明之后进行定义;?在说明一个无名结构体类型的同时,直接进行定义;?先说明结构体类型,再单独进行变量定义等。所以B选项错误。
25有以下程序:
#include
struct STU{char name[9];char sex;int score[2];};
void f(struct STU a[])
{ struct STU b={"Zhao",'m',85,90);
a[1]=b;
}
main( )
{ struct STU c[2]={{"Qian",'f',95,92},{"Sun",'m' 98,99}};
f(c);
printf(”%s,%c,%d,%d,?,c[o](name,c[o](sex,c[o](score[o],c[o](score[1]);
printf("%s,%c,%d,%d\n",c[1](name,c[1](sex,c[1](score[o],c[1].score
[1]);
}
程序运行后的输出结果是(D )。
,,,,,,,A. Zhaom8590Sunm9899
,,,,,,,B. Zhaom8590Qianf9592
,,,,,,,C. Qianf9592Sunm9899
D. Qian,f,95,92,Zhao,m,85,90
解析:F函数是为结构体数组的第二个数赋值,数组的第一个数没有变化,所以正确答案应选D。
26有以下程序:
#include
#define N 3
void fun(int a[][N],int b[])
{ int i,j;
for(i=0;i
#define N l0
void fun(int x[N])
{int i=O;
while(i
#include!(string(h>
void fun(char*w,int m)
{ char S,*pl,*p2;
p1=w;p2=w+m-;
while(pl计划 数据库设计软件总体设计算法设计A. B. C. D. 解析:软件设计阶段的主要任务包括丙个:一是进行软件系统的可行性分析,确定软件系统的建设是否值得,能否建成。二是进行软件的系统分析,了解用户的需求,定义应用功能,详细估算开发成本和开发周期。
37数据库设计中反映用户对数据要求的模式是( C )。
内模式概念模式外模式设计模式A. B. C. D.
解析:外模式,也称为用户模式。在一个数据库模式中,有N个外模式,每一个外模式对应一个用户。外模式保证数据的逻辑独立性。内模式属于物理模式,因此,一个数据库只有一个内模式;内模式规定了数据的存储方式、数据操作的逻辑、数据的完整性、数据的安全性、数据存储性能。
38有以下程序:
#include