第十四,十五周作业

要求二

题目7-1 求最大值及其下标

1.实验代码

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

2.设计思路
(1)题目算法
第一步:本题需要在n个数中找最大值及其下标。
第二步:首先定义i为所需的循环变量,idx代表下标,max代表最大值,n代表数值,定义一个数组a[n]。
第三步:利用for循环输入所有的数值组,将所有的数值与最大值max比较,如果数组a[i]比max大,则进行交换使max保持最大。
第四步:输出最终的结果。
(2)流程图

3.本题遇到问题及解决方法
(1)错误截图

(2)遇到问题
本题忘记了输入n值,也没有定义数组,在判断最大值时没有将最大值下标进行替换。在检查几次后改正了错误。

7-4 交换最小值和最大值

1.实验代码

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

2.设计思路
(1)题目算法
第一步:定义所需变量数组个数n,循环还变量i,替换变量tmp,下标idx,数组a[n],最大值max和最小值min。
第二步:利用for循环输入所有数组值假设第一个值为最小的,则进行所有数组与第一个值比较,找到最小值进行交换,并进行下标的交换。
第三步:若最小的值不是第一个,则定义一个替换的变量tmp将其换到相应的位置。
第四步:最大值与最小值步骤类似。
第五步:最后用到for循环输出结果。
(2)流程图

3.本题遇到问题及解决方法
(1)错误截图

(2)遇到问题
本题要求输出每一个整数后跟一个空格,我在输出时没有注意到导致编译错误,在替换最小下标时没有找替换的变量,后来经过问同学熟悉了就好了。

7-3 选择法排序

1.实验代码

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

2.设计思路
(1)题目算法
第一步:本题要求将给定的n个整数从大到小排序后输出。
第二步:定义所需的变量循环变量i,j,数组数n,替换变量x。
第三步:利用for循环输入所有数组,进行比较交换,完成排序结束循环。
第四步:输出结果行末要求不得有多余空格。
(2)流程图

3.本题遇到问题及解决方法
(1)错误截图

(2)遇到问题
本题的编译错误,思路错了,后来看了一下老师的PPT回想课上讲的内容,又问了问同学,重新改写,本题还要求行末不得有多余空格,在第一次编译的时候忘记了。

7-2 方阵左下三角元素的和

1.实验代码

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

2.设计思路
(1)题目算法
第一步:本题要求求方阵左下角元素的和,输入所需变量i,j,以及求和变量sum,定义要求的四行四列数组a[4][4]。
第二步:利用for双层循环输出数组,内循环定义i>=j,使输出的值都在对角线的下半部分,通过循环进行累加。
第三步:最后输出和sum。
(2)流程图

3.遇到问题及解决方法
(1)错误截图

(2)遇到问题
本题要求求左下三角元素的和,可是我没有定义,导致最后答案错误,按照老师课上讲的求左下三角的和应该为i>=j,后来找了一下PPT,最后记住了。

要求三

(1)git地址:
https://git.coding.net/MAYUXIN/mayuxin.git
(2)项目截图

要求四

(1)内容收获与总结:
·本周学习了数组,知道了数组是相同类型数据的有序集合,在内存中连续存放。还学习了一维数组的定义和引用,数组的定义按照:类型名 数组名 [数组长度],这样编译。
·还学习了用数组计算fibonacci数列。
·知道了什么是一维数组,二维数组和三维数组还有多维数组。
·二维数组的定义和引用:类型名 数组名[行长度][列长度]。还有二维数组在内存中的存放方式。
(2)知识难点
感觉老师上课讲的时候认真听还能听的懂但是自己做的时候却又不知道怎么做,数组的引用还是不熟,课下我会多看PPT然后多练习,现在看完题目还是有点手足无措的感觉,还需要问同学百度查什么的。

要求五

1.被点评同学的博客链接及截图
孙娜:http://www.cnblogs.com/sun-na-/p/7875394.html
截图:

孙佳钰:http://www.cnblogs.com/woshisun/p/7918490.html
截图:

孙美玲:http://www.cnblogs.com/sunmeiling/p/7911642.html
截图:

3.表格及折线图

posted @ 2017-12-03 20:05  马宇欣  阅读(338)  评论(9编辑  收藏  举报