C语言函数习题
- 格式:doc
- 大小:30.50 KB
- 文档页数:14
习题
一、选择题
1、以下只有在使用时才为该类型变量分配内存的存储类说明是----____B______。
2、下述程序的输出结果是____A____。
long fun〔int n〕
{ long s;
if〔n==1|| n==2〕
s=2;
else s=n-fun〔n-1〕;
return s;
}
main〔〕
{ printf〔“%ld\n〞,fun〔3〕〕;
}
3、C语言中形参的默认存储类别是____A________。
A.自动〔auto〕 B.静态〔static〕
C.存放器〔register〕 D.外部〔extern〕
4、下面对函数嵌套的表达中,正确的选项是_____B_____。
A.函数定义可以嵌套,但函数调用不能嵌套
B.函数定义不可以嵌套,但函数调用可以嵌套
5、下面关于形参和实参的说法中,正确的选项是____B_____。
A.形参是虚设的,所以它始终不占存储单元
6、关于全局变量的作用范围,以下说法正确的选项是____D_______。
7、调用一个函数,此函数中没有return语句,以下说法正确的选项是:该函数____D____。
8、以下函数调用语句中含有____B_____个实参。
fun 〔〔exp1,exp2〕,〔exp3,exp4,exp5〕〕;
9、以下程序的输出结果是__C______。
fun〔 int a,int b,int c〕
{ c=a*a+b*b;
}
main〔〕
{ int x=22;
fun〔4,2,x〕;
printf〔〞%d〞,x〕; }
10、以下程序的输出结果是____A _____。
#include
int func (int x,int y)
{ static int m=2,k=2;
k+=m+1;
m=k+x+y;
return m;
}
main()
{ int a=8,b=1,p;
p=func(a,b);
printf("%d,",p);
p=func(a,b);
printf("%d",p);
}
A.14,29 B.14,24 C.14,8 D.14,30
11、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式为__B_____。
C.由实参传给形参,再由形参传回给实参
12、建立函数的目的之一是__B_____.
二、程序分析题
1、以下程序的输出结果是____6_____。
#include
fun(int a,int b,int c)
{ c=a*b;
return c;
}
main( )
{ int c;
fun(2,3,c);
printf("%d\n",c);
}
2、分析以下程序的运行结果____14_____。
#include
int func(int a,int b)
{ int c;
c=a+b;
return c;
}
main( ) { int x=6,r;
r=func(x,x+=2);
printf("%d\n",r);
}
3、分析以下程序的运行结果__8, 4_______。
#include
int d=1;
void fun(int p)
{ int d=5;
d+=p++;
printf("%d ",d);
}
main( )
{ int a=3;
fun(a);
d+=a++;
printf("%d\n",d);
}
4、分析以下程序的运行结果____6,15,15______。
#include
int d=1;
int fun(int p)
{ static int d=5;
d+=p; printf("%d ",d);
return d;
}
main( )
{ int a=3;
printf("%d\n",fun(a+fun(d)));
}
5、有如下程序
#include
long fib(int n)
{ if(n>2)
return(fib(n-1)+fib(n-2));
else return(2);
}
main()
{ printf("%d\n",fib(3));
}
该程序的输出结果是____4_______.
三、编程题
1、输入两个整数,求它们相除的余数。用带参的函数来编程实现。
#include
int qy(int x,int y)
{
int z; z=x%y;
return z;
}
void main()
{
int x,y;
int z;
printf("请输入两个整数:\n");
scanf("%d %d",&x,&y);
z=qy(x,y);
printf("%d与%d的余数为%d\n",x,y,z);
}
2、编写一个判断奇偶数的函数,要求在主函数中输入一个整数,通过被调用函数输出该数是奇数还是偶数的信息。#include
void jos(int x)
{
if (x==0) printf("该数非奇数也非偶数\n");
else if (x%2==0) printf("该数为偶数\n");
else printf("该数为奇数\n");
}
void main()
{
int x;
printf("请输入一个整数\n");
scanf("%d",&x);
jos(x);
}
3、已有变量定义和函数调用语句:int a=1,b=-5,c; c=fun(a,b);fun函数的作用是计算两个数之差的绝对值,并将差值返回调用函数,请编写程序
#include
int jdz(int x,int y)
{
int z;
z=x-y;
if (z<0) z*=-1;
else z*=1;
return z;
}
void main()
{
int x,y,z;
printf("请输入二个整数\n");
scanf("%d %d",&x,&y);
z=jdz(x,y);
printf("%d与%d的绝对值为%d\n",x,y,z);
}
。
4、编写函数fun,它的功能是输出一个200以内能被3整除且个位数为6的所有整数,返回这些数的个数。
#include
void fun()
{
int i,n;
for(i=0;i<20;i++)
{
n=i*10+6;
if (n%3!=0) continue; printf("%d\n",n);
}
}
void main()
{
fun();
}
5、编写一个函数对数据序列按从大到小的顺序进展排序,在主函数中输出排序后的结果。
数据序列为:19 12 34 15 20 90 17 51 32 8
#include
void fun(int a[])
{
int i,k,tem;
for(i=0;i<10;i++)
{
printf("%4d",a[i]);
}
printf("\n"); for(k=0;k<9;k++)
for(i=0;i<9-k;i++)
if(a[i+1]>a[i])
{
tem=a[i];
a[i]=a[i+1];
a[i+1]=tem;
}
printf("排序后的元素序列:\n");
for (i=0;i<10;i++)
{
printf("%4d",a[i]);
}
printf("\n");
}
void main()