第二次作業


 

作業要求(博客鏈接):https://edu.cnblogs.com/campus/hljkj/Cprogramming_2018Autumn_CST2018_4/homework/2502

 

PTA作業情況:

一、計算機18秋-函數 6-1 統計個位數字

[1] 實驗代碼

int Count_Digit( const int N, const int D )
{
    int count,yushu,i;
    i=N;
    count = 0;
    
    if(i<0)
    {
        i = -i;
    }
    do
    {
        yushu=i%10;
        if(yushu==D)
        {
            count++;
        }
        i/=10;
    }while(i>0);
    return count;
}

[2] 設計思路

(1)文字描述

第一步:定義這個數的余數yushu,定義替換N的數i,定義D出現的次數count。

第二步:先判斷i是否為正數,若是則繼續,若否則先轉換為其相反數。

第三步:從個位到最高位依次判斷各位次上的數是否等於D。

(2)流程圖

[3] 運行結果

(1)結果截圖

 

 

 

 

(2)調試截圖

 

 

(3)遇到問題及解決辦法

本題運用了調用函數的方法。

開始時不清楚如何將每個位置上的數與D進行對比。看到題后應先理清思路,應思考如何遍歷每個位置上的數,並判斷是否與D相等。方法:應將一個數字除盡10,得到余數與D進行比較,再將這個數除以10,如此循環來進行比較。

二、計算機18秋-數組1  7-4 求一組數中的最大值和次大值

[1] 實驗代碼

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

[2] 設計思路

(1)文字描述

第一步:定義變量i,最大值max=0,次大值cmax=0。

第二步:依次輸入十個元素,令max=數組中第一個數,令cmax=0,遍歷數組,找出最大值。

第三步:再次遍歷數組找出次最大值。

(2)流程圖

 

[3] 運行結果

(1)結果截圖

 

(2)調試結果

 

 

 

(3)運行問題及解決方法

 本題最應注意cmax的值如何判斷,一定要滿足在數組元素中除max值以外,cmax為最大的值。

三、計算機18秋-數組2  7-4 選擇法排序

[1] 實驗代碼

 

#include<stdio.h>
#define N 10
int main(void)
{
    int a[N];
    int i,k,j,temp;
    for(i=0;i<N;i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=0;i<3;i++)
    {
        k=i;
        for(j=i+1;j<N-1;j++)
        {
            if(a[j]<a[k])
            {
                k=j;
            }
        }
        if(k!=i)
        
            temp=a[k];
            a[k]=a[i];
            a[i]=temp;
        }
    }

    for(i=0;i<N;i++)
    {
        printf("    %d",a[i]);
    }
    
}    

 

[2] 設計思路

(1)文字描述

第一步:定義變量i,k,j,temp。將元素依次輸入到數組中。

第二步:創建外循環和內循環,將其元素進行比較,將外循環設成只循環三次(因為題內要求排序只排三輪)。

第三步:比較完畢后輸出數組。

(2)流程圖

[3] 運行結果

(1)結果截圖

 

 

(2)調試結果

 

 

 

 

(3)遇到的問題及解決方法

做題前應仔細理解選擇法排序的意義 及題的要求。

剛開始沒理解題的要求,導致我一直認為是把輸入的數從小到大全部排列。

應理解內外循環比較的過程,根據題意,外循環的循環次數應為三次。

 

四、個人總結

(1)這幾周進一步學習了函數及數組,講解了內存的一些概念,應用了調用函數這個方法。

通過做PTA和看書,更加深入地理解了數組的應用和意義。

(2)我覺得內存知識的理解為較難的地方,數組的應用也不是非常熟練。解決問題最好的方法就是去實踐,內存的概念應該用調試及觀測地址一點一點去理解,對於提高應用數組的熟練度應多刷題,進行耐心的思考和調試。

 

五、互評和學習進度

(1)點評

 袁潮

袁於純

邱作鵬

 

(2)學習進度

表格:

周數 此周代碼行數/行 碼代碼所用時長/h 寫博客字數/字 寫博客所用時長/h 所涉及的知識點
第十三周 2000 8 0 0 函數的應用、內存的理解
第十四周 1800 6 0 0 函數的應用、數組的應用
第十五周 1900 6 0 0 數組的應用
第十六周 2400 12 1200 6 數組的應用

折線圖:

 


免責聲明!

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



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