版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Chap 7 数数 组组7.1 投票情况统计投票情况统计7.2 找出矩阵中最大值所在的位置找出矩阵中最大值所在的位置7.3 判断回文判断回文本章要点本章要点数组的定义、数组元素的引用数组的定义、数组元素的引用 二维数组元素的存储二维数组元素的存储字符串和字符串和 字符串结束符字符串结束符字符串的存储、输入和输出字符串的存储、输入和输出例例7-1:编写程序:调查电视节目欢迎程度。编写程序:调查电视节目欢迎程度。 某电视台要调查对该台某电视台要调查对该台8 8个栏目(栏目编号为个栏目(栏目编号为1818)的受欢迎情况,共调查了)的受欢迎情况,共调查了10001000位观众,每位位观众,每位观众只能
2、选择一个最喜欢的栏目投票。观众只能选择一个最喜欢的栏目投票。 程序要求:输入每一位观众的投票,统计输出程序要求:输入每一位观众的投票,统计输出各栏目的得票情况。各栏目的得票情况。7.1 投票情况统计投票情况统计7.1.1 程序解析排序程序解析排序 # includeint main( void ) int count9; /* 设立数组,栏目编号对应数组下标设立数组,栏目编号对应数组下标 */ int i,response; for(i = 1;i = 8;i+) counti = 0; /* 各栏目计数器清各栏目计数器清0 */ for( i = 1;i = 1000;i+) /* 调试调试
3、时时可把可把1000改小,如改小,如10 */ printf(input your response: ); /* 输入提示输入提示 */ scanf(%d,&response); if(response 8) /* 检查投票是否有效检查投票是否有效*/ printf(this is a bad response: %dn,response); else countresponse+; /* 对应栏目得票加对应栏目得票加1 */ printf(result:n); /* 输出各栏目得票情况输出各栏目得票情况 */ for(i = 1;i = 8;i+) printf(%4d%4dn,i,cou
4、nti); return 0;input your response: 3input your response: 6input your response: 9this is a bad response: 9input your response: 8result:1 22 03 401234567820412100for(i = 1;i = 8;i+) printf(%4d%4dn,i,counti);count count0 count1 count8数组数组n数组:数组:相同类型相同类型数据的数据的有序有序集合集合,内存中连续,内存中连续存放。存放。 由数组名和下标惟一地确定每个数组
5、元素由数组名和下标惟一地确定每个数组元素 每个元素都属于同一类型每个元素都属于同一类型n优点:表述简洁,可读性高;便于用优点:表述简洁,可读性高;便于用循环循环结构结构7.1.2 一维数组的定义和引用一维数组的定义和引用1、定义、定义 类型名类型名 数组名数组名数组长度数组长度类型名:数组元素的类型类型名:数组元素的类型数组名:数组(变量)的名称,标识符数组名:数组(变量)的名称,标识符数组长度:数组长度:常量表达式常量表达式,给定数组的大小,给定数组的大小int a10; 定义一个含有定义一个含有10个整型元素的数组个整型元素的数组 achar c200;定义一个含有定义一个含有200个字符
6、元素的数组个字符元素的数组 c2、数组的内存结构、数组的内存结构内存地址内存地址下标下标值值40289402684024740226402054018440163401424012140100aint a10;假设假设int占用占用2个字节,个字节,数组数组a的内存分配形式的内存分配形式 :根据第一个元素的地址,根据第一个元素的地址,以及元素所需的字节数,以及元素所需的字节数,可获得可获得各个元素的存储地址各个元素的存储地址 数组名是一个数组名是一个地址常量地址常量,存放,存放数组的首地址。不允许被修改。数组的首地址。不允许被修改。3、引用、引用n数组先定义,后使用数组先定义,后使用n只能引用
7、单个的只能引用单个的数组元素数组元素,不能一次引用整个数组,不能一次引用整个数组数组名数组名下标下标下标:整型表达式下标:整型表达式取值范围:取值范围:0,数组长度,数组长度-1int a10;10个元素:个元素:a0、a1、 a9n数组元素的使用方法,与同类型的变量相同数组元素的使用方法,与同类型的变量相同scanf(%d, &ai);counti+;temp = aindex; aindex= ak; ak = temp; printf(%d , ai);下标不要越界下标不要越界不能使用不能使用a10区分数组的定义和数组元素的引用区分数组的定义和数组元素的引用7.1.3 一维数组的初始化一
8、维数组的初始化n定义数组时,对数组元素赋初值定义数组时,对数组元素赋初值类型名类型名 数组名数组名数组长度数组长度 = 初值表初值表;int a10 = 1,2,3,4,5,6,7,8,9,10;a0=1, a1=2,. a9=10n静态数组、动态数组的初始化静态数组、动态数组的初始化static int b5 = 1, 2, 3, 4, 5; 静态数组未初始化,所有元素自动赋静态数组未初始化,所有元素自动赋0static int b5;动态数组未初始化,所有元素为随机值动态数组未初始化,所有元素为随机值auto int c5; 等价与等价与 int c5;static int b5 = 1,
9、 2, 3;b0 = 1, b1 = 2, b2 = 3, b3 = 0, b4 = 0 auto int fib20 = 0, 1;fib0 = 0, fib1 = 1, 其余元素不确定其余元素不确定n如果对全部元素都赋初值,可以省略数组长度如果对全部元素都赋初值,可以省略数组长度int a 10 = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9针对部分元素的针对部分元素的初始化初始化建议不要省略数组长度建议不要省略数组长度7.1.4 使用一维数组编程使用一维数组编程数组和循环数组和循环for(i = 0; i n; i+) printf(%d , ai);数组数组下标下标作为循
10、环变量,通过循环,逐个作为循环变量,通过循环,逐个处理数组元素处理数组元素 一维数组示例一维数组示例例例 7-2 用数组计算用数组计算fibonacci数列的前数列的前10个数,并按每行打印个数,并按每行打印5个个数的格式输出。数的格式输出。1, 1, 2, 3, 5, 例例 7-3 顺序查找法。输入顺序查找法。输入5个整数,将它们存入数组个整数,将它们存入数组a中,再输入中,再输入1个数个数x,然后在数组中查找然后在数组中查找x,如果找到,输出相应的最小下如果找到,输出相应的最小下标,否则,输出标,否则,输出“Not Found”。 找第一个匹配、最后一个匹配、所有匹配找第一个匹配、最后一个
11、匹配、所有匹配例例 7-4 输入输入n(n10),再再输入输入n个数个数(1) 输出最小值和它所对应的下标输出最小值和它所对应的下标(2) 将最小值与第一个数交换,输出交换后的将最小值与第一个数交换,输出交换后的n个数个数例例 7-5 选择排序法。输入一个选择排序法。输入一个n(1n10 ),再再输入输入n个整数,用选个整数,用选择法将它们从小到大排序后输出。择法将它们从小到大排序后输出。例例 7-6二分查找法。设已有一个二分查找法。设已有一个10个元素的整形数组个元素的整形数组a,且按值从,且按值从小到大有序。输入一个整数小到大有序。输入一个整数x,然后在数组中查找,然后在数组中查找x,如果
12、找到,如果找到,输出相应的下标,否则,输出输出相应的下标,否则,输出“Not Found”。用数组计算用数组计算fibonacci数列的前数列的前10个数,并个数,并按每行打印按每行打印5个数的格式输出。个数的格式输出。1, 1, 2, 3, 5, 8, 13, 用数组计算并存放用数组计算并存放fibonacci数列的前数列的前10个数个数f0 = f1 = 1fn = fn-1 + fn-2 2n9例例 7-2 计算计算fibonacci数列数列#include int main(void) int i; int fib10 = 1, 1; /* 数组初始化数组初始化 */ for(i =
13、2; i 10; i+) fibi = fibi - 1 + fibi - 2; for(i = 0; i 10; i+) printf(%6d, fibi); if(i + 1) % 5 = 0) /* 5个数换行个数换行 */ printf(n); return 0; 例例 7-2 源程序源程序 1 1 2 3 5 8 13 21 34 55输入输入5个整数,将它们存入数组个整数,将它们存入数组a中,再输入中,再输入1个数个数x,然后在数组中查找然后在数组中查找x,如果找到,输出相应的下标,如果找到,输出相应的下标,否则,输出否则,输出“Not Found”。输入:输入:2 9 8 1 9
14、 9输出:输出:1输入:输入:2 9 8 1 6 7输出:输出:Not Found例例7-3 在数组中查找一个给定的数在数组中查找一个给定的数#include int main(void) int i, flag, x; int a5; printf(Enter 5 integers: ); for(i = 0; i 5; i+) scanf(%d, &ai); printf(Enter x: ); scanf(%d, &x); flag = 0; for(i = 0; i 5; i+) if(ai = x) printf(Index is %dn, i); flag = 1; break;
15、if(flag = 0) printf(Not Foundn); return 0; 例例 7-3 源程序源程序Enter 5 integers: 2 9 8 1 9Enter x: 9Index is 1Enter 5 integers: 2 9 8 1 9Enter x: 7Not Foundflag的作用?的作用?#include int main(void) int i, flag, x; int a5; printf(Enter 5 integers: ); for(i = 0; i 5; i+) scanf(%d, &ai); printf(“Enter x: ); scanf(%
16、d, &x); flag = 0; for(i = 0; i 5; i+) if(ai = x) printf(Index is %dn, i); flag = 1; break; if(flag = 0) printf(Not Foundn); return 0; 例例 7-3 思考思考(1)Enter 5 integers: 2 9 8 1 9Enter x: 9Index is 1Index is 4去掉去掉break语句,结果?语句,结果?#include int main(void) int i, sub, x; int a5; printf(Enter 5 integers: );
17、 for(i = 0; i 5; i+) scanf(%d, &ai); printf(Enter x: ); scanf(%d, &x); sub = -1; for(i = 0; i 5; i+) if(ai = x) sub = i; if(sub != -1) printf(Index is %dn, sub); else printf(Not Foundn); return 0; 例例 7-3 思考思考(2)Enter 5 integers: 2 9 8 1 9Enter x: 9Index is 4sub的作用?的作用?#include int main(void) int i,
18、min, n; int a10; printf(Enter n: ); scanf(%d, &n); printf(Enter %d integers: , n); for(i = 0; i n; i+) scanf(%d, &ai); min = a0; for(i = 1; i n; i+) if(ai min) min = ai; printf(min is %d n, min); return 0;例例 7-4 求最小值求最小值Enter n: 6Enter 6 integers: 2 9 -1 8 1 6min is -1方法!方法!虽得到了最小值,但不能虽得到了最小值,但不能确定最
19、小值所在下标!确定最小值所在下标!输入输入n(n10), 再再输入输入n个数个数, 输出最小值和它输出最小值和它所对应的下标。所对应的下标。用用index记录最小值对应的下标记录最小值对应的下标aindex就是最小值就是最小值例例 7-4(1) 求最小值及其下标求最小值及其下标流程图流程图#include int main(void) int i, index, n; int a10; printf(Enter n: ); scanf(%d, &n); printf(Enter %d integers: , n); for(i = 0; i n; i+) scanf(%d, &ai); ind
20、ex = 0; for(i = 1; i n; i+) if(ai aindex) index = i; printf(min is %dtsub is %dn, aindex, index); return 0;求最小值及下标求最小值及下标Enter n: 6Enter 6 integers: 2 9 -1 8 1 6min is -1 sub is 2 输入输入n(n10), 再再输入输入n个数个数,将最小值与第将最小值与第一个数交换,输出交换后的一个数交换,输出交换后的n个数。个数。用用index记录最小值对应的下标记录最小值对应的下标aindex就是最小值就是最小值最小值与第一个数交换
21、最小值与第一个数交换aindex a0例例 7-4(2) 交换最小值交换最小值例例 7-5 选择法排序选择法排序 输入输入n(n10), 再再输入输入n个数个数,用选择法将它们从用选择法将它们从小到大排序后输出。小到大排序后输出。设设 n=5 ,输入为:,输入为:3 5 2 8 1第第1次:次: 1 5 2 8 3 第第2次:次: 2 5 8 3 第第3次:次: 3 8 5 第第4次:次: 5 8 0123435281下标下标 值值3 5 2 8 1 (n=5)5个数个数(a0a4)中找最小数,与中找最小数,与a0交换交换(1) 1 5 2 8 3 a4 a04个数个数(a1a4)中找最小数,
22、与中找最小数,与a1交换交换(2) 1 2 5 8 3 a2 a13个数个数(a2a4)中找最小数,与中找最小数,与a2交换交换(3) 1 2 3 8 5 a4 a22个数个数(a3a4)中找最小数,与中找最小数,与a3交换交换(4) 1 2 3 5 8 a4 a3选择法选择法(1)(1) n个数个数 (a0an-1) 中找最小数,与中找最小数,与 a0 交换交换(2) n-1个数个数 (a1an-1) 中找最小数,与中找最小数,与 a1 交换交换 (n-1) 2个数个数 (an-2an-1) 中找最小数,与中找最小数,与 an-2 交换交换(1) 5个数个数 (a0a4) 中找最小数,与中找
23、最小数,与 a0 交换交换(2) 4个数个数 (a1a4) 中找最小数,与中找最小数,与 a1 交换交换(3) 3个数个数 (a2a4) 中找最小数,与中找最小数,与 a2 交换交换(4) 2个数个数 (a3a4) 中找最小数,与中找最小数,与 a3 交换交换选择法选择法(2)n个数重复个数重复n-1次次流程图流程图输入数组ak=0kn-1aiaindexindex=i假(0)假(0)真(非0)真(非0)i=i+1交换aindex和ak输出数组aindex=ki=k+1k=k+1in假(0)外循环控制:外循环控制: n 个数选择个数选择排序共需要排序共需要n-1次次内循环控制:内循环控制:在下
24、标范围在下标范围k,n-1内找内找最小值所在最小值所在位置位置index选择法排序选择法排序 (程序段程序段) for(k = 0; k n-1; k+) index = k; for(i = k + 1; i n; i+) if(ai aindex) index = i; temp = aindex; aindex = ak; ak = temp; Enter n: 5Enter 10 integers: 3 5 2 8 1After sorted: 1 2 3 5 8例例 7-6 二分法查找二分法查找 设已有一个设已有一个10个元素的整形数组个元素的整形数组a,且按值,且按值从小到大有序。
25、输入一个整数从小到大有序。输入一个整数x,然后在数组中,然后在数组中查找查找x,如果找到,输出相应的下标,否则,输,如果找到,输出相应的下标,否则,输出出“Not Found”。 例例7-37-3顺序查找是最简单明了的一种,其查找过程就是对顺序查找是最简单明了的一种,其查找过程就是对数组元素从头到尾的遍历过程。但是一旦数组元素量很大的数组元素从头到尾的遍历过程。但是一旦数组元素量很大的情况下,其查找的效率不高。情况下,其查找的效率不高。 二分查找是查找效率较高的一种,但前提是二分查找是查找效率较高的一种,但前提是数组元素必须数组元素必须是有序的。是有序的。二分查找流程图二分查找流程图二分法查找
26、二分法查找 (程序段程序段) low = 0; high = n - 1; /* 开始时查找区间为整个数组开始时查找区间为整个数组 */ while (low = high) /* 循环条件循环条件 */ mid = (low + high) / 2; /* 中间位置中间位置 */ if (x = amid) break; /* 查找成功,中止循环查找成功,中止循环 */ else if (x amid) high = mid - 1; /* 前半段,前半段,high前移前移 */ else low = mid + 1; /* 后半段,后半段,low后移后移 */ if(low = high)
27、 printf(Index is %d n,mid); else printf( Not Foundn);7.2 找出矩阵中最大值所在的位置找出矩阵中最大值所在的位置7.2.1 程序解析求矩阵的最大值程序解析求矩阵的最大值 例例 7-7 将将1个个3*2的矩阵存入的矩阵存入1个个3*2的二维的二维数组中,找出最大值以及它的行下标和列数组中,找出最大值以及它的行下标和列下标,并输出该矩阵。下标,并输出该矩阵。 使用二维数组使用二维数组row 记录最大值的行下标记录最大值的行下标col 最大值的列下标最大值的列下标arowcol 就是最大值就是最大值int main(void) int col,
28、i, j, row; int a32; printf(Enter 6 integers:n) ; for(i = 0; i 3; i+) for(j = 0; j 2; j+) scanf(%d, &aij); for(i = 0; i 3; i+) for(j = 0; j 2; j+) printf(%4d, aij); printf(n); row = col = 0; for(i = 0; i 3; i+) for(j = 0; j arowcol) row = i; col = j; printf(max = a%d%d = %dn, row, col, arowcol); retu
29、rn 0; 例例7-7 源程序源程序Enter 6 integers: 3 2 10 -96 -13 2 10 -96 -1max = a10 = 10二维数组二维数组多维数组的空间想象多维数组的空间想象二维数组:二维数组: 一个表格或一个平面矩阵一个表格或一个平面矩阵一维数组:一维数组: 一列长表或一个向量一列长表或一个向量多维数组:多维数组: 多维空间的一个数据列阵多维空间的一个数据列阵三维数组:三维数组: 三维空间的一个方阵三维空间的一个方阵7.2.2 二维数组的定义和引用二维数组的定义和引用n定义定义类型名类型名 数组名数组名行长度行长度列长度列长度行下标和列下标:整型表达式行下标和列
30、下标:整型表达式行下标的取值范围是行下标的取值范围是0,行长度,行长度-1列下标的取值范围是列下标的取值范围是0,列长度,列长度-1int a32;定义定义1个二维数组个二维数组a,3行行2列,列,6个元素个元素n引用引用a00 a01 a10 a11 a20 a21 下标不要越界下标不要越界二维数组在内存中的存放方式二维数组在内存中的存放方式int a32;a00 a01 a10 a11 a20 a21 二维数组的元素在内二维数组的元素在内存中按行存中按行/列方式存放列方式存放a00a01a10a11a20a21 7.2.3 二维数组的初始化二维数组的初始化1、分行分行赋初值赋初值int a
31、33 = 1,2,3,4,5,6,7,8,9;static int b43 = 1,2,3, ,4,5;数组数组a1 2 3 4 5 67 8 9数组数组b1 2 30 0 04 5 00 0 02、顺序赋初值、顺序赋初值int a33 = 1,2,3,4,5,6,7,8,9;static int b43 = 1,2,3,0,0,0,4,5;省略行长度省略行长度对全部元素都赋了初值,对全部元素都赋了初值,int a 3=1,2,3,4,5,6,7,8,9;或分行赋初值时,在初值表中列出了全部行或分行赋初值时,在初值表中列出了全部行static int b 3=1,2,3,0,4,5,0数组数组
32、a1 2 3 4 5 67 8 9数组数组b1 2 30 0 04 5 00 0 0建议不要省略建议不要省略7.2.4 使用二维数组编程使用二维数组编程行下标和列下标分别做为循环变量行下标和列下标分别做为循环变量, 通通过过二重循环二重循环,遍历二维数组,遍历二维数组通常将行下标做为外循环的循环变量通常将行下标做为外循环的循环变量 列下标列下标 内循环内循环定义定义1个个 3*2 的二维数组的二维数组a,数组元素的值由数组元素的值由下式给出,按矩阵的形式输出下式给出,按矩阵的形式输出a。aij = i + j(0i2,0j1)例例7-8 生成一个矩阵并输出生成一个矩阵并输出 int a32;a
33、00 a01 a10 a11 a20 a21 0 11 22 3#include int main(void) int i, j; int a32; for(i = 0; i 3; i+) for(j = 0; j 2; j+) aij = i + j; for(i = 0; i 3; i+) for(j = 0; j 2; j+) printf(%4d, aij); printf(n); return 0; a00 a01 a10 a11 a20 a21 i = 0 j = 0i = 0 j = 1i = 1 j = 0i = 1 j = 1i = 2 j = 0i = 2 j = 1 例例
34、7-8 源程序源程序0 11 22 3二维数组的输入二维数组的输入例例7-7中,中,int a32;for(i = 0; i 3; i+) /*先行后列先行后列*/ for(j = 0; j 2; j+) scanf(%d, &aij);a00 a01 a10 a11 a20 a21 for(j = 0; j 2; j+) /*先列后行先列后行*/ for(i = 0; i 3; i+) scanf(%d, &aij);Enter 6 integers: 3 2 10 -9 6 -1 3 2 10 -9 6 -1max = a10 = 10Enter 6 integers: 2 10 -9 6
35、 -13 -9 2 610 -1max = a20 = 10int aNN; N是正整数是正整数aij:i、j的取值范围的取值范围0,N-1用二维数组用二维数组a表示表示N*N方阵时,对应关系方阵时,对应关系:a00 a01 a02 主对角线主对角线 a10 a11 a12 上三角上三角a20 a21 a22 下三角下三角 付对角线付对角线矩阵与二维数组矩阵与二维数组i=ji=ji+j=N-1输入一个正整数输入一个正整数n (1n6),根据下式生成根据下式生成1个个n*n的的方阵,然后将该方阵转置(行列互换)后输出。方阵,然后将该方阵转置(行列互换)后输出。 aij = i * n + j +
36、 1(0in-1,0jn-1)分析:分析:int a66; n=3时时例例7-9 方阵转置方阵转置 1 2 34 5 67 8 91 4 7 2 5 83 6 9a01 a10 a02 a20a12 a21aij aji#include int main(void) int i, j, n, temp; int a66; printf(Enter n: ); scanf(%d, &n); /* 给二维数组赋值给二维数组赋值 略略*/ /* 行列互换行列互换*/ for(i = 0; i n; i+) for(j = 0; j n; j+) if(i = j) /* 只遍历上三角阵只遍历上三角阵
37、 */ temp = aij; aij = aji; aji = temp; /* 按矩阵的形式输出按矩阵的形式输出a 略略 */ return 0; 例例7-9 源程序源程序例例7-10 日期计算日期计算自定义自定义1个函数个函数day_of_year(year, month, day),计计算并返回年算并返回年year、月、月month和日和日day对应的是该年对应的是该年的第几天。的第几天。 day_of_year(2000, 3, 1) 返回返回61day_of_year(1981, 3, 1) 返回返回60分析:分析: 月月 0 1 2 3 11 12非闰年非闰年 0 31 28 3
38、1 30 31闰年闰年 0 31 29 31 30 31int tab213= 0, 31, 28, 31, 30,31,30,31,31,30,31, 30,31 0, 31, 29, 31, 30,31,30,31,31,30,31, 30,31例例7-10 源程序源程序int day_of_year(int year, int month, int day) int k, leap; int tab213= 0, 31, 28, 31, 30,31,30,31,31,30,31, 30,31 0, 31, 29, 31, 30,31,30,31,31,30,31, 30,31 ; lea
39、p = (year%4=0&year%100!=0) | year %400=0; for (k=1; kmonth; k+) day = day + tableapk; return day;例例7-11 输入一个以回车结束的字符串输入一个以回车结束的字符串(少于少于10个字符个字符),判断该字符串是否是回文?,判断该字符串是否是回文? 所 谓 回 文 就 是 字 符 串 中 心 对 称 , 如所 谓 回 文 就 是 字 符 串 中 心 对 称 , 如“abcba”、“abccba”是回文,是回文,“abcdba”不不是回文。是回文。从此例题引入字符串操作从此例题引入字符串操作7.3 判断回
40、文判断回文7.3.1 程序解析程序解析-判断回文判断回文# include int main(void) int i, n, m; char s10; printf(Enter a string: ); i = 0; while(si = getchar( ) != n) i+; si = 0; for(n = 0,m = i-1; n = m) printf( It is a plalindromen); else printf( It is not a plalindromen); return 0; Enter a string: abcbaIt is a plalindrome Ent
41、er a string: abcdbaIt is not a plalindrome 7.3.2 一维字符数组一维字符数组n字符串存储和运算:用一维字符数组实现字符串存储和运算:用一维字符数组实现n一维字符数组的定义、引用、初始化与其他类一维字符数组的定义、引用、初始化与其他类型的一维数组一样。型的一维数组一样。char str80; 定义一个含有定义一个含有80个字符型元素的数组个字符型元素的数组str char t5=H, a, p, p, y;初始化数组初始化数组 t t0 t1 t4t H a p p y输出数组输出数组 t 的所有元素的所有元素for(i=0; i 对字符数组的操作对
42、字符数组的操作1. 字符串的存储数组初始化字符串的存储数组初始化字符串可以存放在一维字符数组中字符串可以存放在一维字符数组中 static char s6 = H, a, p, p, y, 0;字符数组初始化:用字符串常量字符数组初始化:用字符串常量static char s6 = Happy;static char s6 = Happy;数组长度数组长度 = 字符串的有效长度字符串的有效长度 + 1char t5; Happy 能存入能存入t吗吗? s0 s1 s5s H a p p y 0字符串的存储字符串的存储auto char s80= Happy;字符串遇字符串遇 0 结束结束第一个
43、第一个 0 前面的所有字符和前面的所有字符和 0 一起构成了字一起构成了字符串符串 Happy”0 之后的其他数组元素与该字符串无关之后的其他数组元素与该字符串无关 s0 s1 s5s H a p p y 0 ? ? 2. 对字符串的操作对字符串的操作n普通字符数组与字符串操作的区别:普通字符数组与字符串操作的区别:普通字符数组:普通字符数组:n数组元素的数组元素的个数个数是确定的是确定的n一般用一般用下标下标控制循环控制循环字符串:字符串:n没有显式地给出有效字符的个数没有显式地给出有效字符的个数n只规定只规定: :0 之前的都是字符串的有效字符之前的都是字符串的有效字符n一般用结束符一般用
44、结束符 0 来控制循环来控制循环循环条件:循环条件:si != 0 for(i = 0; si != 0; i+) putchar(si);for(i = 0; i 80; i+) putchar(si);for(i = 0; i len; i+) putchar(si);输出字符串输出字符串 s0 s1 s5s H a p p y 0 ? ?输出?输出?字符串的赋值和输入字符串的赋值和输入字符串的存储字符串的存储字符数组初始化:字符数组初始化:static char s6 = Happy;赋值:赋值:s0 = a; s1 = 0;输入输入 0 代表空操作,无法输入代表空操作,无法输入输入时,
45、设定一个输入时,设定一个输入结束符输入结束符将输入结束符转换为字符串结束符将输入结束符转换为字符串结束符 0a 2 个字符个字符 a 和和 0a 1 个字符常量个字符常量区分区分a 和和 a例例7-12 数值转换数值转换#include int main(void) int i, number; char str10; printf(Enter a string: ); /* 输入字符串输入字符串 */ i = 0; while(stri = getchar( ) != n) i+; stri = 0; number = 0; /* 将字符串转换为整数将字符串转换为整数 */ for(i = 0; stri != 0; i+) if(stri = 0 & stri = 9) number = number * 10 + (stri - 0); printf(digit = %dn, number); return 0; Enter a string:ab1cb23adigit = 1230 1 2 3 stra b 1 c b 2 3 a 0 ?7.3.4 使用字符串编程使用字符串编程nC语言中字符串用一维的字符数组存储,语言中字符串用一维的字符数组存储,n对字符串的处理实际上就是对
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖南省多校联考2024-2025学年高二上学期12月联考政治试题(含答案)
- 《解析工伤保险》课件
- 孕期屁股疼的健康宣教
- 孕期肚脐发黑的健康宣教
- 分泌性中耳炎的健康宣教
- 丝状角膜病变的临床护理
- 羊水过多的健康宣教
- 星迹步态的健康宣教
- 腺垂体功能减退症的临床护理
- 中耳癌的健康宣教
- 安师大环境土壤学课件05土壤水
- 压力管道验收资料表格
- 2023年康复医学考试重点复习资料
- 《忆读书》教学课件
- 动力触探技术规定
- 如何赢得大学生创新创业大赛智慧树知到答案章节测试2023年哈尔滨工程大学
- 瞳孔观察PPT演示课件
- 人工智能智慧树知到答案章节测试2023年复旦大学
- 统编版六年级下册语文词句段运用及仿写
- GB/T 18103-2022实木复合地板
- 地下矿山掘进施工现场应急处置方案
评论
0/150
提交评论