《(本科)第6章-应用数组设计程序实现批量数据处理ppt课件.pptx》由会员分享,可在线阅读,更多相关《(本科)第6章-应用数组设计程序实现批量数据处理ppt课件.pptx(47页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、课程主讲人:第6章-应用数组设计程序实现批量数据处理共 46 页 第 2 页 C语言程序设计能力教程(第四版)主讲教师:主讲教师: 赵凤芝赵凤芝 C 语言程序设计语言程序设计计算机科学计算机科学系系东北石油大学共 46 页 第 3 页2022-5-1131、数组的引入、数组的引入2、一、一维数组及应用维数组及应用3、二维数组、二维数组4、字符数组、字符数组5、数组的应用、数组的应用共 46 页 第 4 页教学目的和基本要求:教学目的和基本要求:要求学生理解数组下标,掌握初始化数组的方法,学会参数传递数组,并基本掌握二维数组及字符数组的使用。 教学重点:教学重点:一维数组使用,参数传递数组。 共
2、 46 页 第 5 页1. 数组的引入:数组的引入: 回顾第五章时我们所讲过的一个程序: 从键盘输入一百个学生的成绩,求总成绩。 当时我们由此引入了循环结构。如果这个程序不是要求和,而是要把这一百个学生的成绩按从高到低的顺序排列,则必须要把这一百个学生的成绩都同时记录下来,也就是说,必须要设定一百个变量。 在C语言中,提供了一种方便的同时设定多个变量的数一种方便的同时设定多个变量的数据类型,这就是据类型,这就是数组数组!前提是,这多个变量必须具有相同的数据类型,比如同为int、long、float、char等等。 数组有一维数组、二维数组和多维数组。6.1数组的引入数组的引入共 46 页 第
3、6 页2.数组的概念 数组:具有相同类型的数据组成的序列,是有序集合。 数组中的每一个数据称数组元素数组分量下标变量注意注意:数组的有序性,是指数组元素存储的有序性,而不是指数组元素值有序。利用这种有序性,在后面的章节中,我们可以方便的用指针解决一些问题。共 46 页 第 7 页6.2 一维数组构造数据类型之一数组:有序数据的集合,用数组名标识元素:属同一数据类型,用数组名和下标确定一维数组的定义v定义方式: 数据类型 数组名常量表达式; 合法标识符表示元素个数下标从0开始 :数组运算符单目运算符优先级(1)左结合不能用( )例 int a6;a00145a1a2a3a4a523a编译时分配连
4、续内存内存字节数=数组维数* sizeof(元素数据类型)数组名表示内存首地址,是地址常量共 46 页 第 8 页练习:有数组定义:int x6,假定已经将数分配给以下变量:写出以下数组分量(下标变量的值):x3= x6= xa*a1= xa+a1= xc= xxa+c-a1= xxa1-xa+c-a*c= xa1-a-b= 5 演示ex.ca2a1 3b1c4X0 5X1 57X2 42X3 18X4 98X5 76X6 6共 46 页 第 9 页注意:1、在同一个类型说明语句中可以同时说明几个数组: 2、数组每个元素占用一个单元,数组的输入/输出,计算是对单个元素进行的。3、数组元素的下标
5、可以是表达式。一维数组的定义方式:类型说明符 数组名常量表达式;例:int a10;说明:数组名的定名规则和变量名相同,遵循标识符定名规则。数组名后的常量表达式用 括起来,而不能用(),例 int a(10); 常量表达式表示元素的个数,即数组长度。 例 a10中有10个元素,下标从0开始,分别为 a0a9常量表达式中可以包括常量和符号常量,不能包含变量,即定义时必须确定数组的大小。共 46 页 第 10 页一维数组的引用v数组必须先定义,后使用先定义,后使用v只能逐个引用数组元素,不能一次引用整个数组v数组元素表示形式: 数组名下标其中:下标可以是常量或整型表达式例 int i=15; in
6、t datai; (不能用变量定义数组维数)例 int a10; printf(“%d”,a); ()必须 for(j=0;j10;j+) printf(“%dt”,aj); ()例 int data5; data5=10; /C语言对数组不作越界检查,使用时要 注意共 46 页 第 11 页【例6.1】 假设有如下数据:10,11,6,15,21,6 要求用数组类型写一程序按下列顺序输出:6,21,15,6,11,10分析:将数据的顺序倒过来#include stdio.hmain( ) int i,a10; for (i=0;i=0;i-) printf(“%d”,ai); 思考? 1、任
7、意N个数呢? 2、若每行输出5个数?如何修改程序? printf(%d,ai); if (i%5= = 0) printf(n); 共 46 页 第 12 页一维数组的初始化v初始化方式 在定义数组时,为数组元素赋初值(在编译阶段使之得到初值) int a5=1,2,3,4,5;等价于:a0=1; a1=2; a2=3; a3=4; a4=5;v说明:l数组不初始化,其元素值为随机数l对static数组元素不赋初值,系统会自动赋以0值l当全部数组元素赋初值时,可不指定数组长度如 int a5=6,2,3; 等价于: a0=6; a1=2;a2=3; a3=0; a4=0;如 int a3=6,
8、2,3,5,1; ()static int a5;等价于:a0=0; a1=0; a2=0; a3=0; a4=0;l只给部分数组元素赋初值 int a=1,2,3,4,5,6;编译系统根据初值个数确定数组维数共 46 页 第 13 页程序举例【例6.2】在电视歌手大奖赛中,任意输入10名选手的成绩,找出其中最高分和最低分。算法分析:所谓的最高分和最低分,就是求数据的最大值和最小值。 步骤:1. 输入:for循环输入10个整数2. 处理:(a) 先令max=min=x0(b) 依次用xi和max,min比较(循环) 若maxxi,令min=xi3. 输出:max和min #include #d
9、efine SIZE 10main() int xSIZE,i,max,min,sum=0; printf(Enter 10 integers:n); for(i=0;iSIZE;i+) printf(%d:,i+1);scanf(%d,&xi); sum=sum+xi; max=min=x0; for(i=1;iSIZE;i+) if(maxxi) min=xi; printf(Maximum value is %dn,max); printf(Minimum value is %dn,min); (sum-max-min)/(SIZE-2)共 46 页 第 14 页6.3 二维数组及多维数
10、组二维数组的定义v定义方式:数据类型数组名常量表达式常量表达式;v数组元素的存放顺序数组元素的存放顺序l原因原因:内存是一维的内存是一维的l二维数组:按行序优先二维数组:按行序优先l多维数组:最右下标变化最快多维数组:最右下标变化最快例例 int a34; float b25; int c234; int a3,4; ( )行数列数元素个数=行数*列数int a32a01a10a11a20a21014523a00a00 a01a10 a11a20 a21int c23401234567.20212223c000c001c002c003c010c011c012c013c020c021c022c0
11、23c100c101c102c103c110c111c112c113c120c121c122c123共 46 页 第 15 页v二维数组理解例例 int a34;20161720181920202120222320089201011201213201415200012002320045200067a00 a01 a02 a03a10 a11 a12 a13a20 a21 a22 a23每个元素每个元素ai由包含由包含4个元素个元素的一维数组组成的一维数组组成二维数组二维数组a是由是由3个元素组成个元素组成a0a1a2行名014523a01a02a03a10a11a00a13a20a21a22a
12、23a1267101189a0a1a2共 46 页 第 16 页二维数组元素的引用形式: 数组名下标下标二维数组元素的初始化l分行初始化: 例 int a23=1,2,3,4,5,6;a00 a01 a02 a10 a11 a12123456全部初始化l按元素排列顺序初始化 例 int a23=1,2,4;a00 a01 a02 a10 a11 a12120400部分初始化 例 int a3=1,4,5;a00 a01 a02 a10 a11 a12100450第一维长度省略初始化 例 int a23=1,2,3,4,5,6;a00 a01 a02 a10 a11 a12123456全部初始化
13、 例 int a23=1,2,4;a00 a01 a02 a10 a11 a12124000部分初始化 例 int a3=1,2,3,4,5;a00 a01 a02 a10 a11 a12123450第一维长度省略初始化共 46 页 第 17 页【例【例6.36.3】二维数组的输入和输出。】二维数组的输入和输出。算法分析:多个数据的重复操作可由循环来完成。算法分析:多个数据的重复操作可由循环来完成。#includestdio.h#includestdio.hmain()main() int a23,j,k; int a23,j,k; printf(nInput array a:); / pri
14、ntf(nInput array a:); /* *定义二行三列整型数组定义二行三列整型数组* */ / for(j=0;j2;j+) for(j=0;j2;j+) for(k=0;k3;k+) for(k=0;k3;k+) scanf(%d,&ajk); / scanf(%d,&ajk); /* *输入数据到二维数组中输入数据到二维数组中* */ / printf(nOutput array a:n); printf(nOutput array a:n); for(j=0;j2;j+) for(j=0;j2;j+) for(k=0;k3;k+) / for(k=0;k3;k+) /* *循环
15、三次循环三次, ,输出一行共三个元素输出一行共三个元素* */ / printf(%4d,ajk); printf(%4d,ajk); printf(n); printf(n);/ /* *输出一行后换行输出一行后换行, ,再输出下一行再输出下一行* */ / 程序的运行结果为:程序的运行结果为:Input array a:1 2 3 4 5 6 Input array a:1 2 3 4 5 6 Output array a: Output array a: 1 2 3 1 2 3 4 5 4 5 6 6共 46 页 第 18 页【例【例6.46.4】计算】计算3 33 3矩阵的两条对角线(
16、主、辅对角线)上的元矩阵的两条对角线(主、辅对角线)上的元素之和。素之和。算法分析:设矩阵为算法分析:设矩阵为m mm m(m m为正整型数)对角线元素的特为正整型数)对角线元素的特? ?#include stdio.h#include stdio.h#define M 3#define M 3main()main() int aMM,i,j,s=0; / int aMM,i,j,s=0; /* *s s存放累加和存放累加和* */ / printf(Please Input numbers:n); printf(Please Input numbers:n); for(i=0;iM;i+)
17、/ for(i=0;iM;i+) /* *二维数组的输入二维数组的输入* */ / for(j=0;jM;j+) for(j=0;jM;j+) scanf(%d,&aij); scanf(%d,&aij); for(i=0;iM;i+) for(i=0;iM;i+) for(j=0;jM;j+) for(j=0;jM;j+) if(i=j|i+j=M-1)s=s+aij; if(i=j|i+j=M-1)s=s+aij; printf(s=%d,s); printf(s=%d,s); 程序的运行结果为:程序的运行结果为:Please Input numbers:Please Input numb
18、ers:1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 s=25 s=25 共 46 页 第 19 页6.4 字符数组 字符数组v定义 v字符数组的初始化l逐个字符赋值l用字符串常量v字符数组的引用例例 char c10, ch34; 例 char ch5=H,e,l,l,o;ch0Hello逐个字符赋值ch1ch2ch3ch4有问题! 例 char ch5=H,e,l,l,o;ch0Hello逐个字符赋值ch1ch2ch3ch4 例 char ch5=B,o,y;ch0Boy00逐个字符赋值ch1ch2ch3ch4 例 char ch5=“Boy”;ch0Boy00用
19、字符串常量ch1ch2ch3ch4 例例 char ch6=“Hello”; char ch6=“Hello”; char ch=“Hello”;用字符串常量ch0Helloch1ch2ch3ch40ch5共 46 页 第 20 页 例例 char diamond5=., .,*,.,*,.,*, *, ., ., . ,*,.,*, .,*,., .,*;二维字符数组初始化二维字符数组初始化.*00.*.*0*.*.*.*0.*00diamond0diamond1diamond2diamond3diamond4 例例 char fruit7=“Apple”,”Orange”, ”Grape”
20、,”Pear”,”Peach”;二维字符数组初始化二维字符数组初始化fruit0fruit1fruit2fruit3fruit4Apple00Orange0Grape00Pear000Peach00共 46 页 第 21 页例 输出一个字符串#include main() char c10=I, ,a,m, ,a, ,b,o,y; int i; for(i=0;i10;i+) printf(%c,ci); printf(n);Iamaboy0123456789共 46 页 第 22 页字符串v字符串及其结束标志l无字符串变量,用字符数组处理字符串l字符串结束标志:0例例 “hello”共共5个
21、字符,在内存占个字符,在内存占6个字节个字节 字符串长度字符串长度5 h e l l o 0104 101 108 108 111 0内存存放字符ASCII码共 46 页 第 23 页v字符串的输入输出l逐个字符I/O: %cl整个字符串I/O: %s例例 用用%c %c main() char str5; int i; for(i=0;i5;i+) scanf(“%c”, &stri); for(i=0;i5;i+) printf(“%c”, stri);例例 用用%s %s main() char str5; scanf(“%s”, str); printf(“%s”, str);用字符数
22、组名,不要加&输入串长度数组维数遇空格或回车结束自动加0用字符数组名,遇0结束共 46 页 第 24 页例例 main( ) char a5=H,e,l,l,o; printf(“%s”,a); 例例 main( ) char a =“Hello”; printf(“%s”,a); 结果:结果:Hello#-=* h e l l o02314结果:结果:Hello用“%s”输出时,遇0结束共 46 页 第 25 页main() char a=h,e,l,0,l,o,0; printf(%s,a);例输出:输出:hel h e l 0 l o 0数组中有多个0时,遇第一个结束共 46 页 第 2
23、6 页main() int i; char a5; scanf(%s,a); for(i=0;i5;i+) printf(%d,ai);运行情况:运行情况:(1)若输入)若输入 hel , 正常正常(2)若输入)若输入 hell , 正常正常(3)若输入)若输入 hello , 用用%s 输出时,会出现问题输出时,会出现问题 h e l 0 h e l l 0 h e l l o输入字符串长度数组维数共 46 页 第 27 页例 字符串输入举例 H o w 0 a r e 0 y o u ? 0 #include main() char a15,b5,c5; scanf(%s%s%s,a,b,
24、c); printf(a=%snb=%snc=%sn,a,b,c); scanf(%s,a); printf(a=%sn,a);运行情况:运行情况:输入:输入:How are you?输出:输出:a=How b=are c=you?输入:输入:How are you?输出:输出:a=Howscanf中%s输入时,遇空格或回车结束运行情况:运行情况:输入:输入:How are you?共 46 页 第 28 页例例 若准备将字符串若准备将字符串“This is a string.”记录下来,记录下来,错误错误的输入语句为:的输入语句为:(A)scanf(“%20s”,s);(B)for(k=0;
25、k17;k+) sk=getchar();(C)while(c=getchar()!=n) sk+=c;共 46 页 第 29 页v常用的字符串处理函数包含在头文件 string.hu字符串输出函数字符串输出函数puts格式:格式:puts(字符数组字符数组)功能:向显示器输出字符串(输出完,换行)功能:向显示器输出字符串(输出完,换行)说明:字符数组必须以说明:字符数组必须以0结束结束u字符串输入函数字符串输入函数gets格式:格式:gets(字符数组字符数组)功能:从键盘输入一以回车结束的字符串放入字符数组中,功能:从键盘输入一以回车结束的字符串放入字符数组中, 并自动加并自动加0说明:输
26、入串长度应小于字符数组维数说明:输入串长度应小于字符数组维数例例 #include main( ) char string80; printf(“Input a string:”); gets(string); puts(string); 输入: How are you?输出: How are you ? 共 46 页 第 30 页u字符串连接函数字符串连接函数strcat格式:格式:strcat(字符数组字符数组1,字符数组字符数组2)功能:把字符数组功能:把字符数组2连到字符数组连到字符数组1后面后面返值:返回字符数组返值:返回字符数组1的首地址的首地址说明:说明:字符数组字符数组1必须足
27、够大必须足够大 连接前连接前,两串均以两串均以0结束结束;连接后连接后,串串1的的0取消取消, 新串最后加新串最后加0u字符串拷贝函数字符串拷贝函数strcpy格式:格式:strcpy(字符数组字符数组1,字符串字符串2)功能:将字符串功能:将字符串2,拷贝到字符数组,拷贝到字符数组1中去中去返值:返回字符数组返值:返回字符数组1的首地址的首地址说明:说明:字符数组字符数组1必须足够大必须足够大 拷贝时拷贝时0一同拷贝一同拷贝 不能使用赋值语句为一个字符数组赋值不能使用赋值语句为一个字符数组赋值例例 char str120,str220; str1=“Hello!”; () str2=str1
28、; ()共 46 页 第 31 页例 strcpy与strcat举例#include #include void main() char destination25; char blank = , c= C+, turbo = Turbo; strcpy(destination, turbo); strcat(destination, blank); strcat(destination, c); printf(%sn, destination);Turbo C+TrboC+0123456789u024.Trbo0123456789u024.Trbo00123456789u24.共 46 页
29、第 32 页u字符串比较函数字符串比较函数strcmp格式:格式:strcmp(字符串字符串1,字符串字符串2)功能:比较两个字符串功能:比较两个字符串比较规则:对两串从左向右逐个字符比较(比较规则:对两串从左向右逐个字符比较(ASCII码),码), 直到遇到不同字符或直到遇到不同字符或0为止为止返值:返回返值:返回int型整数,型整数,a. 若字符串若字符串1 字符串字符串2, 返回返回正整数正整数 c. 若字符串若字符串1= 字符串字符串2, 返回返回零零说明:说明:字符串比较不能用字符串比较不能用“=”,必须用必须用strcmpu字符串长度函数字符串长度函数strlen格式:格式:str
30、len(字符数组字符数组)功能:计算字符串长度功能:计算字符串长度返值:返回字符串实际长度返值:返回字符串实际长度,不包括0在内例例 对于以下字符串,对于以下字符串,strlen(s)的值为:的值为:(1)char s10=A,0,B,C,0,D;(2)char s =“tv0willn”;(3)char s =“x69082n”; 答案:1 3 1共 46 页 第 33 页#include #include main() char str1 = ”Hello!, str2 = ”How are you?”,str20; int len1,len2,len3; len1=strlen(str1
31、); len2=strlen(str2); if(strcmp(str1, str2)0) strcpy(str,str1); strcat(str,str2); else if (strcmp(str1, str2)0) strcpy(str,str2); strcat(str,str1); else strcpy(str,str1); len3=strlen(str); puts(str); printf(”Len1=%d,Len2=%d,Len3=%dn”,len1,len2,len3);例例 strcmp与与strlen举例举例How are you?Hello!Len1=6,Len2
32、=12,Len3=18Ch6_23.c共 46 页 第 34 页例6.9 用数组求Fibonacci数列前20个数)3()2(12) 1(1121nFFFnFnFnnnf0f1f2f3f4f5f19.11f1901452319235#include main() int i; int f20=1,1; for(i=2;i20;i+) fi=fi-2+fi-1; for(i=0;ia1,则交,则交换;然换;然 后比较第二个数与第三个数;依次类推,直至第后比较第二个数与第三个数;依次类推,直至第n-1个数和第个数和第 n个数比较为止个数比较为止第一趟冒泡排序,结果最大的数第一趟冒泡排序,结果最大的
33、数被安置在被安置在 最后一个元素位置上最后一个元素位置上(2)对前)对前n-1个数进行第二趟冒泡排序,结果使次大的数个数进行第二趟冒泡排序,结果使次大的数被安置在被安置在 第第n-1个元素位置个元素位置(3)重复上述过程,共经过)重复上述过程,共经过n-1趟冒泡排序后,排序结束趟冒泡排序后,排序结束共 46 页 第 36 页例例38 49 65 76 13 27 30 97第一趟第一趟38 49 65 13 27 30 76第二趟第二趟38 49 13 27 30 65第三趟第三趟38 13 27 30 49第四趟第四趟13 27 30 38第五趟第五趟13 27 30第六趟第六趟49 38
34、65 97 76 13 27 30初始关键字初始关键字n=83849769713972797309713767676273013652765306513134949304927382738303813 27第七趟第七趟共 46 页 第 37 页输入输入n 个数给个数给a1 到到 anfor j=1 to n-1for i=1 to n-jaiai+1真真假假aiai+1输出输出a1 到到 an#include main() int a11,i,j,t; printf(Input 10 numbers:n); for(i=1;i11;i+) scanf(%d,&ai); printf(n); f
35、or(j=1;j=9;j+) for(i=1;iai+1) t=ai; ai=ai+1; ai+1=t; printf(The sorted numbers:n); for(i=1;i11;i+)printf(%d ,ai);共 46 页 第 38 页例6.12 用简单选择法对10个数排序排序过程:排序过程:(1)首先通过)首先通过n-1次比较,从次比较,从n个数中找出最小的,个数中找出最小的, 将它与第一将它与第一个数交换个数交换第一趟选择排序第一趟选择排序,结果,结果最小最小的数被安置在第一个元素位置的数被安置在第一个元素位置上;上;(2)再通过)再通过n-2次比较,从剩余的次比较,从剩余
36、的n-1个数中找出个数中找出关键字关键字次小次小的记录的记录,将,将它与第二个数交换它与第二个数交换第二趟第二趟选择选择排序;排序;(3)重复上述过程,共经过)重复上述过程,共经过n-1趟排序后,排序趟排序后,排序结结束。束。共 46 页 第 39 页例初始: 49 38 65 97 76 13 27 kji=11349一趟: 13 38 65 97 76 49 27 i=22738二趟: 13 27 65 97 76 49 38 三趟: 13 27 38 97 76 49 65 四趟: 13 27 38 49 76 97 65 五趟: 13 27 38 49 65 97 76 六趟: 13
37、27 38 49 65 76 97 kkkkjjjjjjjjjj共 46 页 第 40 页输入n 个数给a1 到 anfor i=1 to n-1for j=i+1 to najak真假k=j输出a1 到 ank=iaiaki != k真假#include main() int a11,i,j,k,x; printf(Input 10 numbers:n); for(i=1;i11;i+) scanf(%d,&ai); printf(n); for(i=1;i10;i+) k=i; for(j=i+1;j=10;j+) if(ajak) k=j; if(i!=k) x=ai; ai=ak; a
38、k=x; printf(The sorted numbers:n); for(i=1;i11;i+)printf(%d ,ai);共 46 页 第 41 页利用数组处理批量数据利用数组处理批量数据【例【例6.16.13 3】从键盘上输入从键盘上输入N N个学生(假定不超过个学生(假定不超过100100人)的成人)的成绩,计算平均成绩,并输出高于平均分的人数及其成绩(输绩,计算平均成绩,并输出高于平均分的人数及其成绩(输入成绩为负数时结束)。入成绩为负数时结束)。 算法分析:算法分析: 定义变量和数组。定义变量和数组。N N个学生数未知,题目说明不超过个学生数未知,题目说明不超过100100人人
39、,因此可以定义一个有,因此可以定义一个有100100个元素的一维数组个元素的一维数组scorescore用来存放用来存放学生的成绩,学生的成绩,N N记录学生人数。记录学生人数。 先将成绩输入到数组先将成绩输入到数组scorescore中,同时进行累加,并计算中,同时进行累加,并计算平均成绩。平均成绩。 将数组中的成绩值一个个与平均值比较,输出高于平均将数组中的成绩值一个个与平均值比较,输出高于平均分的成绩。分的成绩。 共 46 页 第 42 页#include #include main()main() float score100,ave,sum=0, x; float score100,
40、ave,sum=0, x; int i,n=0,count; int i,n=0,count; printf(Input score:); printf(Input score:); scanf(%f,&x); scanf(%f,&x); while (x=0&n=0&n=100) sum+=x; / sum+=x; /* *成绩累加成绩累加* */ / scoren+=x; scoren+=x; scanf(%f,&x); scanf(%f,&x); ave=sum/n; ave=sum/n; printf(average=%fn,ave); / printf(average=%fn,ave
41、); /* *输出平均分输出平均分* */ / for(count=0,i=0;in;i+) for(count=0,i=0;iave) if(scoreiave) printf(%fn,scorei);/ printf(%fn,scorei);/* *输出高于平均分的成绩输出高于平均分的成绩* */ / count+; count+; / /* *统计高于平均分成绩的人数统计高于平均分成绩的人数* */ / if(count%5=0) printf (n);/ if(count%5=0) printf (n);/* *每行输出成绩达每行输出成绩达5 5个时换行个时换行* */ / print
42、f(count=%d n,count); printf(count=%d n,count);* *输出高于平均分的人数输出高于平均分的人数* */ / 共 46 页 第 43 页利用数组实现矩利用数组实现矩阵的转置阵的转置例例6.14 将二维数组行列元素互换,存到另一个数组中将二维数组行列元素互换,存到另一个数组中a=1 2 34 5 6b=1 42 53 6#include main() int a23=1,2,3,4,5,6; int b32,i,j; printf(array a:n); for(i=0;i=1;i+) for(j=0;j=2;j+) printf(%5d,aij); b
43、ji=aij;printf(n); printf(array b:n); for(i=0;i=2;i+) for(j=0;jmax真假max=aijrow=icolum=j输出:max和row,colum#include main() int a34=1,2,3,4, 9,8,7,6, -10,10,-5,2; int i,j,row=0,colum=0,max; max=a00; for(i=0;i=2;i+) for(j=0;jmax) max=aij; row=i; colum=j; printf(max=%d,row=%d, colum=%dn,max,row,colum);共 46
44、页 第 45 页例 有三个字符串,找出其中最大者 H o w 0 H e l l o 0 H i g h 0 str0str1str2#include #include main() char string20,str320; int i; for(i=0;i0)strcpy(string,str0); else strcpy(string,str1); if(strcmp(str2,string)0)strcpy(string,str2); printf(nThe largest string is:n%sn,string);共 46 页 第 46 页例例 比较比较 int a23=5,6,
45、7,8; 与与 int a23=5,6,7,8;5 6 07 8 05 6 78 0 0例例 int a10; float f2=1.2 ,2.2;例例 int a5; a=2,4,6,8,10;例例 int a10; float i=3; ai=10;例例 char name0; float weight10.3; int array-100;例例 char str=“Hello”; char str=H,e,l,l,o; h e l l oh e l l o02314 h e l l o h e l l o 00023145练习:共 46 页 第 47 页练习:阅读程序练习:阅读程序#define N 6main() int aN,bB-60,c=1,2,3,4,5,6,i; for(i=0;iN;i+) scanf(“%d%d”,&ai,&bi); for(i=0;iN;i+) printf(“%d ”,ai); printf(“n”); for(i=0;iN;i+) printf(“%d ”,bi); printf(“n”); for(i=0;iN;i+) ci=ai+bN-i-1; for(i=0;iN;i+) printf(“%d ”,ci); 数组定义:必须用常量表达式数组元素引用