星期二, 6月 16, 2009

20090609 C語言進階上課小記

*****************************20090609 陳惠堂*********************************************
陣列 Array
  • 同一個時間點輸入大量的資料
  • 只有一種型別, 不可以混合
  • array index 陣列索引值 n[0] 代表 n 的第一個元素, 第一個元素起始值為0
  • 陣列長度陣列索引值 必須是正值
  • 如果會給初值, 一般來說 不會指定陣列長度
  • 陣列名稱是位址, 也是常數. 不可以寫在 = 的左邊
  • 當有相同類型的資料, 要同時大量輸入的時候, 使用陣列來處理
  • 使用陣列的需求1 排序
語法
型別 陣列名稱[長度]
Lab: 輸入數字判斷大小
// include 引入 .h (標頭檔)
// header .h 要放在程式的最前面
// 引入 stdio.h 及 stdlib.h
#include "stdio.h"
#include "stdlib.h"

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


int n,max,max_t,min,min_t;
for(int i=1;i<=10;i++)
{
printf("No.%d:",i);
scanf("%d",&n);

//先給第一次的初始值
if(i==1)
{
max = min = n;
//記錄是第幾次輸入進去的
max_t=min_t=1;
}

//更新最大值
if(n>max)
{
max=n;
//記錄是第幾次輸入進去的
max_t=i;
}
//更新最小值
if(n<min)
{
min=n;
min_t=i;
}

}
printf("max=%d\t Times=%d\n",max,max_t);
printf("min=%d\t Times=%d\n",min,min_t);

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

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

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


//宣告陣列 n 長度為 10
int n[10]={1,2,3,4,5,6,7,8,9,10};

//利用 for 來列出 陣列的值
for(int i=0;i<10;i++)
printf("array n is %d\n",n[i]);

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

Lab: 利用 for 讓使用者填入陣列資料
// include 引入 .h (標頭檔)
// header .h 要放在程式的最前面
// 引入 stdio.h 及 stdlib.h
#include "stdio.h"
#include "stdlib.h"

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


int n[10];

//利用 for 迴圈 填入 陣列資料
for(int i=0;i<10;i++)
{
// i+1 不會影響 i 只是讓 user 看的
printf("NO.%d:",i+1);
//讓使用者輸入 陣列的值
scanf("%d",&n[i]);
}

//利用for 列印出來
for(int i=0;i<10;i++)
{
printf("array value is %d\n",n[i]);
}

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

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

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


//亂數起始值
srand(time(0));

int n[10],temp;

for(int i=0;i<10;i++)
{
//將rand 值除以 50 取餘數 加上 150
n[i] = rand() %50 + 150;
printf("Height=%d\n",n[i]);
}


//再利用 for 來跑9次 做所有的排序
//稱為 Bobble Sort 泡沫排序
for(int y=0;y<9;y++)
{
//利用 for 來比大小 做置換 swap 將第1個抓到定點
for(int x=0;x<9;x++)
{
if(n[x] < n[x+1])
{
temp = n[x];
n[x] = n[x+1];
n[x+1] = temp;
}
}
}

for(int i=0;i<10;i++)
{
printf("after sort = %d\n",n[i]);
}

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()
{


//亂數起始值
srand(time(0));
int n[6];

for(int i=0;i<6;i++)
{
n[i] = rand() %49 + 1;

//利用 for 迴圈
for(int j=0;j<i;j++)
{
//如果號碼一樣, 處理方式
if(n[i] == n[j])
{
i--;
//如果相等, 中斷程式for(int j=0;j<i;j++)
//不會中斷 for(int i=0;i<49;i++)
break;
}
}



}


//利用 for 列印出來
for(int i=0;i<6;i++)
{
printf("lottery number is: %d\n",n[i]);
}

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

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

沒有留言: