计算机类二级C
2014年全国计算机等级《二级C语言程序设计》考前押密试题(4)
43 题含答案C
1单选题1 / 43
执行下列程序后,变量a,b,e的值分别是( )。
int x一5,Y=4;
int a,b,e;
a=(——x==y++)?x;++y;
b=++x;
c=y;
查看答案
B. a=4,b=5,c=5
2单选题2 / 43
C语言可执行程序的开始执行点是( )。
查看答案
C. 程序中的main()函数
3单选题3 / 43
设有定义的语句:“char c1=92,c2=92;”,则以下表达式中的值为零的是( )。
查看答案
A. c1^c2
4单选题4 / 43
有以下程序:
main()
{ int x=0,y=5,z=3;
while(z-->O&&++x<5)y=y-1:
printf(”%d,%d,%d\n”,x,y.z);
}
程序执行后的输出结果是( )。
查看答案
B. 3,2,-1
5单选题5 / 43
下述程序执行的输出结果是( )。
#include
main()
{char a[2][4];
strcpy(a,"are");strcpy(a[1],"you");
a[0][3]='&'
print[(”%s\n”,a);
}
查看答案
A. arec&you
6单选题6 / 43
两个或两个以上模块之间联系的紧密程度称为( )。
查看答案
A. 耦合性
7单选题7 / 43
若有以下程序:
#include
main()
{int k=2,m=4,n=6,。pk=&k,*pm=&m,*P;
*(P=&n)=*pk*(*pm);printf("%d\n",n);
)
程序的输出结果是( )。
查看答案
C. 8
8单选题8 / 43
交换两个变量的值,不允许用临时变量,应该使用下列( )位运算符。
查看答案
B. ^
9单选题9 / 43
下列字符数组初始化语句中,不正确的是( )。
查看答案
A. char c[]='goodmorning';
10单选题10 / 43
有以下程序:
#include(strint9.h>
main()
{char p[20]={'a','b','c','d'},q[]=”abe”,r[]=”
abcde”;
strcpy(p+strlen(q),r);strcat(p,q);
printf(”%d%d\n”,sizeof(p),strlen(p));
)
程序运行后的输出结果是( )。
查看答案
C. Z0 11
11单选题11 / 43
设a、b、e、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值是( )。
查看答案
C. 2
12单选题12 / 43
以下选项中不合法的用户标识符是( )。
查看答案
A. abC.C
13单选题13 / 43
为了提高软件的独立性,模块之间最好是( )。
查看答案
D. 数据耦合
14单选题14 / 43
以下程序的输出结果是( )。
main()
{ char*s=”l2134211”;
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:
ease'3':i=2;
case'4':i=3;}
)
vEij++;
)
for(k=0;k<4;k++)printf(”%d¨,v[k]);
查看答案
B. 0 0 0 8
15单选题15 / 43
若有定义“int a=-5,b=7;”,则表达式a%=(b%2)运算后,a的值为( )。
查看答案
A. 0
16单选题16 / 43
下列合法的声明语句是( )。
查看答案
A. int _abc=50;
17单选题17 / 43
有以下程序:
#include
main()
{ int a[]={2,4.6.8},*p=a,i;
for(i=0;i<4;i+.+)a[i]=*p++;
printf(”%d\n”,a[2]);
程序的输出结果是( )。
查看答案
A. 6
18单选题18 / 43
设a=1,b=2,c=3,d=4,则表达式:“a<B?A:B<B?A:C
查看答案
D. 1
19单选题19 / 43
下列程序的输出结果是( )。
main()
(int i=1,j=2,k=3;
if(i++==1&&(++j==3==||k++==
3))
printf(”%d%d%d\n”,i,j,k);
)
查看答案
D. 2 3 3
20单选题20 / 43
以下程序的输出结果是( )。
main()
{char str[][10]={¨china”,”beijing”),*p=str;
printf(”%s\n”,p十10):
查看答案
B. Beijing
21单选题21 / 43
以下关于字符串的叙述中正确的是( )。
查看答案
D. 空串一定比空格打头的字符串小
22单选题22 / 43
下列程序的输出结果是( )。
#include
main()
{ int a=0,i;
for(i=1;i<5:i++)
{ switch(i)
{ case 0:
case 3:a+=1;
case】:
case 2:a=2;
default:a+=3;
}
}
printf(”%d”,a);
)
查看答案
A. 19
23单选题23 / 43
有以下程序:
#include
main()
{ int x:=10,y=3;
printf(”%d\n”,y=x/y);
)
执行后的输出结果是( )。
查看答案
C. 3
24单选题24 / 43
函数[seek(pf,OI,SEEK_END)中的SEEK_END代表的起始点是( )。
查看答案
B. 文件末尾
25单选题25 / 43
数字字符0的ASCII值为48,运行以下程序的输出结果是( )。
main()
{char a='1',b='2':
printf(”%c,”.b++);printf(”%d\n”,b-a);)
查看答案
C. 2,2
26单选题26 / 43
若有以下程序段:
int cl=1,c2=2,c3;
c3=c1/c9;
print[(”%d\n”,c3);
执行后的输出结果是( )。
查看答案
A. 0
27单选题27 / 43
下列叙述中正确的是( )。
查看答案
D. 以上三种说法都不对
28单选题28 / 43
下列程序中函数sort()的功能是对数组a中的数据进行由大到小的排序。
#include
void sort(int a[],int n)
{ int i,j,t;
for(i 0;i<N—L:I++)
for(j=i+1+1;j<N;J++)
if(aEi]<AEJ])
{t=a[i];a[i]=a[j];a[j]=t;
)
main()
{int a[10]={1,2,3,4,5,6,7,8,9,10},i:
sort(&a[1],7);
for(i=0;i<10;i++)printf(”Vood,”,a[i]);
}
程序运行后的输出结果是( )。
查看答案
C. i,8,7,6,5,4,3,2,9,10,
29单选题29 / 43
若有定义:int X,*pb;则正确的赋值表达式是( )。
查看答案
A. pb=&X
30单选题30 / 43
下列叙述中正确的是( )。
查看答案
C. 算法的有穷性是指算法必须能在执行有限个步骤之后终止
31单选题31 / 43
已知有如下结构体:
struct sk
{ int a;
float b;
}data,*p;
若有P一8Ldata,则对data的成员a引用正确的是( )。
查看答案
B. (*p).a;
32单选题32 / 43
若有定义和语句:
int*。pp,*P,a=20,b=10;
pp=8Lp;P=&a;P=&.b;printf(”%d,%d\n”,*
P,**PP);
则输出结果是( )。
查看答案
D. 10,10
33单选题33 / 43
合法的main()函数命令参数形式是( )。
查看答案
C. main(int argc,char*argv)
34单选题34 / 43
当执行以下程序段时,( )。
x=-1:
do{x=x*x;)while(!x);
查看答案
A. 循环体将执行一次
35单选题35 / 43
设x=011050,则x=x&01252的值是( )。
查看答案
A. 000000 1000 101000
36单选题36 / 43
下列选项不符合良好程序设计风格的是( )。
查看答案
D. 模块设计原则是高耦合、高内聚
37单选题37 / 43
若有说明“char sl E30]=”abc”,s2[]=”defghi“;”,
则在使用函数stcat(sl,s2)后,结果是( )。
查看答案
D. sl的内容更新为abcdefghi\O
38单选题38 / 43
有以下程序:
#include
main()
{ int x=4,y;
{ y=x;
if(!y)printf(”x”);
else
printf(”y”);
x--:
)while(x);
)
程序的输出结果是( )。
查看答案
B. YYYY
39单选题39 / 43
有以下程序段:
int i,j,m=0;
for(i=1;i<=15;i+=4)
for(j=3;j<=19;j+=4)m++;
printf(”%d\n”,m);
程序段的输出结果是( )。
查看答案
C. 20
40单选题40 / 43
若有定义“double a;”,则正确的输入语句是( )。
查看答案
D. scan{(”%le”,&a);
41主观题41 / 43
请补充函数proc(),其功能是:计算并输出给定10个数的方差。
例如,拾定的10个数为12.0,9.0.26.0,5.0,6.0,31.0,9.0,3.0,8.0,18、0,输出为s=8.8771500。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若于表达式或语句。
试题程序:
#include
#include
double proc(double xElO])
{
int i;
double avg=0.0;
double 8urn=0.0;
double abs=0.0:
double sd;
for(i=0:i<10;i++)
【1】 ;
avg=sum/10;
for(i=0;i<10;i十十)
【2】 ;
sd= 【3】 ;
return sd;
void main()
{
double s,str[10]={12.0,9.0,26.0,5.0,6.0,31.0.9.0,3.0,8.0,18.0);
int i;
printf(”\nThe original data is:\n”);
for(i一0;i<10;i++)
t)rintf(”%6.lf,slr[i]):
printf(”\n\n”);
s=proc(str):
printf(”s=%f\n\n”,s);
)
查看答案
【1】sum+=x[i] 【2】 ABs+=(x[i]-AvG)*(X[i]-AvG) 【3】sqrt(ABs/10)
42主观题42 / 43
给定程序中,函数proc()的功能是:使数组中的元素的值缩小5倍。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
#include
float m[10];
f f****found****
int proc(void)
{
int J;
printf(”In subfunc after calling\n”);
for(j=0;j<10;j++)
{
|f****found****
printf(”%f”,m[j]%5);
}
}
void main()
{
int i;
printf(”In main before calling\n”);
for(i=0;i<10;i++)
{
m[i]=i+20:
printf(”%f”,m[i]);
}
proc();
printf(”\nIn main after calling\n”):
for(i=0;i<10;i++)
printf(”%f”,m[i]/S):
查看答案
(1)错误:intproC(voiD)正确:voiDproC(voiD)(2)错误:printF(”%F”,m[j]%5);正确:printF(”%F”,m[j]/5);
43主观题43 / 43
请编写函数proc(),该函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并组成一个新的字符串。
例如,若字符串数组中的M个字符串为:
ABCD
BCDEFG
CDEFGHI
则合并后的字符串内容应该是ABCDBCDEFGCDEFGHI。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
#include
#include
#define M 3
#define N 20
void proc(char arr[M][N].char*b)
{
}
void main()
{
char str[M][N]={”ABCD”,”BCDEFG”,”
CDEFGHl”),i;
char arr[100]={”#############
#####”);
printf(”The string:\n”);
for(i=0;i<2M;i++)
puts(str[i]);
printf(”\n”);
proc(str,arr);
printf(”The A string:\n”);
printf(”%S”,arr);
printf(”\nln”);
}
查看答案
voiDproC(ChArArr[M][N],ChAr*B){
inti,j,k一0;
for(i=0;i<M;i++)//i表示其行下标
for(j=0;arr[i][j]!=’\0';J++)//由于每行的个数不等,因此用[i][j]!一‘\o'来作为循环结束的条件
b[k++]=arrEi] [j];//把二维数组中的元素放到b的一维数组中,
b[k]=’\o';//最后给b赋'\0’作为字符串结束的标志)