Task Description
快樂的數字
一個快樂的數字定義的流程如下:讀入一個正整數 n,將 n 的每個數字 (digit) 平方後相加,並取代 n。重複上述流程直到 n=1 或是陷入循環 (即 n 永遠不會等於1) 為止。若 n=1,則輸出true,否則輸出false。
例如 n=19,此流程為 1^2+9^2=82、8^2+2^2=68、6^2+8^2=100、1^2+0^2+0^2=1。因此19是一個快樂的數字,輸出true。
請使用此函數原型 int next_n(int n)、bool contains(int* history, int size, int n)、bool isHappy(int n) 完成。
int next_n(int n) : 找出下一個n
bool contains(int* history, int size, int n) : 判斷 n=1 或是陷入循環,history是陣列,紀錄計算過程中出現的數字,size是history陣列的大小,n是要檢測的數字是否出現循環。
bool isHappy(int n) : 判斷是不是快樂的數字
Hint
Happynumber.h
打上 function header 以及相關的設定。
#include <stdbool.h>
int next_n( int );
bool contains( int *, int , int );
bool isHappy( int );
|
Happynumber.c
撰寫程式碼後對應上傳。
#include "Happynumber.h"
int next_n( int n) {
}
bool contains( int * history, int size, int n) {
}
bool isHappy( int n) {
}
|
main.c
這個檔案無法更改也無須上傳。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <stdio.h>
#include "Happynumber.h"
int main() {
int n;
scanf ( "%d" , &n);
if (isHappy(n)) {
printf ( "true" );
}
else {
printf ( "false" );
}
return 0;
}
|
Input Format
輸入一整數n
Note: 0 < n ≤ 999999999
Output Format
判斷是不是快樂的數字
Sample Input
Sample Output
Sample Input
Sample Output