星期日, 5月 24, 2009

C語言入門 20090521 上課小記

************************20090521 陳惠堂 **************************

*設定預設的程式碼
工具 --> 邊輯器選項 --> 程式碼 --> 預設程式碼 --> 貼上要預設程式碼 --> 確定

*
字串 I/O
以下兩個專屬於字串

puts(
字串)
功用為字串輸出(只做字串輸出) (定義在Stdio)

gets(
字串變數)(定義在Stdio)
功用為字串輸入



Lab:

// include 引入 .h (標頭檔)
// header .h
要放在程式的最前面
//
引入 stdio.h stdlib.h
#include "stdio.h"
#include "stdlib.h"

//進入主程式
int main()
{

//定義字元陣列 name
char name[20];
//
做字串輸出, 一個puts 一定是一行
puts("Enter your name:");

//
等待使用者輸入
gets(name);

//
列印出剛剛的name 好處是空格也可以抓進來
printf("Hello %s\n",name);





system("pause"); //執行系統內的 pause指令 暫停 宣告被寫在 stdlib.h
return 0;
}



*
字元輸入

  • getchar()

    • 輸入會顯示字元

    • 需要按 [Enter]結束

  • getche()

    • 輸入會顯示字元

    • 不需要按 [Enter]結束

    • 宣告於conio.h

  • getch()

    • 輸入不會顯示字元

    • 不需要按 [Enter]結束

    • 宣告於conio.h





Lab: getchar()

// include 引入 .h (標頭檔)
// header .h
要放在程式的最前面
//
引入 stdio.h stdlib.h
#include "stdio.h"
#include "stdlib.h"

//進入主程式
int main()
{

//定義一個字元
char ch;

//
輸入字元定義為ch, 要以Enter 告知結束
ch = getchar();

//
將其列印出來, 結果會去抓第一個字, 因為他是字元, 所以只抓第一個字
printf("Hello %c\n",ch);



system("pause"); //執行系統內的 pause指令 暫停 宣告被寫在 stdlib.h
return 0;
}



Lab: getche()

// include 引入 .h (標頭檔)
// header .h
要放在程式的最前面
//
引入 stdio.h stdlib.h
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"

//進入主程式
int main()
{

//定義一個字元
char ch;

//
輸入字元定義為ch, 使用 getche 來輸入 不需要Enter 告知結束
// getche
定義於 conio.h 所以要使用 #include "conio.h"
ch = getche();

//
將其列印出來, 結果會去抓第一個字, 因為他是字元, 所以只抓第一個字
printf("Hello %c\n",ch);



system("pause"); //執行系統內的 pause指令 暫停 宣告被寫在 stdlib.h
return 0;
}

Lab: getch()

// include 引入 .h (標頭檔)
// header .h
要放在程式的最前面
//
引入 stdio.h stdlib.h
#include "stdio.h"
#include "stdlib.h"

#include "conio.h"

//進入主程式
int main()
{

///定義一個字元
char ch;

//
輸入字元定義為ch, 使用 getch 來輸入 不需要Enter 告知結束
// getch
定義於 conio.h 所以要使用 #include "conio.h" 並不會顯示字元
ch = getch();

//
將其列印出來, 結果會去抓第一個字, 因為他是字元, 所以只抓第一個字
printf("Hello %c\n",ch);



system("pause"); //執行系統內的 pause指令 暫停 宣告被寫在 stdlib.h
return 0;
}



*operator
運算元
數值運算

+
-

*

/

%
求餘數

指定運算元

=

  • 等於的左邊一定是變數

+=

  • a += b

  • a=a+b

-=

*=
/=
%=





Lab:

// include 引入 .h (標頭檔)
// header .h
要放在程式的最前面
//
引入 stdio.h stdlib.h
#include "stdio.h"
#include "stdlib.h"

//進入主程式
int main()
{

//定義兩個整數 a, b
int a,b;

//
定義浮點數 c d
double c;
double d;

a=7;
b=2;
//
運算元有順序問題 , 因為 a/b 先處理, 結果為3.5 但是只處理到整數所以是3
c=a/b;

//
運算元有順序問題 , 因為 a/b 先處理, 結果為3.5 但是只處理到整數所以是3
//
使用(double)a 強制轉型 a double (暫時性的)
d=(double)a/b;

//
將其列印出來
printf("c=%f\n",c);

//
將其列印出來
printf("d=%f\n",d);



system("pause"); //執行系統內的 pause指令 暫停 宣告被寫在 stdlib.h
return 0;
}



以下兩個只針對 1來做累加或是累減,
而且只能出現一次(給變數累 加1或是 減1使用)
++
累加

  • a++ --> a=a+1 , 先處理完運算再把a+1

  • ++a --> a=a+1, 先將a+1 再來運算



--
累減

  • a--


Lab:

// include 引入 .h (標頭檔)
// header .h
要放在程式的最前面
//
引入 stdio.h stdlib.h
#include "stdio.h"
#include "stdlib.h"

//進入主程式
int main()
{

//宣告三個整數 a b c
int a,b,c;

a=1;
b=2;
// c = a+b++
等於下面兩個算式,從左邊看過去
//
所以等於c = a+b , 因為是 b++ , 所以 c=1+2=3
//
處理完運算後 再來執行 b++ --> b = b+1 = 2+1 =3
//
所以 a=1, b=3, c=3
c=a+b++;


//
將其列印出來
printf("a=%d\tb=%d\tc=%d\n",a,b,c);



system("pause"); //執行系統內的 pause指令 暫停 宣告被寫在 stdlib.h
return 0;
}


*
關係運算元
>
大於
>=
大於等於
<
小於
<=
小於等於
==
等於
!=
不等於

&&
AND
||
OR
!
NOT




Lab: BMI
計算

// include 引入 .h (標頭檔)
// header .h
要放在程式的最前面
//
引入 stdio.h stdlib.h
#include "stdio.h"
#include "stdlib.h"

//進入主程式
int main()
{

float w,h,bmi;

printf("Please input your Height(cm)\n");
//
利用scan 定義 h 記得要使用位置 所以前面要加上 & 符號
scanf("%f",&h);

printf("Please input your Weight(KG)\n");

//
利用scan 定義 w 記得要使用位置 所以前面要加上 & 符號
scanf("%f",&w);

//
計算 BMI pow(, 次方)
//BMI
為 體重/身高的2次方
//pow
必須 #include "math.h"
bmi = w/pow(h/100,2);

//
列印出BMI 值取到 小數點2
printf("Your BMI is: %.2f\n",bmi);



system("pause"); //執行系統內的 pause指令 暫停 宣告被寫在 stdlib.h
return 0;
}



*Loop
迴圈

  • for

  • while

  • do .... while


for(
變數初值設定;條件;變數增量運算)
{
xxxx
敘述xxxx
}





Lab: for

// include 引入 .h (標頭檔)
// header .h
要放在程式的最前面
//
引入 stdio.h stdlib.h
#include "stdio.h"
#include "stdlib.h"

//進入主程式
int main()
{

//使用C++的方式來處理
//
使用 for 迴圈 1.初始值i=0 2.判斷 i是否小於10 3.執行敘述每次處理完 i=i+1
for(int i=0;i<10;i++)>

//
列印出來
printf("*");



system("pause"); //執行系統內的 pause指令 暫停 宣告被寫在 stdlib.h
return 0;
}



Lab:

// include 引入 .h (標頭檔)
// header .h
要放在程式的最前面
//
引入 stdio.h stdlib.h
#include "stdio.h"
#include "stdlib.h"

//進入主程式
int main()
{



//使用C++的方式來處理
//
使用 for 迴圈 1.初始值i=0 2.判斷 i是否小於10 3.執行敘述每次處理完 i=i+1
//for
的後面 沒有 ; 分號
// { }
如果迴圈 執行的敘述大於2, 就使用大括號來處理
//
如果沒有打大括號就是針對下一行
for(int i=0;i<10;i++)>
{
//
列印出來
printf("*");
printf("A");
}

system("pause"); //執行系統內的 pause指令 暫停 宣告被寫在 stdlib.h
return 0;
}


Lab: ATM
密碼輸入

// include 引入 .h (標頭檔)
// header .h
要放在程式的最前面
//
引入 stdio.h stdlib.h
#include "stdio.h"
#include "stdlib.h"

//進入主程式
int main()
{



printf("Enter your password:\n");

for(int i=0;i<4;i++)
{
getch();
printf("*\n");
}

system("pause"); //執行系統內的 pause指令 暫停 宣告被寫在 stdlib.h
return 0;
}



rand()
亂數; 0-32767的整數

Lab:

// include 引入 .h (標頭檔)
// header .h
要放在程式的最前面
//
引入 stdio.h stdlib.h
#include "stdio.h"
#include "stdlib.h"
#include "time.h"

//進入主程式
int main()
{



int r;
// Start Rand
亂數起始值 使用time(0) 去抓現在的時間

//#include "time.h"
srand(time(0));

//
將亂數 除以6 求餘數 +1 , 因為除以6 會餘 0,1,2,3,4,5
for(int i=0;i<4;i++)
{
r = rand()%6+1;

//rand
的起始點都是固定
printf(
"%d\t",r);
}

system("pause"); //執行系統內的 pause指令 暫停 宣告被寫在 stdlib.h
return 0;
}



***************************************************************

沒有留言: