第四次作业

作业要求:https://edu.cnblogs.com/campus/hljkj/CS201802/homework/2522

观看mooc:

1.我观看了3个视频:数组,二维数组和数组运算,搜索,排序初步

2.我知道了

1)数组一旦创建,就不能更改大小

 2)a[0]可以存在但是无用,a[3][5]为3行5列的矩阵

3.对于素数的相关程序掌握不熟,还有对于素数的判断

第十三次作业:7-2 输出所有大于平均值的数

#include <stdio.h>
int main()
{
  int n,i;
  double average,sum=0;
  scanf("%d",&n); 
  int a[n];
  
  if(n>=1&&n<=10){
    for(i=0;i<n;i++){
    scanf("%d",&a[i]);
    sum=sum+a[i];
    }
    average=sum/n;
    printf("%.2f
",average);
    for(i=0;i<n;i++){
    
    if(a[i]>average)
      printf("%d ",a[i]); 
    }
    } 
  else {
   printf("Invalid.");
   }
  printf("
");
  return 0;
}

解题思路:

1.定义变量n,i,sum,average

2.输入数字个数,定义数组a[n],n不再有效范围输出Invalid.

3.输入数据,计算相加之和,和平均数

4.比平均数大的a[i]输出,小于等于平均数不输出

流程图:

运行结果:

 

运行结果是一堆不相关的数字,然后我又返回去读题,觉得可能是定义错了,将a[i]从int改为long 

 

运行结果还是一堆不相关的数字,然后我发现我没有输出平均数,加上了输出平均数

因为平均数输出并没有问题,所以我将断点设在了if语句

结果c++并没有进入if语句中直接就return 0,然后突然发现if语句实际上只会应用一次,要把它放在for循环中

 

输出的值是对的,但是不应该输出Invalid.然后我发现它的输出条件错误,同学又告诉我输入int a[n]不是a[i],我对这些地方进行了改正

 

结果正确,在PTA中也显示正确。

第十四次作业:7-2 求最大值及其下标

#include <stdio.h>
int main ()
{
  int n,max,index=0;
  scanf("%d",&n);
  int a[n],i;
  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];
      index=i;
    }
  }
  printf("%d %d",max,index);
  return 0;
}

解题思路:

1.定义变量n,max,index

2.输入n后,定义a[n],max=a[0]

3.如果max<a[i],max=a[i],同时index=i依次循环

4.输出max   index

流程图:

运行结果:

 

运行结果是正确的,在PTA上却报错,然后我在循环处设置了断点

调试也没有出错,然后我认真地查看了代码,发现有两行代码的位置错误

答案正确

本周总结:

1.本周学习了数组,函数的相关计算,让我更加充分地掌握了循环的应用

2.数组的循环条件和函数的定义对我来说有些困难,有时候无从下手;后来通过询问同学,在网上查阅资料解决

折线图:

 

 作业点评:  https://www.cnblogs.com/xiaofengqaq/p/10115956.html

      https://www.cnblogs.com/kaitbkleyue/p/10164062.html

                     https://www.cnblogs.com/0224ming/p/10164004.html

原文地址:https://www.cnblogs.com/zst1/p/10133338.html