1. 請寫一個程式計算 10! ,也就是 10*9*8*...._1 。
#include <stdio.h>
int main()
{
int i, sum = 1;
for (i = 10; i >= 1; i--)
{
sum = sum * i;
}
printf("10!=%d\n", sum);
return 0;
}
執行結果:
10!=3628800
2. 請寫一個程式印出九九乘法表。
#include<stdio.h>
//也可把int j,k寫在此行
int main() { // 別忘記main()
int j,k;
for(j=1;j<=9;j++) {
for (k=1;k<=9;k++) {
printf("%d x %d = %d\n",j,k,j*k);
}
}
}
執行結果:
1 x 1 = 1
1 x 2 = 2
…
9 x 9 = 81
3. 請檢查某數是否為質數?
範例: isPrime(17) => true
isPrime(int i) {
int d;
for(d=2;d<i;d++) {
if ((i%d)=0) {
return false;
}
else return true;
}
}
int main() {
printf("isPrime(17) = %d",isPrime(17));
}
Error:

lvalue required as left operand of assignment // =(指定)改成==(等於)
'printf' was not declared in this scope // 缺#include <stdio.h>
修改版本:
#include <stdio.h> // 別忘記#include <stdio.h>
isPrime(int i) {
int d;
for(d=2;d<i;d++) {
if ((i%d)==0) { // =不是等於喔,==才是
return false;
}
else return true;
}
}
int main() {
printf("isPrime(17) = %d",isPrime(17));
}
執行結果:
isPrime(17) = 1
4. 請在一個已經排序的陣列中之正確位置插入一個數值。(範例: insert([1,2,5,6,7], 3) => [1,2,3,5,6,7])
第一時間沒有想出來,於是跟憲億同學借檔案參考,但用Dev-C++編譯時出現問題!

根據錯誤的訊息,在網路上找到了這篇文章,文中教學更改專案中的編譯器選項,但這只是個小程式,因此直接更改全局設置


完工,正常執行!
5. 請算出某陣列的平均值?(範例: mean([1,2,3,4,5]) => 3)
#include <stdio.h>
mean(int a[],int length) {
int sum = 0;
for (int i=0;i<length;i++) { //別忘記i=0前面要定義型態
sum += a[i];
}
return sum/length;
}
main() {
int a[] = {1,2,3,4,5};
printf("mean([1,2,3,4,5]) = %d",mean(a,5));
}
執行結果:
mean([1,2,3,4,5]) = 3
9. 請用遞迴計算 n! = n_…_2*1 ?(範例: factorial(3) = 6)
#include <stdio.h>
int factorial (int i) {
if (i==1) {
return 1;
}
else {
return (i*factorial(i-1));
}
}
int main () {
printf("factorial(3)=%d",factorial(3));
}
執行結果:
factorial(3)=6
但有三題沒有解出來:
6.請寫一個函數計算兩矩陣相加?(範例: add([[1,2],[3,4]], [[1,1],[1,1]]) => [[2,3], [4,5]]) 7.寫一個程式把矩陣轉置。(範例:transpose([[1,2,3], [3,2,1]]) => [[1,3], [2,2], [3,1]]) 8.請寫一個函數可以傳回陣列的映射值?(範例:map(sqrt, [1,4,9])= [1,2,3])