C primer plus 第六版 第九章 第九題 程式設計練習答案
/*
本程式應 習題-9 建立。題目要求: 使用遞迴函式重寫程式設計練習8。
*/
#include<stdio.h>
double power(double x, int y, const double first_x);
int main(void)
{
double value = 0;
double f = 0;
int m = 0;
double first_x = 0; // 儲存求冪運算指數,為求冪運算而建立。
printf("Enter a number and to positive integer power to which.\n");
printf("The number will be raised. Enter q to quit.\n");
printf("Now, please enter number :");
while (scanf_s("%lf%d", &value, &m) == 2)
{
const double first_x = value; // 儲存求冪運算指數。並用 const 鎖定。
f = power(value, m, first_x);
if (f == 0)
{
printf("Please input again :");
continue;
}
else
{
// 空語句。
;
}
printf("%.3g to the power %d is %.5g \n\n", value, m, f);
printf("Enter next pair of numbers or q to quit :");
}
printf("Bye !\n");
return 0;
return 0;
}
double power(double x, int y, const double first_x)
{
double one = 1; // 計算負冪用。
int i = 1; // 對比 冪 的次數,遞迴處 if表示式 使用。
double value = 0; // 接受遞迴呼叫函式的返回值。
if (x == 0 && y == 0)
{
// 在指數為 0 , 0 次冪的情況下。報告 0 的 0 次冪未定義,把該值處理為 1。
}
else if (x == 0)
{
// 在指數為 0 時,報告 0 的任何次冪都為 0。
printf("0 的任何次冪都為 0, 請重新輸入。\n");
}
else if (y == 0)
{
// 在冪為 0 的情況下, 報告任何數的0次冪都為1。
printf("任何數的0次冪都為1, 請重新輸入。\n");
}
else
{
// 空語句。
;
}
/* point !! 本題核心。
本題要求以遞迴函式實現求冪運算。
遞迴的難處之一在於結點,即結束點。
本程式將以 求冪運算的 冪 的次數作為結點,
每遞迴一次該函式,則 進行一次求冪運算;相應的,冪的次數減1。
冪的次數為0 則結束遞迴。
*/
if (i != y)
{
// 每次遞迴,冪的次數 y 自減。減到0結束。
// first_x 為指數,為求冪運算而建立。
x *= first_x;
y--;
value = power(x, y, first_x);
}
else
{
value = x;
}
if ( first_x < 0 )
{
// 在指數小於0的情況下,即為負數。則進行負冪計算。
// (負冪計算即為 x的y次冪 求其冪的倒數即可得出。 )
value = one / value;
}
else
{
// 空語句。
;
}
return value;
}
相關文章
- C primer plus 第六版 第九章 第一題 程式設計練習答案程式設計
- C primer plus 第六版 第九章 第二題 程式設計練習答案程式設計
- C primer plus 第六版 第九章 第三題 程式設計練習答案程式設計
- C primer plus 第六版 第九章 第四題 程式設計練習答案程式設計
- C primer plus 第六版 第九章 第五題 程式設計練習答案程式設計
- C primer plus 第六版 第九章 第六題 程式設計練習答案程式設計
- C primer plus 第六版 第九章 第七題 程式設計練習答案程式設計
- C primer plus 第六版 第九章 第八題 程式設計練習答案程式設計
- C primer plus 第六版 第九章 第十題 程式設計練習答案程式設計
- C primer plus 第六版 第九章 第十一題 程式設計練習答案程式設計
- C Primer Plus 第六版 程式設計練習第九章答案 最新出爐程式設計
- C primer plus 第六版 第十一章 第九題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第九題 程式設計練習答案程式設計
- C primer plus 第六版 第十章 第九題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第一題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第二題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第三題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第四題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第五題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第六題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第七題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第八題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第十題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第十一題題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第六題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第七題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第八題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第十題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第一題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第二題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第三題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第四題 程式設計練習答案程式設計
- C primer plus 第六版 第六章 第五題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第十四題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第十五題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第十二題 程式設計練習答案程式設計
- C primer plus 第六版 第十一章 第十三題 程式設計練習答案程式設計
- C primer plus 第六版 第十章 第二題 程式設計練習答案程式設計