複習 char name1[20]; //長度為20的字串 char name2[20]; //讀取字串 gets(name1);

Slides:



Advertisements
Similar presentations
CSIM, PU C Language Introduction to the C Programming Language 重覆敘述 (for,while,break,continue) 適合重複性的計算或判斷.
Advertisements

当代大学生的性别烦恼 沈奕斐.
C语言程序设计 主讲教师 :张群燕 电话:
第10章 结构体与链表 本章要点: 结构体类型与结构体变量的定义 结构体变量的引用与初始化 结构体数组 链表处理 共用体类型和枚举类型
第一章 C语言概述 计算机公共教学部.
编译原理上机实习
C语言实现俄罗斯方块 邓友明( ) 胡文峰( ) 李乐( ) 李博( )
谈一谈: 你的金钱观. 谈一谈: 你的金钱观 中国银行 长城卡 中国工商银行 牡丹卡 中国建设银行 龙卡 中国农业银行 金穗卡.
数据结构与算法 数据结构与算法实验
Chapter 3.0 C語言的結構與指標 資料結構導論 - C語言實作.
第4章 选择结构程序设计 在现实生活中,需要进行判断和选择的情况是很多的 如果你在家,我去拜访你 如果考试不及格,要补考
第九章 系 统 安 全 性 9.1 结构体 9.2 结构体型数组  9.3 结构体型指针 9.4 内存的动态分配 9.5 共用体
複習 struct score_Type{ int chinese,english; }; struct my_Type{
Linked List Operations
第7章 结构体、联合体和枚举类型 本章导读 本章主要知识点 《 C语言程序设计》 (Visual C++ 6.0环境)
C程序设计 第9章 自定义数据类型 主讲教师: 鲁 萍 西安建筑科技大学 理学院.
程式設計 博碩文化出版發行.
C 程式設計— 結構 台大資訊工程學系 資訊系統訓練班.
Class 2 流程控制-選擇敘述與迴圈.
第二章 C# 基础知识.
补充内容 结构体 概述 定义结构体类型和定义结构体变量 结构体变量的引用 结构体变量的初始化 指针与结构体 用typedef定义类型的别名.
列舉(enum).
適用於多選一 可減少if 與 else配對混淆的錯誤.
第4章 选择结构程序设计 4.1 选择结构和条件判断 4.2 用if语句实现选择结构 4.3关系运算符和关系表达式
结构体和共用体 2 梁春燕 华电信息管理教研室.
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
Chap 9 结构 9.1 构建手机通讯录 9.2 结构变量 9.3 结构数组 9.4 结构指针.
第5章 语义分析(Semantic Analysis)
第9章 自訂資料型態 – 結構 9-1 結構資料型態 9-2 結構陣列 9-3 指標與結構 9-4 動態記憶體配置 9-5 聯合資料型態
STRUCTURE 授課:ANT 日期:2010/5/12.
QQ: 李祥 QQ: 欢迎多种方式的学习交流,祝大家学有所成.
第九章 结构体和共用体 结构体的定义 结构体的使用 共用体的定义 共用体的使用 主讲:李祥 时间:2015年10月.
计算概论 第十八讲 C语言高级编程 结构与习题课 北京大学信息学院.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
第三章 C++中的C 面向对象程序设计(C++).
C语言程序设计 李祥.
C 程式設計— 結構 台大資訊工程學系 資訊系統訓練班.
第5章 堆疊(Stacks) 5-1 堆疊的基礎 5-2 堆疊的表示法 5-3 堆疊的應用 - 運算式的計算與轉換
第13章 结构体的应用 13.1 了解由用户构造的数据类型 13.2 结构体类型说明及结构体变量 13.3 结构体数组
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
第三章 C# 基础知识.
Struct結構 迴圈
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
C语言程序设计.
第十章 用户自定义数据类型 目录 学生信息管理系统的开发 结构体数据类型的概述 结构体变量的使用 结构体数组
OOP6 結構Struct 黃兆武.
目录 9.1 结构体类型 9.2 共用体类型 9.3 枚举类型 9.4 类型声明符typedef 1.
C语言概述 第一章.
第1讲 C语言基础 要求: (1) C程序的组成 (2) C语言的标识符是如何定义的。 (3) C语言有哪些基本数据类型?各种基本数
第1章 初识3DS MAX 的神奇功能 本章应知 了解3DS MAX 6的工作界面、菜单栏、主工具栏、辅助工具栏、命令面板、工作区、动画播放区、视图工具的基本功能。 本章应会 1. 使用文件菜单能打开、新建、重做、保存3DS MAX文件 2. 会使用命令面板命令在视图中建立三维立体模型.
本节内容 字节对齐.
C语言程序设计 教案 崔武子制作
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
輸出與輸入(I/O).
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第 9 章 建構函式與解構函式.
隨機數 (亂數) 10後,取餘數 n = rand(); 利用 Code::Block 驗證一下 n = rand() %10; 998
#include <iostream.h>
本节内容 指针类型.
第五章 逻辑运算和判断选取控制 §5.1 关系运算符和关系表达式
第13章 文 件.
多重條件選擇敘述
C/C++基礎程式設計班 陣列 講師:林業峻 CSIE, NTU 3/14, 2015.
第一次上機考參考答案 僅供參考,同學可自行再想更好的方法..
C++程序语言设计 Chapter 14: Templates.
第六章 复合数据类型 指针的声明与使用 数组的声明与使用 指针与数组的相互引用 字符串及相关库函数 new与delete
本节内容 指针类型 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
安排座位.
C语言基础学习 从外行到入门.
Presentation transcript:

複習 char name1[20]; //長度為20的字串 char name2[20]; //讀取字串 gets(name1); fflush(stdin); scanf(“%d”,name2); //列印 puts(name1); //會自動加上換行 printf(“%s\n”,name2);

複習 //處理字串的函數 If(!strcmp(name1,name2)){ //name1和name2一樣時會執行 } strcat(name1,name2);//將name2接在name1 //的後面 strcpy(name1,name2); //將name2的內容 //copy到name1

複習 char ch; //讀取字元 ch=getchar(); ch=getch(); scanf(“%c”,&ch); //印出字元 putchar(ch); putch(ch); printf(“%c”,ch);

複習 ch=toupper(ch);//轉大寫 If(isalpha(ch)){ ch=tolower(ch);//轉大寫 } If(isdigit(ch)){ //ch是0~9會執行 If(isupper(ch)){ //ch是英文大寫字母會執行 If(islower(ch)){ //ch是英文小寫字母會執行

Class 7 結構

想一想 如果今天我們是公司負責人力資源的部門,老闆可能要求要處理20個員工的資料,資料的內容包括員工姓名、性別與薪資,在程式語言中應該要如何定義呢? char employee[20][10], employee_gender[20]; int employee_salary[20]; 如果每一個員工有更多的資料項目,怎麼辦?

結構 像這樣彼此之間有較密切相關性的資料,C語言提供了struct這種衍生的資料型態 和陣列不同處:可以用來結合不同資料型態的元素

範例 struct employee_data_type //定義結構部份 { char name[10], gender; int salary; }; //注意這裡要加分號 struct employee_data_type employee; //employee才是個變數

結構定義 struct structure_tag // structure_tag 是個結構的名字 { data members declarations; }; //註: structure_tag, member_name, variable_name 可以是相同的 struct myType{ int myType; }myType;

變數宣告 直接寫在定義結構的時候 像平常宣告變數的情況 可以是省略結構定義的structure_tag struct student_type student[10]; struct student_type { int id, class; }student1[10]; struct }student2[10]; 像平常宣告變數的情況 struct employee_data_type employee;

初始化 struct employee_data_type employee={"Yang",'M',20000}; //初始化 注意:要按照結構定義中成員的宣告順序來給值(由上到下,由左至右)

結構的運算 關於結構合法的運算有下列四種: 指定結構變數給另一個相同型態的結構變數 (=) 取得結構變數的位址 (&) 存取結構的成員 (.) 與 (->) 使用sizeof()來得到結構變數的大小

結構的取用方式 結構成員運算子(.) //variable.member_name; 結構指標成員運算子(->) printf("The employee's name is %s.\n",employee.name); printf("The employee's salary is %d.\n",employee.salary); 結構指標成員運算子(->) 如果取用的是一個結構指標變數,可以使用(->)運算子。 struct employee_data_type *ptr_employee=&employee; printf("The employee's name is %s.\n", (*ptr_employee).name); printf("The employee's name is %s.\n", ptr_employee->name); printf("The employee's name is %s.\n", (&employee)->name); //兩種取用的方式是一樣的,由於成員運算子 (.)/(->) 的結合優先權比提領/取址運算子 (*)/(&) 還高,所以要記得用 () 括起來。

範例練習 利用結構,定義一個學生個人資料的資料型態Student_Person_Data 成員有字元陣列的姓名、整數型態的年齡、字元陣列的地址以及興趣 試著在程式中指定初始值給這個資料型態的stu變數,並將其印出

結構陣列 宣告 字串輸入 整數輸入 字串輸出 整數輸出 struct employee_data_type employee2[5]; strcpy(employee2[0].name,"Mary"); 整數輸入 employee2[0].salary=1000; 字串輸出 printf("The employee's name is %s.\n",employee2[0].name); 整數輸出 printf("The employee's salary is %d.\n",employee2[0].salary);

範例練習 請設計一個學生資料表,需求欄位為: Name:字串長度10 Gender:字元 Age:整數 Favorite:字串長度20 Grade:浮點數 請定義一個student_type的結構,宣告變數,指定值,並輸出 範例程式見下頁

巢狀結構 結構可以不只一層,想要描述複雜的事物,我們可以用雙層以上的結構來描述。 取用方式相似: 巢狀部件1: 巢狀部件2: 巢狀主體: struct engine_type { int capacity; char num_cylinders; }; 巢狀部件2: struct body_type { char color; int num_doors; 巢狀主體: struct car_type { struct engine_type engine; struct body_type body; } car; 取用方式相似: car.engine.capacity=1500; car.body.num_doors = 4;

範例練習 三角形的三個頂點之座標 一個三角形的自訂資料型態由三個頂點成員所構成,而座標本身也是一個結構,有三個成員:x,y,z

範例練習 請修改此程式,使之可以讀入一個三角形的三個點座標,並用座標格式輸出

結構的記憶體大小 結構資料型態的變數所占用的記憶體大小,取決於其結構定義中每個成員的資料型態和成員的個數 C語言有一個函式叫做sizeof(),可以用來看每個型態會佔用多少位元組 利用這個函式來驗證結構資料型態變數的記憶體大小

範例練習 利用sizeof()看看各種資料型態的占用位元組數,並看看結構資料型態的大小

簡化struct的定義語法-typedef Case 1 如何把原來的宣告方式加上一個新的"暱稱"? struct employee_data_type //已經先宣告好了 { char name[10], gender; int salary; }; typedef struct employee_data_type EMPLOYEE; //加這個typedef EMPLOYEE employee={"Yang",'M',20000}; EMPLOYEE employee2; //以後拿EMPLOYEE來定義就可以, //當然還是可以繼續使用struct employee_data_type來定義。

typedef Case2 可以像以下這種寫法: typedef struct { char name[10], gender; int salary; }EMPLOYEE; //這樣跟Case1定義出EMPLOYEE的方式一樣, //不過系統就不知道struct employee_data_type。

enum 定義一些有彼此有相關性的常數 這樣其實四個常數會對應到0、1、2、3,但是寫程式時不必特別記得 例如在程式中可以這樣寫: enum COLOR { BLUE, YELLOW, RED, PINK }; 這樣其實四個常數會對應到0、1、2、3,但是寫程式時不必特別記得 例如在程式中可以這樣寫: COLOR color = YELLOW; switch(color) case BLUE: printf("藍色\n"); break; case YELLOW: printf("黃色\n"); break; case RED: printf("紅色\n"); break; case PINK: printf("粉紅色\n"); break; default: printf("不知道\n"); break; }

範例練習 定義enum列舉資料型態,名稱為card 定義card列舉成員有:JCB常數值為35、VISA常數值45、MASTER常數值為54

malloc+struct struct myType{ int a; int b; }; int main(){ myType *s; int size=5; s=(myType*)malloc(sizeof(myType)*size); s->a=99; s->b=80; printf("%d %d",s->a,s->b); system("pause"); }

作業八 定義名稱為stu_score的struct結構資料型態,該結構含有name(姓名),chi(國文),eng(英文),math(數學),avg(平均)五個欄位 宣告屬於stu_score結構變數 由鍵盤輸入資料並指定給該結構的name、chi、eng、math的欄位 求出三科目的平均指定給avg欄位 顯示此結構變數中name及avg欄位的內容