打印本文 打印本文  关闭窗口 关闭窗口  
全国计算机等级考试二级C语言模拟试题2
作者:佚名  文章来源:不详  点击数  更新时间:2008/4/18 14:36:25  文章录入:杜斌  责任编辑:杜斌

答案

一、选择题(每题2分,共计70分)

1.已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为
A)GEDHFBCA
B)DGEBHFCA
C)ABCDEFGH
D)ACBFEDHG
A       B       C       D      
2.树是结点的集合,它的根结点数目是
A)有且只有1
B)1或多于1
C)0或1
D)至少2
A       B       C       D      
3.如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是
A)e3,e1,e4,e2
B)e2,e4,e3,e1
C)e3,e4,e1,e2
D)任意顺序
A       B       C       D      
4.在设计程序时,应采纳的原则之一是
A)不限制goto语句的使用
B)减少或取消注解行
C)程序越短越好
D)程序结构应有助于读者理解
A       B       C       D      
5.程序设计语言的基本成分是数据成分、运算成分、控制成分和
A)对象成分
B)变量成分
C)语句成分
D)传输成分
A       B       C       D      

答案
6.下列叙述中,不属于软件需求规格说明书的作用的是
A)便于用户、开发人员进行理解和交流
B)反映出用户问题的结构,可以作为软件开发工作的基础和依据
C)作为确认测试和验收的依据
D)便于开发人员进行需求分析
A       B       C       D      
7.下列不属于软件工程的3个要素的是
A)工具
B)过程
C)方法
D)环境
A       B       C       D      
8.单个用户使用的数据视图的描述称为
A)外模式
B)概念模式
C)内模式
D)存储模式
A       B       C       D      
9.将E-R图转换到关系模式时,实体与联系都可以表示成
A)属性
B)关系
C)键
D)域
A       B       C       D      
10.SQL语言又称为
A)结构化定义语言
B)结构化控制语言
C)结构化查询语言
D)结构化操纵语言
A       B       C       D   

答案
11.下列叙述中正确的是
A)C语言编译时不检查语法
B)C语言的子程序有过程和函数两种
C)C语言的函数可以嵌套定义
D)C语言的函数可以嵌套调用
A       B       C       D      
12.在C语言中,退格符是
A)\n
B)\t
C)\f
D)\b
A       B       C       D      
13.以下叙述中正确的是
A)构成C程序的基本单位是函数
B)可以在一个函数中定义另一个函数
C)main()函数必须放在其他函数之前
D)所有被调用的函数一定要在调用之前进行定义
A       B       C       D      
14.若已定义: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
A       B       C       D      
15.下列程序段的输出结果是
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
A       B       C       D   

答案
16.若运行以下程序时,从键盘输入 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=7,v1=4,v2=7
B)v0=8,v1=4,v2=8
C)v0=11,v1=4,v2=11
D)v0=13,v1=4,v2=12
A       B       C       D      
17.设有以下程序段
int x=0,s=0;
while(!x!=0)s+=++x;
printf("%d",s);

A)运行程序段后输出0
B)运行程序段后输出1
C)程序段中的控制表达式是非法的
D)程序段执行无限次
A       B       C       D      
18.执行下面的程序段后,变量k中的值为
int k=3, s[2];
s[0]=k; k=s[1]*10;
A)不定值
B)33
C)30
D)10
A       B       C       D      
19.以下程序段的描述,正确的是
x=-1;
do
{x=x*x;} while(!x);
A)是死循环
B)循环执行两次
C)循环执行一次
D)有语法错误
A       B       C       D      
20.有如下程序段
int a=14,b=15,x;
char c=′A′;
x=(a&&b)&&(c<′B′);
执行该程序段后,x的值为
A)ture
B)false
C)0
D)1
A       B       C       D      

答案
21.下列程序执行后的输出结果是
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
A       B       C       D      
22.以下函数返回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
A       B       C       D      
23.以下程序的输出结果是#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
A       B       C       D      
24.有如下程序
main()
{ char s[]="ABCD", *p;
for(p=s+1; p}
该程序的输出结果是
A)ABCD
BCD
CD
D
B)A
B
C
D
C)B
C
D
D)BCD
CD
D
A       B       C       D      
25.下列程序执行后的输出结果是
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)随机数
A       B       C       D  

答案
26.定义如下变量和数组
int k;
int a[3][3]={9,8,7,6,5,4,3,2,1};
则下面语句的输出结果是
for(k=0;k<3;k++)printf("%d",a[k][k]);
A)7 5 3
B)9 5 1
C)9 6 3
D)7 4 1
A       B       C       D      
27.下列程序执行后的输出结果是
main()
{ char arr[2][4];
strcpy(arr,"you"); strcpy(arr[1],"me");
arr[0][3]=′&′;
printf("%s\n",arr);
}
A)you&me
B)you
C)me
D)err
A       B       C       D      
28.以下正确的说法是
A)定义函数时,形参的类型说明可以放在函数体内
B)return后边的值不能为表达式
C)如果函数值的类型与返回值类型不一致,以函数值类型为准
D)如果形参与实参类型不一致,以实参类型为准
A       B       C       D      
29.有以下程序
int f(int n)
{ if(n==1)return 1;
else return f(n-1)+1;
}
main()
{ int i,j=0;
for(i=1;i<3;i++)j+=f(i);
printf("%d\n",j);
}
程序运行后的输出结果是
A)4
B)3
C)2
D)1
A       B       C       D      
30.设有如下定义
struck sk
{ int a;
float b;
} data;
int *p;
若要使p指向data中的a域,正确的赋值语句是
A)p=&a;
B)p=data.a;
C)p=&data.a;
D)*p=data.a;
A       B       C       D      

答案
31.以下对结构体类型变量的定义中,不正确的是
A)typedef struct aa
{ int n;
float m;
} AA;
AA tdl;
B)#define AA struct aa
AA{ int n;
float m;
} tdl;
C)struct
{ int n;
float m;
} aa;struct aa tdl;
D)struct
{ int n;
float m;
} tdl;
A       B       C       D      
32.在下述程序中,判断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
A       B       C       D      
33.若有以下程序
#include
void f(int n);
main()
{ void f(int n);
f(5);
}
void f(int n)
{ printf("%d\n",n); }
则以下叙述中不正确的是
A)若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f
B)若在主函数前对函数f进行说明,则在主函数和其后的其他函数中都可以正确调用函数f
C)对于以上程序,编译时系统会提示出错信息:提示对f函数重复说明
D)函数f无返回值,所以可用void将其类型定义为无返回值型
A       B       C       D      
34.以下程序的输出是
struct st
{ int x; int *y;} *p;
int dt[4]={ 10,20,30,40 };
struct st aa[4]={ 50,&dt[0],60,&dt[0],60,&dt[0],60,&dt[0]};
main()
{ p=aa;
printf("%d\n",++(p->x));
}
A)10
B)11
C)51
D)60
A       B       C       D      
35.有以下程序
#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
A       B       C       D      

答案

二、填空题(每空2分,共计30分)

1.数据结构分为逻辑结构与存储结构,线性链表属于 【1】 。
输入答案,中间不含空格:
2.在面向对象方法中,类之间共享属性和操作的机制称为 【2】 。
输入答案,中间不含空格:
3.耦合和内聚是评价模块独立性的两个主要标准,其中 【3】 反映了模块内各成分之间的联系。
输入答案,中间不含空格:
4.一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体“项目主管”与实体“项目”的联系属于 【4】 的联系。
输入答案,中间不含空格:
5.数据库设计分为以下6个设计阶段:需求分析阶段、 【5】 、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。
输入答案,中间不含空格:

答案
6.以下程序的功能是从健盘输入若干学生的成绩,并输出最高成绩和最低成绩,当输入负数时结束。请填空。
main ()
{ float x,amax,amin;
scanf ("%f",&x);
amax=x;
amin=x;
while ( 【6】 )
{ if (x>amax)
amax=x;
else
if 【7】
amin=x;
else scanf ("%f",&x);
}
printf ("\n amax=%f\n amin=%f\n",amax,amin);
}
输入答案,中间不含空格:
7.设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的首部 【8】 。要求形参名为b。
main()
{ double s[10][22];
int n; ┆

fun(s);

}
输入答案,中间不含空格:
8.下列程序的功能是输入一个整数,判断是否是素数,若为素数输出1,否则输出0,请填空。
main()
{ int i, x, y=1;
scanf("%d", &x);
for(i=2; i<=x/2; i++)
if 【9】 { y=0; break;}
printf("%d\n", y);
}
输入答案,中间不含空格:
9.下面程序的功能是将一个字符串str的内容颠倒过来,请填空。
#include
main()
{ int i,j, 【10】 ;char str[]={"1234567"};
for(i=0,j=strlen(str) 【11】 ;i { k=str[i];str[i]=str[j];str[j]=k;}
printf("%s\n",str);
}
输入答案,中间不含空格:
10.以下程序可把输入的十进制数以十六进制数的形式输出,请填空。
main()
{ char b[17]={"0123456789ABCDEF"};
int c[64],d,i=0,base=16;
long n;
printf("Enter a number:\n");scanf("%ld",&n);
do{c[i]= 【12】 ;i++;n=n/base;}
while(n!=0);
printf("Transmite new base:\n");
for(--i;i>=0;--i)
{d=c[i];printf("%c",b 【13】 );}
printf("\n");
}
输入答案,中间不含空格:

答案
11.若给fun函数的形参s传送字符串:“ 6354abcc” (其中 表示空格字符),则函数的返回值是 【14】 。
#include
long fun(char s[])
{ long n;int sign;
for(;isspace(*s);s++);
sign=(*s==′-′)?-1:1;
if(*s==′+′||*s==′-′)s++;
for(n=0;isdigit(*s);s++)n=10*n+(*s-′0′);
return sign*n;
}
输入答案,中间不含空格:
12.设有定义“struct {int a; float b; char c;} abc, *p_abc=&abc;”,则对结构体成员a的引用方法可以是abc.a和p_abc【15】a。
输入答案,中间不含空格:
打印本文 打印本文  关闭窗口 关闭窗口