一、表格
| 問題 | 答案 |
|---|---|
| 這個作業屬於那個課程 | C語言程序設計II |
| 這個作業要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/9825 |
| 我在這個課程的目標是 | 學習好C語言,熟練掌握編譯代碼的相關技巧,掌握C語言的精髓 |
| 這個作業在那個具體方面幫助我實現目標 | 對函數的定義和調用有初步的了解,學會了如何編輯階乘表 |
| 參考文獻 | 百度百科,C語言程序設計 |
二、本周作業
1.PTA實驗作業


1.1 題目名1 判斷一個整數的各位數字平方之和能否被5整除
題目內容:
編寫函數fun,其功能是:判斷一個整數的各位數字平方之和能否被5整除,可以被5整除則返回1,否則返回0。
函數接口定義:
int fun(int n );
其中 n 是用戶傳入的參數。 函數判斷n的各位數字平方之和能否被5整除,能被5整除則返回1,否則返回0。
裁判測試程序樣例:
#include <stdio.h>
int fun( int n );
int main()
{
int m;
scanf("%d", &m);
printf("The result is %d\n", fun(m));
return 0;
}
/* 你的程序將被嵌入在這里 */
輸入樣例:
12
輸出樣例:
The result is 1
輸入樣例:
123
輸出樣例:
The result is 0
1.1.1數據處理
數據表達:運用了變量sum以及變量t;sum以及i都是整型變量
數據處理:在剛開始的時候先使用for語句算出來一個整數的各位數字平方之和等於多少,接着然后運用if-else語句判斷n的各位數字平方之和能否被5整除,能被5整除則返回1,否則返回0。
函數參數:運用的主調函數是main( );被調函數是int fun(int n );實參是n;形參是t,它們都是整型。
1.1.2實驗代碼截圖

1.1.3 造測試數據
| 輸入數據 | 輸出數據 | 說明 |
|---|---|---|
| 12 | The result is 1 | 題目所給數據 |
| 1 | The result is 0 | 最小正整數 |
| 999 | The result is 0 | 較大正整數 |
1.1.4 PTA提交列表及說明

提交列表說明:
1.編譯錯誤:將sum=o修改成為sum=0。
2.編譯錯誤:把int sum=0;修改成為int sum=0,t; 接着經過在Dev-c++中編譯找到了錯誤之處,即將int fun (int n);中的“;”進行刪除,然后再在第三行和第十九行增添上“{ }”。
3.答案正確:。。。。
1.2 題目2 水仙花數判斷
題目內容:
本題要求實現一個函數,判斷任一整數是否為水仙花數(必須是三位數,且數的每一位上數字的立方和與數本身相等)。例如153=13+53+3^3=1+125+27=153,而1或155則不是水仙花數。如果是水仙花數,則函數返回1,否則返回0。
函數接口定義:
int func(const int N);
其中N是用戶傳入的參數。N的值不超過int類型的范圍。如果參數N是水仙花數,則返回1,否則返回0。
裁判測試程序樣例:
#include <stdio.h>
int func(const int N);
int main()
{
int N;
scanf("%d", &N);
printf("%d\n", func(N));
return 0;
}
/* 請在這里填寫答案 */
輸入樣例:
153
輸出樣例:
1
1.2.1 數據處理
數據表達:運用變量m,t,n以及sum;其中m,t,n以及sum都是整型變量。
數據處理:首先對自定義的函數進行聲明,然后定義函數,接着再使用for語句算出來任一整數的每一位上數字的立方和等於多少,最后在接着運用if-else語句判斷每一位上數字的立方和是否與數本身相等(即水仙花數),如果是水仙花數,則函數返回1,否則返回0。
函數參數:運用的主調函數是main();被調函數是int func(const int N);實參是N;形參是N;它們都是整型。
1.2.2 實驗代碼截圖

1.2.3 造測試數據
| 輸入數據 | 輸出數據 | 說明 |
|---|---|---|
| 153 | 1 | 驗證題目所給數據 |
| 99 | 0 | 最大倆位數 |
| 1 | 1 | 最小正整數 |
| 998 | 0 | 較大三位數 |
1.2.4 PTA提交列表及說明

提交列表說明:
1.運行超時:把for ( i>0; )修改for ( ;t>0; )
2.運行超時:經過在Dev-c++中編譯找到了錯誤之處是把for語句中的循環體中的t=N/10改為t=t/10
3.答案正確:。。。。
2.代碼互評
同學代碼一:

自己代碼一:

不同之處:
1.雖然我們所用的行數是一樣的,但是不難看出我們的內容差距還是有點大的,我的看起來並沒有同學的看起來簡潔,相對來說有點復雜。
2.在編寫中我調用了數學函數math.h,而同學並沒有用也把題目寫出來了。而且在循環體語句中同學只用了倆行,而我運用了三行。
3.同學在編碼時運用了while語句,而我則是運用的for語句。目前我們還沒學習到while語句,查閱資料發現while語句確實簡單一點,但是還是不怎么懂。
同學代碼二:

自己代碼二:

不同之處:
1.我們倆個最大的差別就是變量定義的不一樣,同學的比我多運用了一個i。
2.雖然同學比我多定義了一個變量但是她的整體代碼行數還是比我少,對比一下才發現原來我比同學運用的大括號較多。
3.學習總結
3.1 學習進度條
| 周/日期 | 這周所花的時間 | 代碼行 | 學到的知識點簡介 | 目前比較迷惑的問題 |
|---|---|---|---|---|
| 第五周(10.22-10.25) | 三天 | 130 | 使用自定義函數來編程和生成乘方表和階乘表 | 不知道如何調試函數以及在哪里設置斷點 |
3.2 累積代碼行和博客字數

3.3 學習內容總結和感悟
3.3.1 學習內容總結

3.3.2 學習體會
在這一周我們主要學習了有關定義和調用求階乘函數生成階乘表的內容。我在這一周主要學習到了在定義函數時要對自定義的函數進行聲明(簡稱函數聲明),也學習到了倆個新的名稱即形參和實參。就像在定義函數時我們的主要格式是“數據類型 函數名 (數據類型 參數)”,這里的第一個數據類型指的是函數的數據類型,而第二個數據類型則指的是參數的數據類型,參數指的是形參。而在調用函數時用到了“函數名(參數)”這里的參數指的是實參。
在最近的學習中我對待調試還是不怎么理解,不知道該在哪里進行設置斷點。雖然它對我來說有一定難度,但我相信我一定會學會的。加油!
