版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第十一章第十一章结构体和结构体和共用体类型共用体类型2教学目标 介绍语言的结构体共用体枚举其它数据类型3学习要求 结构体类型和共用体类型是语言的重要概念。 要求掌握结构体类型、共用体类型以及相应类型变量的定义方法和引用方法。4本单元授课内容 结构体类型 结构体变量的定义 结构体变量的使用 其他结构体类型 日期类型、时间类型、枚举类型 typedef语句 实用编程 用户界面程序设计 菜单程序构造 中文操作系统编程5一、结构体类型 C语言程序中少量变化的数据用变量来处理。数量不宜多。 批量同类型数据的处理用数组。 不同类型的数据的集合用什么数据结构来存放呢?这就是本单元要介绍的内容:用结构体类型处
2、理不同类型数据的集合。6例6-1职工工资单的层次结构 说明:结构体类型适用于说明具有层次结构的复杂数据。例如,可以用来表示“某处理对象的数据由.组成,其中的某项又由.组成, .”的数据间联系方式。层次结构主要用于描述数据的内部组织, 即表征一个数据对象的各数据项之间的从属关系。层次模型的表示方法很多, 我们采用缩排方式表示上述工资单数据的层次结构。7工资单数据的层次结构01 工资单 02 工作部门: 字符串, 最大长度为10个字符 02 姓名: 字符串, 最大长度为8个字符 02 职务(含职称、工种): 代码, 0-99 02 参加工作时间 03 年份: 1900-2050 03 月份: 1-
3、12 03 日 : 1-31 02 家庭情况 03 婚否: 0-否, 1-是 03 是否双职工: 0-否, 1-是 03 独生子女出生日期, 如无独生子女则填1900.01.01 8工资单数据的层次结构(续) 02 基本工资: 0-10000, 保留两位小数 02 岗位津贴: 0-10000, 保留两位小数 02 劳保福利: 0-1000, 保留两位小数 02 独生子女费: 0-10, 保留两位小数 02 房租: 0-10000, 保留两位小数 02 电费: 0-10000, 保留两位小数 02 水费: 0-10000, 保留两位小数 02 取暖费: 0-1000, 保留两位小数 02 保育费
4、: 0-1000, 保留两位小数 02 实发工资: 0-10000, 保留两位小数91、结构体类型变量的定义 与简单变量和数组变量一样,结构体变量也必须先定义,后使用。 定义(说明)语句的一般格式是: struct 结构体类型名 结构体类型成员变量说明语句表; ; 例如,说明日期类型为: struct date int da_year; int da_month; int da_day; ; 10例6-2定义工资表类型/* 程序模块 SALARY.H: 定义工资单*/ #include /*- 定义工资表数组 -*/#define MAX_EMPLOYEE 1000/*- 定义家庭情况类型 -
5、*/ struct family_type int in_double_harness; /* 婚姻状况 */ int is_colleague; /* 是否双职工 */ struct date birthdate_of_singleton; /* 子女生日 */ int children_in_school; /* 上学子女数 */ int housing_area; /* 住房面积 */ ;11定义工资单类型struct salary_type char department11; /* 工作部门 */ char name9; /* 姓名 */ int position; /* 职务 */
6、 struct date date_of_work; /* 参加工作时间 */ struct family_type family; /* 家庭情况 */ float salary; /* 基本工资 */ float subsidy; /* 岗位津贴 */ float insurance; /* 劳保福利 */ float child_allowance; /* 独生子女费 */ float rent; /* 房租 */ float cost_of_elec; /* 电费 */ float cost_of_water; /* 水费 */ float cost_of_heating; /* 取暖
7、费 */ float cost_of_education;/* 保育费 */ float realsum; /* 实发工资 */ ;12定义工资表数组int emp_count;struct salary_type salary_listMAX_EMPLOYEE;132、结构体类型变量的使用 定义了结构体变量后,就可以引用了。引用时只能引用结构体变量的成员,而不能整体引用结构体变量。 引用方法: 结构体类型变量名. 成员变量名 以职工工资表为例: salary_: 第i个职工的姓名; salary_listi.position: 第i个职工的职务; salary_listi
8、.salary:第i个职工的基本工资; salary_listi.date_of_work.da_year: 第i个职工的参加工作年份。14例6-3打印某职工的工资单/* 程序模块 SALARY.H: 定义工资单 */ #include #include #define MAX_EMPLOYEE 100/*- 定义工作岗位类型 -*/ #define MANAGER 1 /* 经理 */ #define ENGINEER 2 /* 工程师 */ #define EMPLOYEE 3 /* 职员 */ #define WORKER 4 /* 工人 */ #define OTHER 5 /* 其他
9、 */15/* 定义家庭情况类型 */struct family_type int in_double_harness; /* 婚姻状况 */ int is_colleague; /* 是否双职工 */ struct date birthdate_of_singleton; /* 子女出生日期 */ int children_in_school; /* 上学子女数 */ int housing_area; /* 住房面积 */ ;16/* 定义工资单类型 */ #define SALARY_TYPE struct#define SALARY_TYPE struct salary_type sa
10、lary_type SALARY_TYPE SALARY_TYPE char depart11; / char depart11; /* * 工作部门工作部门 * */ / char name9; / char name9; /* * 姓名姓名 * */ / int int position; /position; /* * 职务职务 * */ / structstruct date date_of_work; / date date_of_work; /* * 参加工作时间参加工作时间 * */ / structstruct family_type family; / family_type
11、 family; /* * 家庭情况家庭情况 * */ / float salary; / float salary; /* * 基本工资基本工资 * */ / float subsidy; / float subsidy; /* * 岗位津贴岗位津贴 * */ / float insurance; / float insurance; /* * 劳保福利劳保福利 * */ / float child_allowance; / float child_allowance; /* * 独生子女费独生子女费 * */ / float rent; / float rent; /* * 房租房租 *
12、*/ / float cost_of_elecfloat cost_of_elec; /; /* * 电费电费 * */ / float cost_of_water; / float cost_of_water; /* * 水费水费 * */ / float cost_of_heating; / float cost_of_heating; /* * 取暖费取暖费 * */ / float cost_of_education;/ float cost_of_education;/* * 保育费保育费 * */ / float realsumfloat realsum; /; /* * 实发工资
13、实发工资 * */ / ; ;17函数 print_salary(): 打印某职工的工资单 void print_salary(SALARY_TYPE salary) char position11; switch(salary.position) case MANAGER: strcpy(position, 经理); break; case ENGINEER: strcpy(position, 工程师); break; case EMPLOYEE: strcpy(position, “职员”); break; case WORKER: strcpy(position, “工人”); brea
14、k; case OTHER: strcpy(position, 其他); break; 18/* 打印职工工资单*/printf(-n);printf(-n);printfprintf(部部 门门: %10s : %10s 姓姓 名名: %8: %8sn, salary.depart,sn, salary.depart, ); );printfprintf(“(“职职 务务: %10s : %10s 参加工作时间参加工作时间:%:%d.%02d.%02dn, position,d.%02d.%02dn, position, salary.date_o
15、f_work.da_year, salary.date_of_work.da_monsalary.date_of_work.da_year, salary.date_of_work.da_mon, , salary.date_of_work.da_day); salary.date_of_work.da_day);printfprintf(基本工资基本工资: %10.2f : %10.2f 岗位津贴岗位津贴: %10.2: %10.2fn,fn, salary.salary, salary.subsidy); salary.salary, salary.subsidy);printfprint
16、f(劳保福利劳保福利: %10.2f : %10.2f 独生子女费独生子女费: %10.2: %10.2fn,fn, salary.insurance, salary.child_allowance); salary.insurance, salary.child_allowance);printfprintf(n(n房房 租租: %10.2f : %10.2f 电电 费费: %10.2: %10.2fn,fn, salary.rent, salary.cost_of_elec salary.rent, salary.cost_of_elec););printfprintf(水水 费费: %1
17、0.2f : %10.2f 取取 暖暖 费费: %10.2: %10.2fn,fn, salary.cost_of_water, salary.cost_of_heating); salary.cost_of_water, salary.cost_of_heating);printfprintf(保保 育育 费费: %10.2: %10.2fn, salary.cost_of_education);fn, salary.cost_of_education);printfprintf(n(n实发工资实发工资: %10.2: %10.2fn, salary.realsumfn, salary.re
18、alsum););printfprintf(-n);(-n); 19 / /* *- - 测试用主函数测试用主函数 -* */ /main()main() SALARY_TYPE salary_listMAX_EMPLOYEE; SALARY_TYPE salary_listMAX_EMPLOYEE; int int i i, salary_count = 0;salary_count = 0; / /* *- - 输入经理张三的工资表输入经理张三的工资表 -* */ / strcpystrcpy(salary_listsalary_, (salary_listsalary
19、_, 张三张三);); strcpystrcpy(salary_listsalary_count.depart, (salary_listsalary_count.depart, 办公室办公室);); salary_listsalary_count.position = MANAGER;salary_listsalary_count.position = MANAGER; salary_listsalary_count.date_of_work.da salary_listsalary_count.date_of_work.da_year = 1974;_year = 19
20、74; salary_listsalary_count.date_of_work.da_mon salary_listsalary_count.date_of_work.da_mon = 10;= 10; salary_listsalary_count.date_of_work.da salary_listsalary_count.date_of_work.da_day = 1;_day = 1; salary_listsalary_count.salary = 3500.0; salary_listsalary_count.salary = 3500.0; salary_listsalary
21、_count.subsidy = 2000.0; salary_listsalary_count.subsidy = 2000.0; salary_listsalary_count.insurance = 200.0; salary_listsalary_count.insurance = 200.0; salary_listsalary_count.child_allowance = 300.0; salary_listsalary_count.child_allowance = 300.0; salary_listsalary_count.rent = 450.0; salary_list
22、salary_count.rent = 450.0; salary_listsalary_count.cost_of_elec salary_listsalary_count.cost_of_elec = 200.0; = 200.0; salary_listsalary_count.cost_of_water = 100.0; salary_listsalary_count.cost_of_water = 100.0; salary_listsalary_count.cost_of_heating = 454.0; salary_listsalary_count.cost_of_heatin
23、g = 454.0; salary_listsalary_count.cost_of_education = 78.0; salary_listsalary_count.cost_of_education = 78.0; salary_listsalary_count.realsum salary_listsalary_count.realsum = 3458.0; = 3458.0; salary_count+; salary_count+; 20/* 输入工人李四的工资表 */ strcpystrcpy(salary_listsalary_, (salary_lists
24、alary_, 李四李四);); strcpystrcpy(salary_listsalary_count.depart, (salary_listsalary_count.depart, 车间车间);); salary_listsalary_count.position = WORKER;salary_listsalary_count.position = WORKER; salary_listsalary_count.date_of_work.da salary_listsalary_count.date_of_work.da_year = 1990;_year = 1
25、990; salary_listsalary_count.date_of_work.da_mon salary_listsalary_count.date_of_work.da_mon = 7;= 7; salary_listsalary_count.date_of_work.da salary_listsalary_count.date_of_work.da_day = 16;_day = 16; salary_listsalary_count.salary = 500.0; salary_listsalary_count.salary = 500.0; salary_listsalary_
26、count.subsidy = 100.0; salary_listsalary_count.subsidy = 100.0; salary_listsalary_count.insurance = 100.0; salary_listsalary_count.insurance = 100.0; salary_listsalary_count.child_allowance = 0.0; salary_listsalary_count.child_allowance = 0.0; salary_listsalary_count.rent = 100.0; salary_listsalary_
27、count.rent = 100.0; salary_listsalary_count.cost_of_elec salary_listsalary_count.cost_of_elec = 100.0; = 100.0; salary_listsalary_count.cost_of_water = 100.0; salary_listsalary_count.cost_of_water = 100.0; salary_listsalary_count.cost_of_heating = 100.0; salary_listsalary_count.cost_of_heating = 100
28、.0; salary_listsalary_count.cost_of_education = 0.0; salary_listsalary_count.cost_of_education = 0.0; salary_listsalary_count.realsum salary_listsalary_count.realsum = 300.0; = 300.0; salary_count+; salary_count+;21/* 打印工资表 */ for(i=0; isalary_count; i+) print_salary(salary_listi); getch(); 22二、其他结构
29、体类型 日期类型 时间类型 枚举类型 typedef语句231、日期类型 TC中在“dos.h”定义了日期和时间结构类型; 日期类型定义为: struct date int da_year; char da_mon; char da_day; ;242、时间类型 struct time unsigned char ti_min; /* 分 */ unsigned char ti_hour; /* 时 */ unsigned char ti_hund; /* 百分之一秒 */ unsigned char ti_sec; /* 秒 */ ;25引用日期、时间变量 在“dos . h”中还提供了一组
30、库函数,它们是: 读系统日期 void getdate(struct date *dateptr); 设置系统日期void setdate(struct date *dateptr); 读系统时间void gettime(struct time *timeptr); 设置系统时间 void settime(struct time *timeptr); 26使用日期、时间函数举例 打印系统日期和时间:(C0601 . C) #include “dos . h” main() struct date d; struct time t; getdate(&d); gettime(&t
31、); printf(Today is %4d.%2d.%2dn, d.da_year,d.da_mon,d.da_day); printf(The time is %2d:%2d:%2dn, t.ti_hour,t.ti_min,t.ti_sec); 273、共用体变量 定义变量时,要分配单位长度的存储单元。 数组的总长度是N*L(N是数组元素个数,L是单元的类型长度)。 结构体类型的长度是结构体各分量长度之和。 有时并不是所有的分量同时都在使用,那么,不用的单元将被闲置。 共用体变量就考虑到节省结构体类型的存储单元这个问题。它的长度是各分量中最长的分量所占用的存储单元。28共用体变量存储单元
32、示意图 共用体类型共用体类型d1d2d3d4共用体存储单元的长度是共用体存储单元的长度是d3d1d2d3d4结构体类型结构体类型结构体存储单元的长度是结构体存储单元的长度是d1+d2+d3+d429定义共用体变量 说明(定义)语句一般格式: union 共用体类型名 成员变量说明语句表; 例如 union u_type int i; long l; char c4; ; union u_type x ;30例6-6人事档案记录打印 算法分析: 在人事档案中,对不同类型人员档案登记项是不同的。将不同部分用共用体实现,相同部分用结构体实现。 在档案中设置一个职工类型数据项, 将职工分为3类: 干部
33、、技术人员和工人。然后设置一个共用体类型的成员变量用来存放不同类型职工的相关数据。31头文件 EMPLOYEE.H: 职工档案管理的数据类型定义#include /* 职工类型符号常数 */ #define MANAGER 0 /* 管理人员 */ #define TECHNICIAN 1 /* 技术人员 */ #define WORKER 2 /* 工人 */* 性别符号常数 -*/ #define MALE 0 /* 男 */ #define FEMALE 1 /* 女 */* 简化结构体类型名的宏定义 */ #define EMPLOYEE_TYPE struct employee_ty
34、pe32数据结构定义(一) /* 定义管理人员的数据结构 -*/ struct manager_type char position11; /* 职务 */ char rank21; /* 级别 */ ;/* 定义技术人员的数据结构 -*/ struct technician_type char tech_post11; /* 职称 */ char degree11; /* 学位 */ char major11; /* 专业 */ ;33数据结构定义(二)/* 定义工人数据结构 */ struct worker_type char speciality11; /* 工种 */ int rank
35、; /* 级别 */ char education11; /* 文化程度 */ ;/* 定义分类档案数据结构 */ union sort_type struct manager_type m; /* 管理人员的数据 */ struct technician_type t; /* 技术人员的数据 */ struct worker_type w; /* 工人的数据 */ ;34数据结构定义(三)/* 职工档案数据结构 */ struct employee_type char name9; /* 姓名 */ int sex; /* 性别 */ struct date birthdate; /* 出生
36、日期 */ int type; /* 职工类型 */ union sort_type d; /* 职工分类数据 */ ;/* 说明职工档案数组 */ #define MAX_EMPLOYEE 1000 int emp_count; EMPLOYEE_TYPE emp_fileMAX_EMPLOYEE;35函数 print_file(): 打印某职工档案void print_file(EMPLOYEE_TYPE emp) printf(n- -n); printf(姓 名: %sn,); printf(性 别: %sn,(emp.sex=0?男:女); printf(出生日期:
37、%4d.%02d.%02dn, emp.birthdate.da_year, emp.birthdate.da_mon, emp.birthdate.da_day); 36不同类型人员选择打印 switch(empswitch(emp.type).type) case MANAGER: case MANAGER: printf printf(职职 务务: %: %sn,emp.d.m.position);sn,emp.d.m.position); printf printf(级级 别别: %: %sn,empsn,emp.d.m.rank); break;.d.m.rank); break;
38、case TECHNICIAN: case TECHNICIAN: printf printf(职职 称称: %: %sn,emp.d.t.tech_post);sn,emp.d.t.tech_post); printf printf(学学 位位: %: %sn,emp.d.t.degree);sn,emp.d.t.degree); printf printf(专专 业业: %: %sn,empsn,emp.d.t.major); break;.d.t.major); break; case WORKER: case WORKER: printf printf(工工 种种: %: %sn,em
39、p.d.w.speciality);sn,emp.d.w.speciality); printf printf(级级 别别: %: %dn,emp.d.w.rank);dn,emp.d.w.rank); printf printf(文化程度文化程度: %: %sn,empsn,cation); break;.cation); break; default: default: printf printf(职工类型不明确职工类型不明确, , 无法显示分类数据无法显示分类数据!n);n); printf printf(-n);(-n); 37主函数(C0606.h
40、)main() EMPLOYEE_TYPE emp_fileMAX_EMPLOYEE; int emp_count = 0, i;/* 将一个工人的档案存放在emp_fileemp_count中 */ strcpy(emp_fileemp_,张三); emp_fileemp_count.sex = MALE; emp_fileemp_count.birthdate.da_year = 1970; emp_fileemp_count.birthdate.da_mon = 5; emp_fileemp_count.birthdate.da_day = 1; 38主函数(续)/*
41、 以下存放分类档案数据 -*/ emp_fileemp_count.type = WORKER; strcpy(emp_fileemp_count.d.w.speciality, 钳工); emp_fileemp_count.d.w.rank = 4; strcpy(emp_fileemp_cation,高中); emp_count+;/*- 打印档案 */ for(i=0; iemp_count; i+) print_file(emp_filei); 39举例:将十进制数转换为二进制算法说明:算法说明:C语言可以处理字节中的位。定义一个共用体变量语言可以处理字节中的
42、位。定义一个共用体变量num 如下。整形变量如下。整形变量i和结构体变量和结构体变量bits共享共享8个字节。个字节。 union int i; struct unsigned a: 1 ;unsigned a: 1 ; unsigned b: 1 ; unsigned b: 1 ; unsigned c: 1 ; unsigned c: 1 ; unsigned d: 1 ; unsigned d: 1 ; unsigned e: 1 ; unsigned e: 1 ; unsigned f: 1 ; unsigned f: 1 ; unsigned h: 1 ; unsigned h: 1
43、 ; unsigned i: 1 unsigned i: 1 ; bits; bits; num ; num ;40程序(C0604.C)#include stdio#include stdio.h.hmain()main() union union int i; int i; struct struct unsigned a: 1 ; unsigned a: 1 ; unsigned b: 1 ; unsigned b: 1 ; unsigned c: 1 ; unsigned c: 1 ; unsigned d: 1 ; unsigned d: 1 ; unsigned e: 1 ; un
44、signed e: 1 ; unsigned f: 1 ; unsigned f: 1 ; unsigned h: 1 ; unsigned h: 1 ; unsigned i: 1 ; unsigned i: 1 ; bits; bits; num ; num ; printf(Enter a number:); printf(Enter a number:); scanf(%d,&num.i); scanf(%d,&num.i); printf printf(i=%2d , bits=%3d%3d%3d%3d%3d%3d%3d%3dn,(i=%2d , bits=%3d%3
45、d%3d%3d%3d%3d%3d%3dn, num.i,num.bits.i,num.bits.h,num.bits.f,num.bits.e, num.i,num.bits.i,num.bits.h,num.bits.f,num.bits.e, num.bits.d,num.bits.c,num.bits.b,num.bits.a); num.bits.d,num.bits.c,num.bits.b,num.bits.a); 414、枚举变量 变量取值数可以无限。对于取值有限的变化的数据集合如何处理呢? C语言中用枚举变量来处理这样一类变量。 枚举变量的说明(定义)语句格式为: enum 枚
46、举类型名 枚举符号表 ;42枚举变量引用 枚举变量对应的值是整型自然数序列值;如不说明,则从0开始取值;若用等号赋初值,则从指定值开始取值。 例如,weekday_type中,从SUNDAY到SATURDAY分别取值06。若从MONDAY到SUNDAY,MONDAY=1,则分别取值17。43枚举变量定义举例#include stdio#include stdio.h.hmain()main() int i; int i; enum enum weekday_type weekday_type SUNDAY, / SUNDAY, /* * 星期日星期日 * */ / MONDAY, / MOND
47、AY, /* * 星期一星期一 * */ / TUESDAY, / TUESDAY, /* * 星期二星期二 * */ / WEDNESDAY, / WEDNESDAY, /* * 星期三星期三 * */ / THURSDAY, / THURSDAY, /* * 星期四星期四 * */ / FRIDAY, / FRIDAY, /* * 星期五星期五 * */ / SATURDAY / SATURDAY /* * 星期六星期六 * */ / ; ; enumenum weekday_type workday; weekday_type workday; 44程序(续) for(workday=0
48、;workday7;i=workday+)for(workday=0;workday7;i=workday+) switch(i) switch(i) case 0: printf case 0: printf( Sundayn);( Sundayn); case 1: printf case 1: printf( Mondayn);( Mondayn); case 2: printf case 2: printf( Tuesdayn);( Tuesdayn); case 3: printf case 3: printf( Wednesdayn);( Wednesdayn); case 4:
49、printf case 4: printf( Thursdayn);( Thursdayn); case 5: printf case 5: printf( Fridayn);( Fridayn); case 6: printf case 6: printf( Saturdayn);( Saturdayn); 455、typedef语句 typedef语句(类型说明语句) 的功能是利用某个已有的数据类型定义一个新的数据类型。其格式为: typedef 数据类型或数据类型名 新数据类型名 举例 typedef struct char department11; /* 工作部门 */ char n
50、ame9; /* 姓名 */ int position; /* 职务 */ . . SALARY_TYPE; 其后的变量说明语句中可以省略结构体类型说明符struct: SALARY_TYPE salary_listMAX_EMPLOYEE;46单元上机练习题目1.编写一个小型职工档案管理程序。提示: 利用例6-8的菜单结构,将“新职工档案入库” (其程序模块见例6-9)、“退休、调离职工销档”、“按姓名查询职工档案”、“打印某职工档案”以及“打印职工情况统计分析表”等功能分别编成函数, 嵌入上述菜单程序中。2.设计一个小型图书馆的管理系统。提示(伪代码): 定义图书卡类型、借书证类型以及书卡
51、数组和借书证数组; 设计书卡录入函数和借书证录入函数; 设计借书记录类型及借书记录数组; 分别设计借书登记函数和还书处理函数; 最后编写主函数用一菜单程序将以上各部分连接起来。47三、实用编程 用户界面程序设计 菜单程序构造 中文操作系统编程481、面向显示屏的输出 现代显示器既能显示文字信息, 也能显示图形。目前常用的显示器通常都有若干种显示模式, 其中最常用的字符文本显 示 模 式 是 0 3 号 模 式 。 在 头 文 件conio.h中, 定义了一个枚举类型,用于说明各种文本显示模式。49字符文本显示模式的枚举符号常数定义 enum text_modes LASTMODE = -1,/
52、* 上一个文本模式 */ BW40 = 0, /* 黑白模式, 2540字符 */ C40, /* 彩色模式, 2540字符 */ BW80, /* 黑白模式, 2580字符 */ C80, /* 彩色模式, 2580字符 */ MONO = 7 /* 黑白模式, 2580字符 */ ;50C80模式下屏幕的坐标系统 (1,1)(1,80)(25,1)(25,80)51C80模式下颜色常数定义 enumenum COLORS COLORS BLACK, / BLACK, /* * 黑黑 * */ / BLUE, / BLUE, /* * 蓝蓝 * */ / GREEN, / GREEN, /*
53、 * 绿绿 * */ / CYAN, / CYAN, /* * 青青 * */ / RED, / RED, /* * 红红 * */ / MAGENTA, / MAGENTA, /* * 洋红洋红 * */ / BROWN, / BROWN, /* * 棕棕 * */ / LIGHTGRAY, / LIGHTGRAY, /* * 浅灰浅灰 * */ / DARKGRAY, / DARKGRAY, /* * 深灰深灰 * */ / LIGHTBLUE, / LIGHTBLUE, /* * 亮兰亮兰 * */ / LIGHTGREEN, / LIGHTGREEN, /* * 亮绿亮绿 * */ /
54、 LIGHTCYAN, / LIGHTCYAN, /* * 亮青亮青 * */ / LIGHTRED, / LIGHTRED, /* * 亮红亮红 * */ / LIGHTMAGENTA, / LIGHTMAGENTA, /* * 亮洋红亮洋红 * */ / YELLOW, / YELLOW, /* * 黄黄 * */ / WHITE / WHITE /* * 白白 * */ / ; ;52与屏幕操作有关函数(一) 设置输出字符的颜色.函数的原型为: void textcolor(int newcolor); 设置文本背景色.原型为: void textbackground(int newco
55、lor); 定义文本窗口定义文本窗口库函数的原型为: void window(int left, int top, int right, int bottom); 清文本窗口其原型为: void clrscr(void); 将光标移到指定位置:该函数的原型为: void gotoxy(int x, int y);53与屏幕操作有关函数(二) 向文本窗口写字符串c.该函数的原型为: int cputs(char *str); 输入字符串.原型为: char *cgets(char *str); 在文本窗口中进行格式输出 int cprintf(char *format, .); 在文本窗口中进行
56、格式输入 int cscanf(char *format, .);54与屏幕操作有关函数(三)求当前光标位置求当前光标位置 int wherex(void);int wherex(void); int wherey int wherey(void);(void);查询屏幕状态设置情况查询屏幕状态设置情况 void gettextinfo(structvoid gettextinfo(struct text_info text_info * *r);r);将文本块复制到内存将文本块复制到内存 int gettext(int left,int top,int right,int bottom, c
57、har *destin);由内存向屏幕复制文本块由内存向屏幕复制文本块 int puttext(int left,int top,intint puttext(int left,int top,int right, right, int int bottom,char bottom,char * *source);source);55文本模式屏幕参数类型定义structstruct text_info text_info unsigned char winleft unsigned char winleft; /; /* * 文本窗口左上角列坐标文本窗口左上角列坐标 * */ / unsigned char wintopunsigned char wintop; /; /* * 文本窗口左上角行坐
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2021贵州公务员行测真题及答案解析
- 2024年9月昭通市直机关遴选公务员面试真题附解析
- 信息技术上机试卷(二)
- 二级建造师继续教育考试复习题库及答案指导
- 双重预防体系题库大全含答案王牌题库
- cpa审计考试题型
- 党的知识竞赛题库(含答案)-200单选-报
- 2025年麻醉科主治医师考试真题练习卷
- 对当前金融监管的几点看法
- 2025江西省考面试6月22日面试真题解析
- 集成电路芯片设计企业组织架构详解
- 2025广东深圳市罗山科技园开发运营服务有限公司第二批招聘4人笔试考试参考试题及答案解析
- 学堂在线 人工智能 章节测试答案
- 2025全国硕士研究生政治考试完整真题及答案
- 彼得·蒂尔:硅谷教父的叛逆人生
- 配送员食品安全培训课件
- 高危药品外渗预防及处理
- bz-门式轻钢结构厂房施工组织设计投标方案230
- 2025年违规吃喝谈心谈话记录
- 钢结构焊接工艺评定
- 校园安全教育安排表
评论
0/150
提交评论