2013年9月全国计算机等级《二级C语言程序设计》考前冲刺试卷二
-
请编写fun函数,其功能是:计算并输出3~m所有素数的平方根之和。
例如,若主函数从键盘给m输入50后,则输出为s= 68.665791。
请勿改动main函数与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
注意:m的值要大于2但不大于100。部分源程序给出如下。
试题程序:
#include
#include
double fun(int m)
{
}
void main
{
int m;
double s;
FILE*out:
printf("\n\nInput m:");
scanf("%d",&m);
s=fun(m);
printf("\n\ns=%f\n\n",s);
ut=fopen("outfile.dat","w");
for(m=0;m<10;m++)
fprintf(out,"%f\n",fun(m+80));
felose(out);
}
-
下列给定程序中,函数proc的功能是:首先把b所指字符串中的字符按逆序存放,然后将str1所指字符串中的字符和Str2所指字符串中的字符,按排列的顺序交叉合并到str所指数组中,过长的剩余字符接在str所指数组的尾部。例如,当str1所指字符串中的内容为ABCDEFG,str2 所指字符串中的内容为1234时,str所指数组中的内容应该为A483C2D1EFG;而当str1所指字符串中的内容为1234,str2所指字符串中的内容为ABCEDFG时,str所指数组中的内容应该为1G2F31:4DCBA。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
#include
#include
void proc(char*strl,char*str2,char*str) {
int i,j;char ch;
i=0;j=strleu(str2)-1;
//****found****
while(i>j)
{
ch=str2[i];str2[i]=str2[j];str2[j]=ch;
i++;j--;
}
while(*str1||*str2)
{
if(*str1){*str=*str1;str++;str1++;)
if(*str2){*str=*str2;str++;str2++;)
}
//****found****
*str=0:
}
void main
{
char s1[100],s2[100],t[200];
system("CLS");
printf("\nEnter s1 string:");
scanf("%s",sl);
printf("\nEnter s2 string:");
scanf("%s",s2);
proc(s1,s2,t);
printf("\nThe result is:%s\n",t);
}
-
请补充main函数,该函数的功能是:计算3名学生各科的平均成绩。
例如,当score[N][M]={{85,62,89.5,60,69),{90,96,84.5,100,85},{92,97,86,73,85))时,五门学科的平均分为:89 85 86.7 77.7 79.7。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填人所编写的若干表达式或语句。
试题程序:
#include
#include
#define N 3
#define M 5
int main
{
int i,j;
static float score[N][M]一{{85,62,89.5,60,69),
{90,96,84.5,100,85},{92,97,86,73,85}};
static float arr[-N];
system("CLS");
for(i=0;i
arr[i]=0.0:
for(i=0;i<【1】;i++)
{
for(j=0;j<【2】;j++)
arr[j]+=score[i][j]:
}
for(i=0;i
printf("\nsubject%d\taverage=%5.1f",i+1,
【3】);
return 0;
}
-
对长度为n的线性表进行顺序查找,在最坏情况下需要比较的次数为( )。
- A.125
- B.n/2
- C.n
- D.n+1
-
下述程序的输出结果是( )。
#include
main
{ char ch[2][5]-{”1234”,”5678”},*p[2];
int i,j,s=0;
for(i=0;i<2;i++)
p[i]=ch[i];
for(j=0;j<2;j++)
{ s=p[i][j]一'0';
printf("%d",s);}
}
- A.6357
- B.6135
- C.1357
- D.691357
-
下面描述中,不属于软件危机表现的是( )。
- A.软件过程不规范
- B.软件开发生产率低
- C.软件质量难以控制
- D.软件成本不断提高
-
以下程序的输出结果是( )。
main
{ char*s="12134211";
int v[4]=(0,0,0,0),k,i;
for(k=0;s[k];k++)
{ switch(s[k])
{ case'1':i=0;
case'2':i=1;
case'3':i=2;
case'4':i=3;}
}
v[i]++:
}
for(k=0;k<4;k++)printf("%d",v[k]);
- A.4 2 1 1
- B.0 0 0 8
- C.4 6 7 8
- D.8 8 8 8
-
以下程序的输出结果是( )。
main
{ int a=7,b=8,*P,*q,*r;
p=&a;q=&b;
r=P;P=q;q=r;
printf("%d,%d,%d,%a\n",*P,*q,a,b);
}
- A.8,7,8,7
- B.7,8,7,8
- C.8,7,7,8
- D.7,8,8,7
-
有以下程序:
main
{ int a=1,b=3,C=5,*P;
int*p1=&a,*p2=&b,*p3=&c;
*p=*p1*(*p2);
}
执行后的输出结果是( )。
- A.1
- B.2
- C.3
- D.4
-
下列程序的输出结果是( )。
#include
main
{ int a=3,b=2,c=1;
if(aif(b<0)c=0;
else c++:
printf("%d\n",c);
}
- A.2
- B.0
- C.1
- D.不确定的值
-
已知i、j、k为int型变量,若要从键盘输入2、3、4< CR>,使i、j、k的值分别为2、3、4,下列正确的输入语句是( )。
- A.scanf("%3d,‰3d,%3d",&i,&j,%k);
- B.scanf("%d,%d,%d",&i,8Lj,&k);
- C.scanf("%d%d%d",&i,&j,&k);
- D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);
-
有以下程序:
main
{ int i,j,x=0;
for(i=0;i<2;i++)
{ x++;
for(j=0;j<=3;j++)
{if(j=0;j<=3;j++)
x++;
}
x++;
}
printf("x=%d\n",x);
}
程序执行后的输出结果是( )。
- A. x=4
- B.x=8
- C.x=6
- D.x=12
-
有如下程序:
main( )
{ int x=23;
do
{printf(”%d”,x--);}
while(!x);
}
该程序的执行结果是( )。
- A.321
- B.23
- 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[o][1]+a[1][1]+a[1][2]);
}
- A.8
- B.7
- C.12
- D.9
-
在16位编译系统上,若有定义“int a[]={10,20,30},*p=&a;”,当执行“P++;”后,下列说法错误的是( )。
- A.P向高地址移了一个字节
- B.P向高地址移了一个存储单元
- C.P向高地址移了两个字节
- D.P与a+1等价
-
下述程序用来输出两个字符串前7个字符中对应相等的字符及其位置号,则程序空白上应该填写的是( )。
#include
main
{ char s1[]="chinese",s2[]="japanese";
int i;
for(i=0;s1[i]='\0'&&s2[i]!='\0';i++)
if(s1[i]==s2[i]&&i<7)
_____________;
}
- A.putchar(s2[i]);putchar(i)
- B.puts(s1[i],i)
- C.printf("%c%d\n",s2[i],i)
- D.printf("%C",s1[]);printf("%d\n",i)
-
以下函数返回a所指数组中最小的值所在的下标值:
fun(int*a,int n)
{ int i,j=0,P;
p=j;
for(i=j;i
if(a[i]}
在下划线处应填入的是( )。
- A.i=P
- B.a[p]=a[i]
- C.p=j
- D.p=i
-
若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是( )。
- A.函数的实参和其对应的形参共占同一存储单元
- B.形参只是形式上的存在,不占用具体存储单元
- C.同名的实参和形参占同一存储单元
- D.函数的形参和实参分别占用不同的存储单元
-
设有定义语句:
int x[-6]={2,4,6,8,5,7),*p=X,i;
要求依次输出X数组6个元素中的值,不能完成此操作的语句是( )。
- A.for(i=0;i<6;i++)printf("%2d",*(p++));
- B.for(i=0;i<6;i++)printf("%2d",*(pq-i));
- C.for(i=0;i<6;i++)printf("%2d",*p++);
- D.for(i=0;i<6;i++)printf("%2d",*(p)++);
-
以下叙述中不正确的是( )。
- A.在不同的函数中可以使用相同名字的变量
- B.函数中的形式参数是局部变量
- C.在一个函数内定义的变量只在本函数范围内有效
- D.在一个函数内的复合语句中定义的变量在本函数范围内有效
-
表示关系X<=Y<=Z的C语言表达式为( )。
- A.(X<=Y)&&(Y<=Z)
- B.(X<=Y)AND(Y<=Z)
- C.(X<=Y<=Z)
- D.(X<一Y)&(Y<一Z)
-
有下列函数定义:
int fun(double a,double b)
{return a*b;}
若下列选项中所用变量都已经正确定义并赋值,错误的函数调用是( )。
- A.if(fun(x,y)){……}
- B.z=fun(fun(x,y),fun(x,y));
- C.z=fun(fun(X,y)x,y);
- D.fun(x,y);
-
表达式'5'-'1'的值是( )。
- A.整数4
- B.字符4
- C.表达式不合法
- D.字符6
-
结构化分析方法是面向( )的自顶向下、逐步求精进行需求分析的方法
- A.对象
- B.数据结构
- C.数据流
- D.目标
-
若程序中有宏定义行:#define N 100则以下叙述中正确的是( )。
- A.宏定义行中定义了标识符N的值为整数100
- B.在编译程序对C源程序进行预处理时用100替换标识符N
- C.对C源程序进行编译时用100替换标识符N
- D.在运行时用100替换标识符N
-
下列程序中c的二进制值是( )。
char a=2,b=4,c;
c=a^b>>2;
- A.00000011
- B.00010100
- C.00011100
- D.00011000
-
有以下程序:
void funl(char*p)
{ char*q;
q=P;
while(*q!='\O')
{(*q)++;q++;}
}
main
{ char a[]={"Program"),*P;
p=&a[3];funl(p);
printf("%s\n",a);
}
程序执行后的输出结果是( )。
- A.Prohsbn
- B.Prphsbn
- C.Progsbn
- D.Program
-
对下列二叉树
进行中序遍历的结果是( )。
- A.ACBDFEG
- B.ACBDFGE
- C.ABDCGEF
- D.FcADBEG
-
下面的函数调用语句中func函数的实参个数是( )。
func((f2v1,v2),(v3,v4,v5),(v6,max(v7,v8)))
- A.3
- B.4
- C.5
- D.8
-
下列可作为C语言赋值的语句的是( )。
- A.x一3,y=5
- B.a=b=6
- C.i--;
- D.a,c
-
设x=015,则x=x^017的值是( )。
- A.00001111
- B.11111101
- C.00000010
- D.1 1000000
-
栈和队列的共同特点是( )。
- A.都是先进先出
- B.都是先进后出
- C.只允许在端点处插入和删除元素
- D.没有共同点
-
概要设计中要完成的事情是( )。
- A.系统结构和数据结构的设计
- B.系统结构和过程的设计
- C.过程和接口的设计
- D.数据结构和过程的设计
-
下列程序的输出结果是( )。
#include
main
{ int a=0,i;
for(i=1;i<5;i++)
{ switch(i)
{ case 0:
case 3:a+=1;
case 1:
case 2:a+=2;
default:a+=3;
}
}
printf("%d",a);
}
- A.19
- B.18
- C.6
- D.8
-
下列程序的输出结果是( )。
#include
int b=2:
int func(int*a)
{ b+=*a;return b;}
main
{ int a=1,t=2;
t+=func(&a):
printf("%d\n",t);
}
- A.4
- B.5
- C.6
- D.8
-
有以下程序:
void fun2(char a,char b) {printf(”%c%c”,a,b); }
char a='A',b='B';
void funl( ){a='C';b='D';}
main( )
{ funl( );
printf("%c%c",a,b);
fun2('E','F');
}
程序的运行结果是( )。
- A.CDEF
- B.ABEF
- C.ABCD
- D.CDAB
-
若变量a、b、x、i都已正确定义并赋值,则以下符合C语言语法的表达式是( )。
- A.a+=a-=(b=4)*(a=3)
- B.x%(-3);
- C.a=a*3=2
- D.y=float(i)
-
简单的交换排序方法是( )。
- A.快速排序
- B.选择排序
- C.堆排序
- D.冒泡排序
-
若有“double a;”,则正确的输入语句是( )。
- A.scanf("%1f",a);
- B.scanf("%f",&a);
- C.scanf("%1f",&a);
- D.scanf("1e",&a);
-
下列能正确进行字符串赋值的是( )。
- A.char s[5]={”ABCI)E”);
- B.char s[5]={'A','B','C','D','E'};
- C.char*s;s="ABCDE";
- D.char*s;printf("%S",s);
-
与“y=(x>0?1:x<0?-1:0)”;的功能相同的if 语句是( )。
- A.if(x>0)y=1; else if(x<0)y=1; else="" y="0;
- B." x="">0)y=1; else if(x<0)y=-l; else="" y="0;"
- C.y="-l" x="">O)y=1; else if(x=-0)y=0; else y=-l;
- D.y=0; if(x>=0) if(x>=0)y=1; else y=-l;
-
若变量a、i已正确定义,且i已正确赋值,合法的语句是( )。
- A.a==l;
- B.++i;
- C.a=a++=5 ;
- D.a=int(i);
-
有如下程序:
main( )
{ int n[5]={0,0,0},i,k=2;
for(i=0;i&printf("%d\n",n[k]););
}
该程序的输出结果是( )。
- A.不确定的值
- B.2
- C.1
- D.0