样题4.docx
《样题4.docx》由会员分享,可在线阅读,更多相关《样题4.docx(21页珍藏版)》请在冰豆网上搜索。
样题4
样题4
一、选择题(每题1分,共40分)
1.下列选项中不属于结构化程序设计方法的是﹍﹍。
A)自顶向下
B)逐步求精
C)模块法
D)客复用
2.两个或两个以上模块之间关联的紧密程度称为﹍﹍。
A)耦合度
B)内聚度
C)复杂度
D)数据传输特性
3.下列叙述中正确的是﹍﹍。
A)软件测试应该由程序开发者来完成
B)程序经调试后一般不需要再测试
C)软件维护只包括对程序代码的维护
D)以上三种的说法都不对
4.按照“后进先出”原则组织数据的数据结构是﹍﹍。
A)队列
B)栈
C)双向链表
D)二叉树
5.下列叙述中正确的是﹍﹍。
A)现行链表是线性表的链式存储结构
B)栈与队列是非线性结构
C)双向链表是非线性结构
D)只有根结点的二叉树是线性结构
6.对如下二叉树:
ABCDEF
进行后续遍历的结果为﹍﹍。
A)ABCDEF
B)DBEAFC
C)ABDECF
D)DEBFCA
7.在深度为7的满二叉树中,叶子结点的个数为﹍﹍。
A)32
B)31
C)64
D)63
8.“商品”与“顾客”两个实体集之间的联系一般是﹍﹍。
A)一对一
B)一对多
C)多对一
D)多对多
9.在E-R图中,用来表示实体的图形是﹍﹍。
A)矩形
B)椭圆形
C)菱形
D)三角形
10.数据DB、数据库系统DBS、数据库管理系统DBMS之间的关系是﹍﹍。
A)DB包含DBS和DBMS
B)DBMS包含DB和DBS
C)DBS包含DB和DBMS
D)没有任何关系
11.以下不合法的用户标示符是﹍﹍。
A)j2_KEY
B)Double
C)4d
D)_8_
12.以下不合法的数值常量是﹍﹍。
A)01
B)lel
C)8.0E0.5
D)0xabcd
13.以下不合法的字符常量是﹍﹍。
A)‘\018’
B)‘\“’
C)‘\\’
D)‘\xcc’
14.表达示3.63-5/2+1.2+5%2的值是﹍﹍。
A)4.3
B)4.8
C)3.3
D)3.8
15.以下能正确定义字符串的语句是﹍﹍。
A)charstr[]={‘\064’}
B)charstr[]=”kx43”
C)charstr[]=”;
D)charstr[]=”\0”
16.以下数组定义中错误的是﹍﹍。
A)intx[][3]={0};
B)intx[2][3]={{1,2},{3,4},{5,6}};
C)intx[][3]={{1,2,3},{4,5,6}};
D)intx[2][3]={1,2,3,4,5,6};
17.若要求从键盘读入含有空格字符的字符串,应使用函数﹍﹍。
A)getc()
B)gets()
C)getchar()
D)scanf()
18.以下四个程序中,完全正确的是﹍﹍。
A)#include
main();
{/*programming*/
printf(“programming!
\n”);}
B)#include
main()
{/*/programming/*/
printf(“programming!
\n”);}
C)#include
main()
{/*/*programming*/*/
printf(“programming!
\n”);}
D)include
main()
{/*programming*/
printf(“programming!
\n”);}
19.若有定义:
floatx=1.5;inta=1,b=3,c=2;则正确的switch语句是﹍﹍。
A)switch(x)
{case1.0:
printf(“*\n”);
case2.0:
printf(“**\n”);}
B)switch(int(x))
{case1:
printf(“*\n”);
case2:
printf(“**\n”);}
C)switch(a+b)
{case1:
printf(“*\n”);
case2+1:
printf(“**\n”);}
D)switch(a+b)
{case1:
printf(“*\n”);
casec:
printf(“**\n”);}
20.若个选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值,以下选项中错误的程序是﹍﹍。
A)main()
{……x=fun(2,10);……}
floatfun(inta,intb){……}
B)floatfun(inta,intb){……}
main()
{……x=fun(i,j);……}
C)floatfun(int,int);
main()
{……x=fun(2,10);……}
floatfun(inta,intb);{……}
D)main()
{floatfun(inti,intj);
……x=fun(i,j);……}
floatfun(inta,intb){……}
21.在以下给出的表达式中,与while(E)中的(E)不等价的表达式是﹍﹍。
A)(!
E==0)
B)(E>0||E<0)
C)(E==0)
D)(E!
=0)
22.要求通过while循环不断读入字符,当读入字母N时结束循环。
若变量已正确定义,以下正确的程序是﹍﹍。
A)while((ch=getchar())!
=’N’)printf(“%c”,ch);
B)while(ch=getchar()!
=’N’)printf(“%c”,ch);
C)while(ch=getchar()==’N’)printf(“%c”,ch);
D)while((ch=getchar())==’N’)printf(“%c”,ch);
23.已定义以下函数:
intfun(int*p)
{return*p;}
fun函数返回值是﹍﹍。
A)不确定的值
B)一个整数
C)形参p中存放的值
D)形参p的地址值
24.若有说明语句:
double*p,a:
则能通过scanf语句正确给输入项读入数据的程序段是﹍﹍。
A)*p=&a;scanf(“%1f”,p);
B)*p=&a;scanf(“%f”,p);
C)p=&a;scanf(“%1f”,*p);
D)p=&a;scanf(“%1f”,p);
25.下面有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向一个链表中来女婿的三个结点。
structnode
{
chardata;
structnode*next;
}*p,*q,*r;
现要将q和r所指结点交换位置,同时要保持链表的连续,以下不能完成此操作的语句是﹍﹍。
A)q->next=r->next;p->next=r;r->next=q;
B)p->next=r;q->next=r->next;r->next=q;
C)q->next=r->next;r->next=q;p->next=r;
D)r->next=q;p->next=r;q->next=r->next;
26.有以下程序段:
Structst
{
intx;int*y;
}
*pt;
inta[]={1,2},b[]={3,4};
struststc[]={10,a,20,b};
pt=c;
以下选项中表达式的值为11的是﹍﹍。
A)*pt->y
B)pt->x
C)++pt->x
D)(pt++)->x
27.设fp为指向某二进制文件的指针,且已读到此文件的末尾,则函数feof(fp)的返回值为﹍﹍。
A)EOF
B)非0值
C)0
D)NULL
28.设有以下语句:
Inta=1,b=2,c;
c=a^(b<<2);
执行后,C的值为-———。
A)6B)7C)8D)9
29.有以下语句:
#include
main()
{
charc1,c2,c3,c4,c5,c6;
scanf(“%c%c%c%c”,&c1,&c2,&c3,&c4);
c5=getchar();
c6=getchar();
putchar(c1);
putchar(c2);
printf(“%c%c\n”,c5,c6);
}
程序运行后,若从键盘输入(从第1列开始)
123<回车>
45678<回车>
则输出的结果是﹍﹍。
A)1267
B)1256
C)1278
D)1245
30.有以下程序:
main()
{
inty=10;
while(y--);
printf(“y=%d\n”,y);
}
程序运行后的输出结果是﹍﹍。
A)y=0
B)y=-1
C)y=1
D)while构成无限循环
31.有以下程序:
main()
{
inta=0,b=0,c=0,d=0;
if(a=1)b=1;
c=2;
elsed=3;
printf(“%d,%d,%d,%d\n”,a,b,c,d);
}
程序输出﹍﹍。
A)0,1,2,0
B)0,0,0,3
C)1,1,2,0
D)编译有错
32.有以下程序:
main()
{
inti,j,x=0;
for(i=0;i<2;i++)
{
x++;
for(j=0;j<=3;j++)
{
if(j%2)
continue;
x++;
}
x++;
}
printf(“x=%d\n”,x);
}
程序运行后的输出结果是﹍﹍。
A)x=4
B)x=8
C)x=6
D)x=12
33.有一些下程序:
intfun1(doublea){
returna=*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
34.有以下程序:
main()
{
inti,t[][3]={9,8,7,6,5,4,3,2,1};
for(i=0;i<3;i++)
printf(“%d”,t[2-i][i]);
}
程序执行后的输出结果是﹍﹍。
A)753
B)357
C)369
D)751
35.有以下程序:
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
36.有以下程序:
main()
{
inti,s=0,t[]={1,2,3,4,5,6,7,8,9};
for(i=0;i<9;i+=2)s+=*(t+i);
printf(“%d\n”,s);
}
程序运行后的输出结果是﹍﹍。
A)45
B)20
C)25
D)36
37.有以下程序:
voidfun1(char*p)
{
char*q;
q=p;
while(*q!
=’\0’)
{
(*q)++;
q++;
}
}
main()
{
chara[]={“Program”},*p;
p=&a[3];
fun1(p);
printf(“%s\n”,a);
}
程序运行后的输出结果是﹍﹍。
A)Prohsbn
B)Prphsbn
C)Progsbn
D)program
38.有以下程序:
voidswap(char*x,char*y)
{
chart;
t=*x;
*x=*y;
*y=t;
}
main()
{
char*s1=”abc”,*s2=”123”;
swap(s1,s2)
printf(“%s,%s\n”,s1,s2);
}
程序运行后的输出结果是﹍﹍。
A)123,abc
B)abc,123
C)1bc,a23
D)321,cba
39.有以下程序:
intfun(intn)
{
if(n==1)return1;
else
return(n+fun(n-1));
}
main()
{
intx;
scanf(“%d”,&x);
x=fun(x);
printf(“%d\n”,x);
}
执行程序时,给变量x输入10,程序的输出结果是﹍﹍。
A)55
B)54
C)65
D)45
40.有以下程序:
intfun(intx[],intn)
{
staticintsum=0,i;
for(i=0;isum+=x[i];
returnsum;
}
main()
{
inta[]={1,2,3,4,5},b[]={6,7,8,9},s=0;
s=fun(a,5)+fun(b,4);
printf(“%d\n”,s);
}
程序运行后的输出结果是﹍﹍。
A)45
B)50
C)60
D)55
二、程序填空题(18分)
下列给定程序中,函数fun()的功能是:
有N×N矩阵,将矩阵的外围元素顺时针旋转。
操作顺序是:
首先将第一行元素的值存入临时数组r,然后使第一列成为第一行,最后一行成为第一列,最后一列称为最后一行,临时数组中的元素成为最后一列。
例如,若N=3,有下列矩阵:
123
456
789
计算结果为
741
852
963
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达示或语句。
试题程序:
#include
#ddefineN4
voidfun(int(*t)[N])
{
intj,r[N];
for(j=0;jr[j]=t[0][j];
for(j=0;j/**********found**********/
t[0][N-j-1]=t[j][【1】];
for(j=0;jt[j][0]=t[N-1][j];
/**********found**********/
for(j=N-1;j>=0;【2】)
t[N-1][N-1-j]=t[j][N-1];
for(j=N-1;j>=0;j--)
/**********found**********/
t[j][N-1]=r[【3】];
}
main()
{
intt[][N]={2,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j;
printf(“\nTheoriginalarray:
\n”);
for(i=0;i{
for(j=0;jprintf(“%2d”,t[i][j]);
printf(“\n”);
}
fun(t);
printf(“\nTheresultis:
\n”);
for(i=0;i{
for(j=0;jprintf(“%2d”,t[i][j]);
printf(“\n”);
}
}
三、程序修改题(18分)
下列给定程序中,函数fun()的功能是:
计算
=f(0)×f(0)+f
(1)×f
(1)+f
(2)×f
(2)+…+f(n)×f(n)的值。
f(n)函数定义如下:
F(n)=(n-1)×(n+1)
当n=3时,
=10。
请改正程序中的错误,使它能得到正确结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
/************found***********/
f(intx)
{
return(x-1)/(x+1);
}
Intfun(intn)
{
Inti=0,sum=0;
/**********found**********/
For(i=1;iSum+=f(i);
}
main()
{
printf(“%f\n”,fun(3));
}
四、程序修改题(24分)
编写函数fun(),它的功能是计算:
s=
s作为函数返回值。
在C语言中客调用
。
㏒函数的引用说明是double㏒(doublex)
例如,若m的值是20,fun函数值为6.506583.
请勿改动主函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
doublefun(intm)
{
}
main()
{
printf(“%f\n”,fun(20));
}