|
|
检测点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);
}
|
|