zoukankan      html  css  js  c++  java
  • C语言数组和函数实例练习(二)

    1.C语言中不允许函数的嵌套定义,但可以使用函数的嵌套调用。

    1:输入4个整数,找出其中最大的数。

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 int max1(int a,int b)
     4 {
     5     if(a>=b)
     6     return a;
     7     else
     8     return b;
     9 }
    10 int max2(int a,int b,int c,int d)
    11 {
    12     int m;
    13     m=max1(a,b);
    14     m=max1(m,c);
    15     m=max1(m,d);
    16     return m;
    17 }
    18 int main()
    19 {
    20     int a,b,c,d,max;
    21     printf("请输入4个数字:
    ");
    22     scanf("%d %d %d %d",&a,&b,&c,&d);
    23     max=max2(a,b,c,d);
    24     printf("The max is %d",max);
    25     return 0;
    26 }

    其中红色部分语句可更改为:m=max1(max1(max1(a,b),c),d);//更加精炼

    2.函数的递归调用

    25个学生坐在一起,上一个学生比下一个学生分别小2岁,已知第1个学生今年10岁,那么求第5个学生的年龄。

     1 int age(int n)
     2 {
     3     int c;
     4     if(n==1)
     5         c=10;
     6     else
     7         c=age(n-1)+2;
     8     return c;
     9 }
    10 int main()
    11 {
    12     printf("第5个学生的年龄是%d",age(5));
    13     return 0;
    14 }

    3:用递归方法求n!。

     1 int fac(int n)
     2 {
     3     int f;
     4     if(n<0)
     5     {
     6         printf("n<0,输入错误!"); 
     7     }else if(n==0||n==1){
     8         f=1;
     9     }else{
    10         f=fac(n-1)*n;
    11     }
    12     return f;
    13 }
    14 int main()
    15 {
    16     int n,y;
    17     printf("请输入要求阶乘的整数:");
    18     scanf("%d",&n);
    19     y=fac(n);
    20     printf("%d!=%d
    ",n,y);
    21     return 0; 
    22 }

    4:汉诺塔问题。

     1 void move(char x,char y)
     2 {
     3     printf("%c->%c
    ",x,y);
     4 } 
     5 void hanoi(int n,char one,char two,char three)
     6 {
     7     if(n==1)
     8         move(one,three);
     9     else{
    10         hanoi(n-1,one,three,two);
    11         move(one,three);
    12         hanoi(n-1,two,one,three);
    13     }
    14 }
    15 int main()
    16 {
    17     int m;
    18     printf("请输入块数:");
    19     scanf("%d",&m);
    20     printf("需要移动%d块。
    ",m);
    21     hanoi(m,'A','B','C'); 
    22 }

    3.数组作为函数参数

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

     1 int max(int x,int y)
     2 {
     3     return(x>y?x:y);
     4 }
     5 int main()
     6 {
     7     int a[10],m,n,i;
     8     printf("请输入10个数字:
    ");
     9     for(i=0;i<10;i++)
    10     {
    11         scanf("%d",&a[i]);
    12     } 
    13     printf("
    ");
    14     for(i=1,m=a[0],n=0;i<10;i++)
    15     {
    16         if(max(m,a[i])>m)
    17         {
    18             m=max(m,a[i]);
    19             n=i;
    20         }
    21     }
    22     printf("最大的数是%d,它是第%d个数字。
    ",m,n+1);
    23 }

    6:有两个小组,分别有5人和7人,调用average函数,分别求这两个组的学生的平均成绩。

     1 float average(float array[],int n)
     2 {
     3     int i;
     4     float aver,sum=array[0];
     5     for(i=1;i<n;i++)
     6     {
     7         sum=sum+array[i];
     8     }
     9     aver=sum/n;
    10     return aver;
    11 }
    12 int main()
    13 {
    14     float score1[5]={88,98,97.5,84.5,86};
    15     float score2[7]={78.5,98,97.5,84.5,86,77,94.5};
    16     printf("第1个小组的成绩是:%6.2f
    ",average(score1,5));
    17     printf("第2个小组的成绩是:%6.2f
    ",average(score2,7));
    18     return 0;
    19 }

    4.内部函数和外部函数

    内部函数只能被本文件中其他函数所调用;static 类型名 函数名(参数列表);

    外部函数可以在其他文件中被调用:extern 类型名 函数名(参数列表);

    C语言中规定,若省略extern则默认为外部函数。

  • 相关阅读:
    Jenkins+ansible+Gitlab集成环境搭建
    Jenkins 和常用工具集成
    Jenkins 安装部署及应用
    ansible 及相关应用
    gitlab 快速安装
    [持续交付实践] 交付流水线设计:基于测试脚本的线上拨测监控系统
    gitlab CICD
    Nginx判断UserAgent添加referer
    Nginx判断变量的配置
    golang 入门之环境搭建
  • 原文地址:https://www.cnblogs.com/wxywxy/p/6858348.html
Copyright © 2011-2022 走看看