C语言之函数篇

来源:互联网 发布:360 禁止程序访问网络 编辑:程序博客网 时间:2024/06/18 20:13
函数(function)是用于完成特定任务的程序代码的自包含单元。
    为什么要使用函数?第一,函数的使用可以省去重复代码的编写。如果程序中需要多次使用某种特定的功能,那么只需编写一个合适的函数即可。第二,即使某种功能在程序中只使用一次,将其以函数的形式实现也是有必要的,因为这使程序更加模块化,从而有利于程序的阅读、修改和完善。

    可以把函数看作“黑盒子”,即对一定的输入会产生特定的结果或返回某个数值,而黑盒子的内部行为并不需要考虑,除非是该函数的编写者(相对于函数的使用者)。例如,使用printf()函数时,只需向其传递一个控制字符串,或许还有其他一些参数,然后就可以预测到printf()的执行结果,而无需了解printf()的内部代码。以这种方式看待函数有助于把精力投入到程序整体设计而不是其实现细节。因此,编写函数代码之前首先需要考虑的是函数的功能以及函数和程序整体上的关系。

带有参数的函数

假设有如下函数原型:
void my_func(int n);
    上述函数原型表明my_func()接受一个int类型的参数。声明一个参数就创建了一个被称为形式参数的变量。本例中,形式参数是叫做n的int类型变量。像my_func(10)这样的函数调用会把10赋给n。称函数调用传递一个值,这个值被称为实际参数。因此,函数调用my_func(10)把实际参数10传递给函数,然后函数把10赋给形式参数n。
    函数中的变量名字是局部的。这意味着在一个函数里定义的名字不会与其他地方相同的名字发生冲突。
    如同函数内部定义的变量一样,形式参量是局部变量,它们是函数所私有的。
    函数原型中可以省略变量名。在原型中使用变量名并没有实际地创建变量。



#include <stdio.h>
int main(void)
{
    const float MIN = 0.0f;
    const float MAX = 100.0f;


    float score;
    float total = 0.0f;
    int n = 0;
    float min = MAX;
    float max = MIN;


    printf("Enter the first score (q to quit): ");
    while (scanf("%f", &score) == 1)
    {
    // 筛选无效的分数
        if (score < MIN || score > MAX)
        {
            printf("%0.1f is an invalid value. Try again: ", score);
            continue; // continue语句导致程序跳过循环其余的用于处理有效输入的部分
        }
        printf("Accepting %0.1f:\n", score);
        min = (score < min) ? score: min;
        max = (score > max) ? score: max;
        total += score;
        n++;
        printf("Enter next score (q to quit): ");
    }
    if (n > 0)
    {
        printf("Average of %d scores is %0.1f.\n", n, total / n);
        printf("Low = %0.1f, high = %0.1f\n", min, max);
    }
    else
        printf("No valid scores were entered.\n");
    return 0;
}

原创粉丝点击