第七章练习题及答案Word文档格式.docx
《第七章练习题及答案Word文档格式.docx》由会员分享,可在线阅读,更多相关《第七章练习题及答案Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
doublea=0,b=0;
a=fun1(x);
b=fun1(y);
return(int)(a+b);
{doublew;
w=fun2(1.1,2.0);
程序执行后变量w中的值是C
A)5.21
B)5
C)5.0
D)0.0
(9)有以下程序:
fun(intx,inty){return(x+y);
}
main()
{inta=1,b=2,c=3,sum;
sum=fun((a++,b++,a+b),c++);
printf("
%d\n"
sum);
执行后的输出结果是()。
C
A)6B)7C)8D)9
(10)有以下程序:
voidfun2(chara,charb){printf("
%c,%c"
a,b);
chara='
A'
b='
B'
;
voidfun1(){a='
C'
b='
D'
{fun1();
%c%c"
fun2('
E'
'
F'
);
程序的运行结果是()。
A
A)CDEFB)ABEFC)ABCDD)CDAB
*(11)有以下程序
main(intargc,char*argv[])
{intn=0,i;
for(i=1;
i<
argc;
i++)n=n*10+*argv[i]-‘0’;
printf(“%d\n”,n);
编译连接后生成可执行文件tt.exe,若运行时输入以下命令行
tt12345678
程序运行后的输出结果是D
A)12
B)12345
C)12345678
D)136
(12)有如下程序:
#include<
stdio.h>
voidfun(inta,intb)
{
intt;
t=a;
a=b;
b=t;
}
main()
{intc[10]={1,2,3,4,5,6,7,8,9,0},i;
for(i=0;
k<
10;
i+=2)fun(c[i],c[i+1]);
for(i=0;
i++)printf("
%d"
c[i]);
printf("
\n"
程序的运行结果是A
A)1,2,3,4,5,6,7,8,9,0,
B)2,1,4,3,6,5,8,7,0,9,
C)0,9,8,7,6,5,4,3,2,1,
D)0,1,2,3,4,5,6,7,8,9,
(13)有以下程序
#include <
int f(int x,int y)
{ return ((y-x)*x);
{ int a=3,b=4,c=5,d;
d=f(f(a,b),f(a,c));
printf("
d);
程序运行后的输出结果是B
A)10
B)9
C)8
D)7
(14)有以下程序
int fun(int x,int y)
{ if(x==y) return (x);
else return((x+y)/2);
{ int a=4,b=5,c=6;
fun(2*a,fun(b,c)));
A)3
B)6
D)12
(15)有以下程序
void fun(int p)
{ int d=2;
p=d++;
printf("
p);
{ int a=1;
fun(a);
a);
程序运行后的输出结果是C
A)32
B)12
C)21
D)22
(16)有以下程序
#include<stdio.h>
int
f(int
x);
main()
{int
n=1,m;
m=f(f(f(n)));
printf(”%d\n”,m);
}
x)
{return
x*2;
}
A)1
B)2
C)4
D)8
(17)有以下程序
intfun(intn)
{
if(n==1)return1;
else
return(n+fun(n-1));
{intx;
scanf(“%d”,&
x);
x=fun(x);
printf(“%d\n”,x);
程序执行时,给变量x输入10,程序的输出结果是A
A)55
B)54
C)65
D)45
(18)有以下程序:
fun(intx)
{intp;
if(x==0||x==1)return(3);
p=x-fun(x-2);
returnp;
{printf("
fun(7));
A)7B)3C)2D)0
(19)有以下程序
#include<
intf(intx)
{inty;
if(x==0||x==1)return(3);
y=x*x-f(x-2);
returny;
{intz;
z=f(3);
printf(“%d\n”,z);
程序的运行结果是C
A)0B)9C)6D)8
(20)有以下程序
int
fun(inta,intb)
{if(b==0)return
a;
else
return(fun(--a,--b));
{
printf(“%d\n”,fun(4,2);
程序的运行结果是B
B)2
C)3
D)4
(21)有以下程序
#include<
intf(intt[],intn);
{inta[4]={1,2,3,4},s;
s=f{a,4};
printf("%d\n",s);
intf(intt[],intn)
{if(n>
0)returnt[n-1]+f(t,n-1);
elsereturn0;
A)4B)10C)14D)6
(22)有以下程序
void
fun(intx)
{if(x/2>1)fun(x/2);
printf(”%d”,x);
}
{fun(7);
printf(”\n”);
A)137 B)731 C)73 D)37
(23)有以下程序
intfun(intx[],intn)
{staticintsum=0,i;
isum+=x[i];
returnsum;
{inta[]={1,2,3,4,5},b[]={6,7,8,9},s=0;
s=fun(a,5)+fun(b,4);
printf(“%d\n”,s);
程序执行后的输出结果是C
A)45
B)50
C)60
D)55
(24)有以下程序:
fun(intx,inty)
{staticintm=0,i=2;
i+=m+1;
m=i+x+y;
returnm;
{intj=1,m=1,k;
k=fun(j,m);
k);
B
A)5,5B)5,11C)11,11D)11,5
(25)有以下程序
inta=4;
intf(intn)
{intt=0;
staticinta=5;
if(n%2){inta=6;
t+=a++;
else{inta=7;
returnt+a++;
{ints=a,i=0;
for(;
i<
2;
i++)s+=f(i);
printf(“%d\n”,s);
A)24
B)28
C)32
D)36
(26)设函数中有整型变量n,为保证其在未赋初值的情况下初值为0,应该选择的存储类别是C
A)auto
B)register
C)static
D)auto或register
(27)有以下程序
int f(int n);
{ int a=3,s;
s=f(a);
s=s+f(a);
s);
int f(int n)
{ static int a=1;
n+=a++;
return n;
A)7
B)8
C)9
D)10
(28)有以下程序
intfun()
{staticintx=1;
x*=2;
returnx;
{inti,s=1;
for(i=1;
=2;
i++)s=fun();
printf("%d\n",s);
A)0B)1C)4D)8
(29)有以下程序
#include<stdio.h>
intfun()
{staticintx=1;
x+=1;
returnx;
{inti;
s=1;
for(i=1;
=5;
i++)s+=fun();
printf(”%d\n”,s);
A)11 B)21 C)6 D)120
(30)有以下程序:
#defineN5
#defineMN+1
#definef(x)(x*M)
{inti1,i2;
i1=f
(2);
i2=f(1+1);
%d%d\n"
i1,i2);
A)1212B)117C)1111D)127
(31)若程序中有宏定义行:
#define
N
100
则以下叙述中正确的是B
A)宏定义行中定义了标识符N的值为整数100
B)在编译程序对C源程序进行预处理时用100替换标识符N
C)对C源程序进行编译时用100替换标识符N
D)在运行时用100替换标识符N
(32)以下叙述中错误的是D
A)在程序中凡是以“#”开始的语句行都是预处理命令行
B)预处理命令行的最后不能以分号表示结束
C)#defineMAX是合法的宏定义命令行
D)C程序对预处理命令行的处理是在程序执行的过程中进行的
(33)以下关于宏的叙述中正确的是()C
A)宏名必须用大写字母表示
B)宏定义必须位于源程序中所有语句之前
C)宏替换没有数据类型限制
D)宏调用比函数调用耗费时间
(34)有以下程序
#define PT 3.5 ;
#define S(x) PT*x*x ;
{ int a=1,b=2 ;
%4.1f\n"
S(a+b));
A)14.0
B)31.5
C)7.5
D)程序有错无输出结果
(35)有以下程序
#define f(x) x*x*x
{ int a=3,s,t;
s=f(a+1);
t=f((a+1));
%d,%d\n"
s,t);
程序运行后的输出结果是A
A)10,64
B)10,10
C)64,10
D)64,64
(36)以下程序
#defineSUB(a)(a)-(a)
{inta=2,b=3,c=5,d;
d=SUB(a+b)*c;
printf("%d\n",d);
程序运行后的结果是C
A)0B)-12C)-20D)10
二填空题
(1)以下isprime函数的功能是判断形参a是否为素数,是素数,函数返回1,否则返回0,请填空
intisprime(inta)
{inti;
for(i=2;
=a/2;
i++)
if(a%i==0)__[]___;
//return0
__[]___;
//return1
(2)以下程序中,函数fun的功能是计算x2-2x+6,主函数中将调用fun函数计算:
y1=(x+8)2-2(x+8)+6
y2=sin2(x)-2sin(x)+6
请填空。
#include"
math.h"
doublefun(doublex){return(x*x-2*x+6);
doublex,y1,y2;
Enterx:
"
scanf("
%lf"
&
y1=fun(【】);
//x+8
y2=fun(【】);
//sin(x)
y1=%lf,y2=%lf\n"
y1,y2);
(3)以下程序中函数f的功能是在数组x的n个数(假定n个数互不相同)中找出最大最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换.请填空.
#include
<
viod
x[],int
n)
int
p0,p1,i,j,t,m;
i=j=x[0];
p0=p1=0;
for(m=0;
m<
n;
m++)
if(x[m]>
i)
{i=x[m];
p0=m;
if(x[m]<
j)
{j=x[m];
p1=m;
t=x[p0];
x[p0]=x[n-1];
x[n-1]=t;
t=x[p1];
x[p1]=_[]_______;
_[]_______=t;
//x[0],x[0]
a[10],u;
for(u=0;
u<
u++)
a[u]);
f(a,10);
for(u=0;
a[u]);
(4)请将以下程序中的函数声明语句补充完整。
int 【】;
//max(int,int)
{ int x,y,(*p)();
scanf("
%d%d"
x,&
y);
p=max;
(*p)(x,y));
int max(int a,int b)
{ return (a>
b?
a:
b);
(5)以下fun函数的功能是:
找出具有N个元素的一维数组中的最小值,并作为函数值返回。
(设N已定义)i
intfun(intx[N])
{inti,k=0;
for(i=0;
N;
i++)
if(x[i]<
x[k])k=【】;
returnx[k];
}
(6)以下fun函数的功能是在N行M列的整形二维数组中,选出一个最大值作为函数值返回,请填空。
(设M,.N已定义)a[row][col]
intfun(inta[N][M])
{inti,j,row=0,col=0;
for(i=0;
for(j=0;
j<
M;
j++)
if(a[i][j]>a[row][col]){row=i;
col=j;
return(【】):
(7)以下程序的运行结果是:
__[]____11
fun(intt[],intn)
{inti,m;
if(n==1)returnt[0];
if(n>
=2){m=fun(t,n-1);
inta[]={11,4,6,3,8,2,3,5,9,2};
printf(“%d\n”,fun(a,10));
(8)下面程序的运行结果是【】。
18
intf(inta[],intn)
{if(n>
1)
returna[0]+f(a+1,n-1);
else
returna[0];
{intaa[10]={1,2,3,4,5,6,7,8,9,10},s;
s=f(aa+2,4);
(9)以下程序的输出结果是【】。
13
voidfun(intx)
{if(x/2>
0)fun(x/2);
printf(“%d”,x);
{fun(3);
printf(“\n”);
(10)以下程序的功能是:
通过函数func输入
字符并统计输入字符的个数。
输入时用字符@作为输入标志。
long【】;
longn;
n=func();
n=%ld\n"
n);
longfunc()
longm;
for(m=0;
getchar()!
='
@'
【】);
答案:
func();
m++
(11)有以下程序
fun(int x)
{ if(x/2>
0) fun(x/2);
%d "
x);
{ fun(6);
程序运行后的输出结果是【】136
(12)以下程序的运行结果是m=4k=4i=5k=5。
intk=0;
voidfun(intm)
{m+=k;
k+=m;
printf(“m=%d\nk=%d”,m,k++);
{inti=4;
fun(i++);