二级C语言程序设计7Word格式文档下载.docx
《二级C语言程序设计7Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《二级C语言程序设计7Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。
∙B.a=sizeof(double);
∙C.a=d‖c;
∙D.a+1=a;
7.若有定义:
inta=1,b=2,c=3;
,则执行表达式(a=b+c)‖(++b)后a,b,c的值依次为
∙A.1,2,3
∙B.5,3,2
∙C.5,2,3
∙D.5,3,3
8.有以下程序
#include<stdio.h>
main()
{intk=10;
printf("
%4d,%o,%x/n"
k,k,k);
}
程序的运行结果是(□代表一个空格)
∙A.10,12,a
∙B.□□10,012,a
∙C.010,12,a
∙D.□□10,12,a
9.设有:
chars[5],c;
,则调用函数scanf能正确给s和c读入数据的是
∙A.scanf("
%s%c"
s,c);
∙B.scanf("
%d%c"
&
s,&
c);
∙C.scanf("
s,&
∙D.scanf("
10.设x,y,z均为实型变量,代数式
在C语言中的正确写法是
∙A.x/y*z
∙B.x%y%z
∙C.x/y/z
∙D.x*z/y
11.有以下程序
#include<stdio.h>
{inti,j,k,a=5,b=6;
i=(a==b)?
++a:
--b;
j=a++;
k=b;
printf("
%d,%d,%d/n"
i,j,k);
程序的运行结果是
∙A.7,6,5
∙B.5,5,5
∙C.7,5,5
∙D.5,6,5
B.
12.设变量x为longint型并已正确赋值,以下表达式中能将x的百位上的数字提取出的是
∙A.x/10%100
∙B.x%10/100
∙C.x%100/10
∙D.x/100%10
13.有以下程序
{inti,j,x=0;
for(i=0;
i<2;
i++)
{x++;
for(j=0;
j<=3;
j++)
{if(j%2==0)continue;
x++;
}
x++;
x=%d/n"
x);
∙A.x=4
∙B.x=6
∙C.x=8
∙D.x=12
14.有以下程序
{intsum=0,x=5;
do{sum+=x;
}while(!
--x);
%d/n"
sum);
∙A.0
∙B.5
∙C.14
∙D.15
15.有以下程序
{charch='
Z'
;
ch=(ch-'
A'
+1)%26+'
putchar(ch);
∙A.Z
∙B.Y
∙C.B
∙D.A
16.以下函数的功能是:
计算a的n次方作为函数值返回
doublefun(doublea,intn)
{inti;
doubles=1.0;
for(i=1;
i<=n;
i++)s=______;
return8;
为实现上述功能,函数中下划线处应填入的是
∙A.s*i
∙B.s*a
∙C.s+i*i
∙D.s+a*a
17.在C语言程序中,下列说法正确的是
∙A.函数的定义可以嵌套,但函数的调用不可以嵌套
∙B.函数的定义不可以嵌套,但函数的调用可以嵌套
∙C.函数的定义和调用均不可以嵌套
∙D.函数的定义和调用均可以嵌套
18.若主函数中有定义语句:
inta[10],b[10],c;
,在主函数前定义的fun函数首部为:
voidfun(intx[]),则以下选项中错误的调用语句是
∙A.fun(b);
∙B.fun(&
c);
∙C.fun(&
a[3]);
∙D.fun(b[1]);
19.有以下程序
{intk,n=0;
charc,str[]="
teach"
for(k=0;
str[k];
k++)
{c=str[k];
switch(k)
{case1:
case3:
case5:
putchar(c);
%d"
++n);
break;
default:
putchar('
N'
);
∙A.Ne1NN
∙B.e1a2e3
∙C.Ne1Nc2N
∙D.Na1NNNN
20.以下叙述中错误的是
∙A.同一个数组中所有元素的类型相同
∙B.不可以跳过前面的数组元素,给后面的元素赋初值
∙C.定义语句:
inta[10]={0};
,给a数组中所有元素赋初值0
∙D.若有定义语句:
inta[4]={1,2,3,4,5};
,编译时将忽略多余的初值
21.执行以下程序段后,s的值为
inta[]={1,2,3,4,5,6,7,8,9},s=0,k;
k<8;
k+=2)s+=*(a+k);
∙A.13
∙B.16
∙C.17
∙D.45
22.有以下程序
#defineN4
voidfun(inta[][N],intb[])
i<N;
i++)b[i]=a[i][N-1-i];
{intx[N][N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},y[N],i;
fan(x,y);
i++)printf(:
%d,"
y[i]);
/n"
∙A.1,2,3,4,
∙B.3,6,9,12,
∙C.4,7,10,13,
∙D.1,5,9,13,
23.有以下程序
#include<string.h>
{charstr[]={"
Hello,Beijing"
};
%d,%d/n"
strlen(str),sizeof(str));
∙A.13,13
∙B.13,14
∙C.13,15
∙D.14,15
24.有以下程序
voidfun(char(*p)[6])
i<4;
i++)prinff("
%c"
p[i][i]);
{chars[6][6]={"
ABCDE"
"
abcde"
12345"
FGHIJ"
fghij"
54321"
fun(s);
∙A.Aa1F
∙B.Ab3I
∙C.ABCD
∙D.fghij
25.有以下程序
intfun(intn)
{if(n)returnfun(n-1)+n;
elsereturn0;
{printf("
fun(3));
∙A.4
∙C.6
∙D.7
26.有以下程序
#defineM5
#definef(x,y)x*y+M
{intk;
k=f(2,3)*f(2,3);
k);
∙A.22
∙B.41
∙C.100
∙D.121
27.有以下定义
struetdata
charc;
doubled;
}x;
以下叙述中错误的是
∙A.x的内存地址与x.i的内存地址相同
∙B.structdata是一个类型名
∙C.初始化时,可以对x的所有成员同时赋初值
∙D.成员i、c和d占用的是同一个存储空间
28.有以下程序
typedefstruet{charname[9];
charsex;
floatscore[2];
}STU;
voidf(STU*a)
{strcpy(a->name,"
Zhao"
a->sex='
m'
a->score[1]=90.0;
{STUc={"
Qian"
'
f'
95.0,92.0},*d=&
c;
f(d);
%s,%c,%2.0f,%2.0f/n"
d->name,c.sex,c.seore[0],c.score[1]);
∙A.Qian,f,95,92
∙B.Zhao,f,95,90
∙C.Zhao,m,95,90
∙D.Zhao,f,95,92
29.若有以下定义
struettt{charname[10];
}aa={"
aaaa"
F'
},*p=&
aa;
则错误的语句是
aa.sex);
∙B.aa.sex=getchar();
∙C.printf("
%c/n"
(*p).sex);
∙D.printf("
p->sex);
A.
30.若有说明:
typedefstruet{inta;
}W;
则以下叙述正确的是
∙A.编译后系统为W分配5个字节
∙B.编译后系统为W分配6个字节
∙C.编译后系统为W分配8个字节
∙D.编译后系统不为W分配存储空间
二、{{B}}程序填空题{{/B}}(总题数:
2,分数:
20.00)
31.程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。
所有学生数据均以二进制方式输出到文件中。
函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其他学生的数据不变。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
源程序如下:
#include<stdio.h>#defineN5typedefstructstudent{longsno;
charname[10];
floatscore[3];
voidfun(char*filename,STUn){FILE*fp;
/*********found*********/fp=fopen(______,"
rb+"
/********found********/fseek(fp,-1L*sizeof(STU),______);
/********found********/fwrite(______,sizeof(STU),1,fp);
fclose(fp);
}main(){STUt[N]={{10001,"
MaChao"
91,92,77},{10002,"
CaoKai"
75,60,88},{10003,"
LiSi"
85,70,78},{10004,"
FangFang"
90,82,87},{10005,"
ZhangSan"
95,80,88}};
STUn={10006,"
ZhaoSi"
55,70,68},ss[N];
inti,j;
FILE*fp;
fp=fopen("
student,dat"
"
wb"
);
fwrite(t,sizeof(STU),N,fp);
fclose(fp);
rb"
fread(ss,sizeof(STU),N,fp);
fclose(fp);
printf("
/nTheoriginaldata:
/n/n"
for(j=0;
j<N;
j++)printf("
/nNo:
%ldName:
%-8sScores:
"
ss[j].sno,ss[j],name);
for(i=O;
i<3;
i++)printf("
%6.2f"
ss[j].score[i]);
fun("
student,dat"
n);
/nThedataaftermodifing:
fread(ss,sizeof(STU),N,fp);
%-8sScores:
for(i=0;
i++)printf("
ss[j].score[i]);
}}
10.00)
填空项1:
__________________
(正确答案:
filename或"
student.dat"
SEEK_END或2&
n)
32.给定程序中,函数fun的功能是:
找出100~999之间(含100和999)所有整数中各位上数字之和为x(x为一正整数)的整数,然后输出;
符合条件的整数个数作为函数值返回。
例如,当x值为5时,100~999之间各位上数字之和为5的整数有:
104、113、122、131、140、203、212、221、230、302、311、320、401、410、500。
共有15个。
当x值为27时,各位数字之和为27的整数是:
999。
只有1个。
#include<stdio.h>fun(intx){intn,s1,s2,s3,t;
n=0;
t=100;
/********found********/while(t<=______){/********found********/s1=t%10;
s2=(______)%10;
s3=t/100;
/********found********/if(s1+s2+s3==______){printf("
t);
n++;
}t++;
}returnn;
}main(){intx=-1;
while(x<0){printf("
Pleaseinput(x>0):
scanf("
x);
}printf("
/nTheresultis:
%d/n"
fun(x));
999t/10X)
三、{{B}}程序修改题{{/B}}(总题数:
33.给定程序MODI1.C中函数fun的功能是:
统计一个无符号整数中各位数字值为零的个数,通过形参传回主函数;
并把该整数中各位上最大的数字值作为函数值返回。
例如,若输入无符号整数30800,则数字值为零的个数为3,各位上数字值最大的是8。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include<stdio.h>intfun(unsignedn,int*zero){intcount=0,max=0,t;
do{t=n%10;
/********found********/if(t=0)count++;
if(max<t)max=t;
n=n/10;
}while(n);
/********found********/zero=count;
returnmax;
}main(){unsignedn;
intzero,max;
/nInputn(unsigned):
n);
max=fun(n,&
zero);
/nTheresult:
max=%dzero=%d/n"
max,zero);
__________________________________________________________________________________________
正确答案:
(错误点1:
if(t==0)或if(!
t)或if(0==t)错误点2:
*zero=count;
)
34.给定程序MODI1.C中函数fun的功能是:
依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。
#include<stdio.h>voidfun(char*s){inti,j;
for(i=0,j=0;
sill!
='
/0'
i++)if(s[i]>='
0'
&
s[i]<='
9'
)/**********found**********/s[j]=s[i];
/**********found**********/s[j]="
/0"
main()charitem[80];
/nEnterastring:
);
gets(item);
/n/nThestringis:
%s"
/n"
item);
fun(item);
/n/nThestringofchangingis:
%s"
item);
s[j++]=s[i];
或*(s+j++)=*(s+i);
或s[j]=s[i],j++;
或s[j]=s