https://www.cnblogs.com/ranh941/p/7999266.html
本次mooc的学习中我总共学习了七个视频,并且对于数组进行了学习,在经过这段时间的mooc学习之后,使我对于数组有了新的认识,也让我对于,今后c语言的学习打下了良好的基础,这次学习我主要学习到了有关于,数组的一系列知识,包括数组的定义,以及与之相关的一系列问题。我认为这次学习中我对于二位数组的掌握还不太熟练,因此要在课下下足功夫,抓住重点,勤加练习,争取早日学习透彻。
第十四次作业:
7-2 求最大值及其下标
代码:
#include<stdio.h> int main() { int n=0,i=0,max=0,m=0; scanf("%d",&n); int a[n]; for(i=0;i<n;i++) { scanf("%d",&a[i]); } max=a[0]; for(i=0;i<n;i++) { if(max<a[i]){ max=a[i]; m=i; } } printf("%d %d",max,m); return 0; }
第一步:定义四个整形变量n,i,max,m并将其初始化,输入n,并定义拥有n个数字的数组a。
第二步:用for循环将n个数字输入到数组中。
第三步:将数组中的第一个数赋值给代表最大值的max,并利用for循环将数组里的数字依次与max进行比较,如果该数字比max的值大,就将这个值赋给max,并紧接着将下角标赋值给m,知道max与所有数组中的数字比较结束之后。
第四步:输出结果。
流程图:
运行截图:
7-3 交换最小值和最大值
代码:
#include<stdio.h> int main() { int n,m=0,i=0,max=0,min=0,t=0,c=0,d=0; scanf("%d",&n); int a[n]; for(i=0;i<n;i++) { scanf("%d",&a[i]); } max=a[0]; min=a[0]; for(i=0;i<n;i++) { if(a[i]>max) { max=a[i]; c=i; } if(a[i]<min) { min=a[i]; d=i; } } m=a[0]; t=a[d]; a[d]=a[0]; a[0]=t; if(c!=0){ t=a[c]; a[c]=a[n-1]; a[n-1]=t; } else{ t=a[n-1]; a[n-1]=m; a[d]=t; } for(i=0;i<n;i++) { printf("%d ",a[i]); } return 0; }
步骤:
第一步:定义变量,用于for循环计数,初春最大,最小值及其下角标,交换位置。
第二步:输入数字n并用for循环将n个数字输入数组中。
第三步:将数组中的第一位数赋值给max和min用于表示直达最小值,并将数组中的数字按顺序与max和min进行比较,将比max大得数字赋值给max并将其角标赋值给c,将比min小的数赋值给min并将其角标赋值给d,进而找出最大最小值,及其角标。
第四步:先将数组中第一个数的值保存从而防止第一个数为最大值时的情况,再将最小值与第一个数交换数值,在分两种情况,当第一个数为最大值时将数组中最后一个数的值付给刚与第一个数交换过的最小值(题中我将其定义为a[d]),再将是先存放好的第一个数的值赋给最后一个数。如果,最大值不是第一个数,则将最大值与最后一个数交换数值。
第五步:输出数组。
程序框图:
运行截图:
个人总结:
本周我们在课堂上对于数组进行了学习,对于其中的重点难点老师也为我们进行了一一讲解,并且督促我们课上认真听讲,课下认真完成老师布置的作业,我们目前课上所进行的学习中,由于老师的督促,和我们的配合,数组方面没有什么大问题,现在唯一困扰我的问题就是关于最大值与最小值的排序,但经过练习,我相信自己可以顺利解决。
统计图表:
评论链接:
https://www.cnblogs.com/yangzhenghui/p/10170949.html