北京大学《计算概论》课件:ch
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第十三讲 字符数组、字符串、字符串数组
北京大学 信息科学技术学院 2013年
.
1
数组元素 的 赋值
声明后 赋值 声明时 赋值
.
2
声明后 赋值 int shuzu[5];
.
内存 shuzu[0] 随机值 shuzu[1] 随机值 shuzu[2] 随机值 shuzu[3] 随机值 shuzu[4] 随机值
输出 字符串 变量
.
30
向控制台 输出 字符串变量
}
int main(){ char a; a = ‘\0’; …… return 0;
}
.
15
字符数组
与数值型数组相似,用于一次声明多个字符型变量
char zifu[10];
可以通过下标对每一个变量进行操作
zifu[0] = ‘x’;
zifu[1] = zifu[0];
zifu[9] = 120;
ASCII
编码表
.
13
答:
一个 特殊 的 字符
这个字符的 输出效果是什么
编码值为 0 的字符
是什么字符?
int main(){ char a; a = 0; printf("A%cB\n", a); return 0;
}
.
14
编码值为 0 的字符
int main(){ char a; a = 0; …… return 0;
.
16
字符串
.
17
什么是 字符串
字符串 是 由 一个或多个 字符 构成 的 序列
you are a student!
.
18
在C语言中, 字符串 是 如何 实现/存储 的
在C语言中, 字符串 被实现为 一维字符数组
在C语言中, 字符串 被存储在 一维字符数组 中
.
19
在C语言中, 字符串 是 如何 实现/存储 的
}
int main(){ printf(“u r a student\n”); return 0;
}
.
28
字符串 的 长度
字符串 中 第一个‘\0’字符 之前 的 字符 的 个数
“you are a student!” 长度为18
பைடு நூலகம்
“you are a stud\0ent!” 长度为14
.
29
向控制台
.
21
如何声明 一个 字符串常量
用 双引号 把 需要表达的字符串 括起来
“you are a student!”
编译器 负责
先声明一个长度为19的字符数组,
然后在 末尾 添加 一个‘\0’字符
.
22
如何声明 一个 字符串变量
第一步: 确定 想要存储的字符串 的 最大长度LEN
第二步: 声明一个 长度为 LEN+1 的 一维字符数组
shuzu[i] = i; }
shuzu[0] shuzu[1] shuzu[2] shuzu[3] shuzu[4]
内存
0 1 2 3 4
.
5
声明时 赋值
int shuzu[5] = {0, 1, 2, 3, 4};
.
shuzu[0] shuzu[1] shuzu[2] shuzu[3] shuzu[4]
3
声明后 赋值
int shuzu[5]; int i; for(i = 0; i < 5; i++){
shuzu[i] = i; }
内存 shuzu[0] 随机值 shuzu[1] 随机值 shuzu[2] 随机值 shuzu[3] 随机值 shuzu[4] 随机值
.
4
声明后 赋值
int shuzu[5]; int i; for(i = 0; i < 5; i++){
字符串 以 字符‘\0’ 作为结尾; 需要为 该字符 预留一个存. 储空间
WHY
23
字符串变量
一维字符数组
.
24
向控制台
输出 字符串 常量
.
25
向控制台 输出 字符串常量
方法1:
printf 函数
字符串常量
int main(){
printf(“u r a student”);
return 0;
内存
0 1 2 3 4
6
声明时 赋值
int shuzu[5] = {0, 1};
shuzu[0] shuzu[1]
当
shuzu[2]
数值数目 小于 数组变量数目 时,
剩余的数组变量 被赋值为 0 shuzu[3]
这个规律
对float, double, char 类型的数组
也适用! .
shuzu[4]
}
.
26
int main(){ printf(“you are a stud\0ent”); printf(“\n”); return 0;
}
这个程序 的 输出效果 是什么?
.
27
向控制台 输出 字符串常量
方法2:
puts 函数
int main(){ puts(“u r a student”); return 0;
内存
0 1 0 0 0
7
声明时 赋值
int shuzu[5] = {0, 1};
int shuzu[5] = {0, 1, 0, 0, 0};
.
8
声明时 赋值
int shuzu[5] = {0};
int shuzu[5] = {0, 0, 0, 0, 0};
.
9
字符数组
.
10
回顾:字符型变量 的 赋值
.
11
如何 给一个字符型变量赋予一个特定的值?
• 基本方法:通过 赋值语句
int main( ){
char b, c, d; b = ‘x’; c = b; d = 120;
return 0; }
可以把字符的ASCII编码值 赋给一个字符型变量
.
12
编码值为 0 的字符
是什么字符?
字符 x 的编码值是 120
当数组元素个数(数组长度)大于 字符串中字符个数(字符串长度)时, 如何确定数组中的字符串呢? char str[10]; “abcde”
在C语言中,
字符串 以 字符‘\0’ 作为结尾
.
20
在C语言中, 字符串 是 如何 实现/存储 的
char str[10]={‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘h’, ‘i’, ‘j’}; 只是一个字符数组!并不能表示字符串“abcdefghij”
char str[10] ={‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘\0’, ‘g’, ‘h’, ‘i’, ‘j’}; 可以表示字符串“abcde”,‘\0’之后的字符并不关心!
char str[10] ={‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘\0’, ‘g’, ‘h’, ‘\0’, ‘j’}; 还是表示字符串“abcde”,以第一个‘\0’为字符串的 结束标记,即便后面还有‘\0’ !
北京大学 信息科学技术学院 2013年
.
1
数组元素 的 赋值
声明后 赋值 声明时 赋值
.
2
声明后 赋值 int shuzu[5];
.
内存 shuzu[0] 随机值 shuzu[1] 随机值 shuzu[2] 随机值 shuzu[3] 随机值 shuzu[4] 随机值
输出 字符串 变量
.
30
向控制台 输出 字符串变量
}
int main(){ char a; a = ‘\0’; …… return 0;
}
.
15
字符数组
与数值型数组相似,用于一次声明多个字符型变量
char zifu[10];
可以通过下标对每一个变量进行操作
zifu[0] = ‘x’;
zifu[1] = zifu[0];
zifu[9] = 120;
ASCII
编码表
.
13
答:
一个 特殊 的 字符
这个字符的 输出效果是什么
编码值为 0 的字符
是什么字符?
int main(){ char a; a = 0; printf("A%cB\n", a); return 0;
}
.
14
编码值为 0 的字符
int main(){ char a; a = 0; …… return 0;
.
16
字符串
.
17
什么是 字符串
字符串 是 由 一个或多个 字符 构成 的 序列
you are a student!
.
18
在C语言中, 字符串 是 如何 实现/存储 的
在C语言中, 字符串 被实现为 一维字符数组
在C语言中, 字符串 被存储在 一维字符数组 中
.
19
在C语言中, 字符串 是 如何 实现/存储 的
}
int main(){ printf(“u r a student\n”); return 0;
}
.
28
字符串 的 长度
字符串 中 第一个‘\0’字符 之前 的 字符 的 个数
“you are a student!” 长度为18
பைடு நூலகம்
“you are a stud\0ent!” 长度为14
.
29
向控制台
.
21
如何声明 一个 字符串常量
用 双引号 把 需要表达的字符串 括起来
“you are a student!”
编译器 负责
先声明一个长度为19的字符数组,
然后在 末尾 添加 一个‘\0’字符
.
22
如何声明 一个 字符串变量
第一步: 确定 想要存储的字符串 的 最大长度LEN
第二步: 声明一个 长度为 LEN+1 的 一维字符数组
shuzu[i] = i; }
shuzu[0] shuzu[1] shuzu[2] shuzu[3] shuzu[4]
内存
0 1 2 3 4
.
5
声明时 赋值
int shuzu[5] = {0, 1, 2, 3, 4};
.
shuzu[0] shuzu[1] shuzu[2] shuzu[3] shuzu[4]
3
声明后 赋值
int shuzu[5]; int i; for(i = 0; i < 5; i++){
shuzu[i] = i; }
内存 shuzu[0] 随机值 shuzu[1] 随机值 shuzu[2] 随机值 shuzu[3] 随机值 shuzu[4] 随机值
.
4
声明后 赋值
int shuzu[5]; int i; for(i = 0; i < 5; i++){
字符串 以 字符‘\0’ 作为结尾; 需要为 该字符 预留一个存. 储空间
WHY
23
字符串变量
一维字符数组
.
24
向控制台
输出 字符串 常量
.
25
向控制台 输出 字符串常量
方法1:
printf 函数
字符串常量
int main(){
printf(“u r a student”);
return 0;
内存
0 1 2 3 4
6
声明时 赋值
int shuzu[5] = {0, 1};
shuzu[0] shuzu[1]
当
shuzu[2]
数值数目 小于 数组变量数目 时,
剩余的数组变量 被赋值为 0 shuzu[3]
这个规律
对float, double, char 类型的数组
也适用! .
shuzu[4]
}
.
26
int main(){ printf(“you are a stud\0ent”); printf(“\n”); return 0;
}
这个程序 的 输出效果 是什么?
.
27
向控制台 输出 字符串常量
方法2:
puts 函数
int main(){ puts(“u r a student”); return 0;
内存
0 1 0 0 0
7
声明时 赋值
int shuzu[5] = {0, 1};
int shuzu[5] = {0, 1, 0, 0, 0};
.
8
声明时 赋值
int shuzu[5] = {0};
int shuzu[5] = {0, 0, 0, 0, 0};
.
9
字符数组
.
10
回顾:字符型变量 的 赋值
.
11
如何 给一个字符型变量赋予一个特定的值?
• 基本方法:通过 赋值语句
int main( ){
char b, c, d; b = ‘x’; c = b; d = 120;
return 0; }
可以把字符的ASCII编码值 赋给一个字符型变量
.
12
编码值为 0 的字符
是什么字符?
字符 x 的编码值是 120
当数组元素个数(数组长度)大于 字符串中字符个数(字符串长度)时, 如何确定数组中的字符串呢? char str[10]; “abcde”
在C语言中,
字符串 以 字符‘\0’ 作为结尾
.
20
在C语言中, 字符串 是 如何 实现/存储 的
char str[10]={‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘h’, ‘i’, ‘j’}; 只是一个字符数组!并不能表示字符串“abcdefghij”
char str[10] ={‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘\0’, ‘g’, ‘h’, ‘i’, ‘j’}; 可以表示字符串“abcde”,‘\0’之后的字符并不关心!
char str[10] ={‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘\0’, ‘g’, ‘h’, ‘\0’, ‘j’}; 还是表示字符串“abcde”,以第一个‘\0’为字符串的 结束标记,即便后面还有‘\0’ !