C語言I博客作業11


這個作業屬於那個課程 C語言程序設計II
這個作業要求在哪里 C語言I作業11
我在這個課程的目標是 學會使用函數,熟練函數類型
這個作業在那個具體方面幫助我實現目標 在PTA的練習中逐漸熟練語句用法,和對知識的自我總結上
參考文獻 集美大學林麗老師百度文庫、C語言程序設計

1.PTA實驗作業

1.1 題目名1

統計某類完全平方數

本題要求實現一個函數,判斷任一給定整數N是否滿足條件:它是完全平方數,又至少有兩位數字相同,如144、676等。
輸入樣例:105 500
輸出樣例:cnt = 6

1.1.1數據處理

數據表達:b代表余數;i,j用於循環;a用於判斷i是否滿足條件,它們都是整型變量;

數據處理:
{
    int n1, n2, i, cnt;   定義變量n1,n2,i,cnt的類型
	
    scanf("%d %d", &n1, &n2);   輸入n1,n2
    cnt = 0;  對cnt對進行賦值
    for ( i=n1; i<=n2; i++ )   進行循環直到n1等於n2為止
    {
        if ( IsTheNumber(i) )   當滿足函數條件
            cnt++;    cnt累計
    }
    printf("cnt = %d\n", cnt);  輸出cnt

    return 0;   結束
}
int IsTheNumber ( const int N )    函數頭
{
    int i,s[10],a,b=0,j;  定義變量i,a,b,i,j,數組s
    i=N;   將i賦值給N
    a=sqrt(i);   a等於根號i
    if(a*a==i)   當i等於a的平方
    {
        while(i>0)   當i>0時
        {
            s[b]=i%10;  用s[b]來存放i除以10的余數
            i=i/10;     i等於i除以10
            for(j=0;j<b;j++)    進行循環
            {
                if(s[b]==s[j])   當s[b]等於s[j]時

                return 1;     返回1
            }
            b++;    累加b
        }
    }
    return 0;  返回0
}

1.1.2實驗代碼截圖

1.1.3 造測試數據

輸入數據 輸出數據 說明
46 572 7 46和572之間滿足條件的數有7個
400 900 5 400和900之間滿足條件的數有5個
10 700 8 10和700之間滿足條件的數有10個

1.1.4 PTA提交列表及說明

* 編譯錯誤:忘記打分號,通過看錯誤提示發現錯誤並改正的;
* 編譯錯誤:忘記打分號,通過看錯誤提示發現錯誤並改正的;

1.2題目名2

統計各位數字之和是5的數

本題要求實現兩個函數:一個函數判斷給定正整數的各位數字之和是否等於5;另一個函數統計給定區間內有多少個滿足上述要求的整數,並計算這些整數的和。
函數is判斷number的各位數字之和是否等於5,是則返回1,否則返回0。

函數count_sum利用函數is統計給定區間[a, b]內有多少個滿足上述要求(即令is返回1)的整數,並計算這些整數的和。最后按照格式
輸入樣例:104 999
輸出樣例:104 is counted.count = 15, sum = 3720

1.2.1數據處理

*數據表達*:
s用來計算各數字之和是否等於5;t代表余數;n為輸入數;count為滿足條件的整數個數, sum為這些整數的和;
*數據處理*:
int is( int number );
void count_sum( int a, int b );     自定義函數

int main()
{
    int a, b;   定義a,b變量

    scanf("%d %d", &a, &b);   輸入a,b
    if (is(a)) printf("%d is counted.\n", a);  如果返回值不為0,則輸出a is counted.
    if (is(b)) printf("%d is counted.\n", b);  如果返回值不為0,則輸出b is counted.
    count_sum(a, b);  自定義函數

    return 0;   結束
}
 int is( int n)
{
    int s=0,t=0;  定義s,t並對其賦值為0
    while(n!=0)   當n不等於0時一直循環
    {
        t=n%10;   t等於n除以10的余數
        n/=10;    n等於n除以10
        s+=t;     s等於s加t
    }
    if(s==5)     如果s等於5
    return 1;    返回1
    else   否則
    return 0;   返回0
    }
void count_sum( int a, int b )
{
    int sum=0,count=0,i;    定義sum,count,i變量
    for(i=a;i<=b;i++)      進行循環,直到i等於b為止
    {
        if(is(i))   如果滿足函數is(i)
        {
            count++;  count進行累加
            sum+=i;   sum等於sum加i
        }
    }
printf("count = %d, sum = %d\n",count,sum);   輸出count,sum
}

1.2.2實驗代碼截圖

1.2.3 造測試數據

輸入數據 輸出數據 說明
66 222 count=8 sum=1246 在66到222之中count為8,sum為1246
77 999 count=15 sum=3720 在77到999之中count為15,sum為3720
221 776 221 is counted count=8 sum=2695 在221到776之中count為8,sum為2695,221 is counted

1.2.4 PTA提交列表及說明

*編譯錯誤:把雙引號打成中文版,通過調試發現的,並改正;

2.代碼互評

自己代碼

同學代碼:

* 該同學定義的變量與我的不同;
* 該同學先用i計算余數,再存放到數組中;而我直接用數組存放余數;
* 我在取余后再次使用for循環來判斷是否滿足條件,該同學用s[i]=2來判斷;

自己代碼

同學代碼

* 該同學定義的變量與我的不同;
* 該同學用了do-while語句來循環語句,而我用的是while循環語句和for循環語句;

3.學習總結

3.1 學習進度條

周/日期 這周所花的時間 代碼行 學到的知識點簡介 目前比較困惑的問題
第六周 4天 20 用 MinGW-w64 來編譯C程序,學習編程計算溫度的轉化
第七周 3天 99 學習用if,else等語句編譯程序
第八周 2天 75 學習使用循環語句,用for來編譯程序
第九周 3天 94 學習各種使用函數eg:fact(i) for循環與while循環的區別
第十周 2天 213 學習使用多種分支結構 對分支結構中for循環有點迷糊不太能理解
第十一周 1天 135 學習使用switch語句
第十二周 1天 96 學習使用while語句
第十三周 1天 83 學習使用循環嵌套,continue語句 循環嵌套的順序
第十四周 1天 115 練習循環嵌套與if-else語句的結合 循環嵌套的順序
第十五周 2天 48 學習使用不同類型的函數 不知道函數應該怎么銜接

3.2 累積代碼行和博客字數

時間 博客字數 代碼行數
第四周 651 28
第六周 2041 48
第七周 4337 147
第八周 7005 222
第九周 9723 316
第十周 11911 529
第十一周 13872 664
第十二周 15759 760
第十三周 18111 843
第十四周 20009 958
第十五周 22007 1006

3.3 學習內容總結和感悟

3.3.1 學習內容總結

3.3.2 學習體會

本周學習了函數的用法,類型,變量的用法及類型。雖然以前就已經學了一次函數,但是這次的學習是更加的深入。可以從PTA的難度中看出,這次的題目好像是突然上了一個檔次,讓人應接不暇。第一道題目已經讓我力不從心,因為它用了數組,然而我並沒有學習過,於是代碼看的有點懵逼。從此次難度可以得出,在計算機這條路上我們還是太單純。以后要更努力學習了,不然快跟不上了。


免責聲明!

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



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