- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言Structure的功能
第十章 C語言Structure的功能
假設我們有一組學生的資料,包含學生的學號、姓名和體重,我們要如何表示這種資料呢?對很多電腦語言而言,我們必須要有三個陣列。這三個陣列分別表示學生的學號,姓名和體重。舉例而言,假如我們有五位學生,他們的資料如表10-1:
學號
姓名
體重
109
John
79.1
201
Mary
60.3
159
Peter
81.4
163
Kelly
76.6
200
Gloria
62.3
表10-1
我們就需要三個陣列,如表10-2所示:
學號陣列
姓名陣列
體重陣列
109
John
79.1
201
Mary
60.3
159
Peter
81.4
163
Kelly
76.6
200
Gloria
62.3
表10-2
麻煩的是:這三個陣列是互有關聯的。如果我們要將學生的資料按照學號的大小排列,學號陣列當然會改變,但是我們必須跟著同時改變姓名、陣列和體重陣列。改過以後的三個陣列如表10-3。
學號陣列
姓名陣列
體重陣列
109
John
79.1
159
Peter
81.4
163
Kelly
76.6
200
Gloria
62.3
201
Mary
60.3
表10-3
所以,我們只好承認這是一件很複雜的事情。可是,在C語言中,我們有一個簡單的辦法,我們可以利用一種叫做structure的功能,一下子就解決了這個問題。
Structure使我們可以宣告學生的資料有三個欄位:學號、姓名、體重。學號和體重都用整數來代表,姓名用文字來表示,所以我們可以作以下的宣告。
struct student {
int idnum;
char name[20];
float weight;
}
從以上的宣告看來,學生的姓名最長不能超過20個英文字。
一旦對下定義,我們就宣告一個陣列有的結構,這個陣列當然也要有一個名字,我們不妨將它叫做,內容有如表10-1所示。假設我們要找第個的資料,我們只要找即可。如果我們要找第個學生的學號,我們就要指定,他的姓名是,而他的體重則是。有了以後,我們可以根據其中任何一個欄位排列。假設我們用學號排列,就可以得到以下的,如表10-4
學號
姓名
體重
109
John
79.1
159
Peter
81.4
163
Kelly
76.6
200
Gloria
62.3
201
Mary
60.3
表10-4
如果用體重來排列,我們會得到如表10-5所示的資料。
學號
姓名
體重
201
Mary
60.3
200
Gloria
62.3
163
Kelly
76.6
109
John
79.1
159
Peter
81.4
表10-5
至於如何會有資料的?當然是靠讀入的,我們通常應該宣告一個文字檔,用讀檔案的方法可以將資料讀到去。
例題10-1 讀入學生資料檔,根據學號將學生資料排列,並將結果輸出至另一檔案
要使用structure來表示學生資料,我們必需在主程式的外面先註明,所以我們會在主程式的前面,有以下的指令:
struct studentdata {
int idnum;
char name[20];
float weight;
}
主程式的流程圖如圖10-1。
圖10-1
至於排序的副程式,它的流程圖如圖10-2所示。
圖10-2
當然,我們還要有一個輸出結果至文字檔的副程式,這個副程式非常簡單,我們就不再討論它的流程圖了。
以下是這個程式。
程式 10-1
#include stdio.h
#define MAX_ARRAY_SIZE 256
#define STUDENT_DATA_FILE_NAME student.txt
#define OUTPUT_FILE_NAME student_output.txt
struct student
{
int idnum;
char name[20];
float weight;
};
int read_all_student_data(struct student A[MAX_ARRAY_SIZE], FILE *fp);
void output_all_student_data(FILE* output_data_fp, struct student A[MAX_ARRAY_SIZE], int N);
void sort_student_data(struct student A[MAX_ARRAY_SIZE], int N);
int FMIN_student_data(struct student A[MAX_ARRAY_SIZE], int i, int N);
void SWAP_student_data(struct stude
您可能关注的文档
最近下载
- 匹克球理论考试试题库及答案.docx VIP
- 一+职场应用写作与交流(一):求职和应聘(教学设计)-【中职专用】高二语文上(高教版2023职业模块).docx
- 一 《微写作•描述事物》(教学课件)-【中职专用】高二语文同步精品课堂(高教版2023·职业模块).pptx VIP
- 新疆天泽水利投资发展有限公司招聘考试真题2024.docx VIP
- 匹克球运动 场地的使用要求及检验方法.pdf VIP
- 第十一章第一节《杠杆》实验教学说课稿教科版物理八年级下册.ppt
- TUNP-卧式操纵盘离心爆珠在线植入设备.pdf VIP
- 草布、衣服、床单被服洗涤服务方案.docx
- 2024年新疆天泽水利投资发展有限公司招聘真题.docx VIP
- 高标准农田鱼眼泡低洼地治理方案.docx
文档评论(0)