第四次作业
【作业要求】:https://edu.cnblogs.com/campus/hljkj/CS201802/homework/2522
预习作业
1.我观看了mooc上关于数组及函数的第六周和第七周视频,共17个。
2.通过观看视频我学习到了利用数组求平均数,并输出大于平均数的数;数组定义;以及数组之间的运算等问题。
利用数组求平均数,并输出大于平均数的数
数组定义
数组之间的运算
3.对于mooc中第七周数组运算中的初步排序不太明白,尤其是sizeof(a)/sizeof(a[0])。
后经过上网查找资料,询问了同学后明白了sizeof(a)/sizeof(a[0])的含义。
sizeof(a)/sizeof(a[0]) 求解数组可以存放多少个元素。sizeof(a)是数组总大小,sizeof(a[0])是数组中一个元素的大小。
第十三次作业(数组):7-2 输出所有大于平均值的数
1.实验代码
#include<stdio.h> int main(){ int n,i; double average,sum; scanf("%d",&n); int a[n]; if(n<1||n>10){ printf("Invalid."); } else{ sum = 0; for(i=0;i<n;i++){ scanf("%d",&a[i]); sum = sum + a[i]; } average = sum / n; printf("%.2f",average); printf("\n"); for(i=0;i<n;i++){ if(a[i]>average){ printf("%d ",a[i]); } } } printf("\n"); return 0; }
2.设计思路
第一步:仔细阅读作业题目要求,输入格式及输出格式。观察输出样例及输入样例的数字间是否存在空格及小数点。
第二步:利用if-else结构判断输入的n是否有效范围内。
第三步:利用for循环,定义数组并求出这些数的相加和。
第四步:求出平均数,利用for循环和if-else结构求出数组中所有大于平均值的数。
第五步:输出结果。
流程图
3.本题调试过程碰到问题及解决办法
一开始我的代码是这样的,编译器并没有报错。
但当运行时,输出结果显示错误。
经过查阅教科书上的例题,知道了数组输出时必须要利用循环将其输出,否则结果错误。
经过修改的代码如下。
编译及运行如下。
输入n,进入第一个if-else语句,判断是否1≤n≤10。
利用for循环语句计算相加和,并求出平均值。
进入第二个if-else语句,判断数组中的数是否大于平均数,并输出大于平均数的数。
结果正确。
当n输入0时,编译及运行如下。
第十四次作业(数组):7-2 求最大值及其下标
1.实验代码
#include<stdio.h> int main() { int index=0,i,N; scanf("%d",&N); int a[N]; for(i=0;i<N;i++){ scanf("%d",&a[i]); } for(i=1;i<N;i++){ if(a[i]>a[index]) index=i; } printf("%d %d",a[index],index); return 0; }
2.设计思路
第一步:仔细阅读作业题目要求,输入格式及输出格式。观察输出样例及输入样例的数字间是否存在空格及小数点。
第二步:利用for循环定义数组a[i]。
第三步:利用for循环及if-else语句判断a[i]>a[index]。
第四步:若a[i]>a[index],则将i赋值给index
第五步:输出a[index],index。即最大值及其下标。
流程图
3.本题调试过程
首先输入N的值。
输入数组a[i]中的数值。
利用for循环和if-else语句判断a[i]与a[index]的大小关系。
输出a[index]及index的值,即最大值及下标。
结果正确。
4.个人总结
(1)在这次的学习当中,我们学习到了关于数组的知识点,其中包含输出数组,交换数值,选择法排序等问题。数组对于我们来说非常重要,尤其是选择法排序问题。另外我们应注意定义一个数组或者输出一个数组时,应利用循环(例如for循环)来定义或输出,否则输出结果会出现乱码等问题,这个是我们必须要重视的问题。
(2)在这次的学习当中,我认为冒泡法排序这个知识点比较困难,因为它对于我们来说太过于繁琐。这需要我们不断练习的同时,多和同学一起交流,相互学习。必要时可以在网络上查找资料,例如听网课,看博客,对于我们的学习会有很大的帮助。
5.表格及折线图
表格
折线图
6.作业点评
1.https://www.cnblogs.com/wafx/p/10157289.html