第十四,十五周作業


要求二

題目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.表格及折線圖


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM