星期二, 5月 26, 2009

C語言入門 20090526 上課小記

************************20090526 陳惠堂 **************************

while(
條件)
{
敘述
}


for
很適合來做固定迴圈
while
比較適合做不固定或是無限迴圈(只知道結束條件, 不知道會跑幾圈)


Lab:

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

#include "conio.h"

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



char ch;

ch = getche();

// for(;ch!='\r';)
使用 for 的方式
//
當輸入字元不是 Enter \r Enter

while(ch != '\r')

{
ch=getche();
}

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




Lab:

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

#include "conio.h"

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



// 宣告 字元 char
char ch;

printf("Enter your Password:");
//
當輸入的字元不等於 Enter 13 Enter 的內碼
while( (ch=getch()) != 13 )
//
列印出 * 字元
printf("*");

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



Lab:
統計 點數

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

#include "time.h"

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



int r,s=0;
// Start Rand
亂數起始值 使用time(0) 去抓現在的時間
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);
}

printf("Sum=%d\n",s);

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



Lab:
統計 點數, 14 點就停下來

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

#include "time.h"

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



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

//
s 不等於 14 繼續執行
while(s != 14)
{
//
先訂定 s 起始值為0 注意這個是在 while 迴圈內
s=0;
//
將亂數 除以6 求餘數 +1 , 因為除以6 會餘 0,1,2,3,4,5
for(int i=0;i<4;i++) r =" rand()%6+1;"> // s = s + r
s += r;
//rand
的起始點都是固定
printf("%d\t",r);

}
//
列出 點數加總
printf(
"sum=%d\n",s);
}





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



*do while
注意 while 後面要加上 ;
語法
do;
{
敘述
}while(
條件);



Lab:
使用 do while 的方式

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

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



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


//
使用 do while 的方式, 先執行敘述 再判斷
do
{ //
先訂定 s 起始值為0 注意這個是在 while 迴圈內
s=0;
//
將亂數 除以6 求餘+1 , 因為除以6 會餘 0,1,2,3,4,5
for(int i=0;i<4;i++)
{
r = rand()%6+1;
// s = s + r
s += r;
//rand
的起始點都是固定
printf("%d\t",r);

}
//
列出 點數加總
printf("sum=%d\n",s);
//
s 不等於 14 繼續執行, 注意 do while 後面的 while要加上 ;
}while(s != 14);

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




Lab:
使用 do while 的方式

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

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



//設定起始值 s=0 t=0 來算次數
int r,s=0,t=0;
// Start Rand
亂數起始值 使用time(0) 去抓現在的時間
srand(time(0));


//
使用 do while 的方式, 先執行敘述 再判斷
do
{ //
先訂定 s 起始值為0 注意這個是在 while 迴圈內
s=0;
//
將亂數 除以6 求餘+1 , 因為除以6 會餘 0,1,2,3,4,5
for(int i=0;i<4;i++)
{
r = rand()%6+1;
// s = s + r
s += r;
//rand
的起始點都是固定
printf("%d\t",r);

}
//
列出 點數加總
printf("sum=%d\n",s);


//
每執行一次 t + 1
t++;

//
s 不等於 14 繼續執行
}while(s != 14);

//
列出執行的次數
printf("Play Time counts: %d\n",t);

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




Lab:

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

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



//定義一個 for 迴圈 i 要小於 3 才執行
for(int i=0; i<3;i++)
{
//
執行另一個 子迴圈 for , j 要小於 5 才執行
for(int j=0; j<5;j++)

//
列印出 i 還有 j 的值
printf("i=%d,j=%d\n",i,j);
printf("\n");
}

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


*IF
語法
if(
條件)
{
敘述
}
else
{
敘述
}



Lab: if

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

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



//定義一個整數
int n;

printf("Enter Number:");

//
等使用者輸入 輸入為 n 的值
scanf("%d",&n);

//
抓餘數 是否為0 因為 偶數可以被 2 整除
if(n%2 == 0)

//
可以被整除 列印出 Even 偶數
printf("Even\n");

//
如果 餘數不等於 0
else
//
列印出 Odd 奇數
printf("Odd");

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



Lab:
四個一樣才停止

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

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



//設定起始值 s=0 t=0 來算次數
int r,s=0,t=0,p=0;
// Start Rand
亂數起始值 使用time(0) 去抓現在的時間
srand(time(0));


//
使用 do while 的方式, 先執行敘述 再判斷
do
{ //
先訂定 s 起始值為0 注意這個是在 while 迴圈內
s=0;
//
將亂數 除以6 求餘+1 , 因為除以6 會餘 0,1,2,3,4,5
for(int i=0;i<4;i++)
{
r = rand()%6+1;

//
針對第一次執行
if(i == 0)
{
//p
等於丟出來的點數
p=r;
printf("p=%d\n",p);
}
//
如果 r 等於 p (因為第2r會再產生), 次數 再加 1
if(r == p)
s++;
//rand
的起始點都是固定
printf("%d\t",r);

}

printf("\n",s);
//
每執行一次 t + 1
t++;

//
s 不等於 4 繼續執行, 也就是沒有四顆一樣
}while(s != 4);

//
列出執行的次數
printf("Play Time counts: %d\n",t);

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



*
巢狀 IF
語法
if(
條件1)
{
敘述1
}
else if(
條件2)
{
敘述2
}
else if(
條件n)
{
敘述n
}
else
敘述


Lab: BMI
計算 + IF

// include 引入 .h (標頭檔)
// header .h
要放在程式的最前面
//
引入 stdio.h stdlib.h
#include "stdio.h"
#include "stdlib.h"
#include "math.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);



//利用巢狀 IF 來告知 體重BMI狀況
if(bmi <>
printf("
您的體重為 過輕\n");
else if(bmi <>
printf("
您的體重為 標準\n");
else if(bmi <>
printf("
您的體重為 過重\n");
else if(bmi <>
printf("
您的體重為 輕度肥胖\n");
else if(bmi <>
printf("
您的體重為 中度肥胖\n");
else
printf("
您的體重為 重度肥胖\n");





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



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


沒有留言: