【C语言程序设计】函数程序设计

目录

前言

一、程序阅读

二、程序设计

总结


嗨!我是Filotimo__。很高兴与大家相识,希望我的博客能对你有所帮助。

本文由Filotimo__✍️原创,首发于CSDN。

如需转载,请事先与我联系以获得授权⚠️。

欢迎大家给我点赞、收藏⭐️,并在留言区与我互动,这些都是我前进的动力!

我的格言:森林草木都有自己认为对的角度。

前言

函数是C语言中的核心概念之一,它们提供了一种模块化和可重用的方式来组织代码,使我们能够更加高效和灵活地编写程序。


一、程序阅读

1.1 第一个程序阅读

#include 

int fun(int a)
{
    static int m = 5;
    m = m + a;
    return m;
}

int main()
{
    int p;
    p = fun(4);
    printf("%d", p);
    p = fun(6);
    printf("%d\n", p);
    return 0;
}

`fun` 函数是一个整型函数,它接受一个整数参数 `a`。在函数内部,定义了一个静态整型变量 `m`,并初始化为 5。静态变量的生命周期会持续到程序运行结束。然后,将 `m` 的值与 `a` 相加,并将结果重新赋给 `m`。最后,返回 `m` 的值作为函数的结果。

在`main` 函数内部,首先声明了一个整型变量 `p`。然后,调用 `fun` 函数,并将参数 `4` 传入,并将函数的返回值赋给 `p`。接下来,使用 `printf` 函数将 `p` 的值输出到标准输出。然后,再次调用 `fun` 函数,并将参数 `6` 传入,并将返回值赋给 `p`。最后,再次使用 `printf` 函数将最新的 `p` 的值输出到标准输出,并添加一个换行符。最后,函数返回 0 表示程序正常结束。

这段代码通过调用函数来计算一个静态变量的累加结果。

运行结果:

【C语言程序设计】函数程序设计_第1张图片

1.2 第二个程序阅读

#include 

int a = 5;

void fun(int b) {
    int a = 10;
    a += b;
    printf("%3d", a);
}

int main() {
    int c = 20;
    fun(c);
    a += c;
    printf("%3d\n", a);
    return 0;
}

首先定义了一个全局变量 `a`,并将其初始化为 5。全局变量的作用域是整个程序。

`fun` 函数是一个无返回值的函数,它接受一个整数参数 `b`。在函数内部,定义了一个局部变量 `a`,并将其初始化为 10。这个局部变量 `a` 与全局变量 `a` 同名,但是是两个不同的变量,具有不同的内存位置。然后,将局部变量 `a` 的值与参数 `b` 相加,并将结果赋值给局部变量 `a`。最后,使用 `printf` 函数将局部变量 `a` 的值以占位宽度为 3 的格式输出到标准输出。

在`main` 函数内部,首先定义了一个整型变量 `c`,并将其初始化为 20。然后,调用 `fun` 函数,并将变量 `c` 作为参数传递。在 `fun` 函数内部,局部变量 `a` 的值被计算,并且以占位宽度为 3 的格式输出。接下来,全局变量 `a` 的值与变量 `c` 相加,并将结果赋给全局变量 `a`。最后,使用 `printf` 函数将最新的全局变量 `a` 的值以占位宽度为 3 的格式输出到标准输出,并添加一个换行符。最后,函数返回 0 表示程序正常结束。

这段代码演示了全局变量和局部变量的概念,以及变量作用域的范围。其中,函数 `fun` 修改了局部变量 `a` 的值,并将结果输出。`main` 函数使用全局变量 `a` 和局部变量 `c` 进行计算,并输出最终结果。

运行结果:

【C语言程序设计】函数程序设计_第2张图片

二、程序设计

2.1 第一个程序设计

编一函数,求f(x)= &x2+1,x>10&x2, -1≤x≤10&x2-1,x<-1 的值,要求函数原型为float fun(float x)。

实现代码:

#include 

float fun(float x);

int main() {
    float x, y;
    printf("x=");
    scanf("%f", &x);
    y = fun(x);
    printf("f(x)=%f", y);
    return 0;
}

float fun(float x) {
    float y;
    if (x > 10)
        y = x * x + 1;
    else if (x > -1 && x < 10)
        y = x * x;
    else if (x < -1)
        y = x * x - 1;
    return y;
}

在 main 函数体内部,定义了两个浮点数变量 x 和 y。程序通过 printf 函数向用户请求输入要计算的浮点数 x,并通过 scanf 函数将用户输入的数据储存到 x 变量中。然后程序通过调用函数 fun 对输入的数值进行计算,并将 y 变量储存计算结果。最后,程序通过 printf 函数将计算结果输出到屏幕上,并以换行符结束。

函数 fun 的逻辑如下:

如果输入值 x 大于 10,那么计算 y = x * x + 1。

如果输入值 x 大于 -1 且小于 10,那么计算 y = x * x。

如果输入值 x 小于 -1,那么计算 y = x * x - 1。

最后,函数返回 y。

运行结果:

【C语言程序设计】函数程序设计_第3张图片

2.2 第二个程序设计

用一个函数求1!+2!+3!…的前n项之和。(n从键盘输入)。

实现代码:

#include 

// 计算阶乘的函数
int factorial(int n) {
    if (n == 0 || n == 1) {
        return 1;
    } else {
        return n * factorial(n - 1);
    }
}

// 计算阶乘和的函数
int sumOfFactorials(int n) {
    int sum = 0;

    for (int i = 1; i <= n; i++) {
        sum += factorial(i);
    }

    return sum;
}

int main() {
    int n;
    printf("请输入一个正整数 n:");
    scanf("%d", &n);

    int result = sumOfFactorials(n);
    printf("前 %d 项阶乘的和为:%d\n", n, result);

    return 0;
}

这段 C 代码实现了一个函数,用于计算前 n 项阶乘的和。代码分为三个部分:

1. `factorial` 函数计算阶乘:使用递归的方式计算阶乘。

2. `sumOfFactorials` 函数计算阶乘和:使用 for 循环计算前 n 项阶乘,并将阶乘累加到和中。

3. `main` 函数用于获取用户输入,计算并输出阶乘和。

整个程序用到了输入/输出库的函数,比如 `printf` 和 `scanf`。计算阶乘时使用了递归,计算阶乘和时使用了循环和调用上述递归函数。最终输出结果。

运行结果:

【C语言程序设计】函数程序设计_第4张图片


总结

通过学习本文所介绍的内容,我们可以更好地理解C语言中的函数程序设计。希望这些知识能够帮助您提升C语言编程技能,成为一名更出色的程序员。

你可能感兴趣的:(c语言程序设计,c语言,算法,开发语言,c++,数据结构,笔记,学习)