计算机类二级C

2013年9月全国计算机等级《二级C语言程序设计》上机模考试卷(2)

43 题含答案C
共 43 题返回本类
1单选题1 / 43
有下列程序:
void sort(int a[],int n)
{ int i,j,t;
for(i=0;i<N-L;I++)
for(j=i+1;j<N;J++)
if(a[i]
}
main()
{ int aa[10]:{1,2,3,4,5,6,7,8,9,10),i;
sort(aa+2,5);
for(i=0;i<10;i++)printf("%d,",aa[i]);
printf("\n");
}
程序运行后的输出结果是( )。
查看答案
C. 1,2,7,6,5,4,3,8,9,10,
2单选题2 / 43
执行下列程序后,变量a,b,C的值分别是( )。
int x=5,y=4;
int a,b,c;
a=(--x==y++)?X:++y;
b=++x:
c=y:
查看答案
B. a=4,b=5,c=5
3单选题3 / 43
设有如下定义:
int arr[]={6,7,8,9,10);
int*ptr:
ptr=arr;
*(ptr2)=2;
printf("%d,%d\n",*ptr,*(ptr2)):
则下列程序段的输出结果为( )。
查看答案
D. 6,2
5单选题5 / 43
数字字符0的ASCII值为48,运行以下程序的输出结果是( )。
main()
( char a='1',b='2';
printf("%C,",b++);printf("%d\n",b—a);}
查看答案
C. 2,2
6单选题6 / 43
下列程序的运行结果是( )。
#include
main()
{ static char a[]="Languagef",b[]="programe":
char*p1,*p2;int k;
p1=a;p2=b;
for(k=0;k<=8;k++)
if(*(p1+k)==*(p2+k))
printf("%c",*(p1+k)):
}
查看答案
A. gae
7单选题7 / 43
以下能正确定义二维数组的是( )。
查看答案
B. int a[][3]={2*3);
8单选题8 / 43
若有以下程序段,w和k都是整型变量:
┇
w=k:
LB:if(w==0)go to LE;
W--:
printf("*")
goto LB;
LE;
┇
则不能与上面程序段等价的循环语句是( )。
查看答案
C. w=k;
while(w--!=0)printf("*");
9单选题9 / 43
设有定义:char p[]={'1','2','3'),*q=p;,以下不能计算出一个char型数据所占字节数的表达式是( )。
查看答案
A. sizeof(p)
10单选题10 / 43
下列变量声明合法的是( )。
查看答案
A. short a=1.4e-1;
11单选题11 / 43
有以下程序
#include
int a=1;
intf(int c)
{static int a=2:
c=c+1:
return(a++)+C;
}
main()
( int i,k=0;
for(i=0;i<2;i++){int a=3;k+=f(a);}
k+=a:
printf("%d\n",k);
}
程序运行结果是( )。
查看答案
A. 14
12单选题12 / 43
设变量a、b、c、d和y都已正确定义并赋值。若有以下if语句:
if(a<B)
if(c==d)y=0;
else y=1;
该语句所表示的含义是( )。
查看答案
C. y=0,a
y=1,a<B且C≠D
13单选题13 / 43
假设a和b为int型变量,则执行以下语句后b的值为( )。
a=1;b=10;
do
{ b-=a;a++;}
while(b--<0);
查看答案
D. 8
14单选题14 / 43
以下程序的输出结果是( )。
main()
{ int i,k,a[10],p[3];
k=5;
for(i=0:i<10;i++)a[i]=i;
for(i=0;i<3;i++)p[i]=a[i*(i+1)];
for(i=0;i<3;i++)k+=p[i]*2;
printf("%d\n",k、;
}
查看答案
B. 21
15单选题15 / 43
有如下程序段:
int a=14,b=15,x;
char c='A';
x=(a&&b)&&(c<'B'):
执行该程序后,x的值为( )。
查看答案
D. 1
16单选题16 / 43
下述程序的输出结果是( )。
#include
main()
{ int a[2][3]={{1,2,3),{4,5,6}},(*p)[3],i;
p=a ;
for(i=0;i<3;i++)
{ if(i<2)
p[1][i]=p[1][i]一1;
else
p[1][i]=1;)
printf("%d\n",a[0][1]+a[1][1]+a[1][2]);}
查看答案
B. 7
17单选题17 / 43
若有定义“double a;”,则正确的输入语句是( )。
查看答案
D. scanf("%1e",&a);
18单选题18 / 43
算法的空间复杂度是指( )。
查看答案
D. 算法执行过程中所需要的存储空间
19单选题19 / 43
数据库管理系统DBMS中用来定义模式、内模式和外模式的语言为( )。
查看答案
C. DDL
20单选题20 / 43
有以下程序:
main()
{ int x=0,y=5,z=3;
while(z-->0&&++x<5)y=y-l;
printf("%d,%d,%d\n",x,y,z);
}
程序执行后的输出结果是( )。
查看答案
B. 3。2. 1
21单选题21 / 43
下列程序的运行结果为( )。
#define MAX(x,y)(x)>(y)?(x):(y)
main()
{ int a=2,b=3,C=1,d=3,t:
printf("%d\n",(MAX(a+h,c+d))*100):
}
查看答案
A. 500
22单选题22 / 43
设有如下定义:
int(*ptr)();
则以下叙述中正确的是( )。
查看答案
C. ptr是指向函数的指针,该函数返回一个int型数据
24单选题24 / 43
下面for语句的循环次数为( )。
for(x=1,y=0;(y!=19)&&(x<6);x++);
查看答案
D. 最多执行5次
25单选题25 / 43
有以下程序:
#include
void WriteStr(char*fn.char*str)
{ FILE*fp;
fp=fopen(fn,"w");fputs(str,fp);fclose(fp);}
main()
{ WriteStr("tl.dat","start");
WriteStr("t1.dat","end");)
程序运行后,文件t1.dat中的内容是( )。
查看答案
B. end
26单选题26 / 43
在结构化分析方法中,数据字典的作用是( )。
查看答案
D. 描述系统中所用到的全部数据和文件的有关信息
27单选题27 / 43
在C语言中,函数返回值的类型最终取决于( )。
查看答案
A. 函数定义时在函数首部所说明的函数类型
28单选题28 / 43
若有运算符:>、一、<<、%、sizeof,则它们按优先级(由高至低)的正确排列顺序为( )。
查看答案
D. sizeof、%、<<、>、=
29单选题29 / 43
函数ftell(fp)的作用是( )。
查看答案
A. 得到fp所指向文件的当前读写位置
30单选题30 / 43
下列程序的输出结果是( )。
#include
main( )
{ int a=2,b=3,P;
p=f(a,b);
printf(”%d”,p);
}
int f(a,b)
{ int c;
if(a>b)c=1;
else if(a==b)c=0;
else c=-l;
return(c);
}
查看答案
A. -l
31单选题31 / 43
若变量已正确定义,有以下程序段
i—o;
do printf("%d,",i);while(i++);
printf("%d",i)
其输出结果是( )。
查看答案
B. 0,1
32单选题32 / 43
有以下程序:
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
33单选题33 / 43
若有定义语句:int a[2][3],*p[3];,则以下语句中正确的是( )。
查看答案
B. p[0]=a;
34单选题34 / 43
下列叙述中正确的是( )。
查看答案
C. 在面向对象的程序设中,各个对象之间相对独立,相互依赖性小
35单选题35 / 43
以下有4组用户标识符,其中合法的一组是( )。
查看答案
C. f2_G3
IF
abc
36单选题36 / 43
有以下程序:
#include
int abe(int u,int v);
main()
{ int a=24,b一16,c;
c=abc(a,b);
printf("%d\n",c);
}
int abc(int u,int v)
{ int w;
while(v)
{w=u%v;u=v;v=w;)
return;
}
输出结果是( )。
查看答案
C. 8
37单选题37 / 43
下列4个关于C语言的结论中错误的是( )。
查看答案
D. do-while语句与while语句的区别仅是关键字“while”出现的位置不同
38单选题38 / 43
有以下程序:
main()
{ int x=102,y=012;
printf("%2d,%2d\n",x,y);
}
执行后输出结果是( )。
查看答案
C. 102,10
39单选题39 / 43
若有以下定义和语句:“double r=99,*p=&r;*P =r;”,则以下正确的叙述是( )。
查看答案
B. 在“double r=99,*p=&r;”中,把r的地址赋值给了P所指的存储单元
40单选题40 / 43
有以下程序:
#include
void fun(char*t,char*s)
{ while(*t!=O)t++;
while((*t++=*s++)!=0);
}
main()
{ char ss[10]="acc",aa[10]="bbxxyy";
fun(ss,aa);printf("%S,%s",ss,aa);
}
程序运行结果是( )。
查看答案
D. accbbxxyy,bbxxyy
41主观题41 / 43
请补充main()函数,该函数的功能是:把一个整数插入一个已经按从小到大排序的数组中。插入后,数组仍然有序。
例如,在数组bb[M]={10 20 30 40 50 60 70 80 85 95} 中插入75,结果为
bb[M]={10 20 30 40 50 60 70 75 80 85 95}
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在main()函数的横线上填入所编写的若干表达式或语句。
试题程序:
#include
#include
#define M 10
void main()
{
int i,j;
int n;
int bb[M+1]={10,20,30,40,50,60,70,80,85,95};
system("CLS");
printf("\nlnput n n");
scanf("%d",&n);
printf("\nn=%d",n);
printf("\n***original list***\n");
for(i=0;i<M;I++)
printf("%4d",bb[i]);
for(i=0;i<M;I++)
{
if(n<=bb[i])
{
for(j==M;【1】 ;j--)
【2】 ;
bb[j]=n;
【3】 ;
}
}
if(i==M)
bb[i]=n:
printf("\n****new list****\n");
for(i=0;i<M+1;I++)
printf("%4d",bb[i]);
}
查看答案
 【1】j>i【2】bb[j]=bb[j-1]【3】break
42主观题42 / 43
下列给定程序中,函数proc()的功能是找出100~m(m 不大于1000)之间百位数字加十位数字等于个位数字的所有整数,把这些整数放在s所指的数组中,个数作为函数值返回。
请修改程序中的错误,使它能得到正确结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#define M 1000
int proc(int*S.int n)
{
int i,j,k,a,b,c;
j=0;
for(i=100;i<N;I++)
{
//****found****
k=n:
a=k%10;
k/=10;
b=k%10;
c=k/10;
if(a==b+c)
//****found****
s[j]=i:
}
return j;
}
void main()
{
int a[M],m,num=0,i;
do
{
printf("\nEnter m(<=1000):");
scanf("%d",&m);
}
while(m>1000);
num=proc(a,m);
printf("\n\nThe result:\n");
for(i=0;i<NUM;I++)
printf("%5d",a[i]);
printf("\n\n");
}
查看答案
1.错误:k=n;
正确:k=i;
2.错误:s[j]=i;
正确:s[j++]=i;
43主观题43 / 43
请编写函数proc(),其功能是:计算并输出下列多项式值。
S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-1/2n)
例如,若主函数从键盘给n输入20后,则输出为S= 0.680803。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
#include t:stdio.h>
double proc(int n)
{
}
void main()
{
int n;
double slim;
printf("\nInput n:");
scanf("%d",&n);
sum=proc(n)。
printf("\ns=%f\n",sum);
}
查看答案
1.:
double proc(int n)
{
int i;
double s=0.0; //s为其和的变量
for(i=1;i<=n;i+十)
S=s+(1.0/(2*i-1)-1.O/(2*i)); //计算s
=(1-1/z)+(1/3-1/4)+…+(1/(2n-1)-1/
2n)
return s; //最后把所得到的和返回到主函数中
}
← 上一卷下一卷 →