vlambda博客
学习文章列表

【C语言】例题7.6-7.10 函数调用

例题7.6




有5个学生在一起,问第5个学生多少岁,他说比第4个学生大2岁

问第4个学生多少岁,他说比第3个学生大2岁

问第3个学生多少岁,他说比第2个学生大2岁

问第2个学生多少岁,他说比第1个学生大2岁

问第1个学生多少岁,他说是10岁,请问这前四个学生分别是多大?

       
         
         
       
                                                         


#include<stdio.h>
int age(int student_n);
int main()
{ int i;
  for(i=5;i>0;i--)
    printf("第%d名学生的年龄为:%d\n",i,age(i));
}
int age(int n)
{ int c;
  n--; 
  if(n==0) 
    c=10;
  else
    c=age(n)+2;  
  return c;
    }
运行结果:
第5名学生的年龄为:18
第4名学生的年龄为:16
第3名学生的年龄为:14
第2名学生的年龄为:12
第1名学生的年龄为:10
[Process completed - press Enter]

例题7.7 



用递归法求n!                                                            
                                                               
#include<stdio.h>
int func(int);
int main()
{ int n;
 printf("请输入n的值:\n");
 scanf("%d",&n);
 printf("\n%d!=%d",n,func(n));}
int func(int x)
{ int c;
  if(x==0||x==1)
    c=1;
  else
    c=x*func(x-1);
  return c;}

运行结果:
请输入n的值:
8
8!=40320
[Process completed - press Enter]

例题7.9



输入10个数,要求输出其中值最大的元素和该数是第几个数                                                                  

#include<stdio.h>
#define N 10
int fmax(int,int);
int main()
{ int i,a[N],max;
  for(i=0;i<N;i++)
    scanf("%d",&a[i]);
  
  max=a[0];
  for(i=1;i<N;i++)
    max=fmax(a[i],max);
  printf("\n最大值为:%d\n",max);
  
  for(i=0;i<N;i++)
    if(max==a[i])
      printf("为数组中的%d个数",i+1);}
         
int fmax(int x,int y)
{ return y>x?y:x;}

运行结果:
1
2
3
4
5
6
7
1
2
3
最大值为:7
为数组中的7个数
[Process completed - press Enter]

题7.10 



有一个一维数组score,内放10个学生成绩,求平均成绩                                       

     
#include<stdio.h>
#define N 10
float aver(float a[N]);
int main()
{ int i;
  float score[N];
  for(i=0;i<N;i++)
    scanf("%f",&score[i]);
  printf("\n平均分为%15.2f",aver(score));
}
float aver(float a[N])
{ int i;
  float sum=0; 
  for(i=0;i<N;i++)
    sum=sum+a[i];
  return sum/(float)N;}

运行结果:
100 56 78 98 67.5 99 54 88.5 76 58
平均分为          77.50
[Process completed - press Enter]