第十四周十五周作业

一、
7-1 数组中偶数的和(14周PTA作业-1)
1、实验代码:

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

2、设计思路:
第一步:先定义一个数值为十的数组a[10],两个整数变量i,s,求十个数组中的偶数和。
第二步:用for循环输入数组,直到数组除以二取余为零,则为偶数,进行累加。
第三步:当i大于10后结束循环,输出s对应的值。
3、流程图:

4、PTA提交列表:

5、本题出现的问题与解决方法:
错误截图:
出现的错误:编译的时候未出现问题,编程思路也没出问题,输入的数组中的元素输入的不是进行for循环的元素。
解决方法:将a[s]改成a[i]。(本题出错在于我做题不专注造成的。)
7-2 输出小于均值的数(14周PTA作业-1)
1、实验代码:

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

2.设计思路:
第一步:定义一个数组a[10],整数变量i,sum,一个浮点型变量average,求输入10个整数,计算这些数的平均值,再输出所有小于平均值的数。
第二步:用for循环进行数组的输入,和的累加计算出平均数。
第三步:如果出现某个数大于平均数,就输出这个数。
3、流程图:

4、PTA提交列表:

5、本题出现的问题与解决方法:
错误截图:
出现的错误:(1)编译未出现问题,输出的答案少了一个“23”跟提莫要求不符。(2)在最后输出的括号中“%d”后面没加空格。
解决方法:在第一个for循环中sum后面加上一个“+”。
7-3 fibonacci数列(14周PTA作业-1)
1、实验代码:

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

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

4、PTA提交列表:

5、本题出现的问题与解决方法:
本题在编译的过程未出现问题。
7-4 求最大值及其下标(14周PTA作业-2)
1、实验代码:

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

2.设计思路
第一步:定义i,n,min,还要定义一个数组a[n]。
第二步:用for循环输入所有的数组值,然后假设a[0]为最大值,其下标也为0。
第三步:将所有的数组与最大值min比较大小,如果给出的数组a[i]比min大,就进行交换,使min永远最大,利用for循环实现所有数组的比较。
3、流程图:

4、PTA提交列表:

5、本题出现的问题与解决方法:
错误截图:
出现的错误:无法编译出正确答案。
解决方法:在第二个for循环前面加上min=0.
7-5 选择法排序(14周PTA作业-2)
1、实验代码:

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

2.设计思路:
第一步:定义整数变量n,i,x,y,数组a[n+1]。
第二步:用for循环输入所有的数组,如果最大值a[i+1]小于数组a[i],就进行交换,让y=a[i],a[i]=a[i+1],a[i+1]=y,将最大值换给a[i],直到完成所有的排序结束循环。
第三步:输出a[i].
3、流程图:

4、PTA提交列表:

5、本题出现的问题与解决方法:
本题在编译的过程未出现问题。
7-6 冒泡法排序:
1、实验代码:

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

2.设计思路
第一步:定义整数型变量n,i,x,y,z和整数型数组a[n]。
第二步:输入数组a[n].
第三步:用两次for循环判断最大值,输出循环输出k次冒泡排序之后的数组。
3、流程图:

4、PTA提交列表:

5、本题出现的问题与解决方法:
错误截图:
出现的错误:
解决方法:
二、
上传GIt网址:http://www.cnblogs.com/sun-na-/p/7875394.html
三、上传coding截图:

四、本周学习与个人总结:
本周学习了数组,如何使用,定义数组,二位数组的元素的存放方式。之后又学习了数组延伸到排序问题,冒泡排序,学习了矩阵相关的一些编译问题。本周的学习难度明显加大,除了对新学的知识有所收获以外,对编程有了更深的认识。希望我可以学习到更多的变成只时并掌握它们。
五、点评作业:
(1)胡俊鲜:http://www.cnblogs.com/123456hjx/
截图:
(2)关晟强:http://www.cnblogs.com/asdfg123/p/7967445.html
截图:
(3)陈雨秋:http://www.cnblogs.com/cyq66992152/p/7946077.html
截图:
六、学习进度条与折线图:

posted on 2017-12-04 01:07  CJ丶Madlife  阅读(392)  评论(0编辑  收藏  举报