任务四简单构造数据类型的应用

上传人:第*** 文档编号:33169414 上传时间:2018-02-14 格式:DOC 页数:27 大小:357KB
返回 下载 相关 举报
任务四简单构造数据类型的应用_第1页
第1页 / 共27页
任务四简单构造数据类型的应用_第2页
第2页 / 共27页
任务四简单构造数据类型的应用_第3页
第3页 / 共27页
任务四简单构造数据类型的应用_第4页
第4页 / 共27页
任务四简单构造数据类型的应用_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《任务四简单构造数据类型的应用》由会员分享,可在线阅读,更多相关《任务四简单构造数据类型的应用(27页珍藏版)》请在金锄头文库上搜索。

1、任务四 简单构造数据类型的应用1任务四 简单构造数据类型的应用4.1 教学目标1. 掌握简单构造数据类型包括:一维数组、二维数组及字符数组的使用。2. 理解数组、指针之间的关系。3. 能数组和指针解决一些应用实例。4.2 工作任务1. 一维数组的使用2. 二维数组的使用3. 字符数组的使用4. 指针类型在数组中的应用4.3 相关实践知识4.3.1 一维数组的使用【案例 4-1】对数组中元素进行顺序输入,逆序输出。算法分析:先利用 for 循环对一维数组 a0、a1、a2、a3、a4按顺序存放数组元素,后再次利用 for 循环对数组元素进行逆序输出。C 语言程序如下:#includevoid m

2、ain()int i,a5; for(i=0;i=0;i-) /*逆序输出数组中元素值*/printf(“%3d”,ai);printf(“n”);运行结果:程序先给 a0到 a4赋值为 0 到 5,后将其逆序输出。程序说明: 正确定义了一维数组之后,就可以引用这个一维数组中的任何元素。引用方法如下:数组名下标。其中的“下标”是整型表达式,如果使用实数,则自动取整。引用数组元素的方法称为“下标法” 。C 语言规定,以下标法使用数组元素时,下标可以越界,即下标可以不在 0 到长度-1 的范围内。 本案例中定义了含有 5 个元素的整型数组 a5,能合法使用的数组元素是 a0,a1,a2,a3,a4

3、,而 a5和 a6等虽然也能使用,但由于下标越界,超出数组元素的范围,会造成程序运行结果的不可预料。【案例 4-2】一维数组的引用,求学生的总评成绩,现有 10 个学生,从键盘上输入他们的平时成绩及期末成绩,输出总评成绩.按总评成绩=期末成绩*70%+平时成绩*30%。算法分析:可以利用三个数组进行存放数据,一个存放期末成绩,一个存放平时成绩,还有一个存放总评成绩。利用四个 for 循环对其进行赋值及输出。任务四 简单构造数据类型的应用2具体流程图如下图 4-1 所示: 输入平时成绩到 b i 中计算总评成绩输入期末成绩到a i 中输出总评成绩图 4-1 【案例 4-2】的流程图C 语言程序如

4、下:#includemain()float a10,b10,c10; /*a 数组存放期末成绩,b 数组存放平时成绩,c 数组存放总评成绩*/int i;for(i=0;ivoid main()float score,a8=90,91,92,93,94,95,96,97;int i;printf(“Please input the inqury scoren”);scanf(“%f”,for(i=0;imain()int i,j,row=0,colum=0,min;int a34=2,12,3,11,1,5,6,9,7,8,10,4; /*定义二维数组*/min=a00; /*设置最小值的初值

5、为 a00*/for(i=0;i任务四 简单构造数据类型的应用5void main()int a44,sum; int i,j;sum=0;for(i=0;imain()int select;int i,j;int score57; /*定义个 5 行 7 列的二维数组 score,用来存放学生成绩*/考 试成绩学号任务四 简单构造数据类型的应用6int average=0;int sum=0;doprintf(本程序有 4 项功能n);printf(1、根据学号查询学生成绩n);printf(2、根据考试号统计成绩n);printf(3、根据考试号和学号查询成绩n);printf(4、成绩录

6、入n);printf(0、退出n);printf(请输入选择(0-4):);scanf(%d,switch(select)case 0: /*退出*/printf(OKn);break;case 1: /*根据学号查询学生成绩*/printf(输入学号:);scanf(%d,for(j=1;jvoid main()char c50=I, ,l,o,v,e, ,c,h,i,n,a,!;int i;for(i=0;imain()char c30;int i=-1,j;doi+;scanf(%c,while(ci!=n); /*读入字符串*/任务四 简单构造数据类型的应用8for(j=i-1;j=0

7、;j-) /*逆序输出字符串*/printf(%c,cj);printf(n);程序说明: 变量 i 用来表示输入字符的个数,设置 i 的初值为1,当第一次执行读入字符串的 do-while 语句时,i 的值变为 0,则第一个读入的字符存入 c0单元。判断当前输入的字符是否为回车符,如是回车符,则退出 do-while 语句,如不是则继续读入字符。 执行完 do-while 语句后,i 的值就是读入字符的个数(含最后一个回车符) ,通过“for(j=i-1;j=0;j-) printf(%c,cj);”循环语句从 i-1(最后的回车符去掉)的位置开始,反向输出字符。【案例 4-9】输入一串字符

8、串(不超过 100 个字符) ,统计其中字符个数。算法分析:对字符数组进行遍历,对每个数组元素进行判断是否为0,是则统计结束,否则进行累加。C 语言程序如下:#includevoid main()char c100,i;int n=0;scanf(%s,c);while(cn!=0)n+;printf(%dn,n);程序说明: 本例中定义了一个长度为 100 的字符数组 c,用来存放输入的字符串。 “while(cn!=0) n+;”中 cn!=0是循环条件,当前字符 cn不等于0时,执行 n+语句,即指向下一个字符,继续判断下一个字符。当退出循环时,n的值就是该字符串的字符个数。【案例 4-

9、10】将两个字符串连接起来,不要用可选择 strcat 函数。算法分析:这里设置字符数组 1 用来存放字符串 1,字符数组 2 用来存放字符串 2,现在要将字符串 2 连接到字符串 1 后面,通过循环判断字符数组 1 中的元素是否是0,来判断字符串 1 是否到结束,如果结束,则将字符数组 2 中的元素从第 0 个元素开始依次连接到字符串 1 的后面。C 语言程序如下:#include main()char s180,s240;int i=0,j=0;printf(请输入字符串 1n);gets(s1);printf(请输入字符串 2n);任务四 简单构造数据类型的应用9gets(s2);whi

10、le (s1i!=0) /*判断 s1 字符串是否结束*/i+;while (s2j!=0)s1i+=s2j+; /*连接字符到要 s1*/s1i=0;printf(新的字符串:%sn,s1);程序说明: “char s180,s240;”定义了两个字符数组 s1、s2,因为 s1 要存放连接后的字符串,所以 s1 的长度要设置的足够长。 “gets(s1);”:是读入一个字符串到字符数组 s1 中,gets 是字符串输入函数,它的作用是:从标准输入设备键盘上输入一个字符串。该语句与“scanf(“%s”,s1)”等价。 “while (s1i!=0) i+;”是判断 s1 中字符串的结束位置

11、。4.3.5 指针类型在数组中的应用【案例 4-11】定义数组后,查看各数组元素的地址、数组元素的值。算法分析:编写四个 for 循环,前两个实现输出 a 数组元素地址,后两实现输出 a 数组元素的值。C 语言程序如下:#includevoid main()int i,a5=1,2,3,4,5;for(i=0;ivoid main()int a23=1,2,3,4,5,6;int *p;p=a0;for(;pvoid main()char a15=hello world!,b15;int i;for(i=0;*(a+i)!=0;i+)*(b+i)=*(a+i);*(b+i)=0;printf(

12、a15中的字符串为%sn,a);printf(b15中的字符串为%sn,b);程序说明:先定义两个字符数组 a 和 b,通过地址访问数组元素。在 for 语句中,先检查 ai是否为0,如果 ai为0表示字符串结束;如果 ai不为0,则表示字符串尚未处理完,就将*(a+i)的值赋给*(b+i),即一个字符一个字符的复制。通过 for 循环把字符串 a全部复制给了字符串 b。最后还要将0复制给 b,表示字符串结束。4.4 相关理论知识4.4.1 一维数组的定义和初始化1. 一维数组的定义:一维数组的定义格式为:类型说明符 数组名常量表达式现举例说明一维数组的定义方法:int a5,b; 定义有 5

13、 个元素的整型数组 a 和整型变量 b任务四 简单构造数据类型的应用11float a5,b10; 定义分别有 5 个元素及 10 个元素的单精度型数组 a 和 bchar c5; 定义有 5 个元素的字符型数组 c说明: 数组名定名规则和变量名相同,遵循标识符定名规则。 数组名后面的“”是数组的标志,不能用圆括号或其他符号代替。例如:int a(5);是不正确的。 数组元素的个数必须是一个固定的值,可以是整型常量、符号常量甚至是整型常量表达式。定义数组时,系统将按照数组类型和个数分配一段连续的存储空间存储数组元素。不能包含变量,也就是说,C 不允许对数组的大小作动态定义,即数组的大小不依赖于

14、程序运行过程中变量的值。 数组中常量表达式表示数组元素的个数,即数组长度。例如,在定义 char c5时,数组 c 最多可以存放 5 个字符型数据,分别放入 c0、c1、c2、c3、c4,需要注意的是数组的下标从 0 开始,并且不能使用 c5 。数组是一种构造类型的数据,其中存放的是一组数据类型相同,按顺序排列的数据.这些数据在内存中占有相邻的一批内存单元.最低地址对应于数组的第一个元素,最高地址对应于最后一个元素,一维数组的下标是从 0 开始计算的,下标为 i 的数组元素可以表示为“数组名i”.数组可以是一维的,也可以是多维的。C 语言并不检验数组边界,因此,数组的两端都有可能越界而使其它变

15、量的数组甚至程序代码被破坏。在需要的时候,数组的边界检验便是程序员的职责。一维数组在本质上是由同类数据构成的表,例如,对下列数组 a: char a7下图 4-3 说明了数组 a 在内存中的情形,假定起始地址为 1000。图 4-3 起始地址为 1000 的 7 元素字符数组2. 一维数组的初始化数组的初始化是在定义数组的同时就给数组中的元素赋予一个初值。一维数组初始化的方法如下:定义数组时即对数组元素赋以初值。如 int b10=0,1,2,3,4,5,6,7,8,9 其中花括号内的值依次赋给数组中各个元素,即相当于执行:b0=0,b1=1,b2=2,b9=9。可以只给一部分元素赋值。如 int b

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

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