文档详情

C语言课件(第6章 数组).ppt

发布:2017-07-20约6.33千字共35页下载文档
文本预览下载声明
第六章 数组 (书第七章) 若干类型相同的相关数据凑到一起 定义 类型 数组名[整型常数1][整型常数2]……; int a[6][4]; int a[10]; 使用 a[0][0]、a[1][2]、a[5][3]或a[0]、 a[8] 每个元素都是一个普通变量 下标可以是任意整型表达式 int a[10];(一维数组) 定义一个有10个元素的数组, 使用a[0]、a[1]、a[2]、……、a[9]这样的形式访问每个元素。可以像使用普通变量一样使用他们。 系统会在内存分配连续的10个int空间给此数组 直接对a的访问,就是访问此数组的首地址 数组的定义与初始化 数组定义后的初值仍然是随机数,一般需要我们来初始化 int a[5] = { 12, 34, 56 ,78 ,9 }; int a[5] = { 0 }; int a[] = { 11, 22, 33, 44, 55 }; 数组大小最好用常量来定义,以适应未来可能变化 #define SIZE 10 int a[SIZE]; 数组大小定义好后,将永远不变 错误: int n=5; int a[n]; 数组的使用 数组的下标都是从0开始 对数组每个元素的使用与普通变量无异 可以用任意表达式作为下标,动态决定访问哪个元素 for (i=0; iSIZE; i++) a[i] = 2 * i; 下标越界是大忌! 使用大于最大下标的下标,将访问数组以外的空间。那里的数据是未知的,可能带来严重后果 一维数组的输入和输出 二维数组的存储结构 二维数组的输入和输出 例6.2 —打印最高分 从键盘输入学生人数n; 从键盘输入所有学生的学号和成绩分别存入数组num和score 假设其中的一个学生成绩为最高 maxScore = score[0]; 对所有学生成绩进行比较,即 for (i=1; in; i++) { 若score[i] maxScore 则修改maxScore值为score[i] } 打印最高分maxScore ...... main() { ...... for (i=0; in; i++) { scanf(%ld%f, num[i], score[i]); } maxScore = score[0]; for (i=1; in; i++) { if (score[i] maxScore) { maxScore = score[i]; }} printf(maxScore = %.0f\n, maxScore); } 文曲星猜数游戏 由计算机随机生成一个各位相异的4位数字,由人来猜,每次提示:xAxB A前面的数字表示有几个数字猜对位置也对了 B前面的数字表示有几个数字猜对但位置不对 提示 用数组a存计算机随机生成的4位数 用数组b存人猜的4位数 对a和b的相同位置的元素进行比较,得到A前面的数字 对a和b的不同位置的元素进行比较,得到B前面的数字 随机生成一个各位相异的4位数字 srand(time(NULL)); a[0] = rand()%10; do { a[1] = rand()%10; }while (a[0] == a[1] ); do {a[2] = rand()%10; }while (a[0] == a[2] || a[1] == a[2]); do {a[3] = rand()%10; }while (a[0] == a[3] || a[1] == a[3] || a[2] == a[3]); 统计数字和位置都猜对的个数,对a和b的相同位置的元素进行比较,得到A前面的数字 right = 0; for (j=0; j4; j++) { if (a[j] == b[j]) { right = right + 1; } } 统计人猜对的数字个数,对a和b的不同位置的元素进行比较,得到B前面的数字 good = 0; for (j=0; j4; j++) { for (k=0; k4; k++) { if (a[k] == b[j] ) { good = good + 1; } }} good = good - right; 字符串(Stri
显示全部
相似文档