浙江省二级c语言真题
Ⅰ 求c语言试题及答案!急啊!
c语言考试题(一)
一、 单项选择题(每题2分,共20分)
1、以下选项中属于C语言的数据类型是( )
A.复数型 B.逻辑型 C.集合型 D.双精度型
2、一个C程序的执行是从( )
A.main()函数开始,直到main()函数结束 B.第一个函数开始,直到最后一个函数结束
C.第一个语句开始,直到最后一个语句结束 D.main()函数开始,直到最后一个函数结束
3、设有语句int a=3;则执行语句a+=a-=a*a;后,变量a的值是( )
A.3 B.0C.-12D.9
4、若有 char c[5]={'c','d','\0','e','\0'};则执行语句printf("%s",c);结果是( )。
A.cd\0e B.'c''d' C.cd D.cd e
5、已知:int a[2][3]={1,2,3,4,5,6}, (*p)[3]=a;则下列表达式不是4的是 ( )。
A.*(*p+3) B.*p+3 C.*(*(p+0)+3) D.a[0][3]
6、以下有宏替换不正确的叙述( ).
A.宏替换不占用运行时间 B.宏名无类型
C.宏替换只是字符串替换 D.宏名必须用大写字母表示
7、执行char str[10]=”Ch\nina”; strlen(str)的值是( )
A.5 B.6 C.7 D.9
8、下面程序的输出结果是:( )
#define POWER(x) (x*x)
main()
{int i=4; printf("%d",POWER(i-2)); }
A. -9 B. -7 C. 5 D. -6
9、在定义int a[3][4][2];后,第10个元素是( )
A.a[2][1][2] B.a[1][0][1] C.a[2][0][1] D.a[2][2][1]
10、下面程序的输出结果是:( )
typedef struct
{long x[2];<br>short y[4];<br>char z[8];<br>}MYTYPE;
MYTYPE a;
main()
{ printf("%d\n",sizeof(a));}
A. 2 B. 8 C. 14 D. 24
二、 填空题(每空1分,共11分)
1、字符串"A"在内存中占用的字节数为 。
2、C语言中的标识符只能由字母、下划线和 组成。
3、若有定义语句“ int a=25,b=14,c=19;",以下语句的执行结果是
if(a++<=25&&b--<=2&&c++) printf("***a=%d,b=%d,c=%d\n",a,b,c);
else printf("###a=%d,b=%d,c=%d\n",a,b,c);
4、有如下定义a[]="B\172\\\'a%%";则执行语句printf("%d",strlen(a));的结果为 。
5、若有定义:int a[12]={1,2,3,4,5,6,7,8,9,10,11,12},*p[4],i; for(i=0;i<4;i++) p[i]=&a[i*3];则*(*(p+1)+2)的值为 ,*p[2]的值为 。若数组的首地址为2000,则p[1]指向的地址为 。
6、设a=2,b=3,x=3.5,y=2.5,则表达式(float)(a+b)/2+(int)x%(int)y 的结果是 。
7、设x、y都是int型变量,初值都为1,则执行表达式:--x&&y++后,y的值为 。
8、语句for(i=1;i==10;i++)continue;循环的次数是 。
9、以下程序输出 。
main()
{enum em {em1=3,em2=1,em3};
char *aa[]={"AA","BB","CC","DD"}; printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]);
}
三、 写程序结果(每题5分,共35分)
1、#include
main()
{int x,y,z;<br>x=1,y=2,z=3; x+=y+=z;<br>printf("1:%d\n",z+=x>y?x++:y++);<br>x=0x02ff;y=0xff00;<br>printf("2:%d\n",(x&y)>>4|0x005f);<br>x=y=z=-1; ++x||++y&&++z;<br>printf("3:%d,%d,%d\n",x,y,z);<br>}
2、#define f(x) x*x
main()
{int a=6,b=2,c;<br>c=f(a+b)/f(b);<br>printf(“%d\n”,c);<br>}
3、fun(int k)
{ printf("%d",k);
if(k>0)
fun(k-1);
}
main( )
{ int w=5; fun(w); printf("\n"); }
4、#include
main()
{int x=1,y=0;<br>switch(x)<br>{ case 1:<br>switch(y)<br>{ case 0:printf(“first\n”);break;<br>case 1:printf(“second\n”);break;<br>}
case 2:printf(“third\n”);
}
}
5、#include
main()
{ int k=4;
func(k); func(k);
}
func(int a)
{ static int m=0;
m+=a;
printf("%d",m);
}
6、struct st
{ int x;
int *y;
}*p;
int s[]={30,20};
struct st a[]={1,&s[0],2,&s[1]};
main()
{ p=a; printf("%d,",p->x);
printf("%d\n",++(*(++p)->y));
}
7、假定在当前盘目录下有2个文本文件,其名称和内容如下:
文件名: a1.txt a2.txt
内容: ABCDEF# abcdef#
#include "stdio.h"
main()
{FILE *fp;<br>void fc();<br>if((fp=fopen("a1.txt","r"))==NULL)<br>{printf("Can not open file!\n"); exit(1);}
else{fc(fp);fclose(fp);}
if((fp=fopen("a2.txt","r"))==NULL)
{printf("Can not open file!\n"); exit(1);}
else{fc(fp);fclose(fp);}
}
void fc(fp1)
FILE *fp1;
{char c;<br>while((c=fgetc(fp1))!='#')putchar(c);<br>}
四、 程序填空(每空2分,共14分)
1、下面程序求矩阵a的主对角线元素之和,请填空。
main()
{ int a[3][3]={2,4,6,8,10,12,14,16,18};
int sum=0,i,j;
for(i=0;i<3; ① )
for(j=0; ② ;j++)
if(i= =j) sum=sum+ ③ ;
printf("sum=%d\n",sum);
}
2、下列函数coy把字符数组S2中的全部字符复制到字符数组S1中, 复制时’\0’也要复制过去,’\0’后面的字符不用。
coy(char s1[],char s2[])
{ int i;
for(i=0;s2[i]!= ① ;i++)
s1[i]=s2[i];
② ;
}
3、下面程序的功能是将字符串a中的下标为奇数的元素由小到大排序,其他元素不变,请填空。
main()
{ char a[]="students",t; int i,j;
for(i=1;i<7;i+=2)
for(j=i+2;j<8; ① )
if( ② )
{t=a[i];a[i]=a[j];a[j]=t;}
puts(a);
}
c语言考试题(二)
一. 填空题(每题2分,共20分)
1. C语言基本数据类型有:_______________________________;
构造类型有:_____________________________________。 P.13
2. C语言源程序注注释符号是:________________________________,
为表明层次结构,C语言源程序通常采用_____________________格式编写。P.4
3. 源程序TEST.C经编译产生的目标文件是:________________________;
经连接处理后,产生的可执行文件是:__________________________。
4. strlen(“1234 \ 0xy)的值为:_____________________________;
sizeof(float)的值为:____________________________
5. 二维数组a[10] [50]最后一行的首地址为:_________________________;
最后一个元素的首地址为:____________________________________。
6. C标准库函数中,数学函数的原型在:________________头文件中,自定义头文件D :\ MYC \ MY . H应如何包含到源程序文件中:_________________________。P.130
7. 已知函数定义为:int stat(inta,float *p)
{……………}
则此函数的两个参数类型分别是_______________ 、 _____________________。
8. 设int x,y,z=4;
x=y=++z;
x=(y>z)?x+2;x++;则x的值是:_________;
设int a=0,b=0,c=0;c=++a | | b++; ,则a、b、c值分别是:_____________。
9. 与if (x=0) 等价的写法是if ( ! x );
判断两个(float)变量x,z是否相等一般:if ( fabc(x-z)<1e-6 )。
10.已知赋值语句zhang.year=1985;可判断zhang是_______________类型的变量;
定义文件指针的C语句是:_________________________________。
二. 单项选择题 (每题1分,共10分)
1. 组成C程序的基本单位是____________________________。
A.函数 B.标识符 C.表达式 D.语句
2. 设int类型的数据长度为2字节,则该类型数据的取值范围是__________________。
A.0至65536 B.0至65535
C.-32767至32768 D.-32768至32767
3. 在C语言中,逻辑值“真”是用_____________________表示的。
A.预定义为真值的宏 B.非零数
C.正数 D.非零整数
4. C语言对于嵌套if语句规定else总是与_____________________匹配。
A.与最外层的if B.与之前最近的if
C.与之前最近的不带else的if D.与最近的{ }之前的if
5. 数组定义char a[10]={`a`,`b`,`c`}:包括了几个元素____________________。
A.3 B.9 C.4 D.10
6. 数组名作为实参传给被调用的函数时,形参获得的是_____________________。
A.该数组第一个元素的值 B.该数组所有元素的值
C.该数组第一个元素的首地址 D.该数组所有元素的首地址
7. 为表示关系x ≥ y ≥z,正确的C语言表达式为_________________________。
A.(x>=>y>=z) B.(x>=y)AND(y>=z)
C.(x>=y)&&(y>=z) D.(x>y)&(y>=z)
8. 根据定义int a[ ]={1,2,3},i,*p=a; 从语法分析_________________是不正确的。
A. a[p-a] B.*(&a) C.p D.*(*(a+i))
9. 若有语句scanf(“%d%d”,&a,&b);要使变量a,b分别得到12和34;正确的输入形式为____________________________。
A.12 34 B.12,34 C.1234 D.12:34
10.union uex {int i;float f;char c;}ex;则sizeof(ex)的值是____________________。
A.4 B.5 C.6 D.7
三. 分析程序,写出运行结果。(每题4分,共20分)
1. 源程序如下,运行时假定键盘输入字符串为``2004``
#include
void main(void)
{
int n=0;
char c;
while( (c=getchar( )) ! =`\n` ) /*字符型数字*/
{
if (c>=`0`&&c<=`9` )
n = n*10 + c- `0` ; /*数字*/
}
printf(“value=%d|n” ,n);
}
结果为: value=2004 。
2. 源程序如下:
#include
void main(void)
{
int num[9]={399,398,397,396,395,299,290,311,301};
int score[9]={81,85,59,77,90,66,89,93,73};
int iMax,iPos,i;
iPos=0;
iMax=score[iPos];
for(i=1;i<9;i++)
if(score>iMax)
{
iPos=i;
iMax=score[iPox];
}
printf(“num=%d,score=%d”,num[iPos];score[iPos]);
结果为: num=311, score=93 。
3. 源程序如下,运行时假定键盘输入数据为:1 2 3 4 5 6 7 8 9 10
#include
void main(void)
{
int i,a[10];
int *p;
p=a;
for(i=0;i<10;i++)
scanf(“%d“,p++);
for(p=a;p< SPAN>;p++)
if (*p%2)printf(“%3d”,*p);
}
结果为: 1 3 5 7 9 。
4. 源程序如下,两次运行,分别输入数据13和21
#include
#include
void main(void)
{
int n,s;
scant (“%d”,&n);
s=panan( n);
if(s==1)printf(“yes\n”);
else printf(“no\n);
}
int panan(int n)
{
int k,j;
k=(int)sqrt((double)n);
for(j=2;j<=k,j++)
{
if(n%j==0) break;
}
if(j>k) retum(1);
else retum(0);
}
结果为 yes
no
5.源程序如下,运行时假定键盘输入字符为:AxByCz
#include
#include
void main(void)
{
char str[80];
int i;
gets(str);
for(i=0;str!=`\0`;i++)
if(str>=`a`&&str<=`z`) str-=32;
else if (str>=`A`&&str<=`Z`) str+=32;
puts(str);
}
结果为: aXbYcZ 。
四. 下列程序中每个划线处有一个错误,改正划线 中的错误,使其实现题目要求。(每体4分,共20分)
1. 求 s=1+2+3+、、、、、、、+100
include 改正为_________________________。
void sum (void) 改正为_________________________。
{
int s,i;
for (s=0,i=1;i<=100;i++)
{
s=s+ i ++; 改正为__________________________。
}
printf (“s=%f”,s) 改正为__________________________。
}
2. 源程序实现求x
#include
double pow(float . int) 改正为_________________________。
void main(void)
{
int i, n;
float x;
scanf (“%f,%d”,&x,&n);
for (i=1; i<9;i++)
printf(“%d,%e\n”, i, pow(i,x);
} 改正为______________________。
double v v pow(float x, int n)
{
int i;
double p=0; 改正为______________________。
for (i=1; i< i++)>改正为_______________________。
p*=x;
retum(p);
}
3. 源程序实现排升序。
#include
void main(void)
{
int i, j, iMin, a[10]={4,3,5,1,10,12,2,6,7,9}, iTemp;
for (i=0; i<9; i++)
{
iMin=0; 改正为_______________________。
for (j=i+1; j<10;j++)
if(a[iMin]< iMin="j;">改正为_______________________。
if (iMin==i) 改正为_________________________。
{ iTemp=a;
a[iMin]=a; 改正为_________________________。
a[iMin]=iTemp;
}
}
for(i=0; i<10; i++)
printf(“%4d”, a):
}
4. 源程序为求平均值。
#include
void main(void)
{
int i, sum; 改正为____________________。
float avg;
int sc[10], *p=sc;
for (i=0, i<10; i++) 改正为____________________。
{
scanf(“%d”, p++);
sum+= *p; 改正为____________________。
}
avg = sum/ 10; 改正为___________________。
printf(“avg=%f”, avg);
}
5. 源程序求 eX=1+x+x2/2!+……+xn/n!前n+1项之和
#include
void main(void>
{
float exp , x , t;
int i, n;
scanf(“%f, %d”,&x, &n);
t=0; 改正为___________________。
exp=1.0;
for(i=1 ; i<=n; i++)
{
if(t<1e-6) loop; 改正为__________________。
t+=x/i; 改正为___________________。
exp*=t; 改正为___________________。
}
printf(“\n%15.6f”, exp);
}
五. 编程题 (每题6分,共30分)
1. 根据以下程序框架,编写子函数,实现交换两个整型变量x和y的值。
#include
void swap (int *, int *);
void main (void)
{
int x, y;
scanf(“%d, %d”, &x, &y);
swap( &x, &y);
printf(“%d, %d”, x, y);
}
void swap( )
{
}
2. 设某班人数36人,参加C语言考试,用一维数组score[36]存放考试成绩,已给出一部分程序,完善以下程序,使其实现统计并输出不及格人数及百分比。
#include
void main (void)
{ int i;
float scoer[36], precent;
int count=0;
for (i=0; i<36; i++)
{
scanf(“%f”, &score);
}
3. 完善以下程序使其实现由键盘任意输入一串字符,统计其中大写字母个数iA、小写字母个数ia、其他字符个数iother。
#include
#include
void main (void)
{
char str [80];
int i, iA=0, ia=0, iother=0;
}
4. 完善以下程序使其实现求方阵主和辅对角线元素之和及其转置矩阵,设方阵用二维数组a表示,转置矩阵用t表示,sl和s2表示主和辅对角线元素之和。
#include
void main(void)
{
int a[3] [3]={1,3,5,7,9,11,13,15,11};
int i, j, s1, s2;
int t[3] [3];
printf(“%d, %d,\n”,s1, s2);
for(i=0; i<3; i++)
for(j=0; j<3; j++)
printf(“%3d”, t [j]);
}
5. 已知字符数组str[80],编写返回指针的子函数,实现在其中查找字符ch首次出现的位置。
#include
#include
#include
char *lstrchar(char*, char);
void main(void)
{
char c, *p, str[80];
gets (str);
scanf(“%c”, &c);
p=lstrchar(str,c);
if(p==NULL) printf(“char %c not found\n”c);
else printf(“The position is %d”, p-str);
char “lstrchar( )
{ }
历年全国计算机二级考试c语言真题及答案
http://jsj.lsxy.com/UploadFiles/20064222324839.rar
Ⅱ 急!!历年国家计算机二级c语言笔试真题答案。
2010年9月全国计算机二级C语言笔试试题:文字版
一、选择题(每小题2分,共70分)
下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。
(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)面向对象方法中,继承是指
A)一组对象所具有的相似性质
B)一个对象具有另一个对象的性质
C)各对象之间的共同性质
D)类之间共享属性和操作的机制
(7)层次型、网状型和关系型数据库划分原则是
A)记录长度
B)文件的大小
C)联系的复杂程度
D)数据之间的联系方式
(8)一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员、与实体计算机之间的联系是
A)一对一
B)一对多
C)多对多
D)多对一
(9)数据库设计中反映用户对数据要求的模式是
A)内模式
B)概念模式
C)外模式
D)设计模式
(10)有三个关系R、S和T如下:
则由关系R和S得到关系T的操作是
A)自然连接
B)交
C)投影
D)并
(11)以下关于结构化程序设计的叙述中正确的是
A)一个结构化程序必须同时由顺序、分支、循环三种结构组成
B)结构化程序使用goto语句会很便捷
C)在C语言中,程序的模块化是利用函数实现的
D)由三种基本结构构成的程序只能解决小规模的问题
(12)以下关于简单程序设计的步骤和顺序的说法中正确的是
A)确定算法后,整理并写出文档,最后进行编码和上机调试
B)首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档
C)先编码和上机调试,在编码过程中确定算法和数据结构,最后整理文档
D)先写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构
(13)以下叙述中错误的是
A) C程序在运行过程中所有计算都以二进制方式进行
B)C程序在运行过程中所有计算都以十进制方式进行
C)所有C程序都需要编译链接无误后才能运行
D)C程序中整型变量只能存放整数,实型变量只能存放浮点数
(14)有以下定义:int a; long b; double x,y;则以下选项中正确的表达式是
A)a%(int)(x-y)
B)a=x!=y;
C)(a*y)%b
D)y=x+y=x
(15)以下选项中能表示合法常量的是
A)整数:1,200
B)实数:1.5E2.0
C )字符斜杠:‘\’
D)字符串:"\007"
(16)表达式a+=a-=a=9的值是
A)9
B)_9
C)18
D)0
(17)若变量已正确定义,在if (W)printf(“%d\n,k”);中,以下不可替代W的是
A)a<>b+c
B)ch=getchar()
C)a==b+c
D)a++
(18)有以下程序
#include<stdio.h>
main()
{int a=1,b=0;
if(!a) b++;
else if(a==0)if(a)b+=2;
else b+=3;
printf(”%d\n”,b);
}
程序运行后的输出结果是
A)0
B)1
C)2
D)3
(19)若有定义语句int a, b;double x;则下列选项中没有错误的是
A)switch(x%2) B)switch((int)x/2.0
{case 0: a++; break; {case 0: a++; break;
case 1: b++; break; case 1: b++; break;
default : a++; b++; default : a++; b++;
} }
C)switch((int)x%2) D)switch((int)(x)%2)
{case 0: a++; break; {case 0.0: a++; break;
case 1: b++; break; case 1.0: b++; break;
default : a++; b++; default : a++; b++;
} }
(20)有以下程序
#include <stdio.h>
main()
{int a=1,b=2;
while(a<6){b+=a;a+=2;b%二10;}
printf(”%d,%d\n”,a,b);
}
程序运行后的输出结果是
A)5,11
B)7,1
C)7,11
D)6,1
(21)有以下程序
#include<stdio.h>
main()
{int y=10;
while(y--);
printf(”Y=%d\n”,Y);
}
程序执行后的输出结果是
A)y=0
B)y= -1
C)y=1
D)while构成无限循环
(22)有以下程序
#include<stdio .h>
main()
{char s〔”=”rstuv";
printf(”%c\n”,*s+2);
}
程序运行后的输出结果是
A)tuv
B)字符t的ASCII码值
C)t
D)出错
(23)有以下程序
#include<stdio.h>
#include<string.h>
main()
{char x〔〕=”STRING”;
x〔0”=0;x〔1〕=’\0’;x〔2”=’0’;
printf(”%d %d\n”,sizeof(x),strlen(x));
}
程序运行后的输出结果是
A)6 1
B)7 0
C)6 3
D)7 1
(24)有以下程序
#include<stdio.h>
Int f(int x);
main()
{int n=1,m;
m=f(f(f(n)));printf(”%d\n”,m);
}
int f(int x)
{return x*2;}
程序运行后的输出结果是
A)1
B)2
C)4
D)8
(25)以下程序段完全正确的是
A)int *p; scanf("%d",&p);
B)int *p; scanf(“%d”,p);
C)int k, *p=&k; scanf("%d",p);
D)int k, *p:; *p= &k; scanf(“%d”,p);
(26)有定义语句:int *p[4];以下选项中与此语句等价的是
A)int p[4];
B)int **p;
C)int *(p“4”);
D)int (*p)“4”;
(27)下列定义数组的语句中,正确的是
A)int N=10; B)#define N 10
int x[N]; int x[N];
C)int x[0..10〕; D)int x〔〕;
(28)若要定义一个具有5个元素的整型数组,以下错误的定义语句是
A)int a[5]={0};
B)int b[]={0,0,0,0,0};
C)int c[2+3];
D)int i=5,d[i];
(29)有以下程序
#include<stdio.h>
void f(int *p);
main()
{int a〔5〕={1,2,3,4,5},*r=a;
f(r);printf(”%d\n”;*r);
}
void f(int *p)
{p=p+3;printf(”%d,”,*p);}
程序运行后的输出结果是
A)1,4
B)4,4
C)3,1
D)4,1
(30)有以下程序(函数fun只对下标为偶数的元素进行操作)
# include<stdio.h>
void fun(int*a;int n)
{int i、j、k、t;
for (i=0;i<n一1;1+=2)
{k=i;‘
for(j=i;j<n;j+=2)if(a〔j〕>a〔k])k=j;
t=a〔i];a〔i]=a〔k];a〔k]=t;
}
}
main()
{int aa“10”={1、2、3、4、5、6、7},i;
fun(aa、7);
for(i=0,i<7; i++)printf(”%d,”,aa〔i〕));
printf(”\n”);
}
程序运行后的输出结果是
A)7,2,5,4,3,6,1
B)1,6,3,4,5,2,7
C)7,6,5,4,3,2,1
D)1,7,3,5,6;2,1
(31)下列选项中,能够满足“若字符串s1等于字符串s2,则执行ST"要求的是
A)if(strcmp(s2,s1)==0)ST;
B)if(sl==s2)ST;
C)if(strcpy(s l ,s2)==1)ST;
D)if(sl-s2==0)ST;
(32)以下不能将s所指字符串正确复制到t所指存储空间的是
A)while(*t=*s){t++;s++;}
B)for(i=0;t[i]=s[i〕;i++);
C)do{*t++=*s++;}while(*s);
D)for(i=0,j=0;t[i++]=s[j++];);
(33)有以下程序( strcat函数用以连接两个字符串)
#include<stdio.h>
#include<string .h>
main()
{char a〔20〕=”ABCD\OEFG\0”,b〔〕=”IJK”;
strcat(a,b);printf(”%s\n”,a);
}
程序运行后的输出结果是
A)ABCDE\OFG\OIJK
B)ABCDIJK
C)IJK
D)EFGIJK
(34)有以下程序,程序中库函数islower (ch)用以判断ch中的字母是否为小写字母
#include<stdio.h>
#include<ctype.h>
void fun(char*p)
{int i=0;
while (p[i〕)
{if(p[i]==’ ’&& islower(p“i-1”))p[i-1]=p[i-1]-‘a’+‘A’;
i++;
}
}
main()
{char s1〔100〕=”ab cd EFG!”;
fun(s1); printf(”%s\n”,s1);
}
程序运行后的输出结果是
A)ab cd EFG!
B)Ab Cd EFg!
C)aB cD EFG!
D)ab cd EFg!
(35)有以下程序
#include<stdio.h>
void fun(int x)
{if(x/2>1)fun(x/2);
printf(”%d”,x);
}
main()
{fun(7);printf(”\n”);}
程序运行后的输出结果是
A)1 3 7
B)7 3 1
C)7 3
D)3 7
(36)有以下程序
#include<stdio.h>
int fun()
{static int x=1;
x+=1;return x;
}
main()
{int i;s=1;
for(i=1;i<=5;i++)s+=fun();
printf(”%d\n”,s);
}
程序运行后的输出结果是
A)11
B)21
C)6
D)120
(37)有以下程序
#inctude<stdio.h>
#include<stdlib.h>
Main()
{int *a,*b,*c;
a=b=c=(int*)malloc(sizeof(int));
*a=1;*b=2,*c=3;
a=b;
printf(“%d,%d,%d\n”,*a,*b,*c);
}
程序运行后的输出结果是
A)3,3,3 B)2,2,3 C)1,2,3 D)1,1,3
(38)有以下程序
#include<stdio.h>
main()
{int s,t,A=10;double B=6;
s=sizeof(A);t=sizeof(B);
printf(“%d,%d\n”,s,t);
}
在VC6平台上编译运行,程序运行后的输出结果是
A)2,4 B)4,4 C)4,8 D)10,6
(39)若有以下语句
Typedef struct S
{int g; char h;}T;
以下叙述中正确的是
A)可用S定义结构体变量
B)可用T定义结构体变量
C)S是struct类型的变量
D)T是struct S类型的变量
(40)有以下程序
#include<stdio.h>
main()
{short c=124;
c=c_______;
printf(“%d\n”、C);
}
若要使程序的运行结果为248,应在下划线处填入的是
A)>>2 B)|248 C)&0248 D)<<I
二、填空题(每空2分,共30分)
请将每空的正确答案写在答题卡【1】至【15】序号的横线上,答在试卷上不得分。
(1)一个栈的初始状态为空。首先将元素5,4,3,2,1依次入栈,然后退栈一次,再将元素 A,B,C,D依次入栈,之后将所有元素全部退栈,则所有元素退栈(包括中间退栈的元素)的顺序为【1】
(2)在长度为n的线性表中,寻找最大项至少需要比较【2】次。
(3)一棵二叉树有10个度为1的结点,7个度为2的结点,则该二叉树共有【3】个结点。
(4)仅由顺序、选择(分支)和重复(循环)结构构成的程序是【4】程序。
(5)数据库设计的四个阶段是:需求分析,概念设计,逻辑设计【5】。
(6)以下程序运行后的输出结果是【6】。
#include<stdio.h>
main()
{int a=200,b=010;
printf(”%d%d\n”,a,b);
}
(7)有以下程序
#include<stdio.h>
main()
{int x,Y;
scanf(”%2d%ld”,&x,&y);printf(”%d\n”,x+y);
}
程序运行时输入:1234567程序的运行结果是【7】。
(8)在C语言中,当表达式值为0时表示逻辑值“假”,当表达式值为【8】时表示逻辑值“真”。
(9)有以下程序
#include<stdio.h>
main()
{int i,n[]={0,0,0,0,0};
for (i=1;i<=4;i++)
{n[i]=n[i-1]*3+1; printf(”%d ",n[i]);}
}
程序运行后的输出结果是【9】。
(10)以下fun函数的功能是:找出具有N个元素的一维数组中的最小值,并作为函数值返回。请填空。(设N已定义)
int fun(int x〔N〕)
{int i,k=0;
for(i=0;i<N;I++)
if(x〔i〕
return x〔k〕;
}
(11)有以下程序
#include<stdio.h>
int*f(int *p,int*q);
main()
{int m=1,n=2,*r=&m;
r=f(r,&n);printf(”%d\n”,*r);
}
int*f(int *p,int*q)
{return(*p>*q)?p:q;}
程序运行后的输出结果是【11】
(12)以下fun函数的功能是在N行M列的整形二维数组中,选出一个最大值作为函数值返回,请填空。(设M,. N已定义)
int fun(int a〔N〕[M))
{int i,j,row=0,col=0;
for(i=0;i<N;I++)
for(j=0;j
if(a〔i〕〔j〕>a〔row〕〔col〕){row=i;col=j;}
return(【12】):
}
(13)有以下程序
#include<stdio.h>
main()
{int n[2],i,j;
for(i=0;i<2;i++)n[i]=0;
for(i=0;i<2;i++)
for(j=0;j<2;j++)n〔j〕=n“i”+1;
printf(”%d\n”,n[1]);
}
程序运行后的输出结果是【13】
(14)以下程序的功能是:借助指针变量找出数组元素中最大值所在的位置并输出该最大值。请在输出语句中填写代表最大值的输出项。
#include<stdio.h>
main()
{int a〔10〕,*p,*s;
for(p=a;p-a<10;p++)scanf(”%d”,p);
for(p=a,s=a;p-a<10;p++)if(*p>*s)S=P;
printf("max=%d\n”,【14】);
}
(15)以下程序打开新文件f.txt,并调用字符输出函数将a数组中的字符写入其中,请填空。
#include<stdio.h>
main()
{【15】*fp;
char a〔5〕={’1’,’2’,’3’,’4’,’5’},i;
fp=fopen(”f .txt”,”w”);
for(i=0;i<5;i++)fputc(a[i],fp);
fclose(fp);
Ⅲ 急求计算机二级考试的试题(C语言)
05年4月全国计算机二级C语言考试试题及答案
(1)数据的存储结构是指 D
(A)存储在外存中的数据 (B)数据所占的存储空间量
(C)数据在计算机中的顺序存储方式 (D)数据的逻辑结构在计算机中的表示
(2)下列关于栈的描述中错误的是 B
(A)栈是先进后出的先性表
(B)栈只能顺序存储
(C)栈具有记忆作用
(D)对栈的插入和删除操作中,不需要改变栈底指针
(3)对于长度为N的线性表,在最坏的情况下,下列各排序法所对应的比较次数中正确的是D
(A)冒泡排序为N/2 (B)冒泡排序为N
(C)快速排序为N (D)快速排序为N(N-1)/2
(4)对长度为N的线性表进行顺序查找,在最坏的情况下所需要的比较次数为 C
(A)log2n (B)n/2 (C)n (D)n+1
(5)下列对于线性表的描述中正确的是 A
A)存储空间不一定是连续,且各元素的存储顺序是任意的
B)存储空间不一定是连续,且前件元素一定存储在后件元素的前面
C)存储空间必须连续,且各前件元素一定存储在后件元素的前面
D)存储空间必须连续,且各元素的存储顺序是任意的
(6)下列对于软件测试的描述中正确的是 C
A)软件测试的目的是证明程序是否正确
B)软件测试的目的是使程序运行结果正确
C)软件测试的目的是尽可能地多发现程序中的错误
D)软件测试的目的是使程序符合结构化原则
(7)为了使模块尽可能独立,要求 B
(A)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强
(B)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱
(C)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱
(D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强
(8)下列描述中正确的是 D
(A)程序就是软件 (B)软件开发不受计算机系统的限制
(C)软件既是逻辑实体,又是物理实体 (D)软件是程序、数据与相关文档的集合
(9)数据独立性是数据库技术的重要特点之一.所谓数据独立性是指 D
(A)数据与程序独立存放
(B)不同的数据被存放在不同的文件中
(C)不同的数据只能被对应的应用程序所使用
(D)以上三种说法都不对
(10)用树形结构表示实体之间联系的模型是 C
(A)关系模型 (B)网状模型 (C)层次模型 (D)以上三个都是
(11)算法具有五个特性,以下选项中不属于算法特性的是 B
(A)有穷性 (B)简洁性 (C)可行性 (D)确定性
(12)以下选项中可作为C语言合法常量的是 A
(A)-80. (B)-080 (C)-8e1.0 (D)-80.0e
(13)以下叙述中正确的是 C
(A)用C语言实现的算法必须要有输入和输出操作
(B)用C语言实现的算法可以没有输出但必须要有输入
(C)用C程序实现的算法可以没有输入但必须要有输出
(D)用C程序实现的算法可以既没有输入也没有输出
(14)以下不能定义为用户标识符是 D
(A)Main (B)_0 (C)_int (D)sizeof
(15)以下选项中,不能作为合法常量的是 B
(A)1.234e04 (B)1.234e0.4 (C)1.234e+4 (D)1.234e0
(16)数字字符0的ASCII值为48,若有以下程序 C
main()
{
char a=’1’,b=’2’;
printf("%c,",b++);
printf("%d\n",b-a);
}
程序运行后的输出结果是
(A)3,2 (B)50,2 (C)2,2 (D)2,50
(17)有以下程序 A
main()
{
int m=12,n=34;
printf("%d%d",m++,++n); printf("%d%d\n",n++,++m);
}
程序运行后的输出结果是
(A)12353514 (B)12353513 (C)12343514 (D)12343513
(18)有以下语句:int b;char c[10];,则正确的输入语句是 B
A)scanf("%d%s",&b,&c); B) scanf("%d%s",&b,c);
c)scanf("%d%s",b,c); D)scanf("%d%s",b,&c);
(19)有以下程序 A
main()
{
int m,n,p;
scanf("m=%dn=%dp=%d",&m,&n,&p);
printf("%d%d%d\n",m,n,p);
}
若想从键盘上输入数据,使变量M中的值为123,N中的值为456,P中的值为789,则正确的输入是
A)M=123N=456P=789 B)M=123 N=456 P=789 C)M=123,N=456,P=789 D)123 456 789
(20)有以下程序 B
main()
{
int a,b,d=25;
a=d/10%9;b=a&&(-1);
printf("%d,%d\n",a,b);
}
程序运行后的输出结果是
A)6,1 B)2,1 C)6,0 D)2,0
(21)有以下程序 D
main()
{
int i=1,j=2,k=3;
if(i++==1&&(++j==3||k++==3))
printf("%d %d %d\n",i,j,k);
}
程序运行后的输出结果是
(A)1 2 3 (B)2 3 4 (C)2 2 3 (D)2 3 3
(22)若整型变量a、b、c、d中的值依次为:1、4、3、2。
则条件表达式aA) 1 B)2 C)3 D)
(23)有以下程序 B
main()
{
int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;
while(i++<7) if(p[i]%2) j+=p[i];
printf("%d\n",j);
}
程序运行后的输出结果是
A)42 B)45 C)56 D)60
(24)有以下程序 C
main()
{
char a[7]="a0\0a0\0"; int i,j;
i=sizeof(a); j=strlen(a);
printf("%d %d\n",i,j);
}
程序运行后的输出结果是
A)2 2 B)7 6 C)7 2 D)6 2
(25)以下能正确定义一维数组的选项是 B
A)int a[5]={0,1,2,3,4,5}; B)char a[]={0,1,2,3,4,5};
C)char a={’A’,’B’,’C’}; D)int a[5]="0123";
(26)有以下程序 A
int f1(int x,int y){return x>y?x:y;}
int f2(int x,int y){return x>y?y:x;}
main()
{
int a=4,b=3,c=5,d=2,e,f,g;
e=f2(f1(a,b),f1(c,d)); f=f1(f2(a,b),f2(c,d));
g=a+b+c+d-e-f;
printf("%d,%d,%d\n",e,f,g);
}
程序运行后的输出结果是
A)4,3,7 B)3,4,7 C)5,2,7 D)2,5,7
27)已有定义:char a[]="xyz",b[]={’x’,’y’,’z’};,以下叙述中正确的是 C
A)数组a和b的长度相同 B)a数组长度小于b数组长度
C)a数组长度大于b数组长度 D)上述说法都不对
28)有以下程序 D
void f(int *x,int *y)
{
int t;
t=*x;*x=*y;*y=t;
}
main()
{
int a[8]={1,2,3,4,5,6,7,8},i,*p,*q;
p=a;q=&a[7];
while(p{f(p,q);p++;q--;}
for(i=0;i<8;i++)printf("%d,",a[i]);
}
程序运行后的输出结果是
A)8,2,3,4,5,6,7,1, B)5,6,7,8,1,2,3,4,
C)1,2,3,4,5,6,7,8, D)8,7,6,5,4,3,2,1,
29)有以下程序 D
main()
{
int a[3][3],*p,i;
p=&a[0][0];
for(i=0;i<9;i++)p[i]=i;
for(i=0;i<3;i++)printf("%d",a[1][i]);
}
程序运行后的输出结果是
A)0 1 2 B)1 2 3 C)2 3 4 D)3 4 5
(30)以下叙述中错误的是 A
A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
B)数组名代表的是数组所占存储区的首地址,其值不可改变
C)当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出"下标越界"的出错信息
D)可以通过赋初值的方式确定数组元素的个数
(31)有以下程序 C
#define N 20
fun(int a[],int n,int m)
{int i,j;
for(i=m;i>=n;i--)a[i+1]=a[i];
}
main()
{
int i,a[N]={1,2,3,4,5,6,7,8,9,10};
fun(a,2,9);
for(i=0;i<5;i++)printf("%d",a[i]);
}
程序运行后的输出结果是
A)10234 B)12344 C)12334 D)12234
32)有以下程序 B
main()
{
int a[3][2]={0},(*ptr)[2],i,j;
for(i=0;i<2;i++)
{ptr=a+i;scanf("%d",ptr);ptr++;}
for(i=0;i<3;i++)
{for(j=0;j<2;j++)printf("-",a[i][j]);
printf("\n");
}
}
若运行时输入:1 2 3<回车>,则输出结果是
A)产生错误信息 B)1 0 C)1 2 D)1 0
2 0 3 0 2 0
0 0 0 0 3 0
33)有以下程序 B
prt(int *m,int n)
{int i;
for(i=0;i)
main()
{
int a[]={1,2,3,4,5},i;
prt(a,5);
for(i=0;i<5;i++)
printf("%d,",a[i]);
}
程序运行后的输出结果是
A}1,2,3,4,5, B}2,3,4,5,6, C}3,4,5,6,7, D}2,3,4,5,1,
34)有以下程序 A
main()
{int a[]={1,2,3,4,5,6,7,8,9,0},*p;
for(p=a;p}
程序运行后的输出结果是
A)1,2,3,4,5,6,7,8,9,0, B)2,3,4,5,6,7,8,9,10,1,
C)0,1,2,3,4,5,6,7,8,9, D)1,1,1,1,1,1,1,1,1,1,
35)有以下程序 D
#define P 3
void F(int x){return(P*x*x);}
main()
{printf("%d\n",F(3+5));}
程序运行后的输出结果是
A)192 B)29 C)25 D)编译出错
36)有以下程序 C
main()
{int c=35;printf("%d\n",c&c);}
程序运行后的输出结果是
A)0 B)70 C)35 D)1
37)以下叙述中正确的是 D
A)预处理命令行必须位于源文件的开头
B)在源文件的一行上可以有多条预处理命令
C)宏名必须用大写字母表示
D)宏替换不占用程序的运行时间
38)若有以下说明和定义 C
union dt
{int a;char b;double c;}data;
以下叙述中错误的是
A)data的每个成员起始地址都相同
B)变量data所占的内存字节数与成员c所占字节数相等
C)程序段:data.a=5;printf("%f\n",data.c);输出结果为5.000000
D)data可以作为函数的实参
39)以下语句或语句组中,能正确进行字符串赋值的是 C
A)char *sp;*sp="right!"; B)char s[10];s="right!";
C)char s[10];*s="right!"; D)char *sp="right!";
40)设有如下说明 C
typedef struct ST
{long a;int b;char c[2];}NEW;
则下面叙述中正确的是
A)以上的说明形式非法 B)ST是一个结构体类型
C)NEW是一个结构体类型 D)NEW是一个结构体变量
41)有以下程序 B
main()
{int a=1,b;
for(b=1;b<=10;b++)
{if(a>=8)break;
if(a%2==1){a+=5;continue;}
a-=3;
}
printf("%d\n",b);
}
程序运行后的输出结果是
A) 3 B) 4 C)5 D) 6
42)有以下程序 A
main()
{char s[]="159",*p;
p=s;
printf("%c",*p++);printf("%c",*p++);
}
程序运行后的输出结果是
A)15 B)16 C)12 D)59
43)有以下函数 D
fun(char *a,char *b)
{while((*a!=’\0’)&&(*b!=’\0’)&&(*a==*b))
{a++;b++;}
return(*a-*b);
}
该函数的功能是
A)计算a和b所指字符串的长度之差
B)将b所指字符串连接到a所指字符串中
C)将b所指字符串连接到a所指字符串后面
D)比较a和b所指字符串的大小
44)有以下程序 B
main()
{int num[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i,j;
for(i=0;i<4;i++)
{for(j=0;j<=i;j++)printf("L",’ ’);
for(j=_____;j<4;j++)printf("M",num[i][j]);
printf("\n");
}
}
若要按以下形式输出数组右上半三角
1 2 3 4
6 7 8
11 12
16
则在程序下划线处应填入的是
A)i-1 B)i C)i+1 D)4-i
45)有以下程序 D
point(char *p){p+=3;}
main()
{char b[4]={’a’,’b’,’c’,’d’},*p=b;
point(p);printf("%c\n",*p);
}
程序运行后的输出结果是
A)a B)b C)c D)d
46)程序中若有如下说明和定义语句 A
char fun(char *);
main()
{
char *s="one",a[5]={0},(*f1)()=fun,ch;
......
}
以下选项中对函数fun的正确调用语句是
A)(*f1)(a); B)*f1(*s); C)fun(&a); D)ch=*f1(s);
47)有以下结构体说明和变量定义,如图所示,
指针p、q、r分别指向此链表中的三个连续结点。
struct node
{int data;struct node *next;}*p,*q,*r;
现要将Q所指结点从链表中删除,同时要保持链表的连续,
以下不能完成指定操作的语句是 D
A)P->next=q->next; B)p->next=p->next->next;
c)p->next=r; D)p=q->next;
48)以下对结构体类型变量td的定义中,错误的是 C
A)typedef struct aa B)struct aa C)struct D)struct
{int n; {int n; {int n; {int n;
float m; float m; float m; float m;
}AA; }td; }aa; }td;
AA td; struct aa td; struct aa td;
49)以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是 D
A)feof(fp) B)ftell(fp) C)fgetc(fp) D)rewind(fp)
50)有以下程序 B
#include
void WriteStr(char *fn,char *str)
{FILE *fp;
fp=fopen(fn,"w");fputs(str,fp);fclose(fp);
}
main()
{
WriteStr("t1.dat","start");
WriteStr("t1.dat","end");
}
程序运行后,文件t1.dat中的内容是
A)start B)end C)startend D)endrt
1.某二叉树中度为2的结点有18个,则该二叉树中有______个叶子结点。
答案:19
2.在面向对象方法中,类的实例称为____.
答案:对象
3.诊断和改正程序中错误的工作通常称为______.
答案:调试
4.在关系数据库中,把数据表示成二维表,每一个二维表称为_____
答案:关系
5.问题处理方案的正确而完整的描述称为___
答案:算法
6.以下程序运行时若从键盘输入:10 20 30<回车>.输出结果是______
#include
main()
{
int i=0,j=0,k=0;
scanf("%d%*d%d",&i,&j,&k);printf("%d%d%d\n",i,j,k);
}
答案:10 30 0
7.以下程序运行后的输出结果是____
#define S(x) 4*x*x+1
main()
{
int i=6,j=8;
printf("%d\n",S(i+j));
}
答案:81
*8.以下程序运行后的输出结果是_____
main()
{int a=3,b=4,c=5,t=99;
if(b if(a printf("%d%d%d\n",a,b,c);
}
答案:4399
9.以下程序运行后的输出结果是____
main()
{
int a,b,c;
a=10;b=20;c=(a%b<1)||(a/b>1);
printf("%d %d %d\n",a,b,c);
}
答案:10 20 0
10.以下程序运行后的输出结果是___
main()
{char c1,c2;
for(c1=’0’,c2=’9’;c1printf("\n");
)
答案:0918273645
11.已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33<回车>.则
输出结果是_____
#include
main()
{char a,b;
a=getchar();scanf("%d",&b);
a=a-’A’+’0’;b=b*2;
printf("%c %c\n",a,b);
}
答案:1 B
12.以下程序中,fun函数的功能是求3行4列二维数组每行元素中的最大值.请填空
void fun(int,int,int(*)[4],int *);
main()
{int a[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;
fun(3,4,a,b);
for(i=0;i<3;i++)printf("M",b[i]);
printf("\n");
}
void fun(int m,int n,int ar[][4],int *bar)
{
int i,j,x;
for(i=0;i {x=ar[i][0];
for(j=0;j ________=x;
)
}
)
答案:bar[i]
13.以下程序运行后的输出结果是______
void swap(int x,int y)
{ int t;
t=x;x=y;y=t;printf("%d %d ",x,y);
}
main()
{ int a=3,b=4;
swap(a,b);printf("%d %d\n",a,b);
}
答案:4 3 3 4
14.以下程序运行后的输出结果是____
#include
void fun(char *s,int p,int k)
{int i;
for(i=p;i)
main()
{char s[]="abcdefg";
fun(s,3,strlen(s));puts(s);
}
答案:abcfg
17.以下程序运行后的输出结果是______
struct NODE
{int k;
struct NODE *link;
};
main()
{ struct NODE m[5],*p=m,*q=m+4;
int i=0;
while(p!=q)
{p->k=++i;p++;
q->k=i++;q--;
}
q->k=i;
for(i=0;i<5;i++)printf("%d",m[i].k);
printf("\n");
}
答案:13431
18.以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,
函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出.所谓回文即
正向与反向的拼写都一样,例如:adgda.请填空.
#include
char *huiwen(char *str)
{char *p1,*p2;int i,t=0;
p1=str;p2=______;
for(i=0;i<=strlen(str)/2;i++)
if(*p1++!=*p2--){t=1;break;}
if(____)return("yes!");
else return("no!");
}
main()
{char str[50];
printf("Input:");scanf("%s",str);
printf("%s\n",______);
}
答案:18) str+(strlen(str)-1)
19) !t
20) huiwen(str)
Ⅳ 全国计算机等级考试二级C语言历年试题及答案
这里有一份最全的考研历年真题资料分享给你
链接:
通过不断研究和学习历年真题,为考生冲刺阶段复习提分指点迷津,做真题,做历年真题集,对照考纲查缺补漏,提高实战素养,制定做题策略,规划方向;
若资源有问题欢迎追问!
Ⅳ 全国计算机等级考试二级C语言历年试题及答案
2010年9月全国计算机等级考试二级C语言笔试试题及答案
一、选择题((1)-(10)每题2分,(11)-(50)每题1分.共60分))
(1)下列选项中不属于软件生命周期开发阶段任务的是
A)详细设计 B)概要设计 C)软件维护 D)软件测试
(2)树是结点的集合,它的根结点数目是
A)有且只有1 B)1或多于1 C)0或1 D)至少2
(3)在面向对象方法中,实现信息隐蔽是依靠
A)对象的继承 B)对象的多态 C)对象的封装 D)对象的分类
(4)程序设计语言的基本成分是数据成分、运算成分、控制成分和
A)语句成分 B)变量成分 C)对象成分 D)传输成分
(5)冒泡排序在最坏情况下的比较次数是
A)n/2 B)nlog2n C)n(n-1)/2 D)n(n+1)/2
(6)下列叙述中,不属于软件需求规格说明书的作用的是
A)作为确认测试和验收的依据
B)反映出用户问题的结构,可以作为软件开发工作的基础和依据
C)便于用户、开发人员进行理解和交流
D)便于开发人员进行需求分析
(7)下列叙述中错误的是
A)一个C语言程序只能实现一种算法 B)C程序可以由多个程序文件组成
C)C程序可以由一个或多个函数组成 D)一个函数可单独作为一个C程序文件存在
(8)下列不属于软件工程的3个要素的是
A)方法 B)过程 C)工具 D)环境
(9)下列叙述中正确的是
A)数据库系统是一个独立的系统,不需要操作系统的支持
B)数据库技术的根本目标是要解决数据的共享问题
C)数据库管理系统就是数据库系统
D)以上三种说法都不对
(10)下列叙述中正确的是
A)每个C程序文件中都必须有一个main()函数
B)在C程序的函数中不能定义另一个函数
C)C程序可以由一个或多个函数组成
D)在C程序中main()函数的位置是固定的
(11)将E-R图转换到关系模式时,实体与联系都可以表示成
A)属性 B)关系 C)键 D)域
(12)下列定义变量的语句中错误的是
A)double int_; B)int _int; C)char For D)float USS
(13)下列叙述中正确的是
A)C语言编译时不检查语法 B)C语言的子程序有过程和函数两种
C)C语言的函数可以嵌套定义 D)C语言的函数可以嵌套调用
(14)以下选项中,合法的一组C语言数值常量是
A) 0x8A B)12 C).177 D) 028
(15)以下叙述中正确的是
A)构成C程序的基本单位是函数
B)可以在一个函数中定义另一个函数
C)main()函数必须放在其他函数之前
D)所有被调用的函数一定要在调用之前进行定义
(16)若在定义语句:int a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是
A)scanf("%d",&p); B)scanf("%d%d%d",a,b,c);
C)scanf("%d",p); D) scanf("%d",a,b,c);
(17) 有以下程序
main()
{int x,y,z;
x=y=1;
z=x++,y++,++y;
printf("%d,%d,%d\n",x,y,z);
}
程序运行后的输出结果是
A)2,2,3 B)2,2,2 C)2,3,1 D)2,1,1
(18) 若已定义:int a=25,b=14,c=19;以下三目运算符(?:)所构成语句的执行后a<=25&&b--<=2&&c?printf("***a=%d,b=%d,c=%d\n",a,b,c):printf("###a=%d,b=%d,c=%d\n",a,b,c);程序输出的结果是
A)***a=25,b=13,c=19 B)***a=26,b=14,c=19
C)### a=25,b=13,c=19 D)### a=26,b=14,c=19
(19)下列程序段的输出结果是
int a=1234;
float b=123.456;
double c=12345.54321;
printf("-,%2.1f,%2.1f",a,b,c);
A)无输出 B)12,123.5,12345.5 C)1234,123.5,12345.5 D)1234,123.4,1234.5
(20)有以下程序
main()
{int a=0,b=0;
a=10; /*给a赋值
b=20; 给b赋值 */
printf("a+b=%d\n",a+b); /* 输出计算结果 */
}
程序运行后输出结果是
A)30 B)a+b=30 C)a+b=0 D)出错
(21)若运行以下程序时,从键盘输入 ADescriptor(表示回车),则下面程序的运行结果是
#include
main()
{ char c;
int v0=1,v1=0,v2=0;
do{ switch(c=getchar())
{ case ′a′:case ′A′:
case ′e′:case ′E′:
case ′i′:case ′I′:
case ′o′:case ′O′:
case ′u′:case ′U′:v1+=1;
default:v0+=1;v2+=1;
}
} while(c!=′\n′);
printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);
}
A)v0=11,v1=4,v2=11 B)v0=8,v1=4,v2=8
C)v0=7,v1=4,v2=7 D)v0=13,v1=4,v2=12
(22) 有以下程序
#include
main()
{int y=9;
for( y>0;y--)
if(y%3= =0) printf("%d",--y);
}
程序的运行结果是
A)732 B)433 C)852 D)874
(23) 设有以下程序段
int x=0,s=0;
while(!x!=0)s+=++x;
printf("%d",s);
则
A)运行程序段后输出0 B)运行程序段后输出1
C)程序段中的控制表达式是非法的 D)程序段执行无限次
(24)有以下程序
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);
}
执行后的输出结果是
A)5 B)7 C)8 D)3
(25)执行下面的程序段后,变量k中的值为
int k=3, s[2];
s[0]=k; k=s[1]*10;
A)不定值 B)35 C)31 D)20
(26)以下叙述中错误的是
A)改变函数形参的值,不会改变对应实参的值
B)函数可以返回地址值
C)可以给指针变量赋一个整数作为地址值
D)当在程序的开头包含文件stdio.h时,可以给指针变量赋NULL
(27)以下程序段的描述,正确的是
x=-1;
do
{x=x*x;} while(!x);
A)是死循环 B)循环执行两次 C)循环执行一次 D)有语法错误
(28)有以下程序
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=I,k;
k=fun(j,m); printf("%d",k);
k=fun(j,m); printf("%d\n",k)
}
执行后的输出结果是
A)5,5 B)5,11 C)11,11 D)11,5
(29)有以下程序
fun(int x)
{int p;
if(x==0║x= =1) return(3);
p=x-fun(x=2);
retum p;
}main()
{ prinf("%d\n",fun(7));}
执行后的输出结果是
A)7 B)3 C)3 D)0
(30)在16位编译系统上,右有定义int a[ ]={10,20,30},*p=&a;,当执行p++;后,下列说法错误的是
A)p向高地址移了一个字节 B)p抽高地址移了一个存储单元
C)p向高地址移了两个字节 D)p与a+1等价
(31)有以下程序
main()
{int a=1,b=3,c=5;
int *p1=&a,*p2=&b,*p=&c;
*p=*p1*(*p2);
printf("%d\n",c);
}
执行后的输出结果是
A)1 B)2 C)3 D)4
(32)下列程序执行后的输出结果是
void func1(int i);
void func2(int i);
char st[]="hello,friend!";
void func1(int i)
{ printf("%c",st[i]);
if(i<3){i+=2;func2(i);}
}
void func2(int i)
{ printf("%c",st[i]);
if(i<3){i+=2;func1(i);}
}
main()
{ int i=0; func1(i); printf("\n");}
A)hello B)hel C)hlo D)hlm
(33)在下述程序中,判断i>j共执行的次数是
main()
{ int i=0, j=10, k=2, s=0;
for (;;)
{ i+=k;
if(i>j)
{ printf("%d",s);
break;
} s+=i;
}
}
A)4 B)7 C)5 D)6
(34)以下函数返回a所指数组中最大值所在的下标值
fun(int *a,int n)
{ int i,j=0,p;
p=j;
for(i=j;iif(a[i]>a[p]);
return(p);
}
在下划线处应填入的内容是
A)i=p B)a[p]=a[i] C)p=j D)p=i
(35)下列程序执行后的输出结果是
main()
{ int a[3][3], *p,i;
p=&a[0][0];
for(i=1; i<9; i++)p[i]=i+1;
printf("%d\n",a[1][2]);
}
A)3 B)6 C)9 D)随机数
(36) 有以下程序
#include
void fun(int *a,int n)/*fun函数的功能是将a所指数组元素从大到小排序*/
{int t,i,j;
for(i=0;ifor(j=i+1;jif (a}
main()
{int c[10]={1,2,3,4,5,6,7,8,9,0},i;
fun(c+4,6);
for (i=0;i<10;i++) printf("%d,",c);
printf("\n");
}
程序运行的结果是
A)1,2,3,4,5,6,7,8,9,0, B)0,9,8,7,6,5,1,2,3,4,
C) 0,9,8,7,6,5,4,3,2,1, D)1,2,3,4,9,8,7,6,5,0,
(37)以下程序的输出结果是#include
void prt (int *x, int*y, int*z)
{ printf("%d,%d,%d\n",++*x,++*y,*(z++));}
main()
{ int a=10,b=40,c=20;
prt (&a,&b,&c);
prt (&a,&b,&c);
}
A)11,42, 31
12,22,41
B)11,41,20
12,42,20
C)11,21,40
11,21,21
D)11,41,21
12,42,22
(38) 有以下程序:
#include
void fun(char *t,char *s)
{
while(*t!=0)t++;
while((*t++=*s++)!=0);
}
main()
{
char ss[10]=”acc”,aa[10]=”bbxxyy”;
fun(ss,aa);
printf(“%s,%s\n”,ss,aa);
}
程序运行结果是
A) accxyy , bbxxyy B) acc, bbxxyy
C) accxxyy,bbxxyy D) accbbxxyy,bbxxyy
(39) 有以下程序
#include
main()
{ FILE *fp; int i=20,j=30,k,n;
fp=fopen("d1.dat","w");
fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);
fclose(fp);
fp=fopen("d1.dat","r");
fscanf(fp,"%d%d",&k,&n); printf("%d %d\n",k,n);
fclose(fp);
}
程序运行后的输出结果是
A)20 30 B)20 50 C)30 50 D)30 20
(40) 有以下程序
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]);
}
若运行时输入:246,则输出结果为
A)2 0 0 B)2 0 4 C)2 4 0 D)2 4 6
(41)有以下程序
int add(int a,int b){return+b};}
main()
{int k,(*f)(),a=5,b=10;
f=add;
…
}
则以下函数调用语句错误的是
A)k=(*f)(a,b); B)k=add(a,b); C)k=*f(a,b); D)k=f(a,b);
(41)有以下程序
#include
main(int argc,char *argv[])
{int i=1,n=0;
while(i<arge){n=n+strlen(argv[i]);i++;}
printf(“%d\n”,n);
}
该程序生成的可执行文件名为:proc.exe。若运行时输入命令行:
proc 123 45 67
则程序的输出结果是
A)3 B)5 C)7 D)11
(42)有以下程序
void fun2(char a, char b){printi(“%b%c”,a,b);}
char a= ‘A’,b= ‘B’;
void fun1( ){ a= ‘C’l b= ‘D’; }
main( )
{ fun1( )
printf( “%c%c”,a,b);
fun2(‘E’, ‘F’);
}
程序的运行结果是
A)CDEF B)ABEF C)ABCD D)CDAB
(43)有以下程序
#include
#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);
}
程序的运行结果是
A)12 12 B)11 7 C)11 11 D)12 7
(44)设有以下语句
typedef struct TT
{char c; int a[4];}CIN;
则下面叙述中正确的是
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函数调用语句中错误引用结构体变量成员的是
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;
则以下语句正确的是
A)x=10.5; B)x.c=101; C)y=x; D)printf(“%d\n”,x);
(47)若变量已正确定义,则以下语句的输出结果是
s=32; s^=32;printf(“%d”,s);
A)-1 B)0 C)1 D)32
(48) 若程序中有宏定义行:#define N 100 则以下叙述中正确的是
A)宏定义行中定义了标识符N的值为整数100
B)在编译程序对C源程序进行预处理时用100替换标识符N
C) 对C源程序进行编译时用100替换标识符N
D)在运行时用100替换标识符N
(49)以下叙述中正确的是
A)C语言中的文件是流式文件,因此只能顺序存取数据
B)打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖
C)在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据
D)当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失
(50)有以下程序
#include
main()
{FILE *fp; int i;
char ch[]=”abcd”,t;
fp=fopen(“abc.dat”,”wb+”);
for(i=0;i<4;i++)fwriter&ch[],1,1fp;
fseek(fp,-2L,SEEK_END);
fread(&t,1,1,fp);
fclose(fp);
printf(“%c\n”,t);
}
程序执行后的输出结果是
A)d B)c C)b D)a
二、填空题(每空2分,共40分)
(1)在面向对象方法中,类之间共享属性和操作的机制称为 【1】 。
(2)一个关系表的行称为 【2】 。
(3)耦合和内聚是评价模块独立性的两个主要标准,其中 【3】 反映了模块内各成分之间的联系。
(4)线性表的存储结构主要分为顺序存储结构和链式存储结构.队列是一种特殊的线性表,循环队列是队列的【4】存储结构.
(5) 【5】 的任务是诊断和改正程序中的错误。
(6) 以下程序的输出结果是【6】.
#include
main()
{ int n=12345,d;
while(n!=0){ d=n%10; printf("%d",d); n/=10;}
}
(7)以下程序运行后的输出结果是 【7】 。
main()
{
int m=011,n=11;
printf("%d %d\n",++m,n++);
}
(8)有以下程序,若运行时从键盘输入:18,11,则程序输出结果是 【8】 。
main()
{ int a,b;
printf("Enter a,b:");scanf("%d,%d",&a,&b);
while(a!=b)
{ while(a>b) a-=b;
while(b>a) b-=a;
}
printf("%3d%3d\n",a,b);
}
(9) 有以下程序段,且变量已正确定义和赋值
for(s=1.0,k=1;k<=n;k++) s=s+1.0/(k*(k+1));
printf("s=%f\n\n",s);
请填空,使下面程序段的功能为完全相同
s=1.0;k=1;
while(_【9】_______){ s=s+1.0/(k*(k+1)); _【10】_______;}
printf("s=%f\n\n",s);
(10)执行以下程序的输出结果是【11】______.
#include
main()
{ int i,n[4]={1};
for(i=1;i<=3;i++)
{ n=n[i-1]*2+1; printf("%d",n); }
}
(11)以下程序中函数f的功能是在数组x的n个数(假定n个数互不相同)中找出最大最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换.请填空.
#include
viod f(int x[],int n)
{ int p0,p1,i,j,t,m;
i=j=x[0]; p0=p1=0;
for(m=0;m{ if(x[m]>i) {i=x[m]; p0=m;}
else if(x[m]}
t=x[p0]; x[p0]=x[n-1]; x[n-1]=t;
t=x[p1];x[p1]= _【12】_______; 【13】______=t;
}
main()
{ int a[10],u;
for(u=0;u<10;u++) scanf("%d",&a);
f(a,10);
for(u=0;u<10;u++) printf("%d",a);
printf("\n");
}
(12)下列程序中的函数strcpy2()实现字符串两次复制,即将t所指字符串复制两次到s所指内存空间中,合并形成一个新的字符串。例如,若t所指字符串为efgh,调用strcpy2后,s所指字符串为efghefgh。请填空。
#include
#include
void strcpy2(char *s,char *t)
{ char *p=t;
while(*s++=*t++);
s= 【14】 ;
while( 【15】 =*p++);
}
main()
{ char str1[100]="abcd",str2[]="efgh";
strcpy2(str1 ,str2); printf("%s\n",str1);
}
(13)以下程序统计从终端输入的字符中大写字母的个数,num[0]中统计字母A的个数,num[1]中统计字母B的个数,其它依次类推.用#号结束输入,请填空.
#include
#include
main()
{ int num[26]={0},i; char c;
while((_【16】_______)!='#')
if(isupper(c)) num[c-‘A’]+= 【17】_______;
for(i=0;i<26;i++)
Printf("%c:%d\n",i+'A',num);
}
(14)以下程序中,函数fun的功能是计算x2-2x+6,主函数中将调用fun函数计算:
y1=(x+8)2-2(x+8)+6
y2=sin2(x)-2sin(x)+6
请填空。
#include "math.h"
double fun(double x) { return(x*x-2*x+6); }
main()
{
double x,y1,y2;
printf("Enter x:"); scanf("%lf",&x);
y1=fun( 【18】 );
y2=fun( 【19】 );
printf("y1=%lf,y2=%lf\n",y1,y2);
}
(15) 以下程序的输出结果是_【20】______.
#include
#define M 5
#define N M+M
main()
{ int k;
k=N*N*5; printf("%d\n",k);
}
一、选择题答案:
1-10:CACDC DADBA 11-20:BDDBA CCCCB 21-30:DCBCA CCBCA
31-40:CCDAB DCDAB 41-50:CABCD BBBDB
二、填空题答案:
1.继承 2. 元组 3.内聚 4.顺序 5. 程序调试
6. 54321 7.10 11 8. 1 9.k<=n k++
10. 3 7 5 11.x[0] x[0] 12.s--,*s++ 13.c=getchar() 14. (x+8),sin(x) 15.55
希望对你有所帮助
Ⅵ 求2011年九月以及以前的计算机二级考试C语言试题及答案、以及考试内容分析和解题技巧。记住只要C的。
(1)下面叙述正确的是________。
A)算法的执行效率与数据的存储结构无关
B)算法的空间复杂度是指算法程序中指令(或语句)的条数
C)算法的有穷性是指算法必须能在执行有限个步骤之后终止
D)算法的时间复杂度是指执行算法程序所需要的时间
(1)C
知识点:算法的基本概念;算法复杂度的概念和意义(时间复杂度与空间复杂度)
评 析:算法的设计可以避开具体的计算机程序设计语言,但算法的实现必须借助程序设计语言中提供的数据类型及其算法。数据结构和算法是计算机科学的两个重要支柱。它们是一个不可分割的整体。算法在运行过程中需辅助存储空间的大小称为算法的空间复杂度。算法的有穷性是指一个算法必须在执行有限的步骤以后结束。算法的时间复杂度是指执行算法所需要的计算工作量,即算法执行过程中所需要的基本运算次数。
(2)以下数据结构属于非线性数据结构的是________。
A)队列 B)线性表 C)二叉树 D)栈
(2)C
知识点:栈和队列的定义;栈和队列的顺序存储结构及其基本运算
评 析:线性表、栈和队列等数据结构所表达和处理的数据以线性结构为组织形式。栈是一种特殊的线性表,这种线性表只能在固定的一端进行插入和删除操作,允许插入和删除的一端称为栈顶,另一端称为栈底。一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素,即刚刚被插入的元素。所以栈又称后进先出表(Last In First Out)。队列可看作是插入在一端进行,删除在另一端进行的线性表,允许插入的一端称为队尾,允许删除的一端称为队头。在队列中,只能删除队头元素,队列的最后一个元素一定是最新入队的元素。因此队列又称先进先出表(First In First Out)。二叉树的数据结构是树型结构,结构中数据元素之间存在着一对多的关系,因此它是一种非线性数据结构。
(3)在一棵二叉树上第8层的结点数最多是________。
A)8 B)16 C)128 D)256
(3)C
知识点:二叉树的定义及其存储结构
评 析:根据二叉树的性质:二叉树第i(I>1)层上至多有2i-1个结点。得到第8层的结点数最多是128。
(4)下面描述中,不符合结构化程序设计风格的是________。
A)使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑
B)自顶向下
C)注重提高程序的执行效率
D)限制使用goto语句
(4)C
知识点:结构化程序设计
评 析:结构化程序设计方法的四条原则是:1.自顶向下:2.逐步求精;3.模块化;4.限制使用goto语句。“自顶向下”是说,程序设计时,应先考虑总体,后考虑细节,先考虑全局目标,后考虑局部目标;“逐步求精’’是说,对复杂问题,应设计一些子目标作过渡,逐步细节化;“模块化”是说,一个复杂问题肯定是由若干稍简单的问题构成,解决这个复杂问题的程序,也应对应若干稍简单的问题,分解成若干稍小的部分。
(5)下面概念中,不属于面向对象方法的是________。
A)对象、消息 B)继承、多态 C)类、封装 D)过程调用
(5)D
知识点:面向对象的程序设计方法、对象、方法、属性及继承与多态性
评 析:面向对象方法是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、重构软件的方法。面向对象方法从对象出发,发展出对象、类、消息、继承等概念。
(6)在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是________。
A)可行性分析 B)需求分析 C)详细设计 D)程序编码
(6)B
知识点:结构化设计方法
评 析:软件开发阶段包括需求分析、总体设计、详细设计、编码和测试五个阶段。其中需求分析阶段常用的工具是数据流程图和数据字典。
(7)软件生命周期中所花费用最多的阶段是________。
A)详细设计 B)软件编码 C)软件测试 D)软件维护
(7)D
知识点:软件工程基本概念,软件生命周期概念,软件工具与软件开发环境
评 析:软件生命周期分为软件定义、软件开发及软件运行维护3个阶段。本题中详细设计、软件编码和软件测试都属于软件开发阶段;维护是软件生命周期的最后一个阶段,也是持续时间最长,花费代价最大的一个阶段,软件工程学的一个目的就是提高软件的可维护性,降低维护的代价。
(8)数据库系统的核心是________。
A)数据模型 B)DBMS C)软件工具 D)数据库
(8)B
知识点:数据库的基本概念:数据库,数据库管理系统,数据库系统
评 析:数据库管理系统DBMS是数据库系统的核心。DBMS是负责数据库的建立、使用和维护的软件。DBMS建立在操作系统之上,实施对数据库的统一管理和控制。用户使用的各种数据库命令以及应用程序的执行,最终都必须通过DBMS。另外,DBMS还承担着数据库的安全保护工作,按照DBA所规定的要求,保证数据库的完整性和安全性。
(9)下列叙述中正确的是________。
A)数据处理是将信息转化为数据的过程
B)数据库设计是指设计数据库管理系统
C)如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键
字,则称其为本关系的外关键字
D)关系中的每列称为元组,一个元组就是一个字段
(9)C
知识点:数据模型,实体联系模型及E-R图,从E-R图导出关系数据模型
评 析:数据处理是指将数据转换成信息的过程,故选项A叙述错误;设计数据库的目的实质上是设计出满足实际应用需求的实际关系模型,故选项B叙述错误;关系中的行称为元组,对应存储文件中的记录,关系中的列称为属性。对应存储文件中的字段,故D选项叙述错误。
(10)下列模式中,_______是用户模式。
A)内模式 B)外模式 C)概念模式 D)逻辑模式
(10)B
知识点:数据库的基本概念:数据库,数据库管理系统,数据库系统
评 析:数据库管理系统的三级模式结构由外模式、模式和内模式组成。外模式,或称子模式,或称用户模式,是指数据库用户所看到的数据结构,是用户看到的数据视图。模式,或称逻辑模式,是数据库中对全体数据的逻辑结构和特性的描述,是所有用户所见到的数据视图的总和。外模式是模式的一部分。内模式,或称存储模式,或称物理模式,是指数据在数据库系统内的存储介质上的表示。即对数据的物理结构和存取方式的描述。
36)算法的时间复杂度是指_______。
A)执行算法程序所需要的时间
B)算法程序的长度
C)算法执行过程中所需要的基本运算次数
D)算法程序中的指令条数
(36)C
知识点:算法复杂度的概念和意义(时问复杂度与空间复杂度)
评析:所谓算法的时间复杂度,是指执行算法所需要的计算工作量。为了能够比较客观地反映出一个算法的效率,在度量一个算法的工作量时,不仅应该与所使用的计算机、程序设计语言以及程序编制者无关,而且还应该与算法实现过程中的许多细节无关。为此,可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。
(37)下列叙述中正确的是_______。
A)线性表是线性结构 B)栈与队列是非线性结构
C)线性链表是非线性结构 D)二叉树是线性结构
(37)A
知识点:线性结构与非线性结构的概念
评析:根据数据结构中各数据元素之间相关联关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。如果一个非空的数据结构满足下列两个条件: (1)有且只有一个根结点; (2)每一个结点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构,又称线性表。所以线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。
(38)下面关于完全二叉树的叙述中,错误的是_______。
A)除了最后一层外,每一层上的结点数均达到最大值
B)可能缺少若干个左右叶子结点
C)完全二叉树一般不是满二叉树
D)具有结点的完全二叉树的深度为[log2n]+l
(38)B
知识点:二叉树的定义及其存储结构
评析:这里考察完全二又树与满二叉树的定义及二叉树的性质。满二叉树指除最后一层外每一层上所有结点都有两个子结点的二叉树。完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干子结点(叶子结点)的二叉树。因此选项A是正确的,而选项B是错误的。由定义可知,满二叉树肯定是完全二又树,而完全二又树一般不是满二叉树,因此选项c是正确的叙述。选项D即二又树性质(5),也是正确的。
(39)结构化程序设计主要强调的是_______。
A)程序的规模 B)程序的易读性
C)程序的执行效率 D)程序的可移植性
(39)B
知识点:结构化程序设计
评析:结构化程序设计主要强调的足结构化程序清晰易读,可理解性好,程序员能够进行逐步求精、程序证明和测试.以保证程序的正确性。
(40)在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是_______。
A)概要设计 B)详细设计 C)可行性分析 D)需求分析
(40)D
知识点:软件工程基本概念,软件生命周期概念,软件工具与软件开发环境
评析:通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。软件生命周期的主要活动阶段为:
① 可行性研究和计划制定。确定待开发软件系统的开发目标和总的要求,给出它的功能、性能、可靠性以及接口等方面的可行方案,制定完成开发任务的实施计划。
②需求分析。对待开发软件提出的需求进行分析并给出详细定义,即准确地确定软件系统的功能。编写软件规格说明书及初步的用户手册,提交评审。
③软件设计。系统设计人员和程序设计人员应该在反复理解软件需求的基础上,给出软件的结构、模块的划分、功能的分配以及处理流程。
④软件实现。把软件设计转换成计算机可以接受的程序代码。即完成源程序的编码,编写用户手册、操作手册等面向用户的文档,编写单元测试计划。
⑤软件测试。在设计测试用例的基础上,检验软件的各个组成部分。编写测试分析报告。
⑥运行和维护。将已交付的软件投入运行,并存运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。
(41)数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是_______。
A)控制流 B)加工 C)数据存储 D)源和潭
(41)A
知识点:结构化分析方法,数据流图,数据字典,软件需求规格说明书
评析:数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。数据流图中的主要图形元素有:加工(转换)、数据流、存储文件(数据源)、源和潭。
(42)软件需求分析一般应确定的是用户对软件的_______。
A)功能需求 B)非功能需求 C)性能需求 D)功能需求和非功能需求
(42)D
知识点:结构化设计方法
评析:软件需求分析中需要构造一个完全的系统逻辑模型,理解用户提出的每一功能与性能要求,是用户明确自己的任务。因此,需求分析应确定用户对软件的功能需求和非功能需求。
(43)下述关于数据库系统的叙述中正确的是_______。
A)数据库系统减少了数据冗余
B)数据库系统避免了一切冗余
C)数据库系统中数据的一致性是指数据类型的一致
D)数据库系统比文件系统能管理更多的数据
(43)A
知识点:数据库的基本概念:数据库,数据库管理系统,数据库系统
评析:由于数据的集成性使得数据可为多个应JH=j所共享,特别是在网络发达的今天,数据库与网络的结合扩大了数据关系的应用范围。数据的共享自身义可极大地减少数据冗余性,不仅减少了不必要的存储空间,更为重要的是可以避免数据的不一致性。所谓数据的一致性是指在系统中同一数据的不同出现应保持相同的值,而数据的不一致性指的是同一个数据在系统的不同拷贝处有不同的值。
(44)关系表中的每一横行称为一个_______。
A)元组 B)字段 C)属性 D)码
(44)A
知识点:数据库的基本概念:数据库.数据库管理系统,数据库系统
评析:在关系数据库中,关系模型采用二维表来表示,简称“表”。二维表是由表框架及表元组组成。在表框架中,按行可以存放数据,每行数据称为元组。
(45)数据库设计包括两个方面的设计内容,它们是_______。
A)概念设计和逻辑设计 B)模式设计和内模式设计
C)内模式设计和物理设计 D)结构特性设计和行为特性设计
(45)A
知识点:数据库设计方法和步骤:需求分析、概念设计、逻辑设计和物理设计的相关策略
评析:数据库设计可分为概念设计与逻辑设计。数据库概念设计的目的是分析数据问内存语义关联,在此基础上建立一个数据的抽象模型。数据库逻辑设计的主要工作是将E-R图转换为指定的RDBMS中的关系模型。
(61)字符(char)型数据在微机内存中的存储形式是________。
A)反码 B)补码
C)EBCDIC码 D)ASCII码
(61)D
知识点:字符数据在内存中的存储形式
评析:将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中去,而是将该字符的ASCII码值放到存储单元中。
71)算法的空间复杂度是指_______。
A)算法程序的长度 B)算法程序中的指令条数
C)算法程序所占的存储空间 D)算法执行过程中所需要的存储空间
(71)D
知识点:算法的复杂度
评析:一个算法的空间复杂度,一般是指执行这个算法所需的内存空间。
一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。
(72)下列关于栈的叙述中正确的是_______。
A)在栈中只能插入数据 B)在栈中只能删除数据
C)栈是先进先出的线性表 D)栈是先进后出的线性表
(72)D
知识点:栈的输入输出操作
评析:栈是限定在一端进行插入与删除的线性表。
栈是按照“先进后出”的或“后进先出”的原则组织数据的,因此,栈也被称为“先进后出”表或“后进先出”表。
(73)在深度为5的满二叉树中,叶子结点的个数为_______。
A)32 B)31 C)16 D)15
(73)C
知识点:二叉树的概念
评析:所谓满二叉树是指除最后一层外,每层上的所有结点都有两个子结点。也就是说,在满二又树中,每一层上的结点数都达到最大值,即在满二叉树的第K层上有2k-1个结点,且深度为m的满二叉树有2m个结点。
在满二叉树中,最后一层的结点个数就是叶子结点的个数,本题中深度为5,故叶子结点数为25-1=24==16。
(74)对建立良好的程序设计风格,下面描述正确的是_______。
A)程序应简单、清晰、可读性好 B)符号名的命名要符合语法
C)充分考虑程序的执行效率 D)程序的注释可有可无
(74)A
知识点:程序设计风格
评析:要形成良好的程序设计风格,主要应注重和考虑下述一些因素:符号名的命名应具有一定的实际含义,以便于对程序功能的理解;正确的注释能够帮助读者理解程序;程序编写应优先考虑清晰性,除非对效率有特殊要求,程序编写要做到清晰第一,效率第二。
(75)下面对对象概念描述错误的是_______。
A)任何对象都必须有继承性 B)对象是属性和方法的封装体
C)对象问的通讯靠消息传递 D)操作是对象的动态性属性
(75)A
知识点:对象的概念
评析:对象是由数据和容许的操作组成的封装体,与客观实体有直接的对应关系。对象之间通过传递消息互相联系,以模拟现实世界中不同事物彼此之间的联系。
(76)下面不属于软件工程的3个要素的是_______。
A)工具 B)过程 C)方法 D)环境
(76)D
知识点:软件:[程的要素
评析:软件工程包括3个要素,即方法、工具和过程。
(77)程序流程图(PFD)中的箭头代表的是_______。
A)数据流 B)控制流 C)调用关系 D)组成关系
(77)B
知识点:软件设计工具
评析:程序流程图(PFD)是一种传统的、应用广泛的软件过程设计表示工具,通常也称为程序框图,其箭头代表的是控制流。
(78)在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是_______。
A)数据库系统 B)文件系统 C)人工管理 D)数据项管理
(78)A
知识点:数据管理技术的发展
评析:在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是数据库系统。
Ⅶ 求全国计算机等级考试二级C语言的真题
http://yunpan.cn/QCwVZT2HztQcE 访问密码 6dbd