【C語言教學手冊(四版)-練習題解答】
第8章
8.5 區域、全域與靜態變數
24. 試完成下面的程式碼,使得每呼叫 counter() 函數一次,便會印出 "counter() 已被呼 叫 n 次了" 字串,其中 n 為 counter() 被呼叫的次數(counter() 函數裡計數的變數請 用靜態變數來撰寫)。
#include <stdio.h>
void counter ();
int main()
{
counter();
counter();
count++;
}
void counter()
{
static int n=0;
printf("counter()已被呼叫%d 次了...\n",++n);
}
25. 利用 24 題的 counter() 函數來追蹤 prog8_12 所定義的遞迴函數 fib(),在遞迴的過程中 一共被呼叫幾次。例如,若計算 fib(5),則程式碼的輸出為
#include <stdio.h>
void counter();
int fib(int );
int main()
{
fib(5);
}
void counter(void)
{
static int n=0;
printf("counter()已被呼叫%d 次了\n",++n);
}
int fib(int n)
{
counter();
if(n==1 || n==2)
return 1;
else
return fib(n-1)+fib(n-2);
}
26. 試利用 24 題所撰寫的 counter() 函數來追蹤習題 19 所撰寫的 rpower() 函數,在計算 rpower(2.0,9) 的過程中,rpower() 函數一共被呼叫幾次。
#include <stdio.h>
void counter();
double rpower(double,int);
int main()
{
double b=2.0;
int n=9;
printf("%f^%d=%f\n" ,b ,n , rpower (b,n) );
}
void counter(void)
{
static int n=0;
printf("counter()已被呼叫%d 次了\n",++n);
}
double rpower(double b, int n)
{
counter();
if(n==0)
return 1.0;
else
return (b*rpower(b,n-1));
}
(不好意思小宣傳一下我的繪圖 希望大家喜歡)
\\♥
謝謝大家:))
希望大家支持我會繼續努力
ps
p新的貼圖終於出來了💜💜💜
海苔貓繪圖作品\\
希望大家支持~~
留言列表