263 同步自测C语言程序设计实验与习题指导 习题答案.docx
- 文档编号:3376839
- 上传时间:2022-11-22
- 格式:DOCX
- 页数:18
- 大小:20.63KB
263 同步自测C语言程序设计实验与习题指导 习题答案.docx
《263 同步自测C语言程序设计实验与习题指导 习题答案.docx》由会员分享,可在线阅读,更多相关《263 同步自测C语言程序设计实验与习题指导 习题答案.docx(18页珍藏版)》请在冰豆网上搜索。
263同步自测C语言程序设计实验与习题指导习题答案
2.6.3同步自测
一、选择题
1.在C程序的函数调用时,主调函数中的实参和被调函数中的形参(B)。
(A)个数、次序必须相同,但数据类型可以不考虑
(B)个数、次序和对应参数的数据类型都应该相同
(C)个数、次序和数据类型均可以不相同
(D)对应参数数据类型应相同,但个数和次序可以不考虑
2.以下程序的输出结果是(C)。
intx=3,y=4;
voidmain()
{intx,y=5;
x=y++;
printf("%d",x);
}表达式
(A)3(B)4(C)5(D)6
3.在C语言中,函数默认的存储类型为(A)。
(A)auto(B)register(C)static(D)extern
4.执行下面的程序后,变量a的值是(B)。
#include
#defineSQR(X)X*X
voidmain()
{inta=10,k=2,m=3;
a/=SQR(m)/SQR(k);
printf("%d\n",a);
}
(A)10(B)1(C)5(D)0
5.一个C程序的执行是从(A)。
(A)本程序的main函数开始,到main函数结束
(B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
(C)本程序的main函数开始,到本程序文件的最后一个函数结束
(D)本程序文件的第一个函数开始,到本程序main函数结束
6.以下有关宏替换的叙述不正确的是(D)。
(A)宏替换不占用运行时间(B)宏名无类型
(C)宏替换只是字符串替换;(D)宏替换是在运行时进行的
7.设有以下宏定义:
#defineN3
#defineY(n)(N+1*n)
则执行语句:
z=2*(N*Y(5+1));后,z的值为(A)。
(A)30(B)72(C)48(D)54
8.在C语言中,以下叙述错误的是(C)。
(A)函数被调用时,系统才为形参分配内存
(B)实参和对应形参的数据类型必须一致
(C)实参可以是变量、常量或表达式
(D)形参可以是变量、常量或表达式
9.一个数据类型为void的函数中可以没有return语句,那么函数的被调用时(A)。
(A)没有返回值(B)返回一个系统默认值
(C)返回只有用户临时决定(D)返回一个不确定的值
10.C语言中规定,函数调用中用简单变量做实参时,它和对应形参之间的数据传递方式是(B)。
(A)地址传递(B)单向值传递
(C)由实参传给形参,再由形参传回给实参(D)由用户指定传递方式
11.以下程序的输出结果是(B)。
#include
intx=3,y=4;
voidmain()
{intx=0;
x+=y++;
printf(〞%d〞,x);
}
(A)3(B)4(C)5(D)6
12.在下面C语言的函数说明语句中,正确的是(A)。
(A)intfun(intx,inty);(B)intfun(intx,y);
(C)intfun(x,y);(D)intfun(intx;inty);
13.下面程序执行后输出为(D)。
#include
intf(intn)
{if(n==1)return1;
elseif(n==2)return2;
elsereturnf(n-1)+f(n-2);
}
voidmain()
{printf(〞%d\n〞,f(4));
}
(A)1(B)2(C)3(D)5
14.C语言规定,函数返回值的类型是由(D)
(A)return语句中的表达式类型所决定
(B)调用该函数时的主函数类型所决定
(C)调用该函数时系统临时所决定
(D)在定义函数时所指定的函数类型所决定
15.在一个C源程序文件中定义的全局变量,其作用域为(B)。
(A)整个源程序文件(B)从定义处开始到本源程序文件结束
(C)整个主函数(D)所处C程序的所有源程序文件中
16.以下程序运行后,输出结果是(B)。
#include
#definePT5.5
#defineS(x)PT*x*x
voidmain()
{inta=1,b=2;
printf(〞%4.1f\n〞,S(a+b));
}
(A)49.5(B)9.5(C)22.0(D)45.0
17.以下对C语言函数的有关描述,正确的是(D)。
(A)在C中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
(B)C函数既可以嵌套定义又可以递归调用
(C)函数必须有返回值,否则不能使用函数
(D)C程序中有调用关系的所有函数必须放在同一个源程序文件中
18.C语言中,以下叙述中错误的是(A)。
(A)主函数中定义的变量是全局变量
(B)同一程序中,全局变量和局部变量可以同名
(C)全局变量的作用域从定义处开始到本源程序文件结束
(D)局部变量的作用域被限定在其所定义的局部范围中
19.在一个char类型的函数定义中,函数体中有return0;语句,该语句(B)。
(A)是错误的(B)能正确向主调函数返回整型数0
(C)在执行时不予理睬(D)在执行时会中断程序运行
20.如果程序中有#include〞文件名〞则意味着(A)。
(A)将"文件名"所指的那个文件的全部内容,在此命令行出现的这一点上,插入源程序
(B)指定标准输入输出
(C)宏定义一个函数
(D)条件编译说明
21.凡是未显式定义存储类别的局部变量,其默认的存储类别是(A)。
(A)自动的(B)静态的(C)外部的(D)寄存器的
22.以下程序的输出结果是(D)。
#include
voidmain()
{inta[]={1,2,3,4},i,x=0;
for(i=0;i<4;i++){fun(a,&x);printf("%d",x);}
printf("\n");
}
fun(int*s,int*y)
{staticintt=3;
*y=s[t];
t--;
}
(A)1234(B)0000(C)4444(D)4321
23.以下程序的输出结果是(D)。
#include
fun(intx)
{if(x/2>0)fun(x/2-2);
printf("%d",x);
}
voidmain()
{fun(20);
printf("\n");
}
(A)2082-1(B)2820(C)8(D)-12820
24.函数func(inta){printf("%d",a);}的返回值类型是(A)。
(A)int类型(B)void类型
(C)没有返回值(D)无法确定
25.若用数组名作为函数调用的实参,则传递给形参的是(A)。
(A)数组的首地址(B)数组第一个元素的值
(C)数组中全部元素的值(D)数组元素的个数
二、填空题
1.以下递归函数是求n!
之值。
floatfac(intn)
{floatf;
if(n==0||n==1)
f=1;
else
f=n*fac(n-1);
return(f);
}
2.下面的函数用以验证命题:
100以内的奇数的平方被8整除,余数均为1,若命题成立,则返回1,否则返回0。
请填空完成该函数。
intfunc()
{inta,flag=1;
for(a=1;a<=100;a+=2)
if(a*a%8==1)
{flag=0;
break;
}
return(flag);
}
3.下面函数mfc用于求取两个正整数的最大公因子,请填空完善函数。
intmcf(inta,intb)
{inttemp;
while(b)
{temp=a%b;
a=b;
b=temp;
}
returna;
}
4.函数strlength(s)是返回字符串s的长度。
请填空完善函数。
strlength(chars[])
{inti=0;
while(s[i]!
='\0')i++;
return(i);
}
5.下面程序的功能是用递归的方法将一个整型数num的各为数字转换为对应的数字字符输出,请填空完善程序。
#include
voidmain()
{voidconvert(intn);
intnum;
scanf("%d",&num);
if(num<0)
{putchar('-');
num=-num;
}
convert(num);
}
voidconvert(intn)
{intj;
j=n/10;
if(j>0)
convert(j);
putchar(n);
}
6.下面程序的功能是统计字符串中大小写字母的个数,请填空完成程序。
#include
#defineIA(x)①
voidmain()
{charstr[80],*s,ch;
intcount=0;
gets(str);
s=str;
while(*s)
{ch=*s++;
if(IA(ch))
count++;
}
printf("thesumis%d\n",count);
}
7.下面函数的功能是将一个正整数n的每位数分离出来,并将其求和。
请填空。
intpp(longn)
{intx;
if(n<10)
x=n;
else
x=pp(n/10)+n%10;
return(x);
}
三、读程序写结果题
1.下面程序的输出结果是(9,19)。
#include
intfunc(int,int);
voidmain()
{intk=4,m=1,p;
p=func(k,m);
printf("%d,",p);
p=func(k,m);
printf("%d\n",p);
}
intfunc(inta,intb)
{staticintm=1,n=2;
n+=m+1;
m=n+a+b;
returnm;
}
2.写出下面程序的运行结果(f=6。
#include
intf(intnum,intrun)
{staticintfact,i;
if(run==0)
{fact=1;
i=1;
}
fact*=i;
if(++i<=num)
f(num,1);
return(fact);
}
voidmain()
{inti=0;
printf("f=%d\n",f(3,0));
}
3.下列程序的运行结果是(123)。
#include
voidmain()
{voidadd();
inti;
for(i=0;i<3;i++)
add();
}
voidadd()
{staticintx=0;
x++;
printf(〞%d〞,x);
}
4.以下程序的运行结果是1
2
3
#include
{staticintx=0;
x=x+1;
printf("%d\n",x);
}
voidmain()
{increment();
increment();
increment();
}
5.下面程序的输出结果是(30)。
#include
voidmain()
{intf(intn);
inti,k,s=0;
for(i=1;i<=6;i++)
{k=f(i);
if(k%6!
=0)
continue;
if(k>100)
break;
s=s+k;
}
printf(〞%d〞,s);
}
intf(intn)
{staticintf=1;
f=f*n;
returnf;
}
6.下列程序的输出结果是(-5,-12,-7)。
#include
sub(intx,inty,int*z)
{*z=y-x;}
main()
{inta,b,c;
sub(10,5,&a);
sub(7,a,&b);
sub(a,b,&c);
printf("%4d,%4d,%4d\n",a,b,c);
}
7.下面程序的输出结果是(10,20,30)。
#include
voidf1(intx,inty,int*sum)
{*sum=x+y;
++x,++y;
}
voidmain()
{inta=10,b=20,c=100;
void(*f)(intx,inty,int*sum);
f=f1;
(*f)(a,b,&c);
printf(〞%d,%d,%d\n〞,a,b,c);
}
8.下面程序执行时,如果输入字符序列ABCDE!
运行结果是(!
EDCBA)。
#include
voidmain()
{voidreverse();
reverse();
}
voidreverse()
{charc;
c=getchar();
if(c=='!
')prinf(〞%c〞,c);
else
{reverse();
printf("%c",c);
}
}
9.下列程序的运行结果是(4321)。
#include
voidfun(intx)
{putchar(′0′+x%10);
if(x/10)
fun(x/10);
}
voidmain()
{intm=1234;
fun(m);
putchar(′\n′);
}
10.下列程序的输出结果是(7)。
#include
voidsub(int*a,intn,intk)
{if(k<=n)
sub(a,n/2,2*k);
*a+=k;
}
voidmain()
{intx=0;
sub(&x,8,1);
printf("%d\n",x);
}
11.下面程序的输出结果是
(2)。
#include
intm=13;
voidmain()
{intfun(intx,inty);
inta=7,b=5;
printf("%d\n",fun(a,b)/m);
}
intfun(intx,inty)
{intm=3;
returnx*y-m;
}
12.下面程序的输出结果是(17,7,7
17,8,11)。
#include
intx=12,y=7;
voidmain()
{intx=18,z;
z=x-y++;
{inty,z;
while(y=x--)
{y/=3;
if(y%3==0)
{z=(++y);
break;
}
}
printf("%d,%d,%d\n",x,y,z);
}
printf("%d,%d,%d\n",x,y,z);
}
13.给出以下程序的运行结果(5,25)。
#include
intx,y,a=15,b=10;
voidnum()
{x=a-b;
y=a+b;
}
voidmain()
{
inta=7,b=5;
x=x+a;
y=y-b;
num();
printf(〞%d,%d\n〞,x,y);
}
14.以下程序的运行结果(1,7,3
10,7,3
1,7,3
10,7,4
6,7,4)。
#include
intx=1,y=2,z=3;
voidmain()
{intx=6;
y=5;
funca();
printf("%d,%d,%d\n",x,y,z);
}
funca()
{registerintc=10;
intx;
y=7;x=c;
funb();
printf("%d,%d,%d\n",x,y,z);
funb();
printf("%d,%d,%d\n",x,y,z);
}
funb()
{staticinta=2;
z=++a;
printf("%d,%d,%d\n",x,y,z);
}
15.以下程序的运行结果(123456
33-2
2,5,1
123,456)。
#include
inta=123;
voidmain()
{externa,b;
printf("%d\t%d\n",a,b);
{inta=3,b=2,c=l;
c-=++b;
b*=a+c;
printf("%d\t%d\t%d\n",a,b,c);
{intb=5,c=12;
c/=b*2;
a-=c;
printf("%d,%d,%d\n",a,b,c);
a+=--c;
}
}
printf("%d,%d\n",a,b);
}
intb=456;
16.以下程序的运行结果(j=2
S=10)。
#include
externintj=1;
voidmain()
{voidadd();intsum(intx);
intk,s;
add();
j++;
printf("j=%d\n",j);
for(k=1;k<=10;k++)
s=sum(k);
printf("s=%d\n",s);
}
voidadd()
{intj=0;j++;}
intsum(intj)
{intx=0;x+=j;return(x);}
17.以下程序的运行结果(15,145)。
#include
#defineMIN(x,y)(x)<(y)?
(x):
(y)
#defineMUL(x,y)x*y
voidmain()
{
ints,t,k,m;
s=10;
t=15;
k=10*MIN(s,t);
m=MUL(s+t,s-t);
printf("%d,%d",k,m);
}
18.以下程序的运行结果(6)。
#include
#defineFUN(x,y)x*y
voidmain()
{inta=2,b=3;
printf("%d\n",FUN(1+a,1+b));
}
四、编程题
1.函数delspace的功能是删除一个字符串中所有的空格。
例如,输入字符串为"Thisisastring",则输出结果为"Thisisastring"。
测试用主函数如下所示,请编制函数delspace。
#include
#include
voidmain()
{char*delspace(char*str);
chars[81],*ds;
gets(s);
ds=delspace(s);
printf("\nResult:
%s\n",ds);
}
2.函数adddigit的原型为intadddigit(intnum);,其功能是求num各位数字之和。
要求编制该函数并用相应的主函数进行测试。
3.实现判断一个正整数是否为素数的函数首部为intisprime(intx),当x是素数时函数返回1,否则返回0。
要求编制该函数并用相应的主函数进行测试。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 263 同步自测C语言程序设计实验与习题指导 习题答案 同步 自测 语言程序设计 实验 习题 指导 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)