以下作業,後面的題目可以使用前面題目設計的函數。

1.寫一交換函數 , 將傳入的兩數做交換。

函數原型
void swap(int *, int *)

說明:
傳入 a, b 並將 a,b 兩內容互換。

傳入
兩整數 a,b

傳回


使用範例:
int a=3, b=8;
printf("a=%d , b=%d\n",a,b);
swap(&a, &b);
printf("a=%d , b=%d\n",a,b);

將下列程式碼 (Dev C++ 版本),複製至你的程式碼,並在副程式部份填入你的程式碼。

#include <stdio.h>
#include <stdlib.h>
swap(int *a, int *b){
//寫下你的程式碼

}
int main(int argc, char *argv[]) {
     int a=3, b=8;
     printf("a=%d , b=%d\n",a,b);
     swap(&a, &b);
     printf("a=%d , b=%d\n",a,b);
}




解答

2.寫一交換函數 , 將傳入的兩數做交換。

函數原型
void swap(int &, int &)

說明:
傳入 a , b 並將 a , b 兩內容互換。

傳入
兩整數 a , b

傳回


使用範例:
int a=3 , b=8;
printf("a=%d , b=%d\n",a,b);
swap(a , b);
printf("a=%d , b=%d\n",a,b);

將下列程式碼 (Dev C++ 版本),複製至你的程式碼,並在副程式部份填入你的程式碼。

#include <iostream>
using namespace std;
swap(int &a, int &b){
//寫下你的程式碼

}
int main(int argc, char *argv[]) {
     int a=3, b=8;
     cout << a << " , " << b << endl;
     swap(a, b);
     cout << a << " , " << b << endl;
     return(0);
}




解答
3.求正整數 n 是否為費氏數列中之數

函數原型
unsigned int isFibonacci(unsigned int n)

說明:
傳入正整數 n ,若 n 為費氏數列其中一成員,則函數傳回 1,否則傳回 0。
n 不超過 unsigned int 最大正整數範圍 4,294,967,295。

傳入
一正整數

傳回
若為費氏數傳回 1,否則傳回 0。

使用範例:
unsigned int a;
scanf("%u",&a);
printf("%u is Fibonacci? = %s\n",a , (isFibonacci(a)?"yes":"no"));

將下列程式碼 (Dev C++ 版本),複製至你的程式碼,並在副程式部份填入你的程式碼。

#include <iostream>
using namespace std;
unsigned int isFibonacci(unsigned int n){
    //寫下本題你的程式碼

}

int main(int argc, char *argv[]) {
     unsigned int n;
     cout << "n=";cin >> n;
     cout << n << " is Fibonacci? = " << (isFibonacci(n)?"yes":"no") << endl;
     return(0);
}










解答

4.求第 n 個費氏數,

函數原型
int Fibonacci(int n)

說明:
原費氏數定義如下:
F(1)=1
F(2)=1
F(n)=F(n-1)+F(n-2)

請寫一程式,輸入正整數 n,程式輸出 F(n) 之值。

傳入
一正整數 n (1≤n≤47)

傳回
F(n)

使用範例:
int n;
scanf("%d", &n);
printf("F(%d)=%u\n",n ,Fibonacci(n));

將下列程式碼 (Dev C++ 版本),複製至你的程式碼,並在副程式部份填入你的程式碼。

#include <iostream>
using namespace std;
unsigned int Fibonacci(int n){
    //寫下本題你的程式碼

}

int main(int argc, char *argv[]) {
     unsigned int n;
     cout << "n=";cin >> n;
     cout << "F(" << n << ") = " << Fibonacci(n) << endl;
     return(0);
}








解答

5.傳回正整數 n 是否為阿姆斯壯數

函數原型
int isArmstrong(int n)

說明:
傳入一自然數 n,程式判斷 n 是否為阿姆斯壯數,若是則傳回 1,否則傳回 0。

傳入
一自然數 n (1≤n<109)

傳回
n 若為阿姆斯壯數,若是則傳回 1,否則傳回 0。

使用範例:
int n;
scanf("%d", &n);
printf("%d is Armstrong = %s\n", n, (isArmstrong(n)?"yes":"no"));

將下列程式碼 (Dev C++ 版本),複製至你的程式碼,並在副程式部份填入你的程式碼。

#include <iostream>
#include <math.h>
using namespace std;
int isArmstrong(int n){
     //寫下本題你的程式碼

}

int main(int argc, char *argv[]) {
     int n;
     cout << "n = ";cin >> n;
     cout << n << " is " << (isArmstrong(n)?"":"not ") << "an Armstrong.\n";
     return(0);
}












解答

6.使用上面 "求是否阿姆斯壯數" 的函數,寫一程式,求 n 位數的所有阿姆斯壯數。

函數原型
void ListArmstrong(int n)

說明:
傳入一自然數 n ,程式列出所有 n 位數(自然數)的阿姆斯壯數。

傳入
一自然數 n (1≤n≤8)

傳回


功能
輸出所有 n 位數(自然數)的阿姆斯壯數。

使用範例:
int n;
scanf("%d", &n);
ListArmstrong(int n);

將下列程式碼 (Dev C++ 版本),複製至你的程式碼,並在副程式部份填入你的程式碼。

#include <iostream>
#include <math.h>
using namespace std;
int isArmstrong(int n){
//將上一題正確的演算法貼近來

}
void ListArmstrong(int n){
//寫下本題你的演算法

}
int main(int argc, char *argv[]) {
     int n;
     cout << "n = ";cin >> n;
     ListArmstrong(n);
     return(0);
}

















解答