寫一程式輸入5個整數數字,計算其總合和平均。解析:
#include <stdio.h> int main { int i; // 紀錄迴圈執行次數 int inputNum; // 儲存目前輸入的數值 int sum = 0; // 儲存到目前為止的總和 for (i = 1; i <= 5; i++) { // 此迴圈執行5次 printf("Please Input Number %d: ",i); // 提示使用者輸入第i個數字 scanf("%d", &inputNum); // 讀入整數到inputNum sum = sum + inputNum; // 加總到sum變數 } printf("Sum is %d, average is %lf\n", sum, (double)sum / 5); // 輸出結果 }
寫一函數輸入參數int n,傳回1+2+3...+n的總合。解析:
int sum(int n) { int i; // 紀錄目前要處理的數字 int sum = 0; // 紀錄到目前為止的總和 for (i = 1; i <= n; i++) { sum = sum + i; } return sum; }
寫一函數輸入參數int n,傳回1+3+5...+n的總合。解析:
int sum(int n) { int i; // 紀錄目前要處理的數字 int sum = 0; for (i = 1; i <= n; i += 2) { // i+=2讓i往後面走2個 sum = sum + i; } return sum; }
寫一函數於螢幕上畫出九九乘法表。解析:
void nine() { int i, j; // i表示第i列(橫向),j表示第j行(縱向) for (i = 1; i <= 9; i++) { for (j = 1; j <= 9; j++) { printf("%3d", i * j); } printf("\n"); } }
使用printf撰寫一函數輸入參數int size,並在螢幕上印出正方形,size=3的樣子如下
*** *** ***
解析
/** * print out rectangle * @param size length of the rectangle */ void print_rectangle(int size) { int i, j; // 第i列,第j行 for (i = 1; i <= size; i++) { // 印出第i列 for (j = 1; j <= size; j++) { // 第i列有size個* printf("*"); } printf("\n"); } }
使用printf撰寫一函數輸入int size,並在螢幕上印出斜一邊的三角形,size=3的樣子如下
* ** ***
解析
void print_right_triangle(int size) { int i, j; // 第i列,第j行 for (i = 1; i <= size; i++) { // 印出第i列 for (j = 1; j <= i; j++) { // 第i列有i個* printf("*"); } printf("\n"); } }
使用printf撰寫一函數輸入int size,並在螢幕上印出等腰的三角形,size=3的樣子如下
* *** *****
解析
void print_equilateral_triangle(int size) { int i, j; for (i = 1; i <= size; i++) { // 印出第i列 for (j = 1; j <= size-i; j++) { // 第i列 有size-i個空格 printf(" "); } for (j = 1; j <= 2 * i - 1; j++) { // 以及2*i-1個* printf("*"); } printf("\n"); } }
上述問題的另一個想法是
void print_equilateral_triangle(int size) { int i, j; for (i = 1; i <= size; i++) { // 印出第i列 for (j = 1; j < size + i; j++) { // 每一列有size+i-1個符號 if (j <= size - i) { // 在size-i左邊(含)的符號是空白 printf(" "); } else { // 其他的是* printf("*"); } } printf("\n"); } }
使用printf撰寫一函數輸入int size,並在螢幕上印出等腰的三角形,size=3的樣子如下
* *** ***** *** *
解析
void print_diamond(int size) { int i, j; for (i = 1; i <= size; i++) { // 先印出上面的size列 for (j = 1; j < size + i; j++) { if (j <= size - i) { printf(" "); } else { printf("*"); } } printf("\n"); } for (i = size - 1; i >= 1; i--) { // 在印出下面的size-1列 for (j = 1; j < size + i; j++) { // 這部分和上半部是一樣的 if (j <= size - i) { printf(" "); } else { printf("*"); } } printf("\n"); } }
寫一函數求兩個整數的最大公因數,解析:
int gcd(int x, int y) { int tmp; // 如果x < y 則下面的迴圈執行第一次時就會交換x,y了 while (x % y != 0) { tmp = y; y = x % y; x = tmp; } return y; }
寫一函數求費氏數,解析:
int fab(int n) { int fn_1 = 1, fn_2 = 0; // 紀錄最近找到的兩個費氏數 int i, tmp; // i表示目前要找F(i) if (n <= 1) return n; for (i = 2; i <= n; i++) { tmp = fn_1; // 先把fn_1紀錄在tmp fn_1 += fn_2; // 最新的費氏數是前面兩個相加 fn_2 = tmp; // 第二新的就是原先的fn_1 } return fn_1; }