lesson数据的组织结构一二维数组

上传人:hs****ma 文档编号:585807640 上传时间:2024-09-03 格式:PPT 页数:42 大小:943.50KB
返回 下载 相关 举报
lesson数据的组织结构一二维数组_第1页
第1页 / 共42页
lesson数据的组织结构一二维数组_第2页
第2页 / 共42页
lesson数据的组织结构一二维数组_第3页
第3页 / 共42页
lesson数据的组织结构一二维数组_第4页
第4页 / 共42页
lesson数据的组织结构一二维数组_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《lesson数据的组织结构一二维数组》由会员分享,可在线阅读,更多相关《lesson数据的组织结构一二维数组(42页珍藏版)》请在金锄头文库上搜索。

1、Lesson 11 数据的组织结构数据的组织结构1学习目标学习目标:3 1掌握二维数组的使用掌握二维数组的使用23字符数组字符数组2字符数组:数组元素的类型为字符字符数组:数组元素的类型为字符hello033字符数组字符数组2字符数组的定义字符数组的定义char ch10; 43字符数组字符数组2字符串字符串用双引号括起来的一串字符用双引号括起来的一串字符“1234”“Tom”“C Lanuage Program”53字符数组字符数组2字符串在计算机中表示字符串在计算机中表示“1234”12340字符数组字符数组字符串结束标志字符串结束标志63字符数组字符数组2字符数组的初始化字符数组的初始化

2、(1) 字符数组的初始化的基本方法字符数组的初始化的基本方法char ch5=h,e,l,l,o;(2) 省略长度说明如:省略长度说明如: char ch =h,e,l,l,o;(3) 使用字符串初始化字符数组:使用字符串初始化字符数组: char ch =“abcde”; char ch =“abcde”;abcde073字符数组字符数组2字符串的输入输出 1、gets(str); 2、scanf(“%s”, str);vgets( ) 函数以换行符或文件结束符函数以换行符或文件结束符EOF作为输入的结束作为输入的结束标志,因此在输入的字符串中允许包含空格和制表符;标志,因此在输入的字符串中

3、允许包含空格和制表符;vscanf( ) 函数则以空格、制表符、换行符和文件结束符函数则以空格、制表符、换行符和文件结束符EOF作为输入的结束标志,因此,在输入的字符串中不作为输入的结束标志,因此,在输入的字符串中不允许包含这些字符。如果包含了它们,将作为字符串输允许包含这些字符。如果包含了它们,将作为字符串输入的结束标志处理。入的结束标志处理。 char str100;83字符数组字符数组2字符串的输出 1、puts(str); 2、printf(%s”, str);vputs将字符串的内容显示到标准输出设备将字符串的内容显示到标准输出设备屏幕上,屏幕上,并换行。并换行。 93字符数组字符数

4、组2字符串转换成数值类型 atof(str); atoi(str); atol(str);l其其中中str是是一一个个字字符符串串。atof() 的的返返回回类类型型是是double,它它可可以以将将字字符符串串str转转换换成成一一个个双双精精度度数数值值;atoi() 的的返返回回类类型型是是int,它它可可以以将将字字符符串串str转转换换成成普普通通整整型型;atol() 的的返返回回类类型型是是long,它它可可以以将将字字符串符串str转换成长整型(转换成长整型(long)。)。 103字符数组字符数组2例1:将用户以字符串形式输入的两个实型数值转换成double类型,并显示输出这

5、两个实型数值及它们相加的结果。 11#include #include int main( ) char num120, num220; double d1, d2, sum; printf(nEnter the first number:); gets(num1); /* 输入第输入第1个用字符串表示的实型数值个用字符串表示的实型数值 */ printf(Enter ths second number:); gets(num2); /* 输入第输入第2个用字符串表示的实型数值个用字符串表示的实型数值 */ d1 = atof(num1); /* 将第将第1个字符串转换成个字符串转换成doub

6、le类型类型 */ d2 = atof(num2); /* 将第将第2个字符串转换成个字符串转换成double类型类型 */ sum = d1+d2; /* 将将2个个double类型数值相加类型数值相加 */ printf(n%s+%s=%.3lf, num1, num2, sum); /* 显示结果显示结果 */ return 0;123字符数组字符数组2数值类型转换成字符串数值类型转换成字符串 itoa(num, str, radix); ltoa(num, str, radix); l其其中中str用用于于存存放放结结果果的的字字符符串串,radix是是用用户户指指定定的的进进制制数数

7、,它它的的取取值值必必须须介介于于236之之间间。在在itoa( ) 函函数数中中的的num是是一一个个int类类型型的的数数值值;在在ltoa( ) 函函数数中的中的num是一个是一个long类型的数值。类型的数值。 133字符数组字符数组2例2:将用户输入的长整型(long类型)数值转换成以字符串形式表示的十六进制、八进制和二进制数值,并显示输出。 14#include #include int main( ) char str33; long value; printf(nEnter a long number:); scanf(%ld, &value); /*输入一个输入一个long类

8、型的数值类型的数值*/ ltoa(value, str, 16); /*转换成用字符串形式表示的十六进制数值转换成用字符串形式表示的十六进制数值*/ printf(nThe hexadecimal of %ld is %s, value, str); ltoa(value, str, 8); /*转换成用字符串形式表示的八进制数值转换成用字符串形式表示的八进制数值*/ printf(nThe octadecimal of %ld is %s, value, str); ltoa(value, str, 2); /*转换成用字符串形式表示的二进制数值转换成用字符串形式表示的二进制数值*/ pri

9、ntf(nThe binary of %ld is %s, value,str); return 0;153字符数组字符数组2大小写转换大小写转换 strlwr(str); strupr(str);lstr是是一一个个字字符符串串。标标准准函函数数strlwr( ) 可可以以将将字字符符串串str中中出出现现的的所所有有大大写写字字母母转转换换成成小小写写字字母母;标标准准函函数数strupr( ) 可可以以将将字字符符串串str中中出出现现的的所所有有小小写写字字母母转换成大写字母。转换成大写字母。 163字符数组字符数组2例例3 3:统计一段文本中每个英文字母出现的次数。:统计一段文本中每

10、个英文字母出现的次数。 分析分析:定义一个数组定义一个数组letter,存放英文字母出现的次数,存放英文字母出现的次数00000000letterA的的次数次数B的的次数次数C的的次数次数循环字符数组,针对每个字母,找到其在数组循环字符数组,针对每个字母,找到其在数组letter中的对应位置,然后加中的对应位置,然后加1173字符数组字符数组200000000letterA的的次数次数B的的次数次数C的的次数次数如何确定每个字母在如何确定每个字母在letter中的位置呢?中的位置呢?A 对应对应 letter0B 对应对应 letter1C 对应对应 letter2下标:下标:0 A-A下标:

11、下标:1 B-A 下标:下标:2 C-A18#include #include #include #define NUM 26int main( ) int letterNUM = 0; /* 用于存放统计结果的一维数组用于存放统计结果的一维数组 */ char str80; /* 存放以字符串形式输入的文本存放以字符串形式输入的文本 */ int i; printf(nEnter a text line); gets(str); /* 输入文本输入文本 */ strupr(str); /* 将文本中的所有小写字母转换成大写字母将文本中的所有小写字母转换成大写字母 */ for (i=0; s

12、tri!=0; i+) /* 统计每个字母出现的次数统计每个字母出现的次数 */ if (isalpha(stri) letterstri-A = letterstri-A+1; for (i=0; iNUM; i+) /* 输出统计结果输出统计结果 */ printf(n%c:%d, A+i, letteri); return 0;193字符数组字符数组2计算字符串长度计算字符串长度 strlen(str);这这个个函函数数的的功功能能是是返返回回字字符符串串中中所所包包含含的的字字符符个个数数,即即字字符符串串长长度度。字字符符串串结结束束标标志志0不计算在内。不计算在内。 字符串比较字符

13、串比较 strcmp(str1, str2);两两个个字字符符串串进进行行比比较较时时将将依依据据每个字符对应的每个字符对应的ASCII编码决定其大小。编码决定其大小。 203字符数组字符数组2例4:假设用户的密码是“administrators”,下面这个程序将用于检测用户输入的密码是否正确。如果不正确,给出相应的提示信息,并请求用户重新输入。 分析分析:循环的从键盘输入一个字符串,用来和循环的从键盘输入一个字符串,用来和administrators比较,如果相等结束循环比较,如果相等结束循环21#include #include int main( ) char password20; /

14、* 存放用户输入的密码存放用户输入的密码 */ printf(nEnter password: ); gets(password); /* 输入密码输入密码 */ /* 检测用户输入的密码,如果不正确,给出提示,并请求重新输入检测用户输入的密码,如果不正确,给出提示,并请求重新输入 */ while (strcmp(password, administrators) != 0) printf(nInvalid passwordnn); printf(Enter password, again: ); gets(password); printf(OK); /*输入正确,显示输入正确,显示OK*

15、/ return 0;223字符数组字符数组2字符串拷贝字符串拷贝 strcpy(str1, str2);其其中中str2是是将将要要被被拷拷贝贝的的字字符串,符串,str1是用于存放拷贝结果的存储区域。是用于存放拷贝结果的存储区域。 字符串连接字符串连接 strcat(str1, str2);其其中中str1和和str2是是两两个个字字符符串串。这这个个函函数数的的功功能能是是:将将str2连连接接在在str1之之后后,并在结束处添加一个字符串结束符并在结束处添加一个字符串结束符0233字符数组字符数组2例5:根据用户的选择输出相应的字符串。分析分析:1、定义好需要输出的字符串、定义好需要输

16、出的字符串2、从键盘输入一个数、从键盘输入一个数3、判断输入的数,根据要求连接成一个新的、判断输入的数,根据要求连接成一个新的字符串后输出字符串后输出24#include #include int main( ) char str180 = This is a ; char str2 = program.; char str3 = Java; char str4 = Pascal; char str5 = C; char str6 = C+; int choice; printf(n = MENU =n); /* 菜单菜单 */ printf(n Java . . 1); printf(n P

17、ascal . 2); printf(n C . . 3); printf(n C+ . 4); printf(n choice:); scanf(%d, &choice); /* 用户做出选择用户做出选择 */25switch (choice) /* 根据用户的选择拼接字符串根据用户的选择拼接字符串 */ case 1:strcat(str1, str3); strcat(str1, str2); break; case 2:strcat(str1, str4); strcat(str1, str2); break; case 3:strcat(str1, str5); strcat(str

18、1, str2); break; case 4:strcat(str1, str6); strcat(str1, str2); break; default:strcpy(str1, Error); break; printf(n%s, str1); /* 显示字符串显示字符串 */ return 0;263二维数组二维数组3请从键盘输入请从键盘输入3个同学、个同学、4门课程的成门课程的成绩,并按照如下格式输出绩,并按照如下格式输出90 80 70 9997 83 92 6591 85 88 76例:例:273二维数组二维数组3分析分析有有12个成绩需要保存,使用数组个成绩需要保存,使用数组长

19、度为长度为12的一的一维数组?维数组?int score12 数组排列方式数组排列方式如何区分是哪门课程如何区分是哪门课程, 是第几是第几个同学的成绩个同学的成绩?score 283二维数组二维数组3思考思考重新排列重新排列特点:像表格一样特点:像表格一样具有行和列,每个具有行和列,每个变量需要行和列的变量需要行和列的位置才能确定位置才能确定score 293二维数组二维数组3在在C语言中如何实现语言中如何实现?类型类型 数组名数组名 行长度行长度列长度列长度int array 34例:例:float d 35; int a66; char s410;所有元素都是所有元素都是int数组名数组名

20、3行行4列列注意:必须是常量注意:必须是常量array 303二维数组二维数组3二维数组的引用二维数组的引用123456789 10 11 127第第1行行第第2列列数组数组aa1 2数组名数组名行下标行下标列下标列下标 313二维数组二维数组3在定义二维数组时,给元素赋初值在定义二维数组时,给元素赋初值形式形式1: int a23=1,2,3,4,5,6; 形式形式2: int a23=1,2,3,4,5,6; 形式形式3: int a 3=1,2,3,4,5,6; 形式形式4: int a2=1,2,3,4,5,6; 错误!错误!323二维数组操作二维数组操作4二维数组元素的引用及基本操作

21、二维数组元素的引用及基本操作1.数组的赋值数组的赋值 for (i=0; iROWS; i+) for (j=0; jCOLS; j+) valueij = i+j; 2.数组的输入数组的输入 for (i=0; iROWS; i+) for (j=0; jCOLS; j+) scanf(“%d”, &valueij);#define ROWS 4#define COLS 5int value ROWSCOLS; 333二维数组操作二维数组操作4二维数组元素的引用及基本操作二维数组元素的引用及基本操作3. 数组的输出数组的输出 for (i=0; iROWS; i+) for (j=0; jC

22、OLS; j+) printf(“%4d”, valueij); putchar(n); #define ROWS 4#define COLS 5int value ROWSCOLS; 343二维数组应用二维数组应用5例6: 判断给定方阵是否为对称矩阵。 110218821041399252113614368899147123225361233353二维数组应用二维数组应用5问题分析问题分析l对于于一一个个给定定的的N N N N矩矩阵阵arrayarray,如如果果矩矩阵阵中中的的每每个个元元素素都都满满足足arrayij=arrayjiarrayij=arrayji,则则称称这这个个矩矩阵

23、阵为为对称矩阵。对称矩阵。 l在在判判断断一一个个给给定定的的矩矩阵阵是是否否为为对对称称矩矩阵阵时时,只只需需要要用用下下三三角角部部分分的的每每个个元元素素与与对对应应的的上上三三角角元元素素进进行行比比较较。如如果果每每一一对对元元素素都都相相等等,这这个个矩矩阵阵就就是是对对称称矩矩阵阵,否否则,就是非对称矩阵。则,就是非对称矩阵。36算法描述 37#include #define NUM 5 /矩矩阵行列数行列数int main( ) int mNUMNUM; /*定定义二二维数数组变量量*/ int i, j; /* 输入矩入矩阵 */ printf(Enter %d rows %

24、d cols datas for the maxtrix:n,NUM,NUM); for (i=0; iNUM; i+) for (j=0; jNUM; j+) scanf(%d, &mij); /* 显示矩示矩阵 */ for (i=0; iNUM; i+) for (j=0; jNUM; j+) printf(%4d, mij); printf(n); 38/* 判断矩判断矩阵是否是否对称并称并输出相出相应的的结果果 */ for (i=0; iNUM; i+) for (j=0; ji; j+) if (mij!=mji) printf(nThe matrix isnt symmetri

25、cal.); return 0; printf(nThe matrix is symmetrical.); return 0;393课堂练习课堂练习6矩阵转置矩阵转置4041#include #define ROWS 2/矩矩阵行数行数#define COLS 4/矩矩阵列数列数int main( )int value1ROWSCOLS,value2COLSROWS; int i, j;printf(nEnter %d rows %d cols datas for the maxtrix:n,ROWS,COLS); for (i=0; iROWS; i+) for (j=0; jCOLS; j

26、+) scanf(%d, &value1ij);for(i=0; iROWS; i+) for (j=0; jCOLS; j+) value2ji=value1ij; for (i=0; iCOLS; i+) for (j=0; jROWS; j+) printf(%4d, value2ij); printf(n); return 0;3课后练习课后练习7编程实现从键盘任意输入编程实现从键盘任意输入20个整数,统计个整数,统计非负数个数,并计算非负数之和。非负数个数,并计算非负数之和。 输入输入55阶的矩阵,编程实现:阶的矩阵,编程实现: (1)求两条对角线上的各元素之和。)求两条对角线上的各元素之和。(2)求两条对角线上行、列下标均为偶数)求两条对角线上行、列下标均为偶数的各元素之积。的各元素之积。 输入一行字符,统计其中的英文字符、数输入一行字符,统计其中的英文字符、数字字符、空格和其他字符的个数。字字符、空格和其他字符的个数。 42

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号