第四次作业

第四次作业

我观看了浙江大学程序设计入门-C语言课程中有关数组的第六周和第七周部分,总共观看了17个视频。

观看列表截图

通过观看视频我学习到的知识点:

 *利用for循环来遍历数组。

 *数组的集成初始化:直接用大括号给出数组所有元素的初始值,不需要给出数组大小。

 *数组作为函数参数时,往往必须再用另一个参数来传入数组大小。

对于所学知识点还有的疑问:

 *专一多能不是好的代码,例如在一段代码中,i即是循环遍历的变量,又用来作为其他的标志,这样是不好的。一开始不是很理解这句话的意思,反复看了几遍视频之后就能理解了。

没有学会的知识点:

*二维数组的tic-tac-toe游戏中读入矩阵,检查行,检查列,检查对角线。

 

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

 

PTA作业

第16周 第13次作业 7-2 输出所有大于平均值的数

题目:

本题要求编写程序,将输入的n个整数存入数组a中,然后计算这些数的平均值,再输出所有大于平均值的数。

输入格式:输入在第1行中给出一个正整数n(1n10),第2行输入n个整数,其间以空格分隔。题目保证数据不超过长整型整数的范围。

输出格式:输出在第1行给出平均值,保留2位小数。在第2行输出所有大于平均值的数,每个数的后面有一个空格;如果没有满足条件的数,则输出空行。如果输入的n不在有效范围内,则在一行中输出"Invalid."。

1.实验代码

#include <stdio.h>
int main ()
{
  int n,i,a[10],sum;
  double average;
  
  sum=0;
  
  scanf("%d",&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\n",average);
    for(i=0;i<n;i++)
    {
      if(a[i]>average)
      {
        printf("%d ",a[i]);
      }
    }
    printf("\n");
  }
  else
  {
    printf("Invalid.");  
  }
 return 0; 
}

 

 2 解题思路

(1)算法:**利用for循环进行数组的赋值并求和,求出平均值后,再利用for循环将数组中每个数与平均值一一比较,输出符合要求的数。

        *输入n。

        *当输入的n值满足条件时,利用for循环遍历数组,进行数组的赋值并求和。

        *求出平均值。

        *再次利用for循环遍历数组,将数组中每个数与平均值比较。

        *输出符合要求的数。 

        *当输入的n值不满足条件时,输出“Inwalid”。

(2)流程图:

 

3.本题调试过程碰到问题及解决办法

(1)错误:在利用for循环给数组赋值时,语句“i<n”,错写成了“i<=n”。

(2)有错误提示的截图

 

 

当正常输入n等于3,接着在输入三个数,按回车键后,没有给出计算结果,而是显示要继续输入。

(3)编译器设置断点、单步调试的界面截图

 

 

(4)解决办法:通过反复尝试,我找出了错误的地方并去掉了多余的等号,改正后正常输入后可以得出结果。

 

第17周 第14次作业 7-2 求最大值及其下标

题目:本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。

输入格式:输入在第一行中给出一个正整数n(1<n10)。第二行输入n个整数,用空格分开。

输出格式:在一行中输出最大值及最大值的最小下标,中间用一个空格分开。
1.实验代码

#include <stdio.h>
int main ()
{
  int i,a[10],n,max;
  scanf("%d",&n);
  for (i=0;i<n;i++)
  {
    scanf("%d",&a[i]);
  }
  max=0;
  for (i=0;i<n;i++)
  {
    if(a[max]<a[i])
    {
      max=i;
    }
  }
  printf("%d %d",a[max],max);
  return 0;
}

2解题思路

(1)算法:**利用两次for循环遍历数组,第二个for循环中嵌套if语句用来给查找最大值。

        *第一次利用for循环,遍历数组,给数组赋值。

        *先令max等于0,在进行最大值的查找。

        *第二次利用for循环,遍历数组,再嵌套if语句,将数组中每个数进行比较,找出最大值及其下标。

(2)流程图

 

3.本题调试过程碰到问题及解决办法

(1)错误:数组长度是一个整型常量表达式,而我把数组长度设成一个变量,这是不对的。

(2)有错误提示的截图

 

 

(3)编译器设置断点、单步调试的界面截图

 

 

(4)解决办法: 将数组长度该成一个常量,例如10,程序就可以正常运行了。

 

个人总结:

1.本周我学习了的内容:数组的定义,利用for循环给数组赋值,还可以将数组中每个数都拿出来进行相关计算。

  我的收获*数组是一些具有相同类型的数据的集合,数组中的数据按照一定的顺序排列存放。

           *数组长度是一个整型常量表达式,设定数组的大小,在定义时必须指定。

           *数组下标从0开始,下标不能越界。

2.难点:*利用for循环遍历数组来进行赋值,比较等计算。

       *逻辑关系复杂的程序总是思路混乱,没有头绪。

  措施:*认真看书,先解决在知识点上的欠缺。

       *上网查找资料,培养自主学习的能力。

       *多敲代码,反复练习,熟能生巧。

       *虚心向同学学习,借鉴他们的优点。

 

累积代码行数和时间:

时间 12月13日 12月14日 12月15日 12月16日 12月17日 12月18日 12月19日 12月20日 12月21日 12月22日 12月23日 12月24日 12月25日
代码行数 30 55 73 102 135 157 160 176 189 194 210 225 236

累积博客字数和时间:

时间 12月13日 12月14日 12月15日 12月16日 12月17日 12月18日 12月19日 12月20日 12月21日 12月22日 12月23日 12月24日 12月25日
博客字数 0 0 0 0 0 200 300 300 300 450 750 850 900

折线图:

 

 

点评:https://www.cnblogs.com/mayijing/p/10158728.html

                 https://www.cnblogs.com/zst1/p/10133338.html

                https://www.cnblogs.com/nansu/p/10134717.html

 

posted on 2018-12-25 16:48  DXDX  阅读(1223)  评论(6编辑  收藏  举报