为了解决比较复杂的问题本章介绍C语言提供的一种最简单教程文件

上传人:yuzo****123 文档编号:137603581 上传时间:2020-07-10 格式:PPT 页数:35 大小:331KB
返回 下载 相关 举报
为了解决比较复杂的问题本章介绍C语言提供的一种最简单教程文件_第1页
第1页 / 共35页
为了解决比较复杂的问题本章介绍C语言提供的一种最简单教程文件_第2页
第2页 / 共35页
为了解决比较复杂的问题本章介绍C语言提供的一种最简单教程文件_第3页
第3页 / 共35页
为了解决比较复杂的问题本章介绍C语言提供的一种最简单教程文件_第4页
第4页 / 共35页
为了解决比较复杂的问题本章介绍C语言提供的一种最简单教程文件_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《为了解决比较复杂的问题本章介绍C语言提供的一种最简单教程文件》由会员分享,可在线阅读,更多相关《为了解决比较复杂的问题本章介绍C语言提供的一种最简单教程文件(35页珍藏版)》请在金锄头文库上搜索。

1、为了解决比较复杂的问题,本章介绍C语言提供的一种最简单的构造类型数组。 6.1 1维数组的定义和引用 6.2 2维数组的定义和引用 6.3 字符数组与字符串 Return,第6章 数 组,6.1 1维数组的定义和引用,6.1.1 1维数组的定义 6.1.2 1维数组元素的引用 6.1.3 1维数组元素的初始化 6.1.4 1维数组应用举例,Return,6.1.1 1维数组的定义,案例6.1 从键盘上任意输入10个整数,要求按从小到大的顺序在屏幕上显示出来。 排序的方法有很多,本题采用冒泡法。 冒泡法的基本思想:通过相邻两个数之间的比较和交换,使排序码(数值)较小的数逐渐从底部移向顶部,排序码

2、较大的数逐渐从顶部移向底部。就像水底的气泡一样逐渐向上冒,故而得名。 由AnA1组成的n个数据,进行冒泡排序的过程可以描述为: (1)首先将相邻的An与An-1进行比较,如果An的值小于An-1的值,则交换两者的位置,使较小的上浮,较大的下沉;接着比较An-1与An-2,同样使小的上浮,大的下沉。依此类推,直到比较完A2和A1后,A1为具有最小排序码(数值)的元素,称第一趟排序结束。 (2)然后在AnA2区间内,进行第二趟排序,使剩余元素中排序码最小的元素上浮到A2;重复进行n-1趟后,整个排序过程结束。,/*案例代码文件名:AL6_1.C*/ /*功能:从键盘上任意输入n个整数,用冒泡法按从

3、小到大地排序,并在屏幕上显示出来。*/ #include stdio.h #define NUM 10/*定义符号常量(数据个数N)*/ main() int dataNUM;/*定义1个1维整型数组data*/ int i,j,temp;/*定义循环变量和临时变量*/ clrscr();/*库函数clrscr():清屏*/ printf(Please input 10 numbers:n); for(i=0; iNUM; i+) scanf(%d, ,数组同变量一样,也必须先定义、后使用。 1维数组是只有1个下标的数组,定义形式如下: 数据类型 数组名常量表达式, 数组名2常量表达式2; (

4、1)“数据类型”是指数组元素的数据类型。 (2)数组名,与变量名一样,必须遵循标识符命名规则。 (3)“常量表达式”必须用方括号括起来,指的是数组的元素个数(又称数组长度),它是一个整型值,其中可以包含常数和符号常量,但不能包含变量。 注意:C语言中不允许动态定义数组。,特别说明:在数组定义时,“常量表达式”外的方括号;以及元素引用时,“下标表达式”外的方括号,都是C语言语法规则所要求的,不是本书所约定的可选项的描述符号! (4)数组元素的下标,是元素相对于数组起始地址的偏移量,所以从0开始顺序编号。 (5)数组名中存放的是一个地址常量,它代表整个数组的首地址。同一数组中的所有元素,按其下标的

5、顺序占用一段连续的存储单元。,Return,6.1.2 数组元素的引用,引用数组中的任意一个元素的形式: 数组名下标表达式 1“下标表达式”可以是任何非负整型数据,取值范围是0(元素个数-1)。 特别强调:在运行C语言程序过程中,系统并不自动检验数组元素的下标是否越界。因此在编写程序时,保证数组下标不越界是十分重要的。 21个数组元素,实质上就是1个变量,它具有和相同类型单个变量一样的属性,可以对它进行赋值和参与各种运算。 3在C语言中,数组作为1个整体,不能参加数据运算,只能对单个的元素进行处理。,Return,6.1.3 1维数组元素的初始化,初始化格式: 数据类型 数组名常量表达式初值表

6、 (1)如果对数组的全部元素赋以初值,定义时可以不指定数组长度(系统根据初值个数自动确定)。如果被定义数组的长度,与初值个数不同,则数组长度不能省略。 (2)“初值表”中的初值个数,可以少于元素个数,即允许只给部分元素赋初值。 (3)根据存储类型的不同,数组有静态数组(static)和动态数组(auto)之分;根据定义的位置不同,数组有内部数组(在函数内部定义的数组)和外部数组(在函数外部定义的数组)之分。,Return,6.1.4 1维数组应用举例,案例6.2 已知某课程的平时、实习、测验和期末成绩,求该课程的总评成绩。其中平时、实习、测验和期末分别占10、20、20、50。/*案例代码文件

7、名:AL6_2.C*/*功能:从键盘上循环输入某课程的平时、实习、测验和期末成绩,按10,20,20,50的比例计算总评成绩,并在屏幕上显示出来。按空格键继续循环,其他键终止循环。*/#include “stdio.h”main() int i=1,j; char con_key=x20; /* x20 空格键的ASCII码*/ float score5,ratio4=0.1,0.2,0.2,0.5; /*定义成绩、比例系数数组*/ while(con_key=x20),while(con_key=x20) clrscr(); printf(输入第%2d个学生的成绩n, i+); printf

8、(平时 实习 测验 期末成绩n); score4=0;/* score4:存储总评成绩*/ for(j=0; j4; j+) scanf(%f, /*getch()函数等待从键盘上输入一个字符*/ 程序演示 Return,6.2 2维数组的定义和引用,6.2.1 2维数组的定义 6.2.2 2维数组元素的引用 6.2.3 2维数组元素的初始化 6.2.4 2维数组应用举例,Return,案例6.3 给一个23的2维数组各元素赋值,并输出全部元素的值。 /*案例代码文件名:AL6_3.C*/ /*功能:从键盘上给23数组赋值,并在屏幕上显示出来。*/ #define Row 2 #define

9、Col 3 #include stdio.h main() int i, j, arrayRowCol;/*定义1个2行3列的2维数组array*/ for(i=0; iRow; i+)/*外循环:控制2维数组的行*/ for(j=0; jCol; j+)/*内循环:控制2维数组的列*/ printf(please input array%2d%2d:,i,j); scanf(%d,i+),6.2.1 2维数组的定义, for(j=0;jCol;j+) printf(%dt,arrayij); /*将aij的值显示在屏幕上*/ printf(n); getch(); 程序演示 2维数组的定义方

10、式如下: 数据类型 数组名行常量表达式列常量表达式, 数组名2行常量表达式2列常量表达式2; 1数组元素在内存中的排列顺序为“按行存放”,即先顺序存放第一行的元素,再存放第二行,以此类推。 2. 设有一个m*n的数组x,则第i行第j列的元素xij在数组中的位置为:i*n+j(注意:行号、列号均从0开始计数)。,3可以把2维数组看作是一种特殊的1维数组:它的元素又是一个1维数组。 例如,对x32,可以把x看作是一个1维数组,它有3个元素:x0、x1、x2,每个元素又是一个包含2个元素的1维数组,如图6-4所示。即把x0、x1、x2看作是3个1维数组的名字。,Return,6.2.2 2维数组元素

11、的引用,引用2维数组元素的形式为: 数组名行下标表达式列下标表达式 1“行下标表达式”和“列下标表达式”,都应是整型表达式或符号常量。 2“行下标表达式”和“列下标表达式”的值,都应在已定义数组大小的范围内。假设有数组x34,则可用的行下标范围为02,列下标范围为03。 3对基本数据类型的变量所能进行的操作,也都适合于相同数据类型的2维数组元素。,Return,6.2.3 2维数组元素的初始化,1按行赋初值 数据类型 数组名行常量表达式列常量表达式第0行初值表,第1行初值表,最后1行初值表; 赋值规则:将“第0行初值表”中的数据,依次赋给第0行中各元素;将“第1行初值表”中的数据,依次赋给第1

12、行各元素;以此类推。 2按2维数组在内存中的排列顺序给各元素赋初值 数据类型 数组名行常量表达式列常量表达式初值表; 赋值规则:按2维数组在内存中的排列顺序,将初值表中的数据,依次赋给各元素。 如果对全部元素都赋初值,则“行数”可以省略。注意:只能省略“行数”。,Return,6.2.4 2维数组应用举例,案例6.4 有M个学生,学习N门课程,已知所有学生的各科成绩,编程:分别求每个学生的平均成绩和每门课程的平均成绩。 /*案例代码文件名:AL6_4.C*/ /*功能:计算个人平均成绩与各科平均成绩,并在屏幕上显示出来。*/ #define NUM_std 5/*定义符号常量人数为5*/ #d

13、efine NUM_course 4/*定义符号常量课程为4*/ #include stdio.h main() int i,j; static float scoreNUM_std+1NUM_course+1=78,85,83,65, 88,91,89,93, 72,65,54,75, 86,88,75,60, 69,60,50,72;,for(i=0;iNUM_std;i+) for(j=0;jNUM_course;j+) scoreiNUM_course += scoreij;/*求第i个人的总成绩*/ scoreNUM_stdj += scoreij;/*求第j门课的总成绩*/ sco

14、reiNUM_course /= NUM_course;/*求第i个人的平均成绩*/ for(j=0;jNUM_course;j+) scoreNUM_stdj /= NUM_std; /*求第j门课的平均成绩*/ clrscr(); /*输出表头*/ printf(学生编号 课程1 课程2 课程3 课程4 个人平均n); /*输出每个学生的各科成绩和平均成绩*/,for(i=0;iNUM_std;i+) printf(学生%dt,i+1); for(j=0;jNUM_course+1;j+) printf(%6.1ft,scoreij); printf(n); /*输出1条短划线*/ for

15、(j=0;j8*(NUM_course+2);j+) printf(-); printf(n课程平均); /*输出每门课程的平均成绩*/ for(j=0;jNUM_course;j+) printf(%6.1ft,scoreNUM_stdj); printf(n); getch(); 程序演示 Return,6.3 字符数组与字符串,6.3.1 字符数组的逐个字符操作 6.3.2 字符数组的整体操作 6.3.3 常用的字符串处理函数,Return,6.3.1 字符数组的逐个字符操作,案例6.5从键盘输入一个字符串,回车键结束,并将字符串在屏幕上输出。 /*案例代码文件名:AL6_5.C*/ m

16、ain() int i; static char str80; clrscr(); for(i=0;i80;i+) stri=getch(); /*逐次给数组元素stri赋值,但不回显在屏幕上*/ printf(*); /*以星号代替输入字符的个数*/ if(stri=x0d) break;/*若输入回车则终止循环*/ i=0; while(stri!=x0d) printf(%c,stri+);/*逐次输出字符数组的各个元素*/ printf(n); getch();/*程序暂停*/ 程序演示,1字符数组的定义 1维字符数组,用于存储和处理1个字符串,其定义格式与1维数值数组一样。 2维字符数组,用于同时存储和处理多个字符串,其定义格式与2维数值数组一样。 2字符数组的初始化 字符数组的初始化,可以通过为每

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

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

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