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()