第四次作业

作业要求: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("
");
    for(i = 0;i < n;i++){
      if(a[i] > average){
        printf("%d ",a[i]);
      }
    }
    }
  printf("
");
  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

原文地址:https://www.cnblogs.com/mayijing/p/10158728.html