第14,15周作业

要求二

题目7-1数组中偶数的和

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

2.设计思路

(1)题目算法

第一步:定义数组a[10],循环变量i,总和s。

第二步:定义变量初始值s=0;

第三步:找到循环体s=s+a[i],i++;

第四步:输出s。

(2)流程图

3.本题调试过程及解决方法

错误截图

遇到问题:打不出正确结果。

解决方法:自己仔细琢么反复实验,最后败在了没有给s定义初始值上。

题目7-3将数组中的数逆序存放

1.实验代码

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

 

2.设计思路

(1)题目算法

第一步:定义变量n,i,a[n];

第二步:输入循环结构(i=0,i<n;i++),并输入a[i];

第三步:输入另一个循环使程序逆向运行。(i=n-1;i<n;i--)

第四步:输出a[i]以及a[0];

(2)流程图

 

3遇到的问题及解决方法

错误截图

 

遇到的问题:没有完全理解提意。

解决方法:仔细阅读题目,询问了同学(他和我说直接定义一个i,后面的循环体需要换成(i=n-1,i<n;i--)),最后成功编译出正确结果.

  7-5冒泡法排序

1实验代码

#include <stdio.h>  
int main()  
{             
  int N,K,i,j,x,t;      

scanf("%d %d",&N,&K);
int a[N];                     
  for(i=0;i<N;i++) 
  {              
    scanf("%d",&a[i]);
  }                                            
   for(i=0;i<N;i++)
   {          
      for(j=0;j<N-i-1;j++)
      {                                      
        if(a[j+1] <a[j])
        {                      
          t=a[j];                      
          a[j]=a[j+1];                      
          a[j+1]=t;
        }  
      }            
    x++;          
    if(x==K)              
    break; 
    }               
    for(i=0;i<N;i++)
    {         
        if(i<N-1)              
        {
        printf("%d ",a[i]);  
        }       
        else              
        {
          printf("%d",a[i]);
        }
    }    
return 0;
}

 2 设计思路

(1)题目算法

第一步:定义循环变量i,j以及循环次数k,N,常变量t,数组a[N];

第二步:在(i=0;i<N;i++)的条件下输入a[i];

第三步:比较a[0]与a[1];如果a[0]>a[1]则交换,否则不交换,以此类推直到把最大值放到最后;

第四步:在依次进行第二趟排序最大值放到第n-1个位置,共进行n-1趟排序。

第五步:输出a[i];

(2)流程图

3遇到的问题及解决方法

错误截图

遇到的问题:不知道如何才能出现第几次排序出现的结果

解决方法:增加一个变量x,在循环之后输入,如果x=k,则直接跳出;

7-3 求矩阵的局部极大值

1.实验代码

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

2.设计思路

(1)题目算法

第一步:定义变量i,j,m,n,,M,N,t,flag=0;

第二步:输入M,N,输入a[i][j];

第三步:把满足的条件放在循环中(中间数大于四周上下左右的数);

第四步:如果flag=0则输出“None M N”否则输出“a[i][j],m,n."

(2)流程图

 

 

3.遇到问题及解决方法

错误截图

 

 遇到的问题

输出结果串码打出

解决问题方法

把scanf()放到a[M][[N]前面就可以了。

要求三

git地址

项目截图

 

要求四

个人总结

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

一维数组

二维数组

收获了什么?

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

(2)那些是难点?

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

哪些知识点还不明白?

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

选择排序也看不太明白

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

要求五 

1.我评论的博客

王佳乐

姚爽

孙娜

 

2.表格及折线图

折线图

表格

 

posted @ 2017-12-03 22:28  何宇诗  阅读(248)  评论(4编辑  收藏  举报