第二套笔试题
一、选择题
1、视图设计一般有3种设计次序,下列不属于视图设计的是______。
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、在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是______。
A、可行性分析 B、需求分析 C、详细设计 D、程序编码
7、对长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为______。
A、N+1 B、N C、(N+1)/2 D、N/2
8、下面不属于软件设计原则的是______。
A、抽象 B、模块化 C、自底向上 D、信息隐蔽
9、下列有关数据库的描述,正确的是______。
A、数据库是一个DBF文件 B、数据库是一个关系
C、数据库是一个结构化的数据集合 D、数据库是一组文件
10、以下数据结构中不属于线性数据结构的是______。
A、队列 B、线性表 C、二叉树 D、栈
11、有以下程序
main()
{ int a; char c=10;
float f=100.0; double x;
a=f/=c*=(x=6.5);
printf("%d %d %3.1f %3.1f\n",a,c,f,x);
}
程序运行后的输出结果是______。
A、1 65 1 6.5 B、1 65 1.5 6.5 C、1 65 1.0 6.5 D、2 65 1.5 6.5
12、若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是______。
A、函数调用可以作为独立的语句存在 B、函数调用可以作为一个函数的实参
C、函数调用可以出现在表达式中 D、函数调用可以作为一个函数的形参
13、以下不能定义为用户标识符的是______。
A、scanf B、Void C、_3com_ D、int
14、以下选项中可作为C语言合法整数的是______。
A、10110B B、0386 C、0Xffa D、x2a2
15、有定义语句:int x,y;。若要通过scanf("%d,%d",&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是______。
A、11 12↙ B、11,12↙ C、11, 12↙ D、11,↙12↙
16、已定义c为字符型变量,则下列语句中正确的是______。
A、c='97' B、c="97"; C、c=97; D、c="a";
17、有定义语句:int a=1,b=2,c=3,x;,则以下选项中各程序段执行后,x的值不为3的是______。
A、if (c<a) x=1;
else if (b<a) x=2;
else x=3; |
B、if (a<3) x=3;
else if (a<2) x=2;
else x=1; |
C、if (a<3) x=3;
if (a<2) x=2;
if (a<1) x=1; |
D、if (a<b) x=b;
if (b<c) x=c;
if (c<a) x=a; |
18、有以下程序
main()
{ int a[3][3],*p,i;
p=&a[0][0];
for(i=0;i<9;i++) p[i]=i+1;
printf("%d\n",a[1][2]);
}
程序运行后的输出结果是______。
A、3 B、6 C、9 D、2
19、下列函数定义中,会出现编译错误的是______。
A、max(int x,int y,int *z)
{*z=x>y ? x:y;} |
B、int max(int x,y)
{ int z;
z=x>y ? x:y;
return z;} |
C、max(int x,int y)
{ int z;
z=x>y?x:y; return(z);} |
D、int max(int x,int y)
{ return(x>y?x:y); } |
20、有以下程序
#include <stdio.h>
#define F(x,y) (x)*(y)
main()
{ int a=3,b=4;
printf("%d\n",F(a++,b++));
}
程序运行后的输出结果是______。
A、12 B、15 C、16 D、20
21、有以下程序:
main()
{ int s=0,a=1,n;
scanf("%d",&n);
do
{s+=1; a=a-2;}
while(a!=n);
printf("%d\n",s);
}
若要使程序的输出值为2,则应该从键盘给n输入的值是______。
A、-1 B、-3 C、-5 D、0
22、以下选项中非法的表达式是______。
A、0<=x<100 B、i=j==0 C、(char)(65+3) D、x+1=x+1
23、有以下程序
main()
{ int a=1,b=2,m=0,n=0,k;
k=(n=b>a)||(m=a<b);
printf("%d,%d\n",k,m);
}
程序运行后的输出结果是______。
A、0,0 B、0,1 C、1,0 D、1,1
24、要求以下程序的功能是计算:s=1+1/2+1/3+…+1/10。
main()
{ int n; float s;
s=1.0;
for(n=10;n>1;n--)
s=s+1/n;
printf("%6.4f\n",s);
}
程序运行后输出结果错误,导致错误结果的程序行是______。
A、s=1.0; B、for(n=10;n>1;n--)
C、s=s+1/n; D、printf("%6.4f\n",s);
25、已定义ch为字符型变量,以下赋值语句中错误的是______。
A、ch='\'; B、ch=62+3; C、ch=NULL; D、ch='\xaa';
26、下列选项中正确的语句组是______。
A、char s[8]; s={"Beijing"} B、char *s; s={"Beijing"}
C、char s[8]; s="Beijing" D、char *s; s="Beijing"
27、有以下函数定义:
void fun(int n, double x) { …… }
若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是______。
A、fun(int y,double m); B、k=fun(10,12.5);
C、fun(x,n); D、void fun(n,x);
28、有以下程序段
main()
{ int a=5,*b,**c;
c=&b; b=&a;
……
}
程序在执行了c=&b;b=&a;语句后,表达式:**c的值是______。
A、变量a的地址 B、变量b中的值 C、变量a中的值 D、变量b的地址
29、若程序中已包含头文件stdio.h,以下选项中,正确运用指针变量的程序段是______。
A、int *i=NULL;
scanf("%d",i); |
B、float *f=NULL;
*f=10.5; |
C、char t='m',*c=&t;
*c=&t; |
D、long *L;
L='\0'; |
30、有以下程序:
main()
{ int k=4,n=0;
for( ; n<k ; )
{ n++;
if(n%3!=0) continue;
k--; }
printf("%d,%d\n",k,n);
}
程序运行后的输出结果是______。
A、1,1 B、2,2 C、3,3 D、4,4
31、以下叙述中正确的是______。
A、C程序中注释部分可以出现在程序中任意合适的地方
B、花括号"{"和"}"只能作为函数体的定界符
C、构成C程序的基本单位是函数,所有函数名都可以由用户命名
D、分号是C语句之间的分隔符,不是语句的一部分
32、以下不能正确定义二维数组的选项是______。
A、int a[2][2]={{1},{2}}; B、int a[][2]={1,2,3,4};
C、int a[2][2]={{1},2,3} D、int a[2][]={{1,2},{3,4}}
33、以下选项中不能正确把cl定义成结构体变量的是______。
1、typedef struct
{int red;
int green;
int blue;
} COLOR;
COLOR cl; |
2、struct color cl
{ int red;
int green;
int blue;
}; |
3、struct color
{ int red;
int green;
int blue;
}cl; |
4、struct
{int red;
int green;
int blue;
}cl; |
A、1 B、2 C、3 D、4
34、以下能正确定义一维数组的选项是______。
A、int num[] |
B、#define N 100
int num[N] |
C、int num[0..100] |
D、int N=100;
int num[N] |
35、设有如下程序段
int x=2002,y=2003;
printf("%d\n",(x,y));
则以下叙述中正确的是______。
A、输出语句中格式说明符的个数少于输出项的个数,不能正确输出
B、运行时产生出错信息 C、输出值为2002 D、输出值为2003
36、有以下程序:
struct s
{ int x,y; } data[2]={10,100,20,200};
main()
{ struct s *p=data;
printf("%d\n",++(p->x));
}
程序运行后的输出结果是______。
A、10 B、11 C、20 D、21
37、设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是______。
A、x=x*100+0.5/100.0; B、x=(x*100+0.5)/100.0
C、x=(int)(x*100+0.5)/100.0; D、x=(x/100+0.5)/100.0;
38、已定义以下函数:
fun(int *p)
{ return *p; }
该函数的返回值是______。
A、不确定的值 B、形参p中存放的值
C、形参p所指存储单元中的值 D、形参p的地址值
39、有以下程序
fun(int a, int b)
{ if(a>b) return(a);
else return(b);
}
main()
{ int x=3,y=8,z=6,r;
r=fun(fun(x,y),2*z);
printf("%d\n",r);
}
程序运行后的输出结果是______。
A、3 B、6 C、8 D、12
40、若有定义:int *p[3];,则以下叙述中正确的是______。
A、定义了一个基类型为int的指针变量p,该变量具有三个指针
B、定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针
C、定义了一个名为*p的整型数组,该数组含有三个int类型元素
D、定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素
41、以下程序中函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址。
#include <stdio.h>
#include <string.h>
char *scmp(char*s1,char*s2)
{ if (strcmp(s1,s2)<0) return(s1);
else return(s2);
}
main()
{ int i; char string[20],str[3][20];
for(i=0;i<3;i++) gets(str[i]);
strcpy(string,scmp(str[0],str[1]));/*库函数strcpy对字符串进行复制*/
strcpy(string,scmp(string,str[2]));
printf("%s\n",string);
}
若运行时依次输入:abcd、abba和abc三个字符串,则输出结果为______。
A、abcd B、abba C、abc D、baca
42、有以下程序
void fun(char *a, char *b)
{ a=b; (*a)++; }
main()
{ char c1='A',c2='a',*p1,*p2;
p1=&c1; p2=&c2; fun(p1,p2);
printf("%c%c\n",c1,c2);
}
程序运行后的输出结果是______。
A、Ab B、aa C、Aa D、Bb
43、若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)。
s=a;
for(b=1;b<=c;b++) s=s+1;
则与上述程序段功能等价的赋值语句是______。
A、s=a+b; B、s=a+c; C、s=s+c; D、s=b+c;
44、有以下程序
#include <string.h>
main()
{ char str[][20]={"Hello","Beijing"},*p=str;
printf("%d\n",strlen(p+20));
}
程序运行后的输出结果是______。
A、0 B、5 C、7 D、20
本题的考查点是字符数组和指针的运用。
strlen()是测试字符串长度的函数。函数的值为字符串中实际长度,不包括'/0'在内。str[][20]={"Hello","Beijing"}实际上是定义了一个2行20列的数组,数组的首地址是str[0][0],p+20应该是向后移了20位,所以指向了数组的str[1][0]处,所以此时测试函数的长度,应该时从str[1][0]开始往后,即"Beijing"的长度,所以输出结果是7。
故本题答案为C。
45、已定义以下函数
fun(char *p2, char *p1)
{ while((*p2=*p1)!='\0'){p1++;p2++;} }
函数的功能是______。
A、将p1所指字符串复制到p2所指内存空间
B、将p1所指字符串的地址赋给指针p2
C、对p1和p2两个指针所指字符串进行比较
D、检查p1和p2两个指针所指字符串中是否有'\0'
46、有以下程序
main()
{ int x=3, y=2, z=1;
printf("%d\n",x/y&~z);
}
程序运行后的输出结果是______。
A、3 B、2 C、1 D、0
47、若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为______。
A、0 B、1 C、-1 D、一个非0值
48、下列关于c语言数据文件的叙述中正确的是______。
A、文件由ASCII码字符序列组成,C语言只能读写文本文件
B、文件由二进制数据序列组成,C语言只能读写二进制文件
C、文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件
D、文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件
49、有以下程序
#include <stdio.h>
main()
{ printf("%d\n",NULL); }
程序运行后的输出结果是______。
A、0 B、1 C、-1 D、NULL没定义,出错
50、有以下结构体说明和变量定义,如下图所示,指针p、q、r分别指向一个链表中的三个连续结点。
struct node
{ int data;
struct node *next;
}*p,*q,*r;
data next data next data next
┌─┬─┐ ┌─┬─┐ ┌─┬─┐
─→│ │ ┼→│ │ ┼→│ │ ┼→
└─┴─┘ └─┴─┘ └─┴─┘
↑p ↑q ↑r
现要将q和r所指结点的先后位置交换,同时要保持链表的连续,以下错误的程序段是______。
A、r->next=q;q->next=r->next;p->next=r;
B、q->next=r->next;p->next=r;r->next=q;
C、p->next=r;q->next=r->next;r->next=p;
D、q->next=r->next;r->next=q;p->next=r;
二、填空题
1、在面向对象方法中,信息隐蔽是通过对象的______性来实现的。
2、关系模型的数据操纵即是建立在关系上的数据操纵,一般有______、增加、删除和修改四种操作。
3、在最坏情况下,冒泡排序的时间复杂度为______。
4、数据库系统的三级模式分别为______模式、内部级模式与外部级模式。
5、若按功能划分,软件测试的方法通常分为白盒测试方法和______测试方法。
6、以下程序运行后的输出结果是______。
main()
{ int i,n[]={0,0,0,0,0};
for(i=1;i<=4;i++)
{ n[i]=n[i-1]*2+1;
printf("%d ",n[i]);
}
}
7、执行以下程序后,输出"#"号的个数是______。
#include <stdio.h>
main()
{ int i,j;
for(i=1; i<5;i++)
for(j=2; j<=i; j++) putchar('#');
}
8、以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。
例如,输入字符串:abc123edf456gh,执行程序后输出:123456。请填空。
#include <stdio.h>
#include <ctype.h>
main()
{ char s[80],d[80]; int i,j;
gets(s);
for(i=j=0;s[i]!='\0';i++)
if(______) { d[j]=s[i]; j++; }
d[j]='\0';
puts(d);
}
9、以下程序运行后的输出结果是______。
main()
{ int i,m=0,n=0,k=0;
for(i=9;i<=11;i++)
switch(i/10)
{ case 0: m++;n++;break;
case 10: n++;break;
default: k++;n++;
}
printf("%d %d %d\n",m,n,k);
}
10、以下程序运行后的输出结果是______。
main()
{ int p=30;
printf("%d\n",(p/3>0 ? p/10 :p%3));
}
11、请在以下程序第一行的下划线处填写适当内容,使程序能正常运行。
______( double,double);
main()
{ double x,y;
scanf("%1f%1f",&x,&y);
printf(%1f\n",max(x,y));
}
double max(double a,double b)
{ return(a>b ? a:b);}
12、以下程序运行后的输出结果是______。
int a=5;
fun(int b)
{ static int a=10;
a+=b++;
printf("%d ",a);
}
main()
{ int c=20;
fun(c);
a+=c++;
printf("%d\n",a);
}
13、以下程序运行后的输出结果是______。
main()
{ int a=1,b=3,c=5;
if (c=a+b) printf("yes\n");
else printf("no\n");
}
14、以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。请填空。
int fun ( int n)
{ int m=0,f=1,i;
for(i=1; i<=n; i++)
{ m+=i*f;
f=______;
}
return m;
}
main()
{ printf("m=%d\n",______);}
15、已有定义如下:
struct node
{ int data;
struct node *next;
}*p;
以下语句调用malloc函数,使指针p指向一个具有struct node类型的动态存储空间。请填空。
p=(struct node *)malloc(______);
16、以下程序运行后输入:3,abcde↙,则输出结果是______。
#include <string.h>
move(char *str, int n)
{ char temp; int i;
temp=str[n-1];
for(i=n-1;i>0;i--) str[i]=str[i-1];
str[0]=temp;
}
main()
{ char s[50]; int n,i,z;
scanf("%d,%s",&n,s);
z=strlen(s);
for(i=1;i<=n;i++) move(s,z);
printf("%s\n",s);
}
17、以下程序运行后的输出结果是______。
fun(int x)
{ if(x/2>0) fun(x/2);
printf("%d ",x);
}
main()
{ fun(6); }
18、以下程序运行后的输出结果是______。
main()
{ char m;
m='B'+32; printf("%c\n",m);
}
19、以下程序运行后的输出结果是______。
(注:如果结果中含有回车,可加一空格写在一行,例如:
1 1 1
1 1 1
1 1 1可以写成1 1 1 1 1 1 1 1 1)
main()
{ int i,j,a[][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
for(j=i+1;j<3;j++) a[j][i]=0;
for(i=0;i<3;i++)
{ for(j=0;j<3;j++) printf("%d ",a[i][j]);
printf("\n");
}
}
第二套笔试题答案
题号 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
答案 |
B |
C |
B |
D |
D |
B |
B |
C |
C |
C |
B |
D |
D |
C |
题号 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
答案 |
A |
C |
C |
B |
B |
A |
B |
D |
C |
C |
A |
D |
C |
C |
题号 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
答案 |
D |
C |
A |
D |
B |
B |
D |
B |
C |
C |
D |
B |
B |
A |
题号 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
|
|
|
|
|
|
答案 |
B |
C |
A |
D |
A |
D |
A |
A |
|
|
|
|
|
|
二、填空题答案1、封装 2、查询 3、n(n-1)/2 或 n*(n-1)/2 或 O(n(n-1)/2) 或 O(n*(n-1)/2)
4、概念 或 概念级 5、黑盒 6、1 3 7 15 7、6 8、s[i]>='0'&&s[i]<='9' 或 isdigit(s[i]) 或 s[i]>=48&&s[i]<=57 或 s[i]<='9'&&s[i]>='0' 或 '9'>=s[i]&& '0'<=s[i]
9、1 3 2 10、3 11、double max 或 extern double max 12、30 25 13、yes 14、-f 或 f*-1 或 -1*f 或 f*(-1) 或 (-1)*f 15、fun(10) 16、sizeof(struct node) 或 4 17、cdeab 18 1 3 6 19、b
20、1 2 3 0 5 6 0 0 9