黄建的C语言PPT课件,C_13_构造类型
合集下载
黄建的ppt教学c09c流公开课获奖课件

第27页
第15页
模式组合
1 ios_base::out | ios_base::app 打开并写入,不覆盖原内容,只追加("a")
2 ios_base::out | ios_base::trunc 打开并写入,假如已经存在,则截空文献("w") ios_base::in | ios_base::out
3 打开并读写,在文献容许位置写入("r+") ios_base::in | ios_base::out | ios_base::trunc
白字控制符(’\t’、’\r’、’\n’和空格),从第一 种非空白字符起读数,否则不跳过。缺省为设置。
2 left, right, internal left左对齐,right右对齐,internal使符号左对
齐、数值右对齐输出。域宽内剩余字符位置用填充 符填充。缺省为right设置。只能任设其一。
1 ios_base::app 2 ios_base::ate 3 ios_base::binary 4 ios_base::in 5 ios_base::out 6 ios_base::trunc
以追加方式打开 打开后定位到文献尾 以二进制方式打开 以输入方式打开 以输出方式打开 把文献截空
例: ofstream fout("a.txt", ios_base::app);
int i = 12; ofstream fout("b.dat", ios_base::binary); fout.write((char *)&i, sizeof(int)*1); fout.close(); 00000000 00000000 00000000 00001100
第15页
模式组合
1 ios_base::out | ios_base::app 打开并写入,不覆盖原内容,只追加("a")
2 ios_base::out | ios_base::trunc 打开并写入,假如已经存在,则截空文献("w") ios_base::in | ios_base::out
3 打开并读写,在文献容许位置写入("r+") ios_base::in | ios_base::out | ios_base::trunc
白字控制符(’\t’、’\r’、’\n’和空格),从第一 种非空白字符起读数,否则不跳过。缺省为设置。
2 left, right, internal left左对齐,right右对齐,internal使符号左对
齐、数值右对齐输出。域宽内剩余字符位置用填充 符填充。缺省为right设置。只能任设其一。
1 ios_base::app 2 ios_base::ate 3 ios_base::binary 4 ios_base::in 5 ios_base::out 6 ios_base::trunc
以追加方式打开 打开后定位到文献尾 以二进制方式打开 以输入方式打开 以输出方式打开 把文献截空
例: ofstream fout("a.txt", ios_base::app);
int i = 12; ofstream fout("b.dat", ios_base::binary); fout.write((char *)&i, sizeof(int)*1); fout.close(); 00000000 00000000 00000000 00001100
黄建C语言C选择结构PPT课件

if ( 表达式 ) {
语句1; } else {
语句2; }
T
表达式
F
语句1
语句2
第11页/共25页
if - else 语句
1
• [2005.9.7]程序运行结果是
• int a = 1, b = 2, c = 3;
• if (c = a)
•
printf("%d", c);
• else
•
printf("%d", b);
三个数排序2-2
5
3
1
a
b
c
if (a > b) { t = a; a = b; b = t; } if (b > c) { t = b; b = c; c = t; } if (a > b) { t = a; a = b; b = t; }
第10页/共25页
if - else 语句
if-else
第20页/共25页
switch 语句
• switch ( 1.0 )
•{
• case 1.0: • case a > 0: • case 2:
•
• case 2: • case3: • case 4 + 5: • case 6.0 > 7.0: • }default:
值不能是小数 不能出现变量 值不能相同 一定要加空格 可以是常量表达式 default是可选项
1
[•例[ 例]程] 程 序序运运行 后行, 后b 的,值 是b的值是
• initntaa == 33,,bb= =0; 0;
• if i(f a(a << 00))
• ifif(a(a << 88) )
语句1; } else {
语句2; }
T
表达式
F
语句1
语句2
第11页/共25页
if - else 语句
1
• [2005.9.7]程序运行结果是
• int a = 1, b = 2, c = 3;
• if (c = a)
•
printf("%d", c);
• else
•
printf("%d", b);
三个数排序2-2
5
3
1
a
b
c
if (a > b) { t = a; a = b; b = t; } if (b > c) { t = b; b = c; c = t; } if (a > b) { t = a; a = b; b = t; }
第10页/共25页
if - else 语句
if-else
第20页/共25页
switch 语句
• switch ( 1.0 )
•{
• case 1.0: • case a > 0: • case 2:
•
• case 2: • case3: • case 4 + 5: • case 6.0 > 7.0: • }default:
值不能是小数 不能出现变量 值不能相同 一定要加空格 可以是常量表达式 default是可选项
1
[•例[ 例]程] 程 序序运运行 后行, 后b 的,值 是b的值是
• initntaa == 33,,bb= =0; 0;
• if i(f a(a << 00))
• ifif(a(a << 88) )
C语言PPT课件_C_13_构造类型

27
结构体作函数参数
3
构造类型
以下程序的运行结果是 typedef struct { char s[5], t; } A; A f(A a) BBm { A b = {"BB",'m'}; a.t = b.t; strcpy(a.s, b.s); return a; } main() { A c = {"CC",'f'}, d = f(c); printf("%s%c", d.s, d.t); }
14
结构体指针
例:(*p).num或p->num都是访问其指向对 象的num成员的形式。 p->num得到p指向的结构体变量中的成 员num的值 p->num++得到p指向的结构体变量中的 成员num的值,用完该值后使它加1 ++ p->num得到p指向的结构体变量中 的成员num的值加1 ,然后再使用它 (++p)->num先使p自加1,然后得到它指 向的元素中的num成员值 (p++)->num先得到p->num的值,然后 使p自加1
结构体 指针p
构造类型
结构体 变量w
w的成员
name
sex
s的成员
p
w h y
s
m
d
18
用户自定义类型
①用原类型名定义变量。 typedef
构造类型
例如:int a; ②在前面加上typedef, 把变量名换成新类型名。 例如: typedef int INTEGER; ③用INTEGER代替int作 整型变量的类型说明。 例如:INTEGER a;
结构体作函数参数
3
构造类型
以下程序的运行结果是 typedef struct { char s[5], t; } A; A f(A a) BBm { A b = {"BB",'m'}; a.t = b.t; strcpy(a.s, b.s); return a; } main() { A c = {"CC",'f'}, d = f(c); printf("%s%c", d.s, d.t); }
14
结构体指针
例:(*p).num或p->num都是访问其指向对 象的num成员的形式。 p->num得到p指向的结构体变量中的成 员num的值 p->num++得到p指向的结构体变量中的 成员num的值,用完该值后使它加1 ++ p->num得到p指向的结构体变量中 的成员num的值加1 ,然后再使用它 (++p)->num先使p自加1,然后得到它指 向的元素中的num成员值 (p++)->num先得到p->num的值,然后 使p自加1
结构体 指针p
构造类型
结构体 变量w
w的成员
name
sex
s的成员
p
w h y
s
m
d
18
用户自定义类型
①用原类型名定义变量。 typedef
构造类型
例如:int a; ②在前面加上typedef, 把变量名换成新类型名。 例如: typedef int INTEGER; ③用INTEGER代替int作 整型变量的类型说明。 例如:INTEGER a;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
9
p
p
p
结构体指针
1
构造类型
[2012.3.37]错误引用color成员的是 struct MP3 { char name[20]; char color; } s, *p = &s; A)s.color B)p->color C)s->color D)(*p).color
10
结构体指针
2
构造类型
16
结构体作函数参数
void f(struct xs w5) 传递 { 结构 w5.age = 40; } main() 张飞,22,66.6 { struct xs z3 = {"张飞",22,66.6}; f(z3); printf("%s,%d,%.1f", , z3.age, z3.score); }
构造类型
结构体作函数参数
1
构造类型
[2007.4.33]以下程序的运行结果是 typedef struct { int b, p; } A; void f(A c) { c.b += 1; c.p += 2; } main() { A a = {1,2}; f(a); 1,2 printf("%d,%d", a.b, a.p); }
21
结构体作函数参数
2
构造类型
[2012.3.38]以下程序的运行结果是 Zhao typedef struct { int a; char c[8]; } A; void fun(A *p) { printf("%s", p->c); } main() { A x[3] = {1,"Zhang",2,"Wang", 3,"Zhao"}; fun(x+2); }
26
构造类型
堆 2000
2004
0 1 2
2008
p[0] p[1] p[2]
3000 2000 栈
p
动态存储分配
1
构造类型
3,3,3 [2010.9.37]以下程序的运行结果是 int *a, *b, *c; a = b = c = (int *)malloc(sizeof(int)); *a = 1; *b = 2; *c = 3; a = b; printf("%d,%d,%d", *a, *b, *c);
构造类型
17
结构体指针作函数参数
void f(struct xs *p) { p->age = 40; } main() 张飞,40,66.6 { struct xs z3 = {"张飞",22,66.6}; f(&z3); printf("%s,%d,%.1f", , z3.age, z3.score); }
[2009.3.37][2011.3.37]运行结果是 struct ord 2,4 { int x, y; } dt[3] = {1,3,5,7,9,11}; struct ord *p = dt; printf("%d,", ++p->x); printf("%d", ++p->y);
11
结构体指针
构造类型
构造类型
本章内容
结构 数组 结构体 结构 指针 动态 存储 传递 结构
构造类型
typedef
2
桃园三结义
刘备,字玄德,河北涿州人,161年 结构体 生,1.73m,双股剑 关羽,字云长,山西运城人,162年 生,2.07m,青龙偃月刀 张飞,字翼德,河北涿州人,167年 生,1.85m,丈八蛇矛枪
构造类型
3
3000 2000 栈
p
25
动态分配数组
[例]以下程序的运行结果是 int i, *p; p = malloc(sizeof(int)*3); for (i = 0; i < 3; i++) { p[i] = i; printf("%d,", p[i]); } free(p); 0,1,2,
23
动态存储分配
动态 存储
构造类型
动态分配 指针 = malloc(字节数) 动态释放 free(指针)
24
动态存储分配
[例]以下程序的运行结果是 int *p; p = malloc(sizeof(int)); *p = 3; printf("%d", *p); free(p); 3
堆 2000
15
构造类型
struct { int a, b; } v; typedef struct { int a, b; } TT; TT v;
用户自定义结构体类型
1
构造类型
[2004.4.39][2006.9.44][2010.9.39] 若有以下定义语句,则各选项正确的是 typedef struct S { int g; char h; } T; A)可用S定义结构体变量 B)可用T定义结构体变量 C)S是struct类型的变量 D)T是struct S类型的变量
3
构造类型
[2010.3.38]能给w中m成员赋5的语句是 struct stu { char name[8], sex; int h; struct { int y, m, d; } s; } w, *p = &w; A)*p.m = 5; B)w.m = 5; C)p->m = 5; D)w.s.m = 5;
构造类型
19
返回结构体的函数
struct xs f(struct xs s[3]) { return s[1]; } main() 关羽,27,88.8 { struct xs t[3] = {"刘备",28,77.7, "关羽",27,88.8,"张飞",22,66.6}; struct xs v = f(t); printf("%s,%d,%.1f", , v.age, v.score); }
28
27
动态存储分配
2
构造类型
cab [2012.3.14]以下程序的运行结果是 char *p, *q, *r; p=q=r=(char *)malloc(sizeof(char)*20); strcpy(p, "attaboy,welcome!"); printf("%c%c%c", p[11], q[3], r[4]); free(p);
12
结构体嵌套定义
结构体 指针p
构造类型
结构体 变量w
w的成员
name
sex
s的成员
p
w h y
s
m
d
13
用户自定义类型
①用原类型名定义变量。 typedef
构造类型
例如:int a; ②在前面加上typedef, 把变量名换成新类型名。 例如: typedef int INTEGER; ③用INTEGER代替int作 整型变量的类型说明。 例如:INTEGER a;
构造类型
3
定义结构体
struct xs { char name[8]; int age; float score; }; struct xs z3; z3.age
构造类型
z3.score
z3
4
结构体
1
构造类型
[2007.4.18]设有说明 struct DATE { int year, month, day; }; 写出定义语句,定义d为上述结构体 变量,并同时为其成员year、month 和day依次赋初值为:2006、10、1。 struct DATE d = {2006,10,1};
t 刘备 28 77.7 关羽 27 88.8 张飞 22 66.6
7
结构体数组
1
构造类型
[2011.3.38]以下程序的运行结果是 struct S 21 { int a, b; } data[2] = {10,100,20,200}; main() { struct S s = data[1]; printf("%d", ++(s.a)); }
22
结构体作函数参数
3
构造类型
[2011.9.36]以下程序的运行结果是 typedef struct { char s[5], t; } A; A f(A a) BBm { A b = {"BB",'m'}; a.t = b.t; strcpy(a.s, b.s); return a; } main() { A c = {"CC",'f'}, d = f(c); printf("%s%c", d.s, d.t); }
5
结构体
2
构造类型
[2011.3.36]设有以下定义,则错误的 语句是 struct { int a; double b; char c[8]; } t1, t2; A)t2 = t1; B)t2.a = t1.a; C)t2.b = t1.b; D)t2.c = t1.c;
6
结构体数组
构造类型
8
指向结构体的指针
struct xs *p = t; 结构 for (i = 0; i < 3; i++) { 指针 printf("%s\t%d\t%f", t[i].name, p->age, (*p).score); p++; } t[0] t[1] t[2]
p
p
p
结构体指针
1
构造类型
[2012.3.37]错误引用color成员的是 struct MP3 { char name[20]; char color; } s, *p = &s; A)s.color B)p->color C)s->color D)(*p).color
10
结构体指针
2
构造类型
16
结构体作函数参数
void f(struct xs w5) 传递 { 结构 w5.age = 40; } main() 张飞,22,66.6 { struct xs z3 = {"张飞",22,66.6}; f(z3); printf("%s,%d,%.1f", , z3.age, z3.score); }
构造类型
结构体作函数参数
1
构造类型
[2007.4.33]以下程序的运行结果是 typedef struct { int b, p; } A; void f(A c) { c.b += 1; c.p += 2; } main() { A a = {1,2}; f(a); 1,2 printf("%d,%d", a.b, a.p); }
21
结构体作函数参数
2
构造类型
[2012.3.38]以下程序的运行结果是 Zhao typedef struct { int a; char c[8]; } A; void fun(A *p) { printf("%s", p->c); } main() { A x[3] = {1,"Zhang",2,"Wang", 3,"Zhao"}; fun(x+2); }
26
构造类型
堆 2000
2004
0 1 2
2008
p[0] p[1] p[2]
3000 2000 栈
p
动态存储分配
1
构造类型
3,3,3 [2010.9.37]以下程序的运行结果是 int *a, *b, *c; a = b = c = (int *)malloc(sizeof(int)); *a = 1; *b = 2; *c = 3; a = b; printf("%d,%d,%d", *a, *b, *c);
构造类型
17
结构体指针作函数参数
void f(struct xs *p) { p->age = 40; } main() 张飞,40,66.6 { struct xs z3 = {"张飞",22,66.6}; f(&z3); printf("%s,%d,%.1f", , z3.age, z3.score); }
[2009.3.37][2011.3.37]运行结果是 struct ord 2,4 { int x, y; } dt[3] = {1,3,5,7,9,11}; struct ord *p = dt; printf("%d,", ++p->x); printf("%d", ++p->y);
11
结构体指针
构造类型
构造类型
本章内容
结构 数组 结构体 结构 指针 动态 存储 传递 结构
构造类型
typedef
2
桃园三结义
刘备,字玄德,河北涿州人,161年 结构体 生,1.73m,双股剑 关羽,字云长,山西运城人,162年 生,2.07m,青龙偃月刀 张飞,字翼德,河北涿州人,167年 生,1.85m,丈八蛇矛枪
构造类型
3
3000 2000 栈
p
25
动态分配数组
[例]以下程序的运行结果是 int i, *p; p = malloc(sizeof(int)*3); for (i = 0; i < 3; i++) { p[i] = i; printf("%d,", p[i]); } free(p); 0,1,2,
23
动态存储分配
动态 存储
构造类型
动态分配 指针 = malloc(字节数) 动态释放 free(指针)
24
动态存储分配
[例]以下程序的运行结果是 int *p; p = malloc(sizeof(int)); *p = 3; printf("%d", *p); free(p); 3
堆 2000
15
构造类型
struct { int a, b; } v; typedef struct { int a, b; } TT; TT v;
用户自定义结构体类型
1
构造类型
[2004.4.39][2006.9.44][2010.9.39] 若有以下定义语句,则各选项正确的是 typedef struct S { int g; char h; } T; A)可用S定义结构体变量 B)可用T定义结构体变量 C)S是struct类型的变量 D)T是struct S类型的变量
3
构造类型
[2010.3.38]能给w中m成员赋5的语句是 struct stu { char name[8], sex; int h; struct { int y, m, d; } s; } w, *p = &w; A)*p.m = 5; B)w.m = 5; C)p->m = 5; D)w.s.m = 5;
构造类型
19
返回结构体的函数
struct xs f(struct xs s[3]) { return s[1]; } main() 关羽,27,88.8 { struct xs t[3] = {"刘备",28,77.7, "关羽",27,88.8,"张飞",22,66.6}; struct xs v = f(t); printf("%s,%d,%.1f", , v.age, v.score); }
28
27
动态存储分配
2
构造类型
cab [2012.3.14]以下程序的运行结果是 char *p, *q, *r; p=q=r=(char *)malloc(sizeof(char)*20); strcpy(p, "attaboy,welcome!"); printf("%c%c%c", p[11], q[3], r[4]); free(p);
12
结构体嵌套定义
结构体 指针p
构造类型
结构体 变量w
w的成员
name
sex
s的成员
p
w h y
s
m
d
13
用户自定义类型
①用原类型名定义变量。 typedef
构造类型
例如:int a; ②在前面加上typedef, 把变量名换成新类型名。 例如: typedef int INTEGER; ③用INTEGER代替int作 整型变量的类型说明。 例如:INTEGER a;
构造类型
3
定义结构体
struct xs { char name[8]; int age; float score; }; struct xs z3; z3.age
构造类型
z3.score
z3
4
结构体
1
构造类型
[2007.4.18]设有说明 struct DATE { int year, month, day; }; 写出定义语句,定义d为上述结构体 变量,并同时为其成员year、month 和day依次赋初值为:2006、10、1。 struct DATE d = {2006,10,1};
t 刘备 28 77.7 关羽 27 88.8 张飞 22 66.6
7
结构体数组
1
构造类型
[2011.3.38]以下程序的运行结果是 struct S 21 { int a, b; } data[2] = {10,100,20,200}; main() { struct S s = data[1]; printf("%d", ++(s.a)); }
22
结构体作函数参数
3
构造类型
[2011.9.36]以下程序的运行结果是 typedef struct { char s[5], t; } A; A f(A a) BBm { A b = {"BB",'m'}; a.t = b.t; strcpy(a.s, b.s); return a; } main() { A c = {"CC",'f'}, d = f(c); printf("%s%c", d.s, d.t); }
5
结构体
2
构造类型
[2011.3.36]设有以下定义,则错误的 语句是 struct { int a; double b; char c[8]; } t1, t2; A)t2 = t1; B)t2.a = t1.a; C)t2.b = t1.b; D)t2.c = t1.c;
6
结构体数组
构造类型
8
指向结构体的指针
struct xs *p = t; 结构 for (i = 0; i < 3; i++) { 指针 printf("%s\t%d\t%f", t[i].name, p->age, (*p).score); p++; } t[0] t[1] t[2]