2015年全国计算机等级《二级C语言程序设计》命题预测试卷二
-
下列给定程序中,函数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
{
//****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
printf("%5d",a[i]);
printf("\n\n");
}
-
请编写函数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 sum;
printf("\nInput n:");
scanf("%d",&n);
sum=proc(n)。
printf("\ns=%f\n",sum);
}
-
有以下程序:
#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);
}
程序运行结果是( )。
- A.accxyy,bbxxyy
- B.ace,bbxxyy
- C.accxxyy,bbxxyy
- D.accbbxxyy,bbxxyy
-
请补充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
printf("%4d",bb[i]);
for(i=0;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
printf("%4d",bb[i]);
}
-
若有以下定义和语句:“double r=99,*p=&r;*P =r;”,则以下正确的叙述是( )。
- A.两个*p含义相同,都说明给指针变量p赋值
- B.在“double r=99,*p=&r;”中,把r的地址赋值给了P所指的存储单元
- C.语句“*p=r;”把变量r的值赋给指针变量P
- D.语句“*p=r;”取变量r的值放回r中
-
有以下程序:
main
{ int x=102,y=012;
printf("%2d,%2d\n",x,y);
}
执行后输出结果是( )。
- A.10,01
- B.02,12
- C.102,10
- D.02,10
-
下列4个关于C语言的结论中错误的是( )。
- A.可以用do—while语句实现的循环一定可以用while 语句实现
- B.可以用for语句实现的循环一定可以用while语句实现
- C.可以用while语句实现的循环一定可以用for语句实现
- D.do-while语句与while语句的区别仅是关键字“while”出现的位置不同
-
有以下程序:
#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;
}
输出结果是( )。
- A.6
- B.7
- C.8
- D.9
-
以下有4组用户标识符,其中合法的一组是( )。
- A.FOr -sub Case
- B.4d DO Size
- C.f2_G3 IF abc
- D.WORD void define
-
有以下程序:
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
- B.aa
- C.Aa
- D.Bb
-
下列叙述中正确的是( )。
- A.在面向对象的程序设计中,各个对象之间具有密切的关系
- B.在面向对象的程序设计中,各个对象都是公用的
- C.在面向对象的程序设中,各个对象之间相对独立,相互依赖性小
- D.上述3种说法都不对
-
若有定义语句:int a[2][3],*p[3];,则以下语句中正确的是( )。
- A.p=a;
- B.p[0]=a;
- C.p[o]=&a[1][2];
- D.p[1]=&a;
-
下列程序的输出结果是( )。
#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
- B.0
- C.1
- D.2
-
若变量已正确定义,有以下程序段
i—o;
do printf("%d,",i);while(i++);
printf("%d",i)
其输出结果是( )。
- A.0,0
- B.0,1
- C.1,1
- D.程序进入无限循环
-
若有运算符<<、sizeof、^、&=,则它们按优先级由高至低的正确排列次序是( )
- A.sizeof、&=、<<、^
- B.sizeof、<<、^、&=
- C.^、<<、sizeof、&=
- D.<<、^、&=、sizeof
-
函数ftell(fp)的作用是( )。
- A.得到fp所指向文件的当前读写位置
- B.初始化流式文件的位置指针
- C.移动流式文件的位置指针
- D.以上答案均正确
-
在C语言中,函数返回值的类型最终取决于( )。
- A.函数定义时在函数首部所说明的函数类型
- B.return语句中表达式值的类型
- C.调用函数时主调函数所传递的实参类型
- D.函数定义时形参的类型
-
有以下程序:
#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中的内容是( )。
- A. start
- B.end
- C.startend
- D.endrt
-
在结构化分析方法中,数据字典的作用是( )。
- A.存放所有需要处理的原始数据
- B.存放所有处理的结果
- C.存放所有程序文件
- D.描述系统中所用到的全部数据和文件的有关信息
-
下列选择中,不能用做标识符的是( )。
- A.b1234
- B._1_2
- C.int_2_
- D.2_int_
-
下面for语句的循环次数为( )。
for(x=1,y=0;(y!=19)&&(x<6);x++);
- A.是无限循环
- B.循环次数小定
- C.最多执行6次
- D.最多执行5次
-
设有如下定义:
int(*ptr);
则以下叙述中正确的是( )。
- A.ptr是指向一维组数的指针变量
- B.ptr是指向int型数据的指针变量
- C.ptr是指向函数的指针,该函数返回一个int型数据
- D.ptr是一个函数名,该函数的返回值是指int型数据的指针
-
下列程序的运行结果为( )。
- A.500
- B.5
- C.4
- D.400
-
数据库管理系统DBMS中用来定义模式、内模式和外模式的语言为( )。
- A.C
- B.Basic
- C.DDL
- D.DML
-
有以下程序:
main
{ int x=0,y=5,z=3;
while(z-->0&&++x<5)y=y-l;
printf("%d,%d,%d\n",x,y,z);
}
程序执行后的输出结果是( )。
- A.3,2,0
- B.3,2,-1
- C.4,3,-1
- D.5,2.-5
-
算法的空间复杂度是指( )。
- A.算法程序的长度
- B.算法程序中的指令条数
- C.算法程序所占的存储空间
- D.算法执行过程中所需要的存储空间
-
下述程序的输出结果是( )。
#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]);}
- A.8
- B.7
- C.12
- D.9
-
若有定义“double a;”,则正确的输入语句是( )。
- A.
- A.seaM("%1f",&a);
- B.scanf("%f",&a);
- C.scanf("%1f",&a)
- D.scanf("%1e",&a);
-
有如下程序段:
int a=14,b=15,x;
char c='A';
x=(a&&b)&&(c<'B'):
执行该程序后,x的值为( )。
- A.true
- B.false
- C.0
- D.1
-
以下程序的输出结果是( )。
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、;
}
- A.20
- B.21
- C.22
- D.23
-
设变量a、b、c、d和y都已正确定义并赋值。若有以下if语句:
if(aif(c==d)y=0;
else y=1;
该语句所表示的含义是( )。
- A.A
- B.B
- C.C
- D.D
-
假设a和b为int型变量,则执行以下语句后b的值为( )。
- a=1;b=10;
- do { b-=a;a++;} while(b--<0);
- A.9
- B.-2
- C.-l
- D.8
-
有以下程序
#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
- B.15
- C.16
- D.17
-
设有定义:char p[]={'1','2','3'),*q=p;,以下不能计算出一个char型数据所占字节数的表达式是( )。
- A.sizeof(p)
- B.sizeof(char)
- C.sizeof(*q)
- D.sizeof(p[0])
-
下列变量声明合法的是( )。
- A.short a=1.4e-1;
- B.double b=1+3e2.8;
- C.10ng do=oxfdaL;
- D.float 2 aaa=1e-3;
-
若有以下程序段,w和k都是整型变量:
┇
w=k:
LB:if(w==0)go to LE;
W--:
printf("*")
goto LB;
LE;
┇
则不能与上面程序段等价的循环语句是( )。
- A.for(w=k;w!=0;w--)printf("*");
- B.for(w=k;w;--w)printf("*");
- C.w=k; while(w--!=0)printf("*");
- D.w=k;w++; do{w--;printf("*");}while(w!=0);
-
下列程序的运行结果是( )。
#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
- B.ang
- C.program
- D.有语法错
-
以下能正确定义二维数组的是( )。
- A.int a[][3];
- B.int a[][3]={2*3);
- C.int a[][3]={};
- D.int a[2][3]一{{1),{2},{3,4}};
-
设有如下定义:
int arr[]={6,7,8,9,10);
int*ptr:
ptr=arr;
*(ptr2)=2;
printf("%d,%d\n",*ptr,*(ptr2)):
则下列程序段的输出结果为( )。
- A.8,10
- B.6,8
- C.7,9
- D.6,2
-
数字字符0的ASCII值为48,运行以下程序的输出结果是( )。
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
-
以下所列的C语言常量中,错误的是( )。
- A.0xFF
- B.1.2e0.5
- C.2L
- D.‘72’
-
有下列程序:
void sort(int a[],int n)
{ int i,j,t;
for(i=0;i
for(j=i+1;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");
}
程序运行后的输出结果是( )。
- A.1,2,3,4,5,6,7,8,9,l0,
- B.1,2,7,6,3,4,5,8,9,10,
- C.1,2,7,6,5,4,3,8,9,10,
- D.1,2,9,8,7,6,5,4,3,10,
-
执行下列程序后,变量a,b,C的值分别是( )。
int x=5,y=4;
int a,b,c;
- a=(--x==y++)?X:++y;
- b=++x:
- c=y:
- A. a=5,b=5,c=5
- B.a=4,b=5,c=5
- C.a=5,b=6,c=5
- D.a=1,b=5,c=6