C语言基础习题及答案7

本文介绍了C语言中函数的基础知识,包括函数的选择题、填空题和编程题。涉及函数定义、调用、参数传递、作用域以及递归等方面。通过解答一系列问题,帮助读者理解和掌握C语言函数的使用。

 

第七章 函数

一、 选择题

1、 在C语言函数的定义和引用中,以下描述正确的是_____

A、 必须有形式参数

B、 也可以没有形式参数

C、 数组名不能作为形式参数

D、 形式参数必须是变量名

2、以下函数定义形式正确的是_______

A、 double fun(int x, int y)

{z=x+y;

 Return z;

}

B、 myfun(int x,y)

{int z;

 Return z;

}

C、myfun (x,y)

{int x,y;

 Double z;

 Z=x+y;

 Return z;

              

D、double fun (x, y)

     {double z;

     z=x+y;

     return z;

      

1、 在C程序中,下面描述正确的是_____

A、 函数的定义可以嵌套,但函数的调用不可以嵌套

B、 函数的定义不可以嵌套,但函数的调用可以嵌套

C、 函数的定义和函数调用都可以嵌套

D、 函数的定义和调用都不可以嵌套

4、若调用一个函数,且此函数中没有return语句,则正确的说法是______

A、 该函数没有返回值

B、 该函数返回若干个系统默认值

C、 能返回一个用户所希望的函数值

D、 返回一个不确定的值

5、C语言规定,函数返回值的类型是由_______决定的

A、 return语句中的表达式类型  

B、 调用该函数时的主调函数类型

C、 调用该函数时由系统临时 

D、 在定义函数时所指定的函数类型

6、以下不正确的说法是_______

A、 全局变量,静态变量的初值是在编译时指定的

B、 静态变量如果没有指定初值,则其初值为0

C、 局部变量如果没有指定初值,则其初值不确定

D、 函数中的静态变量在函数每次调用时,都会重新设置初值

 

二、 填空题

1、 C语言函数返回类型的默认定义类型是        

2、 函数的实参传递到形参有两种方式:       和        

3、在一个函数内部调用另一个函数的调用方式称为       。在一个函数内部直接或间接调用该函数成为函数        的调用方式

4、C语言变量按其作用域分为      和     

5、凡在函数中未指定存储类别的局部变量,其默认的存储类别为      

 

三、 看程序写结果

1、#include

   Int abc(int u,int v);

   Void main()

   {int a=24,b=16,c;

c=abc(a,b);

printf(“value=%d”,c);

}

Int abc(int u, int v)

{int w;

 While(v)

 {w=u%v;

  u=v;

  v=w;

  }

 Return u;

}

2、#include

   int x1=30,x2=40;

   main()

   {int x3=10,x4=20;

sub(x3,x4);

sub(x2,x1);

printf(“%d,%d,%d,%d\n”,x3,x4,x1,x2);

}

sub(int x,int y)

{x1=x;x=y;y=x1;}

3、#include

   Main()

   {int i=5;

Printf(“%d\n”,sub(i));

}

sub(int n)

{int a;

 If(n==1) return 1;

 a=n+sub(n-1);

 return (a);

}

4、#include

   Void fun()

   {static int m;

m+=2;

printf(“%d ”,m);

}

Main()

{int a;

 For(a=1;a<=4;a++)  fun();

 Printf(“\n”);

}

 

四、 编程题

1、 编写一个函数,判断任一整数是否为素数,用main()函数调用并测试之。

2、 用递归方法求n!

3、 有一个一维数组,内放10个学生成绩,写一个函数,求出平均分,最高分和最低分

 

参考答案

一、 选择题

1、B     2、D     3、B      4、A       5、D       6、A

二、填空题

1、整型

2、值传递、地址传递

3、递归、嵌套

4、全局变量、局部变量

5、自动局部变量

 

二、 看程序写结果

1、 Value=8

2、10,20,40,40

3、15

4、2 4 6 8

 

三、 编程题

1、#include

   #include

   Int prime(int x)

   {int i,flag=1;

For(i=2;i<=sqrt(x);i++)

 If(x%i==0) flag=0;

 If(flag==1)

  Return 1;

 Else

  Return 0;

}

Main()

{int x;

 Scanf(“%d”,&x);

 If(prime(x)==1)printf(“%d is a prime.\n”,x);

 Else printf(“%d is not a prime\n.”,x);

}

 

2、 float fac(int n)

{float f;

 If(n<0) {printf(“n<0,dataerror!”);}

 Else if(n==0||n==1)f=1;

 Else f=fac(n-1)*n;

 Return(f);

 }

 Main()

 {int n;

  Float y;

  Printf(“input an interger number:”);

  Scanf(“%d”,&n);

  y=fac(n);

  printf(“%d!=.0f”,n,y);

  }

3、 float max=0,min=0;

float average(float array[],int n)

{int i;

 Float aver,sum=array[0];

Max=min=array[0];

For(i=1;i

{if(array[i]>max)max=array[i];

 Else if(array[i]

 Sum=sum+array[i];

}

aver=sum/n;

return(aver);

}

Main()

{float ave,score[10];

 Int i;

 For(i=0;i<10;i++)

 Scanf(“%f”,&score[i]);

 Ave=average(score,10);

 Printf(“max=%6.2f\nmin=%6.2f\naverage=%6.2f\n”,max,min,ave);

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值