2012年7月3日 星期二

C生活筆記 第三課 條件敘述 - if

< 小於
> 大於
== 等於 (注意,是兩個等號)
<= 小於或等於
>= 大於或等於
!= 不等於

舉例
變數 a 是否大於 9 : a > 9
變數 a 和 b 的值是否相等 : a == b
變數 c 是否小於等於 100 : c <= 100
變數 d 是否不等於 e : d != e

&& (And 且)及 || (Or 或)將之連起來
舉例
a大於1且小於100:(a>1)&&(a<100)
a等於b或等於c: (a==b)||(a==c)

如果我們在條件式的前面加上一個驚嘆號 !代表否定not

!( a>9) 和 a<=9 是一樣的。
因為a不大於九 所以就會變成小於等於九

二、if 敘述的語法

接下來我們看到 if 敘述的語法:

if (條件式) 指令一;
上面的語法是如果符合該條件,則執行指令一;有時候我們在條件不成立的時候也必需執行一些指令,這時候可以改用下面的語法:

if (條件式) 指令一;
else 指令二;
上面 else 後面的指令二就是當條件不成立時所要執行的指令。而有時候我們要執行的指令並不只一行,這個時候可以用一對大括弧 { } 把要執行的指令包起來,例如:

if (條件式) {
指令一;
指令二;
指令三;
}
else {
指令四;
指令五;
指令六;
}
上面的語法,當條件成立時程式會執行指令一至三,而當條件不成立的時候則是執行指令四至六。

三、印出 A、B 的大小關係

接下來,我們來寫一個輸入兩個整數 A、B,然後印出兩個變數的大小關係,程式執行的畫面如下(粉紅色代表輸出,淺藍色則是輸入的值):

A, B => 10 20
10 < 20
A, B => 30 20
30 > 20
A, B => 20 20
20 = 20

=>是輸出 前面都忘了講

整個程式如下:

#include <stdio.h>
int main()
{
int a, b;
printf("A, B=> ");
scanf("%d %d", &a, &b);
if(a<b) printf("%d<%d\n", a, b);
if(a>b) printf("%d>%d\n", a, b);
if(a==b) printf("%d=%d\n", a, b);
return 0;
}

上面的例子,我們用一行 scanf() 同時讀取兩個變數 a、b,只要在 scanf 的第一個參數中,將原先的 "%d" 改成兩個 %d 即為 "%d %d",這就是告訴 scanf 要讀取兩個 %d 也就是整數進來,而當然我們後面也要補上兩個整數變數的位址,讓 scanf 可以把讀入的數值寫到變數裡。而同樣的,在 printf 的第一個參數裡如果有兩個以上的 %d 或其他的 %*,後面也要接著同樣數量的變數,而 printf 會自動把後面的第一個變數的值填到第一個 %d 的位置,第二個變數的值填到第二個 %d 的值置,以此類推,全部的變數的值填入完成後,再將整行印出來。



三、練習:

輸入一個整數 a,如果 a 是偶數,則印出 "Yes!",否則印出 "No!"。
10
Yes!
23
No!
提示:可以使用取餘數符號 %, a % 2 代表 a 除以 2 的餘數,當 a 偶數時,a 除以 2 的餘數為 0 。
連續輸入兩個整數 a、b,如果 a 是 b 的倍數,則印出 "Yes!",否則則印出 "No!"。
20 5
Yes!
33 12
No!
提示:可以使用取餘數符號 %, a % b 代表 a 除以 b 的餘數,當 a 是 b 的倍數時,a 可以被 b 整除,即 a 除以 b 的餘數為 0 。



























ANS1:


#include <stdio.h>
int main()
{
int a;
printf("A=> ");
scanf("%d", &a);
if(a%2==0)
printf("YES!");
else 
printf("NO!");
return 0;
}


ANS2:
#include <stdio.h>
int main()
{
int a, b;
printf("A, B=> ");
scanf("%d %d", &a, &b);
if(a%b==0) printf("YES!");
else
printf("NO!");
return 0;
}

C生活筆記 第二課 (變數的使用)


 一、變數是什麼
在程式設計的過程中,我們會需要記錄某些資料,可能是文字,也可能是數字,我們把這些資料記錄在記憶體的某個位址中,並給它一個名稱,這就是變數。由於記憶體的容量是有限的,而每個資料所佔用的空間必須定義清楚,因此 C 語言有下列的基本變數型態:
char 字元,佔 1 Byte
int 整數,佔 2 Bytes(DOS/Win16) 或 4 Bytes(Win32/Unix)
long 長整數,佔 4 Bytes(DOS/Win16) 或 8 Bytes(Win32/Unix)
float 浮點數,佔 4 Bytes (有效位數 7 位)
double 倍精確度浮點數,佔 8 Bytes (有效位數 15 位)
在 C 語言中,宣告一個變數的語法為:
變數型態  變數1, 變數2, ...., 變數n;
例如宣告 a、b、c 三個整數變數:
int a, b, c;
另外,我們也可以在宣告的同時給變數起始值,如:
int a=1, b=2, c=3;
至於變數的名稱,可以使用大小寫字母 A-Z、數字 0-9 及底線符號 _ 等任意組合,但是第一個字母不可以是數字,且組合出來的不可以和 C 的保留字相同(在 Turbo C++ 中以白色表示,如 int、if 等),而且大小寫不同則視為不同的變數,例如 abc 和 Abc 是兩個不同的變數。

二、印出 A+B
接下來,我們來寫一個輸入兩個整數 A、B,然後印出 A+B 的結果,程式執行的畫面如下:
A=> 10
B=> 20
A+B=30
在這邊我們要用到一個新的函數 scanf(),scanf 也是定義在 stdio.h 中,所以我們只要在程式一開頭寫一行 #include <stdio.h>,就可以使用 printf 及 scanf 兩個函數。scanf 的使法如下:
scanf("%d", &變數名稱);
上述 %d 為要輸入的變數種類:
%d -> int    %ld -> long
%f -> float    %lf -> double
%c -> char    %s -> string(字串,以後再說)
第二個參數為該變數的名稱,前面加上一個 & 符號代表該變數的位址,因為 C 語言是傳變數的值給 scanf 而不是傳變數本身,所以必須加上 & 符號傳遞變數的位址,如此 scanf 才能將輸入的值寫到該變數中。
至於要印出變數的值,也是用 printf 中用 %d、%f 之類的語法。因此整個程式如下:
#include <stdio.h>
int main()
{
 int a, b;
 printf("A=> ");
 scanf("%d", &a);
 printf("B=> ");
 scanf("%d", &b);
 printf("A+B=%d\n", a+b);
 return 0;
}
程式執行完畢,請按 Alt+F5 看結果。而最後一個 printf 中的 \n 代表 "換行"

三、練習:
  1. 將上述程式改成下列的輸出方式:
    A=> 10
    B=> 20
    10+20=30
  2. 再將上題改成可輸入帶有小數的數字。(提示 int -> float、 %d -> %f )










ANS:#include <stdio.h>
int main()
{
float a, b;
printf("A=> ");
scanf("%f", &a);
printf("B=> ");
scanf("%f", &b);
printf("%f+%f=%f\n",a,b,a+b);
return 0; 
}