广西计算机二级考试试题.docx
《广西计算机二级考试试题.docx》由会员分享,可在线阅读,更多相关《广西计算机二级考试试题.docx(9页珍藏版)》请在冰点文库上搜索。
广西计算机二级考试试题
广西区等级考试二级C真题
第一卷(共70分)
第一部分:
基础知识(20题,共40分)
1、一个C程序总是从( B )开始执行。
A、程序的第一条执行语句 B、主函数 C、子程序 D、主程序
2、在C语言中,int, char和short int三种类型变量所占用的内存大小是( C )。
A、均为2个字节 B、由用户自己定义 C、由所用机器的字长决定 D、是任意的
3、若有以下类型说明语句:
char a; int b; float c; short int d;
则表达式(c*b+a)*d的结果类型是(B )。
A、char B、int C、double D、float
4、若有说明语句:
int w=1,x=2,y=3,z=4;
则表达试w>x?
w:
z>y?
z:
x的值是( A )
A、4 B、3 C、2 D、1
5、设x,y 为int型变量,则执行下列语句后,y的值是( )
x=5;
y=x++*x++;
y=--y*--y;
A、529 B、2401 C、1209 D、625
6、C语言中函数返回值的类型是( D )
A、return语句中的表达式类型 B、调用函数的类型
C、总是int型 D、定义函数时所指定的函数类型
7、凡是在函数中未指定存储类别的变量,其隐含的存储类别是( )
A、自动 B、静态 C、外部 D、寄存器
8、在源程序的一个文件中定义的全局变量的作用域是( D )
A、本文件的全部范围 B、该程序的全部范围
C、一个函数的范围 D、从定义该变量的位置开始至该文件的结束
9、以下不正确的描述是( A )
A、break语句只能用于循环语句和switch语句
B、在switch语句中,break语句的作用也可用continue语句来替代
C、在循环语句中,使用continue语句是为了结束本次循环,而不是终止循环的执行
D、在循环语句中,使用break语句是为了使流程跳出循环体,提前结束循环
10、若有宏定义 #define mod(x,y) x%y
则执行以下程序段后,输出为( B )
int z,a=15,b=100;
z=mod(b,a);
printf(“%d\n”,z++);
A、11 B、10 C、6 D、宏定义不合法
11、若有说明语句:
char s1[4]=”12”; char *ptr;
则执行下列语句后输出为( A )
ptr=s1;
printf(“%c\n”,*(ptr+1));
A、字符‘2’ B、整数2 C、字符串“12” D、字符‘1’
[1][2]
[page_break]
第二部分:
简单程序(12题,共30分)
21、运行下面的程序,其输出是( C )
main()
{ int a[]={2,4,6,8,10},y=1,x,*p;
p=&a[1];
for(x=0;x<3;x++)
y+=*(p+x);
printf(“%d\n”,y);}
A、17 B、18 C、19 D、20
22、运行下面的程序,其输出是( D )
main()
{int i=1;
while(i<19)
if(i++%5!
=3) continue;
else printf(“%4d”,i);
printf(“\n”);
}
A、2 5 7 9 11 13 15 17 B、3 6 9 12 15 18
C、4 9 14 19 D、3 8 13 17 19
23、运行下面的程序后,其正确的输出是( C )
main()
{static int a[5]={7,2,8,4,5};
static int *pa[5]={&a[0], &a[1], &a[2], &a[3], &a[4]};
int **p,i;
p=pa;
for(i=0;i<5;i++)
{
printf(“%d\t”,**p+2);
p++;}
printf(“\n”);
}
A、9 4 10 6 7 B、7 2 8 4 5
C、7 4 10 4 5 D、2 3 4 5 6
24、下面程序运行后,其输出是( )
main()
{int i;
int n=2;
while(++n<20)
{i=1;
while(++i {if(n%i==0)
break;
if(i==n-1)
printf(“%d\t”,n);
}
printf(“\n”);
}
}
A、2 5 7 9 13 17 19 B、3 5 7 11 13 17 19
C、2 3 5 7 11 13 17 19 D、3 5 7 11 13 17 20
[1]
[page_break]
25、下面程序运行后,其输出是( )
main()
{int i,j,k; int func();
i=1,j=2,k=3;
printf(“%d\n”,func((j+=k,j++),(i,i++,++i)));
}
int func(int x,int y)
{int z;
z=x%y;
return(z);
}
A、2 B、0 C、1 D、3
26、下面程序运行后,其输出是( )
int x,y;
one()
{int a,b;
a=25,b=10;
x=a-b;y=a+b;
}
main()
{int a,b;
a=9,b=5;
x=a+b;y=a-b;
one();
printf(“%d,%d\n”,x,y);
}
A、14,4 B、14,35 C、15,35 D、15,4
27、下面程序运行后,其输出是( )
#include
void printd(int i);
main()
{int n=123;
printd(n);
}
void printd(int n)
{int i;
if(n<0)
{n=-n;putchar(‘-‘);}
putchar(n%10+’0’);
if((i=n/10)!
=0)
printd(i);
}
A、123 B、321 C、3 D、1
28、下面程序运行后,其输出是( )
struct sample{
int a,b;
char *ch;
};
void f1(struct sample parm);
main()
{struct sample arg;
arg.a=1000;arg.b=100;arg.ch=”abcd”;
f1(arg);
}
void f1(struct sample parm)
{ parm.a+=parm.b;
parm.ch[2]=’x’;
printf(“%d\n”,parm.a);
printf(“%s\n”,parm.ch);
}
A、1000 B、1100 C、1100 D、100
Abcd abcd abxd abcd
[1]
[page_break]
29、下面程序运行后,其输出是( )
main()
{static char s[30]=”abcdefg”;
static char t[]=”abcd”;
int i,j;
i=0;
while(s[i]!
=’\0’)
i++;
j=0;
while(t[j]!
=’\0’)
{s[i+j]=t[j];
j++;}
s[i+j]=’\0’;
printf(“%s\n”,s);
}
A. abcdabcdefg B. abcdefg C. abcd D. abcdefgabcd
30、下面程序运行后,其输出是( )
main()
{ int a[4][4],i,j,k;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
a[i][j]=i+j;
for(i=1;i<4;i++)
for(j=i+1;j<4;j++)
{ k=a[i][j];
a[i][j]=a[j][i];
a[j][i]=k;
}
for(i=0;i<4;i++)
{printf(“\n”);
for(j=0;j<4;j++)
printf(“%4d”,a[i][j]);}
}
A、0 1 2 3 B、0 1 2 3 C、0 1 2 3 D、3 2 1 0
1 2 3 4 1 2 5 4 1 2 4 2 4 3 2 1
2 3 4 5 2 3 4 5 2 3 5 3 5 4 3 2
3 4 5 6 3 4 5 6 3 4 6 4 6 5 4 3
31、下面程序运行后,其输出是( )
main()
{ void sub();
char s[10]=”a program”; int num=4;
sub(s,0,num-1); sub(s,num,6); sub(s,0,6);
printf(“%s\n”,s);
}
void sub(char *s,int num1,int num2)
{ char t,*p;
p=s+num2;s=s+num1;
while(s
{t=*s; *s=*p; *p=t; s++; p--;}
}
A.program B.gram pro C.pro gram D.ogra pram
32、运行下面程序,从键盘输入四个字符xyz#,其输出是( )
#include "stdio.h"
main()
{ void recursion();
recursion();
}
void recursion()
{char c;
c=getchar();
putchar(c);
if(c!
=’#’)
recursion();
putchar(c);
}
A、xyz# B、xyz#xyz# C、xyz##zyx D、xyzxyz
[1]
[page_break]
第二卷(共30分)
说明:
程序填空题,在空栏处填入适当的字符、语句,以构成一个正确的C语言程序。
每空栏3分,两大题共10个空栏,全对得30分。
试题一:
下面的程序是将一个十六进制数字字符串转换成与它等价的十进制整数值并输出。
十六进制数的字符是从0到9和a到f或A到F。
主函数负责收集字符,并判别它们是否是十六进制字符,函数htoi负责转换工作。
#include
#define maxline 100
#define eof -1
#define yes 1
#define no 0
int htoi();
main()
{ int c,i,isdigit;
char t[maxline];
i=0;
isdigit=no;
while((c=_______________)!
=eof&&i { if(c>=’0’&&c<=’9’||c>=’a’&&c<=’f’|| c>=’A’&&c<=’F’)
{ isdigit=yes;
t[i++]=___________;
}
else if(isdigit==yes)
{ isdigit=no;
t[i]=’\0’;
printf(“%d”,______________);
i=0;
}
}
}
int htoi(char *s)
{ int i,n;
n=0;
for(i=0;s[i]!
=’\0’;i++)
{ if(s[i]>=’0’&&s[i]<=’9’) n=n*16+s[i]-______________;
if(s[i]>=’a’&&s[i]<=’f’) n=n*16+s[i]-‘a’+10;
if(s[i]>=’A’&&s[i]<=’F’) n=n*16+s[i]-‘A’+10;
}
return___________;
}
试题二:
以下程序的功能是应用近似公式计算 e
计算每项分母的值,共取nmax项之和作为e 的近似值。
近似公式:
e =1+x+x /2!
+ x /3!
+……+ x /(nmax-1)!
float f2(int n)
{ if(n==1)
return 1;
else return____________________;
}
float f1(float x,int n)
{ int i;float j=______________;
for(i=1;___________;i++)
j=j*x;
return j;
}
#define nmax 20
main()
{ float x,exp=1.0;int n;
printf(“input x value:
”);
scanf(“%f”,&x);
printf(“%f\n”,x);
for(n=1;nexp=______________;
printf(“x=%f,exp(x)=%f\n”,x,_______________);
}
[1]
[page_break]
答案:
第一卷:
1~5 BCCAA 6~10 DADBB 11~15 ADBCA 16~20 ABBDD
21~25 CCABA 26~30 CBCDA 31~32 DC
第二卷:
试题一:
getchar()
c
htoi(t)
‘0’
n
试题二:
f2(n-1)*n
1
i<=n
exp+f1(x,n)/f2(n)
exp