C/C++基礎程式設計班 陣列 講師:林業峻 CSIE, NTU 3/14, 2015.

Slides:



Advertisements
Similar presentations
第 8 章 数组 计算机科学学院 李淮 Tel QQ
Advertisements

While 迴圈 - 不知重複執行次數
翻譯技巧解說 例文 授課教師:何資宜. 一、加譯 「おしん」の視 聴率は、最高の時が 62.9 %に達した。ク ロジロが出てくる 「南極物語」は、配 給収入が 52 億円を超 えて、記録を更新し た。 《阿信》的收視率最 高時曾達 62.9% 。此 外,以兩隻小狗太郎 次郎為主角的《南極 物語》,票房收入也.
CSIM, PU C Language Introduction to the C Programming Language 重覆敘述 (for,while,break,continue) 適合重複性的計算或判斷.
親愛的老師您好 感謝您選用本書作為授課教材,博碩文化準備本書精選簡報檔,特別摘錄重點提供給您授課專用。 說明: 博碩文化:
Loops.
如何查財產(2/6) EX:利息明細提醒您於金融機構有存款;營利(股利)明細提醒您有買股票。
C语言程序设计 第八章 函数.
第4章 鏈結串列(Linked Lists) 4-1 動態記憶體配置-(6) 4-2 鏈結串列的基礎-(7)
C语言程序设计 第十二章 位运算.
第一章 程序设计入门.
C语言程序设计 课程 第5章 数组 主讲:李祥 博士、副教授 单位:软件学院软件工程系.
高级语言程序设计 主讲人:陈玉华.
循环结构又称为重复结构:用来处理需要重复处理的问题,它是程序中一种很重要的结构。
函數 授課:ANT 日期:2009/3/24.
選擇排序法 通訊一甲 B 楊穎穆.
第3章 顺序结构程序设计 本章要点: 格式化输出函数──printf() 格式输入函数——scanf() 字符输出函数——putchar()
Chap 10 函数与程序结构 10.1 函数的组织 10.2 递归函数 10.3 宏定义 10.4 编译预处理.
项目六 用指针优化学生成绩排名 项目要求 项目分析
If … else 選擇結構 P27.
Chap 2 用C语言编写程序 2.1 在屏幕上显示 Hello World! 2.2 求华氏温度 100°F 对应的摄氏温度
Chap 9 结构 9.1 构建手机通讯录 9.2 结构变量 9.3 结构数组 9.4 结构指针.
Introduction to the C Programming Language
STRUCTURE 授課:ANT 日期:2010/5/12.
第七章 函数 目录 有参的加法函数的开发 函数定义的一般形式 函数参数和函数的值 函数的调用
计算概论 第十八讲 C语言高级编程 结构与习题课 北京大学信息学院.
Chap 8 指针 8.1 寻找保险箱密码 8.2 角色互换 8.3 冒泡排序 8.4 电码加密 8.5 任意个整数求和*
第5章 堆疊(Stacks) 5-1 堆疊的基礎 5-2 堆疊的表示法 5-3 堆疊的應用 - 運算式的計算與轉換
Introduction to the C Programming Language
作弊是否很有诱惑性? 上堂课已经讲了 作业不一定在两个小时里都能完成 答疑没有一个人? 作弊是有记录的 心理系很多同学集体作弊,让人震惊
算法的基本概念.
C语言 程序设计基础与试验 刘新国、2012年秋.
多维数组与指针 用指针变量可以指向一维数组中的元素,也可以指向多维数组中的元素。但在概念上和使用上,多维数组的指针比一维数组的指针要复杂一些。 1. 多维数组元素的地址 先回顾多维数组的性质,可以认为二维数组是“数组的数组”,例 : 定义int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};
第13章 结构体的应用 13.1 了解由用户构造的数据类型 13.2 结构体类型说明及结构体变量 13.3 结构体数组
計數式重複敘述 for 迴圈 P
2.1 C语言的数据类型 2.2 常量与变量 2.3 变量赋初值 2.4 各类数值型数据间的混合运算 2.5 C语言的运算符和表达式
第5讲 结构化程序设计(Part II) 周水庚 2018年10月11日.
第0章作业: 教材P12-练习与实践 1.写出用符号’*’输出描绘汉字”大”的流程图。
C语言概述 第一章.
資料結構與C++程式設計進階 排序與搜尋 講師:林業峻 CSIE, NTU 6/ 14, 2010.
C语言复习2----函数.
C程序设计.
C 语言程序设计 程序的循环结构 电大崇信县工作站 梁海亮.
Main() { Dfas Asdfasf fasdfa } #include <stdio.h> void main( ) {
Chap 5 函数 5.1 计算圆柱体积 5.2 使用函数编写程序 5.3 变量与函数.
7.1 C程序的结构 7.2 作用域和作用域规则 7.3 存储属性和生存期 7.4 变量的初始化
C程序设计.
C语言程序设计 李祥 QQ:
C++程式設計入門 變數與運算子 作者:黃建庭.
项目1 C程序设计起步 学习目标: 通过该项目你可以知道: C语言的用途。 C语言的基本符号和关键字。 C语言程序的结构及特点。
第2章 数据类型、运算符与表达式 本章要点: 基本数据类型 常量和变量 算术运算符和算术表达式 关系运算符和关系表达式
第一章 C语言概述 目录 什么是语言、程序 C语言的历史与发展 C语言的书写形式与程序结构 运行C语言的步骤与方法
第二章 类型、对象、运算符和表达式.
Introduction to the C Programming Language
C/C++基礎程式設計班 C++: 物件的使用、參考、重載函式 講師:林業峻 CSIE, NTU 3/28, 2015.
本节内容 函数嵌套调用的内存布局 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 指针类型.
第七章  数 组.
程式設計--linear search 通訊一甲 B 楊穎穆.
第4章 鏈結串列(Linked Lists) 4-1 動態記憶體配置-(6) 4-2 鏈結串列的基礎-(7)
遞迴 Recursion.
結構、檔案處理(Structure, File)
C/C++基礎程式設計班 字元與字串 講師:林業峻 CSIE, NTU 3/14, 2015.
C/C++基礎程式設計班 C語言入門、變數、基本處理與輸入輸出 講師:林業峻 CSIE, NTU 3/7, 2015.
多重條件選擇敘述
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
本节内容 指针类型 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
函式庫補充資料 1.
C语言基础学习 从外行到入门.
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
Presentation transcript:

C/C++基礎程式設計班 陣列 講師:林業峻 CSIE, NTU 3/14, 2015

課程大綱 一維陣列 二維陣列 其他多維陣列

一維陣列的宣告 用途:在記憶體中找出一塊連續的空間來存放多 個相同資料型態的內容 一維陣列的宣告 例如: int a[N]; 語法: 資料型態 陣列名稱[長度]; 例如: int a[N]; (N為一個整數常數, 不為變數) 位置: a a[0] a[1] a[2] … a[N-1] N個欄位

一維陣列的使用 在使用宣告好的陣列時,要使用一個陣列中的元 素可以表示成:陣列名稱[索引]。 範例: 陣列名稱: 用來表示一塊緊密相鄰的記憶體空間的起始位址 索引: 用來表示該陣列元素是在記憶體空間的第幾號位置 範例: int a[3]; // 宣告陣列a有3個整數 a[0]=1; // 把a[0]設定為1 a[1]=2; // 把a[1]設定為2 a[2]=3; // 把a[2]設定為3 a[3] 不要使用超過索引值的資料!

一維陣列的使用 範例:輸入全班3位同學的成績並輸出 比較下列兩個版本程式 思考:如果班上有50位同學的話呢? #include <stdio.h> int main() { int score1, score2, score3; scanf("%d",&score1); printf("I get %d\n",score1); scanf("%d",&score2); printf("I get %d\n",score2); scanf("%d",&score3); printf("I get %d\n",score3); return 0; } #include <stdio.h> int main() { int i; int score[3]; for ( i=0; i<3; i++ ) scanf("%d", &score[i]); printf("I get %d\n", score[i]); } return 0;

一維陣列的使用 使用陣列常搭配使用#define用來定義一個常數, 方便做程式修改 範例:輸入全班50位同學的成績並輸出 #include <stdio.h> #define STUDENT 50 int main() { int i; int score[STUDENT]; for ( i=0; i < STUDENT; i++ ) scanf("%d", &score[i]); printf("I get %d\n",score[i]); } return 0;

一維陣列的初始化 宣告陣列並給初始內容的語法: 資料型態 陣列名稱[長度]={內容0,內容1,內容2,…,內容N-1}; 資料型態 陣列名稱[長度]={0}; //所有資料設為0 int main() { int a[5]={1,2,3,4,5}; // 設定 a[0]=1, a[1]=2, a[2]=3, a[3]=4, a[4]=5 int b[]={1,2,3}; // 若size沒指定, 因為給了3個數字, 在此會自動設定為b[3]; int c[5]={0}; // 設定 c[0]=0, c[1]=0, c[2]=0, c[3]=0, c[4]=0 return 0; }

陣列的複製 因為宣告陣列後如果沒有初始化,之後只能夠一 個一個索引值做設定,如果想要複製整個陣列可 以用memcpy函式做資料複製 memcpy(目標陣列, 來源陣列, sizeof(型態)*個數); #include <string.h> int main() { int a[5] = {1,2,3,4,5}; int b[5]; memcpy(b, a, sizeof(int)*5); return 0; }

一維陣列的應用 範例:輸入班上3位同學分數, 求出它們的平均值. #include <stdio.h> #define STUDENT 3 int main() { int i; double sum=0; double aver; int score[STUDENT]; // 分別讀入3個數值 for ( i=0; i < STUDENT; i++ ) scanf("%d", &score[i]); } // 計算總和 sum+=score[i]; // 求平均值 aver=sum/STUDENT; printf("average=%lf\n",aver); return 0;

練習 延續上頁範例,輸入3位同學成績, 印出平均分數 後, 印出不及格的同學之號碼與分數

練習: 找出數列中最大值 延續上頁範例,輸入3位同學成績, 印出平均分數 與不及格的同學之號碼與分數後, 印出其中最高分 同學之分數

課程大綱 一維陣列 二維陣列 其他多維陣列

二維陣列的使用 二維陣列 Example: int a[M][N]; 資料型態 陣列名稱[長度1][長度2]; (N,M為整數常數, 不為變數) 位置: a a[0][0] … a[0][N-1] a[1][0] … a[1][N-1] … a[M-1][0] … a[M-1][N-1] N個欄位 N個欄位 N個欄位 M*N個欄位

二維陣列的使用 利用連續的記憶體空間,製作行列的效果! EX: int a[2][3]; 位置: a 第0列 第1列 第0行 第1行 第2行

二維陣列 設定二維陣列初值的方法為 宣告陣列後,要設定陣列時, 就必須一個一個欄位 做設定 int main() { int a[2][3]={ {1, 2, 3}, {4, 5, 6} }; int b[2][2]={ 1,2,3,4 }; int c[2][2]={0}; //所有資料設為0 return 0; } int main() { int a[2][2]; a[0][0] = 1; a[0][1] = 2; a[1][0] = 3; a[1][1] = 4; return 0; }

二維陣列與巢狀迴圈 使用巢狀迴圈輸出二維陣列內容: #include <stdio.h> int main() { int a[3][3]={ {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; int i,j; for ( j=0; j<3; j++ ) for ( i=0; i<3; i++ ) printf("%d ", a[j][i]); } printf("\n"); return 0;

二維陣列與巢狀迴圈 範例:輸入兩班上3位同學分數, 然後再次輸出成績. #include <stdio.h> #define CLASS 2 #define STUDENT 3 int main() { int i, j; int score[CLASS][STUDENT]; // 分別讀入兩班各個數值 for ( j=0; j < CLASS; j++ ) printf("班級%d:\n", j+1); for ( i=0; i < STUDENT; i++ ) printf("學生%d: ", i+1); scanf("%d", &score[j][i]); } // 分別輸出兩班各個數值 printf("學生%d: %d分\n", i+1, score[j][i]); return 0;

二維陣列與巢狀迴圈 範例:輸入兩班上3位同學分數, 求出它們的平均值. #include <stdio.h> #define CLASS 2 #define STUDENT 3 int main() { int i, j; double sum=0; double aver; int score[CLASS][STUDENT]; // 分別讀入兩班各3個數值 for ( j=0; j < CLASS; j++ ) printf("班級%d:\n", j+1); for ( i=0; i < STUDENT; i++ ) printf("學生%d: ", i+1); scanf("%d", &score[j][i]); } // 計算總和 sum+=score[j][i]; // 求平均值 aver=sum/(STUDENT*CLASS); printf("average=%lf\n",aver); return 0;

練習 修改上頁範例,輸入兩班3位同學分數後, 印出各 班總分

課程大綱 一維陣列 二維陣列 其他多維陣列

其他多維陣列的使用 三維陣列 四維陣列 … 資料型態 陣列名稱[長度1][長度2][長度3]; 資料型態 陣列名稱[長度1][長度2][長度3][長度4]; …

其他多維陣列的應用 例如:儲存2班同學, 每班2人, 2科考試成績 宣告要用的資料 第一班,第二號同學,第一科100分 int score[2][2][2]; 第一班,第二號同學,第一科100分 score[0][1][0] = 100;

其他多維陣列的應用 範例:輸出2班2位同學2科考試成績. #include <stdio.h> #define CLASS 2 #define STUDENT 2 #define SUBJECT 2 int main() { int i, j, k; int score[CLASS][STUDENT][SUBJECT] = {20,30,40,50,60,70,80,90}; // 分別輸出兩班各個數值 for ( j=0; j < CLASS; j++ ) printf("班級%d:\n", j+1); for ( i=0; i < STUDENT; i++ ) printf("學生%d:\n", i+1); for ( k=0; k < SUBJECT; k++ ) printf("第%d科: %d分\n", k+1, score[j][i][k]); } printf("\n"); return 0;