1. 程式人生 > >第14,15周作業

第14,15周作業

選擇 設計 -i main 個人 ret 題目 實驗 大於

要求二

題目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地址

https://git.coding.net/hezongyan321/text.git

項目截圖

技術分享圖片

要求四

個人總結

(1)本周你學習了哪些內容?

一維數組

二維數組

收獲了什麽?

懂得如何定義數組初始化。

(2)那些是難點?

冒泡排序和選擇排序就是難點,很難理解,最後只能靠背。

哪些知識點還不明白?

不懂冒泡排序第二層循環的意義;

選擇排序也看不太明白

這兩個排序的流程圖不太會畫。

要求五

1.我評論的博客

王佳樂

http://www.cnblogs.com/wjl1124/p/7966897.html

技術分享圖片

姚爽

http://www.cnblogs.com/yaoshuang/p/7875318.html

技術分享圖片

孫娜

http://www.cnblogs.com/sun-na-/p/7875394.html

技術分享圖片

2.表格及折線圖

第14,15周作業