找回密码
 立即注册
搜索
热搜: 活动 通知
查看: 71|回复: 0

检测点6-13

[复制链接]

620

主题

336

回帖

1057

积分

管理员

积分
1057
发表于 2026-3-7 16:26:09 | 显示全部楼层 |阅读模式
检测点6-13

1.给定以下代码片段:
char a;
void f (int b)
{
    long int c;
    static signed char d;
    /*其他内容*/
}
具有文件作用域的标识符是_a_;具有块作用域的标识符是_b c d_;具有静态存储期的对象是_a d_;具有自动存储期的对象是_b c_。

2.打印等差数列1,6,11,16,21,…的前25项,要求使用递归。你需要一个对象来控制递归调用的次数,这个对象可以在函数外和函数内,还可以是形参,所以这个程序至少有三种写法。
此题考察递归函数的复杂写法,以及标识符的作用域。答案不唯一,仅供参考:
最合理的方案:
# include <stdio.h>

void next_seqn (int cur, int count)
{
    if (count == 1) printf ("%d ", cur + 5);
    else
    {
        printf ("%d ", cur);
        next_seqn (cur + 5, -- count);
    }
}

int main (void)
{
    next_seqn (1, 25);
}

使用静态存储期的变量方案1:
# include <stdio.h>

int count = 25;

void next_seqn (int cur)
{
    if (count == 1) printf ("%d ", cur + 5);
    else
    {
        printf ("%d ", cur);
        count --;
        next_seqn (cur + 5);
    }
}

int main (void)
{
    next_seqn (1);
}

使用静态存储期的变量方案2:
# include <stdio.h>

void next_seqn (int cur)
{
    static int count = 25;

    if (count == 1) printf ("%d ", cur + 5);
    else
    {
        printf ("%d ", cur);
        count --;
        next_seqn (cur + 5);
    }
}

int main (void)
{
    next_seqn (1);
}


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|鼠侠网 ( 吉ICP备19001332号 )

GMT+8, 2026-3-30 17:53 , Processed in 0.235922 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表