zoukankan      html  css  js  c++  java
  • 第十四,十五周作业

    要求二

    题目一:求任意10个整数中的偶数的和。

    1.实验代码

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

    2.设计思路
    (1)主要描述题目算法
    第一步:本题要求十个数组中的偶数和,首先要定义一个数值为十的数组a[10],然后还要定义一个循环所需的变量i,以及所求的偶数和sum。
    第二步:利用for循环实现十个数组的输入,如果某个数组除以二取余为零,则证明其为偶数,进行累加。
    第三步:当i大于10后结束循环,输出sum的值。
    (2)流程图

     

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

     错误提示截图

    遇到的问题:本题在设计思路上并没有什么问题,只在编译时出现了一些小的失误

    解决方法:通过错误提示改正

    4.本题PTA提交列表

    题目二输出小于均值的数
    1.实验代码

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

    2.设计思路
    (1)主要描述题目算法
    第一步:本题要求输入10个整数,计算这些数的平均值,再输出所有小于平均值的数。
    第二步:先定义一个数值为十的数组a[10],再定义一个循环所需的变量i,以及一个数组和sum和平均数average。
    第三步:利用for循环实现数组的输入以及和的累加计算出平均数。
    第四步:如果某个数大于平均数就进行输出。注意输出的格式每个数字后面必须有一个空格,即“%d "。
    (2)流程图

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

    错误提示截图

    遇到的问题:本题和老师在课上讲的才不多,a[i]与average比较时出现疑问。

    解决办法:我在大小比较的时候试两次,哪个和答案一样哪个对。

    4.本题PTA提交列表

     

    题目四fibonacci数列
    1.实验代码

    #include <stdio.h>
    int main( )
    {  
      
        int i;
        int a[12]={1, 1};
        printf ("%6d",a[0]); 
        printf ("%6d",a[1]); 
        for (i=2;i<12;i++)
         {   
        a[i]=a[i-2]+a[i-1];
          printf ("%6d",a[i]); 
           if ((i+1)%3==0)
           {
          printf ("
    ");}
        }
        return 0;
    }

    2.设计思路
    (1)主要描述题目算法
    第一步:本题要求用数组计算fibonacci数列的前12个数,并按每行打印3个数的格式输出。即前两个数相加得第三个数。
    第二步:先定义一个数值为十二的数组,给出前两个数的数值,再定义一个循环所需的变量i。
    第三步:利用for循环依次算出十二个数值,注意:因为前两个数值的大小已经给出,所以i要从2开始。
    第四步:本题要求使用%6d的格式输出,所以输出格式为“%6d"。
    第五步:要求在输出最后一个数字后,有一个换行,所以i加1等于数组的个数后进行除3取余,实现三个数换行。
    (2)流程图

     

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

    错误提示截图

    遇到的问题:本题和老师讲的基本一样,只是更改了每行的个数,只在编译上出现了格式错误。

    解决办法:我咨询了同学把代码输出的代码改一下。

    4.本题PTA提交列表

     

    题目五 求最大值及其下标
    1.实验代码

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

    2.设计思路
    (1)主要描述题目算法
    第一步:本题要求在给出的n个数中找到最大值及其下标。
    第二步:先定义出所需的字符,i代表循环所需的变量,index代表下标,max代表最大值,n代表输入数值的个数。同时还要定义一个数组a[N],按要求N最大为10。
    第三步:首先利用for循环输入所有的数组值,然后假设a[0]为最大值,其下标也为0。
    第四步:将所有的数组与最大值max比较大小,如果给出的数组a[i]比max大,就进行交换,使max永远保持最大,利用for循环实现所有数组的比较。
    第五步:按要求输出最终的结果。

    (2)流程图

     

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

     

    遇到的问题:本题在思路上还是比较清晰的,出现了一些小的问题,在编译上还是会粗心丢三落四的,没有注意到输出方式。

    解决方法:在%d与%d之间加了一个空格

    4.本题PTA提交列表

     

    题目六 题目七 选择法排序
    1.实验代码

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

    2.设计思路
    (1)主要描述题目算法
    第一步:本题要求将给定的n个整数从大到小排序后输出。
    第二步:先定义编译所需的变量,循环所需的变量i,t,数组a[10],输入的数组个数N以及交换大小的变量t。
    第三步:利用for循环输入所有的数组。假设最大值的下标max=k,利用for循环,如果最大值a[max]小于数组a[i],就进行交换,让max=i,将最大值换给a[k],直到完成所有的排序结束循环。
    第四步:本题要求行末不得有多余空格,所以最后一个值的输出格式应为 printf("%d ",a[i])。
    (2)流程图

     

    3.本题调试过程碰到问题及解决办法
     错误提示截图

    遇到的问题:本题先按照老师上课时讲的打出了一部分,但是后续的就不会打了,对一些循环的条件的意义有些不理解

    解决方法:通过查询百度,自己把每一步仔细斟酌。学会每一步的意思。

    4.本题PTA提交列表

     

    题目八 求矩阵各行元素之和
    1.实验代码

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

    2.设计思路
    (1)主要描述题目算法
    第一步:本题要求矩阵各行元素之和,要将每行的两个数相加求和,再依次输出。
    第二步:先定义此数组有m行n列,再定义循环所需的变量为i,j,所求的和为sum,初始值为0。定义矩阵数组为a[m][n]。
    第三步:利用for的双层循环输入矩阵数组的所有值。外循环代表行,内循环代表列。
    第四步:再利用for的双层循环依次求出每行的和。
    (2)流程图

     

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

     错误提示截图

    遇到的问题:本题和老师在课上讲的才不多,出现了一些小的问题,在编译上还是会粗心丢三落四的

    解决办法:在for循环之后加入一个“}“

    4.本题PTA提交列表

     

     要求三:
    1.git地址:

     https://coding.net/u/zhangle1234567/p/PTA14-15/git/tree/master/

    2.git截图:

     

    要求四

    个人总结

    (1)本周你学习了哪些内容?

    一维数组

    二维数组

    收获了什么?

    懂得如何定义数组初始化。

    (2)那些是难点?

    冒泡排序和选择排序就是难点,很难理解,最后只能靠背。

    哪些知识点还不明白?

    不懂冒泡排序第二层循环的意义;

    选择排序也看不太明白

    这两个排序的流程图不太会画。

    要求五

    同学之间互评作业

    点评作业:
    林梦:http://www.cnblogs.com/lin2580/p/7954077.html

    余畅翔:http://www.cnblogs.com/ycx3550213/p/7967451.html

    曹琪:http://www.cnblogs.com/blueblog6/p/7886541.html

    要求六

    学习进度条(总结本周学习情况)
    1.表格 

    2.折线图

                                

  • 相关阅读:
    主成分分析(PCA)原理详解_转载
    用eclipse怎么打war包?
    dsLinq.Count() 引发了“System.NullReferenceException”类型的异常
    sql中实现split()功能
    关于SQL Server将一列的多行内容拼接成一行,合并显示在另外表中
    SEM和SEO的区别?
    最适合程序员转行的10大职业
    CPM、CPC、CPA、PFP、CPS、CPL、CPR等广告术语是什么意思
    什么是CPC,CPA,CVR,CTR,ROI
    SQL SERVER 修改数据库名称(包括 db.mdf 名称的修改)
  • 原文地址:https://www.cnblogs.com/1999-09-22/p/7966613.html
Copyright © 2011-2022 走看看