计算机类二级C
2013年9月全国计算机等级《二级C语言程序设计》上机临考冲刺试卷(2)
43 题含答案C
1单选题1 / 43
有如下程序:
main( )
{ int n[5]={0,0,0},i,k=2;
for(i=0;i&printf("%d\n",n[k]););
}
该程序的输出结果是( )。
查看答案
D. 0
2单选题2 / 43
若变量a、i已正确定义,且i已正确赋值,合法的语句是( )。
查看答案
B. ++i
3单选题3 / 43
下列能正确进行字符串赋值的是( )。
查看答案
C. char*s;s="ABCDE";
4单选题4 / 43
与“y=(x>0?1:x<0?-1:0)”;的功能相同的if 语句是( )。
查看答案
B. if(x)
if(x>0)y=1;
else if(x<0)y=-l;
else y=0;
5单选题5 / 43
若有“double a;”,则正确的输入语句是( )。
查看答案
B. scanf("%f",&a);
6单选题6 / 43
若变量a、b、x、i都已正确定义并赋值,则以下符合C语言语法的表达式是( )。
查看答案
A. a+=a-=(b=4)*(a=3)
7单选题7 / 43
简单的交换排序方法是( )。
查看答案
D. 冒泡排序
8单选题8 / 43
下列程序的输出结果是( )。
#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);
}
查看答案
B. 5
9单选题9 / 43
有以下程序:
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
10单选题10 / 43
下列程序的输出结果是( )。
#include
main()
{ int a=0,i;
for(i=1;i<5;i++)
{ switch(i)
{ case 0:
case 3:a+=1;
case 1:
case2 :a =2
default:a+=3;
}
}
printf("%d",a);
}
查看答案
A. 19
11单选题11 / 43
概要设计中要完成的事情是( )。
查看答案
A. 系统结构和数据结构的设计
12单选题12 / 43
栈和队列的共同特点是( )。
查看答案
C. 只允许在端点处插入和删除元素
13单选题13 / 43
下列可作为C语言赋值的语句的是( )。
查看答案
C. i--;
14单选题14 / 43
设x=015,则x=x^017的值是( )。
查看答案
C. 00000010
15单选题15 / 43
对下列二叉树进行中序遍历的结果是( )。

查看答案
A. ACBDFEG
16单选题16 / 43
下面的函数调用语句中func函数的实参个数是( )。
func((f2v1,v2),(v3,v4,v5),(v6,max(v7,v8)))
查看答案
A. 3
17单选题17 / 43
下列程序中c的二进制值是( )。
char a=2,b=4,c;
c=a^b>>2;
查看答案
A. 00000011
18单选题18 / 43
有以下程序:
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
19单选题19 / 43
若程序中有宏定义行:#define N 100则以下叙述中正确的是( )。
查看答案
B. 在编译程序对C源程序进行预处理时用100替换标识符N
20单选题20 / 43
表达式'5'-'1'的值是( )。
查看答案
A. 整数4
21单选题21 / 43
结构化分析方法是面向( )的自顶向下、逐步求精进行需求分析的方法
查看答案
C. 数据流
22单选题22 / 43
表示关系X<=Y<=Z的C语言表达式为( )。
查看答案
A. (X<=Y)&&(Y<=Z)
23单选题23 / 43
有下列函数定义:
int fun(double a,double b)
{return a*b;}
若下列选项中所用变量都已经正确定义并赋值,错误的函数调用是( )。
查看答案
C. z=fun(fun(X,y)x,y);
24单选题24 / 43
以下叙述中不正确的是( )。
查看答案
D. 在一个函数内的复合语句中定义的变量在本函数范围内有效
25单选题25 / 43
设有定义语句:
int x[-6]={2,4,6,8,5,7),*p=X,i;
要求依次输出X数组6个元素中的值,不能完成此操作的语句是( )。
查看答案
D. for(i=0;i<6;i++)printf("%2d",*(p)++);
26单选题26 / 43
若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是( )。
查看答案
D. 函数的形参和实参分别占用不同的存储单元
27单选题27 / 43
以下函数返回a所指数组中最小的值所在的下标值:
fun(int*a,int n)
{ int i,j=0,P;
p=j;
for(i=j;i<N;I++)&NBSP;
if(a[i]<A[J])____RETURN(P);
}
在下划线处应填入的是( )。
查看答案
D. p=i
28单选题28 / 43
下述程序用来输出两个字符串前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)
29单选题29 / 43
在16位编译系统上,若有定义“int a[]={10,20,30},*p=&a;”,当执行“P++;”后,下列说法错误的是( )。
查看答案
A. P向高地址移了一个字节
30单选题30 / 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[o][1]+a[1][1]+a[1][2]);
}
查看答案
B. 7
31单选题31 / 43
有如下程序:
main( )
{ int x=23;
do
{printf(”%d”,x--);}
while(!x);
}
该程序的执行结果是( )。
查看答案
B. 23
32单选题32 / 43
下列程序的输出结果是( )。
#include
main()
{ int a=3,b=2,c=1;
if(a<B)
if(b<0)c=0;
else c++:
printf("%d\n",c);
}
查看答案
C. 1
33单选题33 / 43
有以下程序:
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);
}
程序执行后的输出结果是( )。
查看答案
B. x=8
34单选题34 / 43
已知i、j、k为int型变量,若要从键盘输入2、3、4< CR>,使i、j、k的值分别为2、3、4,下列正确的输入语句是( )。
查看答案
B. scanf("%d,%d,%d",&i,8Lj,&k);
35单选题35 / 43
有以下程序:
main()
{ int a=1,b=3,C=5,*P;
int*p1=&a,*p2=&b,*p3=&c;
*p=*p1*(*p2);
}
执行后的输出结果是( )。
查看答案
C. 3
36单选题36 / 43
以下程序的输出结果是( )。
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);
}
查看答案
C. 8,7,7,8
37单选题37 / 43
下述程序的输出结果是( )。
#include
main()
{ char chE2][5]-{”1234”,”5678”},*p[2];
int i,j,s=0;
for(i=0;i<2;i++)
p[i]=ch[i];
for(i=0;i<2;i++)
{ s=p[i][j]一'0';
printf("%d",s);}
}
查看答案
C. 1357
38单选题38 / 43
下面描述中,不属于软件危机表现的是( )。
查看答案
A. 软件过程不规范
39单选题39 / 43
以下程序的输出结果是( )。
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]);
查看答案
B. 0 0 0 8
40单选题40 / 43
对长度为n的线性表进行顺序查找,在最坏情况下需要比较的次数为( )。
查看答案
C. n
41主观题41 / 43
请补充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<M;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<M;I++)
printf("\nsubject%d\taverage=%5.1f",i+1,
【3】);
return 0;
}
查看答案
【1】N 【2】M【3】A rr[i]/N
42主观题42 / 43
下列给定程序中,函数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);
}
查看答案
(1)错误:whilE(i>j)正确:whilE(i<j)(2)错误:*str=0;正确:*str='\0 ';
43主观题43 / 43
请编写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);
out=fopen("outfile.dat","w");
for(m=0;m<10;m++)
fprintf(out,"%f\n",fun(m+80));
felose(out);
}
查看答案
int n,k,i;
DouBlE sum=0.0;
For(n=3;n<=m;n++)//判断n是否为素数
{
k=sqrt(n);//求n平方根
For(i=2;i<=k:i++)
iF(n%i==0)BrEAk;//如果n不是素数,跳出
iF(i>=k+1)
sum+=sqrt(n);//求平方根的和
}
return sum;