1.09第五课 函数

一、调用有参函数

例一、编写一程序,要求用户输入4个数字,输出前两个数中的最大数、后两个书中的最大数、以及四个数中的最大数。

1.0/3 不使用函数

#include<stdio.h>
int main(void)
{
    
    
    float a[4];
    int i;
    float t, u, v;

    for(i=0; i<=3; i++)
    {
    
    
        printf("请输入第%d个数字:", i+1);//有关数组时刻不忘i+1
        scanf("%f", &a[i]);
    }

    if(a[0]<a[1])
    {
    
    
        t=a[1];
    }
    else
    {
    
    
        t=a[0];
    }

    if(a[2]<a[3])
    {
    
    
        u=a[3];
    }
    else
    {
    
    
        u=a[2];
    }

    if(t<u)
    {
    
    
        v=u;
    }
    else
    {
    
    
        v=t;
    }

    printf("前两个数中的最大数%f\n", t);
    printf("后两个数中的最大数%f\n", u);
    printf("四个数中的最大数%f\n", v);
    return 0;
}

2.0/3

#include<stdio.h>
float max(float x, float y);
int main(void)
{
    
    
    float a[4];
    int i;
    float t, u, v;
    for(i=0; i<=3; i++)
    {
    
    
        printf("请输入第%d个数字", i+1);
        scanf("%f", &a[i]);
    }

    t=max(a[0], a[1]);
    u=max(a[2], a[3]);
    v=max(t, u);

    printf("t=%f, u=%f, v=%f", t, u, v);
    return 0;
}

float max(float x, float y)
{
    
    
    if(x>y)
    {
    
    
        return x;
    }
    else
    {
    
    
        return y;
    }
}

3.0/3

//函数部分
float max(float x, float y)
{
    
    
    return x>y?x:y;
}

例二、有两个小组,分别有5名学生和10名学生。请编程输入这些学生的成绩,并调用一个aver函数求这两个小组的平均分。
⚠️1.编写函数时形参是一个数组和数组的大小
2.定义函数时要定义行参的类型

1.0/1

#include<stdio.h>
float aver(float a[],int n);
int main(void)
{
    
    
    float a1[5], a2[10];
    int i;
    printf("请输入第一个小组的成绩");
    for(i=0; i<=4; i++)
    {
    
    
        scanf("%f", &a1[i]);
    }
    printf("请输入第二个小组的成绩");
    for(i=0; i<=9; i++)
    {
    
    
        scanf("%f", &a2[i]);
    }

    printf("%f\n", aver(a1, 5));
    printf("%f\n", aver(a2, 10));
    return 0;
}
float aver(float a[], int n)
{
    
    
    float sum=a[0], AverNum;
    int i;
    for(i=1; i<=n; i++)
    {
    
    
        sum=sum+a[i];
    }
    AverNum=sum/n;
    return AverNum;
}

二、调用无参函数

(只做事情不返回值)

例一

在这里插入图片描述

1.0/2
(普通方法)
在这里插入图片描述
1.0/2
(调用无参函数)

#include<stdio.h>
void a();
void b();
void c();
int main(void)
{
    
    
    a();
    b();
    c();
    a();
    b();
    c();
    return 0;
}
void a()
{
    
    
    printf("1234567\n");
}
void b()
{
    
    
    printf("猴博士是大帅逼\n");
}
void c()
{
    
    
    printf("7654321\n");
}

例二、将10个整数由小到大排序

1.0/2
(不使用函数)

#include<stdio.h>
int main(void)
{
    
    
    int a[10];
    int i, j, t;
    for(i=0; i<=9; i++)
    {
    
    
        printf("请输入第%d个整数", i+1);
        scanf("%d", &a[i]);
    }

    for(i=0; i<=8; i++)
    {
    
    
        for(j=i+1; j<=9; j++)
        {
    
    
            if(a[i]>a[j])
            {
    
    
                t=a[i];
                a[i]=a[j];
                a[j]=t;
            }
        }
    }
    for(i=0; i<=9; i++)
    {
    
    
        printf("%d ", a[i]);
    }
    
    return 0;
}

2.0/2

#include<stdio.h>
void Order(int a[], int n);
int main(void)
{
    
    
    int a[10];
    int i;
    for(i=0; i<=9; i++)
    {
    
    
        printf("请输入第%d个数字", i+1);
        scanf("%d", &a[i]);
    }
    Order(a,10);//已经完成排序,只需要输出
    
       for(i=0; i<=9; i++)
    {
    
    
        printf("%d ", a[i]);
    }
    

    return 0;
}

void Order(int a[], int n)
{
    
    
    int i, j, t;
    for(i=0; i<=n-2; i++)
    {
    
    
        for(j=i+1; j<=n-1; j++)
        {
    
    
            if(a[i]>a[j])
            {
    
    
                t=a[i];
                a[i]=a[j];
                a[j]=t;
            }
        }
    }
}

三、函数的嵌套

例一、编程输入4个整数,并找出其中最大的数

#include<stdio.h>
int max4(int a, int b, int c, int d);
int max2(int a, int b);

int main(void)
{
    
    
    int a, b, c, d, Max;
    printf("请输入4个整数:\n");
    scanf("%d %d %d %d", &a, &b, &c, &d);
    Max=max4(a,b,c,d);
    printf("最大数为%d\n", Max);
    return 0;
}

int max4(int a, int b, int c, int d)
{
    
    
    return max2(max2(max2(a,b),c),d);
}

int max2(int a, int b)
{
    
    
    return a>b?a:b;
}

四、函数的递归

(不常用,在这里就不说了)

猜你喜欢

转载自blog.csdn.net/weixin_51676760/article/details/112400603
今日推荐