实训-第3章数组_第1页
实训-第3章数组_第2页
实训-第3章数组_第3页
实训-第3章数组_第4页
实训-第3章数组_第5页
已阅读5页,还剩118页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第3章数组章数组3.1一维数组的使用一维数组的使用3.2二维数组的使用二维数组的使用P713.1一维数组的使用一维数组的使用P72返回返回3.1.1输入输出学生输入输出学生10门课成绩门课成绩P723.1.1输入输出学生输入输出学生10门课成绩门课成绩P72 处理处理10门课的成绩,要定义门课的成绩,要定义10个变量,个变量,用用10条输入语句和条输入语句和10条输出语句。条输出语句。 采用数组,只需要定义一个有采用数组,只需要定义一个有10个元素个元素的数组,利用循环逐个给数组元素输入值,的数组,利用循环逐个给数组元素输入值,再利用循环逐个输出每个数组元素。再利用循环逐个输出每个数组元素。

2、#include main() 定义存放定义存放10个数据的数组个数据的数组chj及循环变量及循环变量i for(i=0; i10; i+)从键盘输入成绩赋给数组元素从键盘输入成绩赋给数组元素chji for(i=0; i10; i+) 输出数组元素输出数组元素chji中的成绩中的成绩int chj10,i;scanf(%d,&chji);printf(%4d,chji);必须先定义后使用必须先定义后使用 和普通变量一样和普通变量一样 每个元素所具每个元素所具有的数据类型有的数据类型 数组中包含数组中包含的元素个数的元素个数 00数组长度数组长度 类型类型正确引用正确引用错误引用错误引

3、用赋值赋值 a0=11 或或ai=11或或ai+2=a0+a1a=11输入输入scanf(scanf(%d%d,&a2),&a2)scanf(scanf(%d%d, ,a a) )scanf(scanf(%d%d,&ai),&ai)scanf(scanf(%d%d, ,aiai) )输出输出 printf(printf(%d,%dn%d,%dn, , a1,ai) a1,ai)printf(printf(%dn%dn, ,a a) )P743.1.2数组中数据的复制数组中数据的复制P743.1.2数组中数据的复制数组中数据的复制P74#include #incl

4、ude #include main() 定义存放定义存放20个数据的数组个数据的数组a、b及循环变量及循环变量i for(i=0; i20; i+) 随机产生随机产生1000内的数据存放在内的数据存放在ai元素中元素中 for(i=0; i20; i+) 将将ai元素值赋给元素值赋给bi元素元素int a20,b20,i;ai=rand()%1000;随机函数随机函数 #include #include #include main() 定义存放定义存放20个数据的数组个数据的数组a、b及循环变量及循环变量i for(i=0; i20; i+) 随机产生随机产生1000内的数据存放在内的数据存放

5、在ai元素中元素中 for(i=0; i20; i+) 将将ai元素值赋给元素值赋给bi元素元素int a20,b20,i;ai=rand()%1000;产生产生0至至999间整数间整数 如产生如产生1至至6:k=rand()%6+1;如产生如产生10至至99:k=rand()%90+10;#include #include #include main() 定义存放定义存放20个数据的数组个数据的数组a、b及循环变量及循环变量i for(i=0; i20; i+) 随机产生随机产生1000内的数据存放在内的数据存放在ai元素中元素中 for(i=0; i20; i+) 将将ai元素值赋给元素值

6、赋给bi元素元素int a20,b20,i;ai=rand()%1000;用用rand时时加此行加此行 加加srand(time(0); 用用time时加此行时加此行 #include #include #include main() 定义存放定义存放20个数据的数组个数据的数组a、b及循环变量及循环变量i for(i=0; i20; i+) 随机产生随机产生1000内的数据存放在内的数据存放在ai元素中元素中 for(i=0; i20; i+) 将将ai元素值赋给元素值赋给bi元素元素int a20,b20,i;ai=rand()%1000;bi=ai;不能写成不能写成b=a;或或b10=a

7、10; 加加srand(time(0); 输出输出a数组的数据数组的数据 输出输出b数组的数据数组的数据printf(a array:n);for(i=0; i20; i+) printf(%8d,ai);printf(n);printf(“b array:n);for(i=0; i20; i+) printf(%8d,bi);printf(n);P76#include #include #include main() 定义存放定义存放20个数据的数组个数据的数组a、b及循环变量及循环变量i、j for(i=0; i20; i+) 产生产生1000以内的数赋给以内的数赋给ai int a20,

8、b20,i,j;ai=rand()%1000;srand(time(0);j=0;for(i=0; i20; i+) 如果如果ai是偶数,则是偶数,则 将将ai的值赋给的值赋给bj j增增1 if(ai%2=0) bj=ai;j+;也起到记录偶也起到记录偶数个数的作用数个数的作用 输出输出a数组的数据数组的数据 输出输出b数组的数据数组的数据printf(a array:n);for(i=0; i20; i+) printf(%8d,ai);printf(n);printf(“b array:n);for(i=0; ij; i+) printf(%8d,bi);printf(n);P773.1

9、.3数组元素值的左右移动数组元素值的左右移动P783.1.3数组元素值的左右移动数组元素值的左右移动P78#include main() 定义并初始化定义并初始化ch字符数组字符数组 定义循环变量定义循环变量i 输出输出ch数组的字符数组的字符char ch20=I, ,a,m, ,a, ,s,t,u,d,e,n,t,.;int i;数组初始化数组初始化 若有若有int a8=1,2,3,4;10a23400123450067#include main() 定义并初始化定义并初始化ch字符数组字符数组 定义循环变量定义循环变量i 输出输出ch数组的字符数组的字符char ch20=I, ,a,

10、m, ,a, ,s,t,u,d,e,n,t,.;int i;数组初始化数组初始化 若有若有char a8=1, 2, 3, 4;10a23400123450067#include main() 定义并初始化定义并初始化ch字符数组字符数组 定义循环变量定义循环变量i 输出输出ch数组的字符数组的字符char ch20=I, ,a,m, ,a, ,s,t,u,d,e,n,t,.;int i;printf(before move:n);for(i=0; i=0; i-) 逐个将逐个将chi中的值赋给中的值赋给chi+1 ch0赋空格赋空格 输出移动后的输出移动后的ch数组字符数组字符chi+1=c

11、hi;ch0= ;printf(after move:n);for(i=0; i20; i+) printf(%c,chi); printf(n);I am a st II am a st 必须从后面开始移动必须从后面开始移动P803.1.4数据查询与数据统计数据查询与数据统计P803.1.4数据查询与数据统计数据查询与数据统计P80#include main() 初始化数组初始化数组s,定义变量,定义变量x和和i 输出数组输出数组s中所有元素的值中所有元素的值 输入待查找的数据赋给输入待查找的数据赋给x int s10=12,9,7,11,10,15,13,14,16,8; int x,i;

12、for(i=0; i10; i+)printf(%4d,si);printf(n);printf(请输入要查找的数据:请输入要查找的数据:);scanf(%d,&x); for(i=0; i10; i+)如果如果si的值与的值与x的值相等,的值相等, 则循环结束则循环结束 if(i10) 则输出则输出i的值的值 else 输出输出“该数据不存在!该数据不存在!” if(si=x)break;printf(s%d=%dn,i,si);printf(该数据不存在!该数据不存在!n);找到数据时提前结束找到数据时提前结束 提前结束提前结束 正常结束正常结束 P81#include main(

13、) 初始化初始化n数组,定义变量数组,定义变量max和和i、j 将将n1中的值赋给变量中的值赋给变量max,j记录为记录为1 for(i=2; imax, 则则 max=ni; j=i; 输出最大值与输出最大值与j记录的下标记录的下标int n11=0,67,84,79,71,85,60, 93,75,96,81,max,i,j;max=n1; j=1;if(nimax) max=ni; j=i; printf(max=%d i=%dn,max,j);学号与下标一致学号与下标一致 可否采用只记住可否采用只记住下标的方法?下标的方法? #include main() 初始化初始化n数组,定义变量

14、数组,定义变量max和和i、j 将将n1中的值赋给变量中的值赋给变量max,j记录为记录为1 for(i=2; imax, 则则 max=ni; j=i; 输出最大值与输出最大值与j记录的下标记录的下标int n11=0,67,84,79,71,85,60, 93,75,96,81,max,i,j;max=n1; j=1;if(nimax) max=ni; j=i; printf(max=%d i=%dn,max,j);nj nj 日期日期1 1日日2 2日日3 3日日4 4日日5 5日日6 6日日7 7日日人数人数( (万万) )1.81.83.33.32.92.92.42.42.12.11

15、.71.70.80.8#include main() 定义并初始化一维数组定义并初始化一维数组p8及变量及变量v=0 定义循环变量定义循环变量i for(i=1; i8; i+) 累计累计7天接待的游客数量天接待的游客数量 输出输出7天共接待的游客数量及平均每天接天共接待的游客数量及平均每天接待的游客量待的游客量double p8=0,1.8,3.3,2.9, 2.4,2.1,1.7,0.8,v=0;int i;v=v+pi;printf(7天共接待游客天共接待游客%.1f万人,平均万人,平均每天接待每天接待%.1f万人万人n,v,v/7); 计算平均每天接待游客的数量计算平均每天接待游客的数

16、量 for(i=1; i平均数平均数 输出对应的日期输出对应的日期v=v/7;if(piv)printf(5月月%d日日 ,i); P84#include main() 定义定义m13、p、a1、a2、a3及及i 变量变量p、a1、a2、a3赋初值为赋初值为0 for(i=1; i13; i+) 输入每个月的消费数输入每个月的消费数 累加每个月的消费数累加每个月的消费数 float m13,p;int i,a1,a2,a3;p=a1=a2=a3=0;scanf(%f,&mi);p=p+mi;for(i=1; i13; i+) 输出每个月的消费数输出每个月的消费数输出一年总的消费数输出一

17、年总的消费数 printf(n每月消费数情况:每月消费数情况:n); for(i=1; i13; i+) printf(%2d月月:%-8.1f,i,mi); if(i%6=0) printf(n); printf(n一年消费总数一年消费总数:%.1fnn,p);保证一行显示保证一行显示6个个 左对齐左对齐 for(i=1; i200 a1+; 否则否则 如果如果mi=100 a2+; 否则否则 a3+; 输出消费在输出消费在200元以上、元以上、200100元和元和 100元的月数元的月数 if(mi200) a1+;else if(mi=100) a2+;else a3+;printf(大

18、于大于200元有元有%d个月个月,200-100元有元有%d个月个月,小于小于100元有元有%d个月个月n,a1,a2,a3);P86P863.1.5数组元素值的修改、删除与插入数组元素值的修改、删除与插入P863.1.5数组元素值的修改、删除与插入数组元素值的修改、删除与插入P86#include main() 定义并初始化定义并初始化price数组及变量数组及变量i 输入需修改的商品编号输入需修改的商品编号 如果输入的商品编号存在,则如果输入的商品编号存在,则 显示该商品的销售价格显示该商品的销售价格 输入新的价格输入新的价格 显示修改后的价格显示修改后的价格 否则否则 显示输入的商品不存

19、在的信息显示输入的商品不存在的信息double k,price21=0,3.1,0.6,4.8,9.9, 11.2,15.4,13.5,78.9,36.2,42.8,22.0, 28.0, 32.6,48.1,52.5,86.4,66.6, 72.9,25.6,37.8; int i;#include main() 定义并初始化定义并初始化price数组及变量数组及变量i 输入需修改的商品编号输入需修改的商品编号 如果输入的商品编号存在,则如果输入的商品编号存在,则 显示该商品的销售价格显示该商品的销售价格 输入新的价格输入新的价格 显示修改后的价格显示修改后的价格 否则否则 显示输入的商品不

20、存在的信息显示输入的商品不存在的信息scanf(%d,&i);if(i0 & i21)printf(%d %.1lf,i,pricei);scanf(%lf,&k); pricei=k; #include main() 定义并初始化定义并初始化price数组及变量数组及变量i 输入需修改的商品编号输入需修改的商品编号 如果输入的商品编号存在,则如果输入的商品编号存在,则 显示该商品的销售价格显示该商品的销售价格 输入新的价格输入新的价格 显示修改后的价格显示修改后的价格 否则否则 显示输入的商品不存在的信息显示输入的商品不存在的信息scanf(%d,&i);if

21、(i0 & i21)printf(%d %.1lf,i,pricei);scanf(%lf,&k); pricei=k; for(i=1; i21; i+) printf(%d: %.1lft,i,pricei); if(i%5=0) printf(n);#include main() 定义并初始化定义并初始化price数组及变量数组及变量i 输入需修改的商品编号输入需修改的商品编号 如果输入的商品编号存在,则如果输入的商品编号存在,则 显示该商品的销售价格显示该商品的销售价格 输入新的价格输入新的价格 显示修改后的价格显示修改后的价格 否则否则 显示输入的商品不存在的信息显示

22、输入的商品不存在的信息printf(该编号不存在!该编号不存在!n);P89#include main() 初始化初始化ch字符数组,定义变量字符数组,定义变量i 显示删除前的字符数组显示删除前的字符数组 for(i=8; i14; i+)chi字符左移一位字符左移一位 显示删除后的字符数组显示删除后的字符数组char ch15=G,o,o,d, ,m, o,r,i,n,i,n,g,.;int i;#include main() 初始化初始化ch字符数组,定义变量字符数组,定义变量i 显示删除前的字符数组显示删除前的字符数组 for(i=8; i14; i+)chi字符左移一位字符左移一位 显

23、示删除后的字符数组显示删除后的字符数组printf(字符删除前字符删除前: );for(i=0; i15; i+) printf(%c,chi);printf(n);chi=chi+1;printf(字符删除后字符删除后: );for(i=0; i14; i+) printf(%c,chi);printf(n);P90#include main() 定义并初始化定义并初始化ch字符数组,定义变量字符数组,定义变量i 显示插入前字符数组显示插入前字符数组 for(i=最后一个字符所在的下标最后一个字符所在的下标; i=3; i-) chi的值右移一位的值右移一位 给给ch3赋空格赋空格 显示插入

24、空格后的字符数组显示插入空格后的字符数组char ch15=o,u,r,m,o,t,h, e,r,l,a,n,d;int i;#include main() 定义并初始化定义并初始化ch字符数组,定义变量字符数组,定义变量i 显示插入前字符数组显示插入前字符数组 for(i=最后一个字符所在的下标最后一个字符所在的下标; i=3; i-) chi的值右移一位的值右移一位 给给ch3赋空格赋空格 显示插入空格后的字符数组显示插入空格后的字符数组printf(字符插入前字符插入前: );for(i=0; i=3; i-)chi+1=chi;ch3= ;printf(字符插入后字符插入后: );fo

25、r(i=0; i14; i+) printf(%c,chi);printf(n);P92P92P923.1.6数组元素的排序数组元素的排序P923.1.6数组元素的排序数组元素的排序P921590g155156 178 1581721234516516867从从8个元素中找出最大元素个元素中找出最大元素 k=0; for(j=1; j8; j+) if(gkgj) k=j;0g1234567最大元素与第最大元素与第1个元素对调个元素对调 k=0; for(j=1; j8; j+) if(gkgj) k=j;tmp=g0;g0=gk;gk=tmp; 159 155156 178 15817216

26、51680g1234567最大元素与第最大元素与第1个元素对调个元素对调 k=0; for(j=1; j8; j+) if(gkgj) k=j;tmp=g0;g0=gk;gk=tmp; 178 155156 159 1581721651680g1234567从后从后7个元素中找出最大元素个元素中找出最大元素 k=1; for(j=2; j8; j+) if(gkgj) k=j;178 155156 159 1581721651680g1234567k=1; for(j=2; j8; j+) if(gkgj) k=j;最大元素与第最大元素与第2个元素对调个元素对调 tmp=g1;g1=gk;gk

27、=tmp; 178 155156 159 1581721651680g1234567k=1; for(j=2; j8; j+) if(gkgj) k=j;最大元素与第最大元素与第2个元素对调个元素对调 tmp=g1;g1=gk;gk=tmp; 178 172156 159 1581551651680g1234567从后从后6个元素中找出最大元素个元素中找出最大元素 k=2; for(j=3; j8; j+) if(gkgj) k=j;178 172156 159 1581551651680g1234567k=2; for(j=3; j8; j+) if(gkgj) k=j;最大元素与第最大元素

28、与第3个元素对调个元素对调 tmp=g2;g2=gk;gk=tmp; 178 172156 159 1581551651680g1234567最大元素与第最大元素与第3个元素对调个元素对调 k=i; for(j=i+1; j8; j+) if(gkgj) k=j; tmp=gi; gi=gk; gk=tmp; for(i=0; i7; i+) 178 172168 159 158155165156#include main() 定义数组及变量定义数组及变量tmp、i、j、k 输入输入8名学生的身高名学生的身高 显示排序前的数组显示排序前的数组 for(i=0; i7; i+) gi至至g7中最

29、大值下标记录在中最大值下标记录在k中中 将将gk和和gi进行交换进行交换 显示排序后的数组显示排序后的数组int g8,tmp,i,j,k;#include main() 定义数组及变量定义数组及变量tmp、i、j、k 输入输入8名学生的身高名学生的身高 显示排序前的数组显示排序前的数组 for(i=0; i7; i+) gi至至g7中最大值下标记录在中最大值下标记录在k中中 将将gk和和gi进行交换进行交换 显示排序后的数组显示排序后的数组printf(Enter 8 data:);for(i=0; i8; i+) scanf(%d,&gi);#include main() 定义数组

30、及变量定义数组及变量tmp、i、j、k 输入输入8名学生的身高名学生的身高 显示排序前的数组显示排序前的数组 for(i=0; i7; i+) gi至至g7中最大值下标记录在中最大值下标记录在k中中 将将gk和和gi进行交换进行交换 显示排序后的数组显示排序后的数组printf(排序前排序前:);for(i=0; i8; i+) printf(%6d,gi); printf(n);#include main() 定义数组及变量定义数组及变量tmp、i、j、k 输入输入8名学生的身高名学生的身高 显示排序前的数组显示排序前的数组 for(i=0; i7; i+) gi至至g7中最大值下标记录在中

31、最大值下标记录在k中中 将将gk和和gi进行交换进行交换 显示排序后的数组显示排序后的数组k=i;for(j=i+1; j8; j+) if(gkgj) k=j; tmp=gi;gi=gk;gk=tmp;#include main() 定义数组及变量定义数组及变量tmp、i、j、k 输入输入8名学生的身高名学生的身高 显示排序前的数组显示排序前的数组 for(i=0; i7; i+) gi至至g7中最大值下标记录在中最大值下标记录在k中中 将将gk和和gi进行交换进行交换 显示排序后的数组显示排序后的数组printf(排序后排序后:);for(i=0; i8; i+)printf(%6d,gi

32、);printf(n);月份月份1 12 23 34 45 56 6电量电量570570420420620620480480320320410410P94月份月份1 12 23 34 45 56 6电量电量570570420420620620480480320320410410#include main() 定义电量数组与月份数组,并初始化定义电量数组与月份数组,并初始化 定义整型变量定义整型变量i、j、k及及tmp 输出每月的电量输出每月的电量int elec13=0,570,420,620,480, 320,410,640,660,540,360,520, 490,month13=0,1,

33、2,3,4, 5,6,7,8,9,10,11,12,i,j,k,tmp;printf( 每月用电量如下:每月用电量如下:n);printf( 月份:月份:);for(i=1; i13; i+)printf(%6d,monthi);printf(n);printf( 电量:电量:);for(i=1; i13; i+)printf(%6d,eleci);printf(nn); for(i=1; i13; i+) 找电量数组中最小值下标,并记录在找电量数组中最小值下标,并记录在k中中 交换电量数组中两个元素交换电量数组中两个元素 交换月份数组中两个元素交换月份数组中两个元素 输出排序后的电量和对应月

34、份输出排序后的电量和对应月份 k=i;for(j=i+1; j13; j+) if(elecjeleck) k=j; for(i=1; i13; i+) 找电量数组中最小值下标,并记录在找电量数组中最小值下标,并记录在k中中 交换电量数组中两个元素交换电量数组中两个元素 交换月份数组中两个元素交换月份数组中两个元素 输出排序后的电量和对应月份输出排序后的电量和对应月份 tmp=eleci;eleci=eleck;eleck=tmp;tmp=monthi;monthi=monthk;monthk=tmp; for(i=1; i13; i+) 找电量数组中最小值下标,并记录在找电量数组中最小值下标

35、,并记录在k中中 交换电量数组中两个元素交换电量数组中两个元素 交换月份数组中两个元素交换月份数组中两个元素 输出排序后的电量和对应月份输出排序后的电量和对应月份 printf( 每月用电量排序后如下:每月用电量排序后如下:n);printf( 月份:月份:);for(i=1; i13; i+)printf(%6d,monthi);printf(n);printf( 电量:电量:);for(i=1; i13; i+)printf(%6d,eleci);printf(n);P96P963.2二维数组的使用二维数组的使用P96返回返回3.2.1输入输出输入输出5名学生名学生10门课成绩门课成绩P9

36、63.2.1输入输出输入输出5名学生名学生10门课成绩门课成绩P9680807373898992926767787886868080747466665656676777778282717188889090656557577777676778786767626290907272868691916767585874747979686852527878919173738383939369695757828259599090666687879393747481819595第第1个学生的第个学生的第1门课程成绩门课程成绩 第第1个学生的第个学生的第2门课程成绩门课程成绩 第第2个学生的第个学生的第1门课

37、程成绩门课程成绩 第第2个学生的第个学生的第2门课程成绩门课程成绩 #include main() 定义一个二维数组及循环变量定义一个二维数组及循环变量i、j for(i=1; i6; i+)for(j=1; i11; j+) 输入课程成绩赋给对应的数组元素输入课程成绩赋给对应的数组元素 显示显示5名学生各课程的成绩名学生各课程的成绩 int chj611,i,j; scanf(%d,&chjij);for(i=1; i6; i+) printf(%d,i); for(j=1; j11; j+) printf(%6d,chjij); printf(n);6行行11列列 按表格形式输出按

38、表格形式输出 行数行数列数列数学号学号QQQQ号号手机号手机号家庭电话家庭电话出生日期出生日期P993.2.2 比较比较2名学生各门课的成绩名学生各门课的成绩P993.2.2 比较比较2名学生各门课的成绩名学生各门课的成绩P99学生学生A A成绩成绩学生学生B B成绩成绩数数学学语文语文英英语语数数学学语语文文英英语语第第1 1学学期期787883838989第第1 1学学期期808083839292第第2 2学学期期818185859090第第2 2学学期期8686838378783.2.2 比较比较2名学生各门课的成绩名学生各门课的成绩P99#include main() 定义定义a和和b

39、两个二维数组,并赋初值两个二维数组,并赋初值 定义二维数组定义二维数组c及循环变量及循环变量i、jint a23=78,83,89,81,85,90;int b23=80,83,92,86,83,78;int c23,i,j;for(i=0; i2; i+) for(j=0; jbij)cij=1;else if(aij=bij)cij=0;elsecij=-1; 输出输出a数组数组 输出输出b数组数组 输出输出c数组数组printf(Array a:n);for(i=0; i2; i+) for(j=0; j3; j+) printf(%4d,aij); printf(n); printf(Array b:n);for(i=0; i2; i+) for(j=0; j3; j+) printf(%4d,bij); printf(n); printf(Array c:n);for(i=0; i2; i+) for(j=0; j3; j+) printf(%4d,cij);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论