第十四,十五周作業


要求二

題目一:求任意10個整數中的偶數的和。

1.實驗代碼

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

2.設計思路
(1)主要描述題目算法
第一步:本題要求十個數組中的偶數和,首先要定義一個數值為十的數組a[10],然后還要定義一個循環所需的變量i,以及所求的偶數和sum。
第二步:利用for循環實現十個數組的輸入,如果某個數組除以二取余為零,則證明其為偶數,進行累加。
第三步:當i大於10后結束循環,輸出sum的值。
(2)流程圖

 

3.本題調試過程碰到問題及解決辦法

 錯誤提示截圖

遇到的問題:本題在設計思路上並沒有什么問題,只在編譯時出現了一些小的失誤

解決方法:通過錯誤提示改正

 

4.本題PTA提交列表

題目二輸出小於均值的數
1.實驗代碼

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

2.設計思路
(1)主要描述題目算法
第一步:本題要求輸入10個整數,計算這些數的平均值,再輸出所有小於平均值的數。
第二步:先定義一個數值為十的數組a[10],再定義一個循環所需的變量i,以及一個數組和sum和平均數average。
第三步:利用for循環實現數組的輸入以及和的累加計算出平均數。
第四步:如果某個數大於平均數就進行輸出。注意輸出的格式每個數字后面必須有一個空格,即“%d "。
(2)流程圖

3.本題調試過程碰到問題及解決辦法

錯誤提示截圖

遇到的問題:本題和老師在課上講的才不多,a[i]與average比較時出現疑問。

解決辦法:我在大小比較的時候試兩次,哪個和答案一樣哪個對。

4.本題PTA提交列表

 

 

題目四fibonacci數列
1.實驗代碼

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

2.設計思路
(1)主要描述題目算法
第一步:本題要求用數組計算fibonacci數列的前12個數,並按每行打印3個數的格式輸出。即前兩個數相加得第三個數。
第二步:先定義一個數值為十二的數組,給出前兩個數的數值,再定義一個循環所需的變量i。
第三步:利用for循環依次算出十二個數值,注意:因為前兩個數值的大小已經給出,所以i要從2開始。
第四步:本題要求使用%6d的格式輸出,所以輸出格式為“%6d"。
第五步:要求在輸出最后一個數字后,有一個換行,所以i加1等於數組的個數后進行除3取余,實現三個數換行。
(2)流程圖

 

3.本題調試過程碰到問題及解決辦法

錯誤提示截圖

遇到的問題:本題和老師講的基本一樣,只是更改了每行的個數,只在編譯上出現了格式錯誤。

解決辦法:我咨詢了同學把代碼輸出的代碼改一下。

4.本題PTA提交列表

 

 

題目五 求最大值及其下標
1.實驗代碼

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

2.設計思路
(1)主要描述題目算法
第一步:本題要求在給出的n個數中找到最大值及其下標。
第二步:先定義出所需的字符,i代表循環所需的變量,index代表下標,max代表最大值,n代表輸入數值的個數。同時還要定義一個數組a[N],按要求N最大為10。
第三步:首先利用for循環輸入所有的數組值,然后假設a[0]為最大值,其下標也為0。
第四步:將所有的數組與最大值max比較大小,如果給出的數組a[i]比max大,就進行交換,使max永遠保持最大,利用for循環實現所有數組的比較。
第五步:按要求輸出最終的結果。

(2)流程圖

 

3.本題調試過程碰到問題及解決辦法

 

遇到的問題:本題在思路上還是比較清晰的,出現了一些小的問題,在編譯上還是會粗心丟三落四的,沒有注意到輸出方式。

解決方法:在%d與%d之間加了一個空格

4.本題PTA提交列表

 

 

題目六 題目七 選擇法排序
1.實驗代碼

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

2.設計思路
(1)主要描述題目算法
第一步:本題要求將給定的n個整數從大到小排序后輸出。
第二步:先定義編譯所需的變量,循環所需的變量i,t,數組a[10],輸入的數組個數N以及交換大小的變量t。
第三步:利用for循環輸入所有的數組。假設最大值的下標max=k,利用for循環,如果最大值a[max]小於數組a[i],就進行交換,讓max=i,將最大值換給a[k],直到完成所有的排序結束循環。
第四步:本題要求行末不得有多余空格,所以最后一個值的輸出格式應為 printf("%d ",a[i])。
(2)流程圖

 

3.本題調試過程碰到問題及解決辦法
 錯誤提示截圖

遇到的問題:本題先按照老師上課時講的打出了一部分,但是后續的就不會打了,對一些循環的條件的意義有些不理解

解決方法:通過查詢百度,自己把每一步仔細斟酌。學會每一步的意思。

4.本題PTA提交列表

 

題目八 求矩陣各行元素之和
1.實驗代碼

#include <stdio.h>
#define M 10
#define N 10

int main()
{
    int a[M][N];
    int sum[M];
    int m,n,i,j;
    
    scanf("%d %d",&m,&n);
    
    for(i=0;i<m;i++)
    {
        sum[i]=0;
        for(j=0;j<n;j++)
        {
            scanf("%d",&a[i][j]);
            sum[i]+=a[i][j];
        }
    }
    
    for(i=0;i<m;i++)
    {
        printf("%d\n",sum[i]);
    }

    return 0;
}

2.設計思路
(1)主要描述題目算法
第一步:本題要求矩陣各行元素之和,要將每行的兩個數相加求和,再依次輸出。
第二步:先定義此數組有m行n列,再定義循環所需的變量為i,j,所求的和為sum,初始值為0。定義矩陣數組為a[m][n]。
第三步:利用for的雙層循環輸入矩陣數組的所有值。外循環代表行,內循環代表列。
第四步:再利用for的雙層循環依次求出每行的和。
(2)流程圖

 

3.本題調試過程碰到問題及解決辦法

 錯誤提示截圖

遇到的問題:本題和老師在課上講的才不多,出現了一些小的問題,在編譯上還是會粗心丟三落四的

解決辦法:在for循環之后加入一個“}“

4.本題PTA提交列表

 

 

 要求三:
1.git地址:

 https://coding.net/u/zhangle1234567/p/PTA14-15/git/tree/master/

2.git截圖:

 

要求四

個人總結

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

一維數組

二維數組

收獲了什么?

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

(2)那些是難點?

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

哪些知識點還不明白?

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

選擇排序也看不太明白

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

要求五

同學之間互評作業

點評作業:
林夢:http://www.cnblogs.com/lin2580/p/7954077.html

余暢翔:http://www.cnblogs.com/ycx3550213/p/7967451.html

曹琪:http://www.cnblogs.com/blueblog6/p/7886541.html

要求六

學習進度條(總結本周學習情況)
1.表格 

2.折線圖

                            

 


免責聲明!

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



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