zoukankan      html  css  js  c++  java
  • 第四次作业

    第四次作业

    我观看了浙江大学程序设计入门-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
    ",average);
        for(i=0;i<n;i++)
        {
          if(a[i]>average)
          {
            printf("%d ",a[i]);
          }
        }
        printf("
    ");
      }
      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

  • 相关阅读:
    【微信小程序】后台访问-net::ERR_CONNECTION_REFUSED 及 不是request合法域名问题 的解决
    【微信小程序】引用FontAwesome字体
    【微信小程序】开发工具使用技巧(七)
    【微信小程序】小程序扩展能力(六)
    【微信小程序】小程序云开发(五)
    【微信小程序】小程序框架(四)
    javascript学习笔记
    HTML&CSS学习笔记
    mysql学习笔记
    c++ primer 笔记 (四)
  • 原文地址:https://www.cnblogs.com/DX552ZYM557/p/10145443.html
Copyright © 2011-2022 走看看