這個作業屬於哪個課程 | https://edu.cnblogs.com/campus/zswxy/CST2020-2/ |
---|---|
這個作業要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2020-2/homework/11589 |
這個作業的目標 | 熟練掌握各種類型函數和語句 |
學號 | 20208961 |
1.PTA實驗作業(20分/題)
1.1 題目名1:6-1 統計某類完全平方數 (20分)
題目內容描述:
本題要求實現一個函數,判斷任一給定整數N是否滿足條件:它是完全平方數,又至少有兩位數字相同,如144、676等。
函數接口定義:
int IsTheNumber ( const int N );
其中N是用戶傳入的參數。如果N滿足條件,則該函數必須返回1,否則返回0。
輸入樣例:
105 500
輸出樣例:
cnt = 6
1.1.1數據處理
數據處理:本題定義了整型變量,s,n,m,h。以及定義了一個數組a[10]。
數據表達:表達式:
s=n%10;
n=n/10;
n==m;
a[s]>=2
case 0: a[0]++; break;
case 1: a[1]++; break;
case 2: a[2]++; break;
case 3: a[3]++; break;
case 4: a[4]++; break;
case 5: a[5]++; break;
case 6: a[6]++; break;
case 7: a[7]++; break;
case 8: a[8]++; break;
case 9: a[9]++; break;
流程結構:該題使用了if-else語句,switch語句,for語句。
1.1.2實驗代碼截圖
1.1.3 造測試數據
1.1.4 PTA提交列表及說明
提交列表及說明:
答案錯誤:返回值出現錯誤,我直接在判斷a[s]中相等的個數后就直接返回1和0,導致錯誤。
所定義的變量出現錯誤,又重新定義了一個變量i判斷相等個數導致錯誤。
編譯錯誤:N=N/10;這里編譯錯誤[Error] assignment of read-only parameter 'N'
部分正確:開始沒使用switch語句而是直接for判斷n的位數后在判斷相等個數但是出現了sample 全是3位數的錯誤。
1.2 題目2:7-1 解一元二次方程 (10分)
題目內容描述:
解一元二次方程
請編寫程序,解一元一次方程
一元二次方程的求根公式為:
要求:
若 a=0,則為一元一次方程。
若 b≠0,則方程有唯一解,輸出這個解;
若 b=0,c≠0,則方程無解,輸出“無解”;
若 b=0,c=0,則方程有無窮多解,輸出“無窮多解”。
若 a≠0,則為一元二次方程。
若 Δ>0,則方程有兩個不等的實根,輸出這兩個根;
若 Δ=0,則方程有兩個相等的實根,輸出這兩個根;
若 Δ<0,則方程有兩個共軛的虛根,輸出這兩個根。
1.2.1數據處理
數據處理:該題定義了雙精度浮點型變量a,b,c,x,x1,x2,i,sum,n,m,h;
數據表達:表達式:
sum=b*b-4*a*c;
x1=(-b+sqrt(sum))/(2*a);
x2=(-b-sqrt(sum))/(2*a);
h=-b/(2*a);
n=sqrt(-sum)/(2*a);
m=-sqrt(-sum)/(2*a);
x=-c/b;
b==0&&c==0
b==0&&c!=0
b!=0&&c!=0
h==-0
n>=0&&m>=0
if(x1==-0) x1=0;
if(x2==-0) x2=0;
x1 = %g%gi, x2 = %g+%gi
x1 = %g+%gi, x2 = %g+%gi
x1 = %g+%gi, x2 = %g%gi
流程結構:使用了if-else語句。
1.2.2實驗代碼截圖
1.2.3 造測試數據
1.2.4 PTA提交列表及說明
提交列表及說明:
部分錯誤:sum>=0這里出現錯誤,同時輸出的格式也出現錯誤將%g寫成了%.1lf,
沒有判斷防止出現-0的情況,同時沒有判斷精確度導致出現誤差。
編譯錯誤:將x1 = %g%gi寫成了,x = %.1lf+%.1lf,導致錯誤,多編譯了幾個變量。
答案錯誤:在測試虛根時將虛根公式寫錯寫成了x1=sqrt(sum)/a;x2=-sqrt(sum)/a;
2.代碼互評(5分)
同學代碼截圖1:
同學代碼截圖2:
自己代碼截圖:
不同之處:
1.我使用了switch語句判斷它沒有,而是他們用的for語句。
2.我使用switch語句依次判斷1-10組數組中每個數字的個數,比較繁瑣。而第一位同學直接采用n[num%10}判斷
很清晰明了。第二位同學則采用flag=0做標識。
3.我定義的變量過多,他們定義的變量較少,基本上都是直接用表達式代替。
3.學習總結(15分)
3.1 學習進度條(5分)
3.2 累積代碼行和博客字數(5分)
3.3 學習內容總結和感悟(5分)
3.3.1 學習內容總結
3.3.2 學習體會
感受:
1.這次的作業感覺比較的難,相對於前幾周所用的時間也更長一點。對於很多題目都出現了較多的題目。
如在做第一題的函數題時我是先判斷N的位數后將位數用數組裝起來,在用數組判斷相等個數。如
count++;int a[count];for(j=1;j<=count;j++){但是錯了,所以這里就有點不太明白。
2.對於數組還存在較多疑惑,如a[10]={};一定要取值10嗎?
3.if嵌入語句這里還是會出現較多問題不如在做第一道編程題時總是會出現x1=0+-0.3i的現象就是加減這里
存在一點困惑。
收獲:
1.對於switch語句的運用更加的熟練了。
2.對於使用數組判斷相等個數也更加的了解,對於數組的運用相對於上周也更加熟練。
3.對於嵌入語句的使用也更加熟練。