数组(二维数组和字符数组)课件

上传人:我*** 文档编号:143446288 上传时间:2020-08-29 格式:PPT 页数:38 大小:205.50KB
返回 下载 相关 举报
数组(二维数组和字符数组)课件_第1页
第1页 / 共38页
数组(二维数组和字符数组)课件_第2页
第2页 / 共38页
数组(二维数组和字符数组)课件_第3页
第3页 / 共38页
数组(二维数组和字符数组)课件_第4页
第4页 / 共38页
数组(二维数组和字符数组)课件_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《数组(二维数组和字符数组)课件》由会员分享,可在线阅读,更多相关《数组(二维数组和字符数组)课件(38页珍藏版)》请在金锄头文库上搜索。

1、C程序设计 Programming in C,西安电子科技大学计算机学院 张淑平,上次课程内容提要,数组 一维数组 数组元素的表示 数组元素的存储 数组元素的引用和初始化 查找 顺序查找 二分查找(折半查找) 排序 冒泡排序,这次课的主要内容,数组 一维数组的应用 二维数组 字符数组,进制转换:用数组存储转转结果,一维数组的应用,43,2,21,1,a:,11,10,9,8,7,6,14,13,12,5,4,3,2,1,0,15,1,被除数,除数,商,余 数,十进制整数转换为二进制整数,43,2,21,1,a:,11,10,9,8,7,6,14,13,12,5,4,3,2,1,0,15,1,1

2、,21,2,10,1,被除数,除数,商,余 数,43,2,21,1,a:,11,10,9,8,7,6,14,13,12,5,4,3,2,1,0,15,0,1,1,21,2,10,1,10,2,5,0,被除数,除数,商,余 数,43,2,21,1,a:,11,10,9,8,7,6,14,13,12,5,4,3,2,1,0,15,1,0,1,1,21,2,10,1,5,2,2,1,10,2,5,0,被除数,除数,商,余 数,43,2,21,1,a:,11,10,9,8,7,6,14,13,12,5,4,3,2,1,0,15,0,1,0,1,1,21,2,10,1,5,2,2,1,10,2,5,0,

3、2,2,1,0,被除数,除数,商,余 数,43,2,21,1,a:,11,10,9,8,7,6,14,13,12,5,4,3,2,1,0,15,1,0,1,0,1,1,21,2,10,1,5,2,2,1,10,2,5,0,2,2,1,0,1,2,0,1,被除数,除数,商,余 数,43,2,21,1,a:,11,10,9,8,7,6,14,13,12,5,4,3,2,1,0,15,1,0,1,0,1,1,21,2,10,1,5,2,2,1,10,2,5,0,2,2,1,0,1,2,0,1,0,被除数,除数,商,余 数,十进制整数转换为二进制整数,给定一个十进制整数n,编写程序计算其二进制表示形式

4、并输出。,int i, b32 = 0; long n; /*十进制数n转换为二进制数输出*/ i = 0; while (n != 0) bi = n % 2; i+; n = n / 2; for(-i; i = 0; i-) printf(%d, bi);,TC2.0,int i, b32 = 0; long n; /*十进制数n转换为二进制数输出*/ i = 31; while (n != 0) bi = n % 2; i-; n = n / 2; for(+i; i 32; i+) printf(%d, bi);,筛法求素数,一维数组的应用,设有两个筛子,分别用sieve和prime

5、标识,初始时prime为空,元素2n放在sieve中 算法结束时,sieve为空,而不大于n的素数都放在prime中,k找出sieve中最小的数,开始,结束,求精,筛法求素数,记事本,筛法求素数中的筛子,设有两个筛子,分别用sieve和prime标识,初始时prime为空,元素2n放在sieve中 算法结束时,sieve为空,而不大于n的素数都放在prime中,筛法求素数程序,TC2.0,#define N 1000 int sieveN+1 = 0; /* 构造一个筛子sieve*/ int j, k; for(j = 2; j = N; j+) /* 初始时从2 N的所有数都在筛子中*/

6、sievej = 1;,筛法求素数程序(续),k找出sieve中最小的数,k = 2; while ( ) /* 筛子sieve不空*/ /*从筛子sieve中找出最小的数k*/ for(; sievek = 0; k+ ); printf(%dt,k); 从筛子sieve中去掉k及其倍数; ,筛法求素数程序(续),TC2.0,k找出sieve中最小的数,k = 2; while ( ) /* 筛子sieve不空*/ /*从筛子sieve中找出最小的数k*/ for(; sievek = 0; k+ ); printf(%dt,k); 从筛子sieve中去掉k及其倍数; ,j = k; whi

7、le (j = N) sievej = 0; j += k; ,/*从筛子sieve中去掉k及其倍数;*/,k = N,程序,筛法求素数程序(续),TC2.0,#include #define N 1000 main() int sieveN+1 = 0; int j,k; /*初始时2 N中的所有数都在筛子中*/ for(j = 2; j = N; j+) sievej = 1; k = 2; while (k = N ) /*从筛子sieve中找出最小的数k*/ for(; sievek=0,if (k N) break; printf(%dt, k); /*从筛子sieve中去掉k及其倍

8、数*/ j = k; while(j = N) sievej = 0; j += k; /*while 筛子sieve不空*/ printf(nPress any key.); getch(); /*main*/,问题:如果需要将所求得的素数保存起来,怎么处理?,筛法求素数程序(续),TC2.0,#include #define N 1000 main() int sieveN+1 = 0; int i = 0, j, k, primeN; /*初始时2 N中的所有数都在筛子中*/ for(j = 2; j = N; j+) sievej = 1; k = 2; while (k = N )

9、/*从筛子sieve中找出最小的数k*/ for(; sievek=0 ,if (k N) break; primei+ = k; /*从筛子sieve中去掉k及其倍数*/ j = k; while(j = N) sievej = 0; j += k; /*while 筛子sieve不空*/ for(j=0; j i; j+) printf(%dt, primej); printf(nPress any key.); getch(); /*main*/,二维数组,一维数组的元素有一个下标,一维数组的定义形式 类型说明符 数组名常量表达式; 例如: int num10; /*由10个整数组成的数

10、组num*/ double a100; /*由100个浮点数组成的数组a*/,一维数组中的元素由一个下标表示,二维数组,二维数组的定义形式 类型说明符 数组名常量表达式1常量表达式2; 例如: int num34; /*由12个整数组成的数组num*/ double a50100; /*由5000个浮点数组成的数组a*/,可将二维数组看成是一个由m行n列构成的矩阵 int num34; /*三行四列:34个元素*/ double a50100; /*50行100列:50100个元素*/,二维数组中的元素,二维数组中的元素通过一对下标(行下标、列下标)标识 例如int num34; /*三行四列

11、:34个元素*/ num00,num01,num02,num03 num10,num11,num12,num13 num20,num21,num22,num23,二维数组元素的存储,二维数组中的元素通过一对下标(行下标、列下标)标识 例如int num34; /*三行四列:34个元素*/ num00,num01,num02,num03 num10,num11,num12,num13 num20,num21,num22,num23,二维数组中的元素可以按行方式存储,也可以按列方式存储,按行存储,m行n列的元素存储顺序为:第0行、第1行、.、第m-1行 例如int a34;,a00 a01 a02

12、 a03 a10 a11 a12 a13 a20 a21 a22 a23,按列存储,m行n列的元素存储顺序为:第0列、第1列、.、第n-1行 例如int a34;,a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23,二维数组元素的初始化,关于定义二维数组时其元素的初始化方法,请阅读教材P127,从键盘读入二维数组元素的值,int i,j; int a34; for(i = 0; i 3; i+) for(j = 0; j 4; j+) scanf(%d,TC2.0,程序,自动形成二维数组元素的值,若二维数组元素的值按行(或列)、是有规律的,可以用程序

13、自动形成二维数组元素的值,int i,j; int a34; for(i = 0; i 3; i+) for(j = 0; j 4; j+) aij = 4*i + j + 1;,TC2.0,程序,二维数组的应用,矩阵是很多科学与工程计算问题中研究的对象 矩阵中的元素用二维数组存储 教材P128例7.4进行的运算称为矩阵转置。,字符数组,字符数组是指元素为字符的数组 char 数组名常量表达式; 例如: char name20; /*由20个字符组成的数组name*/,编写程序:从键盘输入一串字符,按回车键后结束,最后将字符串在屏幕上输出。,TC2.0,记事本,字符数组的初始化,char na

14、me5; /*由5个字符组成的数组name*/ char name15 = c,h,i,n,a; char name25 = china; char name3 = china;,TC2.0,字符串常量,系统会在串尾自动增加一个串结束符号0,串常量china的内部存储,控制数组的下标不要越界是编程者的责任,字符数组的输入和输出,一般情况下,可采用访问整数(或实数)数组元素的方式引用字符数组的元素,但是,编译系统对字符数组在输入、输出、运算等方面还作了特别的处理,即整体操作。,字符数组元素的输入和输出,int a20; /*由20个整数组成的数组a*/ char name20; /*由20个字符

15、组成的数组name*/,scanf(%s,name);,scanf(%d, a);,for(i = 0; i 20; i+) scanf(%d, ,printf(%s,name);,printf(%d, a);,for(i = 0; i 20; i+) printf(%d, ai);,for(i = 0; i 20; i+) scanf(%c, ,for(i = 0; i 20; i+) printf(%c, namei);,字符数组,整数数组,字符串输入输出函数,char name20; /*由20个字符组成的数组name*/,scanf(%s,name); /*若输入的串中有空格,则会被截断*/,for(i = 0; i 20; i+) /*必须输够20个字符*/ scanf(%c, ,字符串输入函数:gets(字符数组),gets(name);,TC2.0,字符串输入函数:puts(字符数组),puts(name);,数组小结,数组用于存储一组类型相同的数据元素,通过下标引用数组元素 一维数组 二维数组 字符数组,控制数组的下标不要越界是编程者的责任,筛法求素

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

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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