第四次作业
作业要求:https://edu.cnblogs.com/campus/hljkj/CS201802/homework/2522
课前预习:
学习了有关数组定义及运算的知识
有关输出最大值或最小值及其下标等还不熟练,字母间代换思路有时还不是很清晰
【7-2 输出所有大于平均值的数】
#include <stdio.h> int main(void) { int i,n; double average,sum; scanf("%d",&n); int a[n]; sum = 0; if(n < 1 || n > 10){ printf("Invalid."); } else{ 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"); system("pause"); return 0; }
解题思路:
1. 定义平均数average 、数组之和sum 、元素个数n 、数组a[ i ] 、i
2. 利用 if 语句,n<1或n>10时,输出 “ Invalid. ”
3. 利用 for 循环,求出数组之和,再求出平均值
4. 利用 for 循环,将数组中的数与平均值比较,输出大于平均值的数
流程图:
调试过程:
在检查时发现 if 判断句中多打了等号,导致出错
将 n<=1 || n>=10 改为 n<1 || n>10
【7-2 求最大值及其下标】
#include <stdio.h> int main(void) { int i,n; scanf("%d",&n); int f[n]; int index = 0; for(i = 0;i < n;i++){ scanf("%d",&f[i]); } int max = f[0]; for(i = 0;i < n;i++){ if(max < f[i]){ max = f[i]; index = i; } } printf("%d %d",max,index); system("pause"); return 0; }
解题思路:
1. 定义元素个数 n 、下标 index 、数组 f [ n ] 、i
2. 输入f [ n ],定义最大值 max = f [ 0 ]
3. 利用 for 循环,若 max = f [ i ],则替换 max 与下角标,
4. 输出最大值与下角标
流程图:
调试过程:
翻看课本时发现定义的 max = f [ 0 ]应写在第一个 for 循环后面
个人总结:
(1)本周进行了数组学习,定义引用、初始化、选择法排序与冒泡法排序
(2)打代码时经常粗心,经常写错或写串位置
逻辑思维还需进一步提高
点评:
(1)https://www.cnblogs.com/kaitbkleyue/p/10164062.html
(2)https://www.cnblogs.com/zst1/p/10133338.html
(3)https://www.cnblogs.com/nansu/p/10134717.html