计算机类二级C
2013年9月全国计算机等级《二级C语言程序设计》专家预测卷(1)
43 题含答案C
1单选题1 / 43
设有定义:“int a=1,b=2,C=3;”,以下语句中执行效果与其他三个不同的是( )。
查看答案
C. if(a>b)c=a;a=b;b=C;
2单选题2 / 43
下面描述中,不属于软件危机表现的是( )。
查看答案
A. 软件过程不规范
3单选题3 / 43
下述程序的输出结果是( )。
#include
main( )
{int i;
for(i=1;i<=10;i++)
{if(i*i>=20)&&(i*i<=lOO))
break;
}
printf("%d\n",i*i);
}
查看答案
C. 25
4单选题4 / 43
以下不能输出字符A的语句是(注:字符A的ASCIl码值为65,字符a的ASCIl码值为97)( )。
查看答案
B. print[("%d\n",'A');
5单选题5 / 43
设有如下函数定义:
int fun(int k)
{if(k<1)return 0;
else if(k= =l)return l;
else return fun(k-1)+1:
}
若执行调用语句:“n=fun(3);”,则函数fun总共被诃用的次数是( )。
查看答案
B. 3
6单选题6 / 43
以下叙述正确的是( )。
查看答案
B. C语言函数可以嵌套调用,例如:fun(fun(x))
7单选题7 / 43
有以下程序:
#include
main( )
{ int a=1,b=0;
if(--a)b++;
else if(a=0)b+=2;
else b+=3:
print[("%d\n",b);
}
程序运行后的输出结果是( )。
查看答案
D. 3
8单选题8 / 43
有以下程序:
#include
void func(int n)
{ int i;
for(i=0;i<=n;i++)printf("*"):
printf("#");
}
main( )
{func(3);printf("????");func(4);printf("n\");
程序运行后的输出结果( )。
查看答案
D. ****#????*****#
9单选题9 / 43
以下选项中,合法的一组C语言数值常量是( )。
查看答案
B. 12.
OXa23
4.5eO
10单选题10 / 43
对于循环队列,下列叙述中正确的是( )。
查看答案
D. 队头指针可以大于队尾指针,也可以小于队尾指针
11单选题11 / 43
有以下程序:
#include
void fun(char*C,int d)
{*c=*c+1,d=d+1;
printf(%"c%,c",*c,d);
}
main( )
{char b='a'a='A';
fun(&b,a);printf(%"c,%c\n",b,a);
)
程序运行后的输出结果是( )。
查看答案
A. b,B,b,A
12单选题12 / 43
以下叙述中错误的是( )。
查看答案
D. 在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe文件
13单选题13 / 43
有以下程序:
#include
void fun(char c)
{ if(c>'X')fun(c-1):
printf("%C",c);
}
traia( )
{ fun('z');}
程序运行后的输出结果是( )
查看答案
A. xyz
14单选题14 / 43
若以下选项中的变量全部为整型变量,且已正确定义并赋值,则语法正确的switch语句是( )。
查看答案
D. switch(a*a+b*b)
{default:break;
case 3:y=a+b;break;
case 2:y=a-b;break;
}
15单选题15 / 43
下列能正确进行字符串赋值的是( )。
查看答案
C. char*S;S="ABCDE";
16单选题16 / 43
以下叙述中错误的是( )。
查看答案
C. 定义符号常量必须用类型名来设定常量的类型
17单选题17 / 43
下列叙述中,不符合良好程序设计风格的是( )。
查看答案
A. 程序的效率第一,清晰第二
18单选题18 / 43
有三个关系R、S和T如下:
由关系R和S得到关系T的操作是( )。
查看答案
C. 除
19单选题19 / 43
有以下程序:
#include
main( )
{int a=2,b=2,C=2;
print{("%d\n",a/b&c);
}
程序运行后的输出结果是( )。
查看答案
A. 0
20单选题20 / 43
面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是( )。
查看答案
C. 使用现实世界的概念抽象地思考问题从而自然地解决问题
21单选题21 / 43
结构化程序所要求的基本结构不包括( )。
查看答案
B. GOT0跳转
22单选题22 / 43
关于结构化程序设计原则和方法的描述错误的是( )。
查看答案
C. 不允许使用GOT0语句
23单选题23 / 43
以下C语言用户标识符中,不合法的是( )。
查看答案
D. a--b
24单选题24 / 43
若变量已正确定义,在语句“if(W)printf("%d\n",k);”中,以下不可替代w的是( )。
查看答案
A. a<>b+c
25单选题25 / 43
若有定义"int(*pt)[3];",则下列说法正确的是( )。
查看答案
D. 定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组
26单选题26 / 43
有以下程序:
#include
#define S(x)(x)"x"2
main( )
{ int k一5,j=2;
Drintf("%printf,",S(k+j));printf("%printf\n",S((k—j)));
}
程序运行后的输出结果是( )。
查看答案
B. 39,11
27单选题27 / 43
设x、Y和z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0的是( )。
查看答案
D. !((x<Y)&&!Z‖1)
28单选题28 / 43
有以下程序:
#include
double f(double x);
main( )
{double a=0; int i;
for(i=0;i<30;i+=10)a+=f((double)i);
printf("%5.of\n",a);
}
double f(double x)
{ return x*x+1; }
程序运行后的输出结果是( )。
查看答案
A. 503
29单选题29 / 43
有以下程序:
#include
struct stu
{ int num;char name[l0];int age;};
void fun(struct stu*p)
{ printf("%s\n",p->name);}
main( )
{ struct stu x[3]={{01,"Zhang",20),{02,"Wang",l9},{03,"Zha0",l8}};
fun(x+2);
}
程序运行后的输出结果是( )。
查看答案
B. Zhao
30单选题30 / 43
有以下程序:
#include
#include
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
31单选题31 / 43
有以下程序(说明:字母A的ASCIl码值是65):
#include
void fun(char*s)
{while(*s)
{if(*s%2)printf("%C",*s);
s++;
}
}
main( )
{char a[]="BYTE"; 。
Fun(a);printf("\n");
}
程序运行后的输出结果是( )。
查看答案
D. YE
32单选题32 / 43
以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能。
#define MIN-2147483647
int findmax(int x[],int n)
{int i,max;
for(i=0;i<N;I++)
{max=MIN;
if(max
return max;
}
造成错误的原因是( )。
查看答案
D. 赋值语句“max—MIN;”放错了位置
33单选题33 / 43
下列叙述中正确的是( )。
查看答案
D. 以上三种说法都不对
34单选题34 / 43
算法的空间复杂度是指( )。
查看答案
D. 算法执行过程中所需要的存储空间
35单选题35 / 43
有以下程序:
#includedstdi0.h>
#define f(x)X*x*x
main( )
{int a=3,S,t;
s=f(a+1);t=f((a+1));
printf("%d,%d\n",S,t);
}
程序运行后的输出结果是( )。
查看答案
A. 10,64
36单选题36 / 43
以下函数不能用于向文件中写人数据的是( )。
查看答案
A. ftell
37单选题37 / 43
fun函数的功能是:通过键盘输入给x所指的整型数组所有元素赋值。在下划线处应填写的是( )。
#include
#define N 5
void fun(int x[N])
{ int m;
for(m=N-t;m>=O;m-)scanf("%d",____);
}
查看答案
D. x+m
38单选题38 / 43
关于C语言中数的表示,以下叙述中正确的是( )。
查看答案
A. 只有整型数在允许范围内能精确无误地表示,实型数会有误差
39单选题39 / 43
以下选项中关于C语言常量的叙述错误的是( )。
查看答案
D. 经常被使用的变量可以定义成常量
40单选题40 / 43
公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员间的联系是( )。
查看答案
A. 1:m联系
41主观题41 / 43
请补充main()函数,该函数的功能是:输入两个正整数numl和num2,求这两个数的最大公约和最小公倍数。
例如,若输入的两个正整数为12,4,则它们的最大公约数为12,最小公倍数为4。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在main()函数的横线上填人所编写的若干表达式或语句。
试题程序:
#include
#include
void main()
{
int a,b,numl,num2,t;
system("CLS"):
printf("\nInput two numbers:\n");
scanf("%d,%d",&numl,&num2);
if(numl<NUM2)
{
a=num2;
b=num1:
}
else
{
a=num1;
b=num2;
}
while(【1】)
{
t= 【2】
a=b;
b=t:
}
printf(“greatest common divisor:
%d\n",a);
printf("least common multiple:
%d\n", 【3】;
}
查看答案
【1】B!=0【2】A%B[3]numl*num2/A
42主观题42 / 43
下列给定程序中,函数proc()的功能是:根据输入的3个边长(整型值),判断能否构成三角形:若能构成等边三角形,则返回3;若是等腰三角形,则返回2;若能构成三角形则返回
1;若不能,则返回0。
例如,输入3个边长为3,4,5,实际输入时,数与数之间以Enter键分隔而不是逗号。请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
int proc(int a,int b,int c)
{
if(a+b>c&&b+c>a&&a+c>b)
{
if(a= =b&&b= =c)
//****found****
return 1;
else if(a= =b||b= =c||a= =c)
return 2;
//****found****
else return 3;
}
else return 0;
}
void main()
{
int a,b,C,shape;
printf("\nlnput a,b,C:");
scanf("%d%d%d",&a,&b,&c);
printf("\na=%d,b=%d,c=%d\n",a,b,c);
shape=proc(a,b,c);
printf("\n\nThe shape:%d\n",shape);
}
查看答案
(1)错误:rEturn l; 正确:rEturn 3; (2)错误:rEturn 3; 正确:rEturn l;
43主观题43 / 43
学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组stu中,请编写函数proc(),其功能是:按分数的高低排列学生的记录,高分在前。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
#include
#define M l6
typedef struct
{
char num[l0];
int S;
}
STREC:
void proc(STREC a[])
{
int i,j;
STREC t;
for(i=1;i
排序*/
for(j=0;j<M-1;J++)&NBSP;。
if(a[j].s
的记录,高分在前*/
{t=a[j];a[j]=a[j+1];a[j+1]=t;)
}
void main()
{
STREC stu[M]={{"GA005",85),{"GA003",76},
{"GA002",69},{"GA004",85),{"GA001",91),
{"GA007",72),{"GA008",64),{"GA006",87),
{"GA015",85),{"GA013",91),{"GA012",64),
{¨GA014",91),{"GA011",66),{"GA017",64},
{"GA018",64),{"GA016",72}};
int i;
proc(stu);
printf("The data after sorted:\n");
for(i=0;i<M;I++)
{
if(i%4= =0)
//每行输出4个学生记录
printf("n");
printf("%s%4d",stu[i],num,stu[i].s);
}
printf("\n");
}
查看答案
voiD proC(STREC A[])
{
int i,j;
STREC t;
for(i=1;i<M;i++)//用冒泡法来按从高到低排序
for(j=0;j<M-1;j++)
if(a[j].s<a[j+1].s)//按分数的高低排列学生的记录,高分在前
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
}