题目

编写一个包含静态局部变量(static)的函数,用于统计并打印该函数在程序运行期间被累积调用的次数。

输入格式:一行输入一个正整数 k,表示需要连续调用该函数的次数。

输出格式:每次调用输出当前累计的调用次数,分行输出。

数据范围与约定:1 ≤ k ≤ 100。

思路与算法

1. static 局部变量生命周期
普通局部变量在函数退出时自动销毁;而 static 修饰的局部变量存储在静态数据区,生命周期贯穿程序始终,只在第一次执行时初始化一次。

2. 状态保持特性
函数多次调用之间,static 变量会保留上一次的值,因此非常适合用于内部计数器或状态保持。

完整程序

#include <stdio.h>

static int bump(void)
{
    // static 局部变量:生命周期贯穿整个程序运行期,仅在首次调用时初始化一次
    static int cnt = 0;
    cnt++;
    return cnt;
}

int main(void)
{
    int n;
    if (scanf("%d", &n) != 1 || n < 1) {
        return 1;
    }
    // 每次调用 bump(),函数内部的 cnt 都会在上次结果的基础上自增
    for (int i = 0; i < n; i++) {
        printf("%d\n", bump());
    }
    return 0;
}

运行示例

输入:

3

输出:

1
2
3