C語言第五次作業函數
阿新 • • 發佈:2017-11-19
時間 自增 class i++ 循環結構 字符型 導致 大小 步驟
一.PTA實驗作業
題目1: 6-6 使用函數輸出水仙花數
1.本題PTA提交列表
2.設計思路
1.narcissistic函數
- 1.由於number的值後面會變化,所以定義d,e用於儲存number,以方便後來的計算和比較
定義count和f用於儲存number的位數,c用於儲存number的個位數,i為循環變量,b儲存每個個位數
的count次方,sum儲存b的和 - 2.用while循環語句,令number=number/10,每次少一位數,count+=1,直到number=0時得到它的位數count
- 3.由於題目沒有調用函數,所以次方的運算通過循環進行
- 4.用for循環語句”for(i=1;i<=count;i++)“,即會做count次循環,即count次方
- 5.令f=count
- 6.c=e%10得到number的個位數
- 7.e=e/10使得number少了一位數,即少了6得到的個位數
- 8.如果f>0,則b=b*c,f-1
- 9.直到f=0,結束循環,得到此時個位數c的count次方
- 10.sum=sum+b,b=1,重復運算,直到e=0
- 11.如果sum=b,則返回1,否則返回0
2. PrintN函數
- 1.調用.narcissistic函數
- 2.令m=m+1 ,if ( narcissistic(m) ) ,輸出m
- 3.m+1
- 4.重復想法2直到m=n
3.本題調試過程中碰到的問題以及解決方案
(1)
- 錯誤:沒有循環得到count
- 解決:改為while語句
(2)
- 錯誤:dev調試2,b沒有初始化賦值為1,導致後面的乘法結果都得到0
- 解決方案:b初始化賦值為1;
(3)
- 錯誤:發現b的值沒有累加,於是多了個sum+=b,然而沒有什麽用
- 解決方案:新定義了sum,用於儲存b
(4)
- 錯誤:發現把sum放在了循環內,但是還是沒有輸出
- 解決方案:把sum放在循環外
(5)
- 錯誤:b在進行新一輪乘積時還保留著上一輪的值
- 解決方案:在循環後將b賦值為1
(5)
- 終於對了,但這只是第一個函數
(6)
- 錯誤:果然,題目顯示編譯錯誤
- 解決方案:提交內容不包括題目所給代碼
題目2:6-7 使用函數輸出指定範圍內的完數
1.本題PTA實驗結果展示
2.設計思路
- 一,factorsum函數
- 第一步:定義變量c,sum=0
- 第二步:如果number=1,就返回1(特殊值特殊處理)
- 第三步:c=1
- 第四步:如果number%c=0(即c是number的因子)
- 第五步:sum+=c
- 第四步:return sum
- 二,PrintPN函數
- 第一步:定義g,i,j,a
- 第二步:g=m
- 第三步:調用factorsum函數,如果factorsum(g) == g進行步驟四五
- 第四步:a=1(判斷是否有函數)
- 第五步:printf("%d = ",g);
- 第六步:i=1
- 第七步:if(i==1),進行步驟八九十
- 第八步:printf("1");
- 第九步:如果g%i==0&&i!=1&&i!=g
- 第十步: printf(" + %d",i);
- 第十一步:i++,重復步驟六,直到i大於g
- 第十二步:printf("\n");
- 第十三步:g++,直到g>n
- 第十四步:if(a==0) printf("No perfect number");
3.本題調試過程中碰到的問題以及解決方案
(1)
- 錯誤:只輸出一次
(2)
錯誤:當g=6時根據題目,是會輸出的,但是程序沒有繼續
解決方案:factorsum函數出了問題,先從它解決
一,dactorsum函數
錯誤:只輸出一個,發現因子的和算了兩遍
-解決方法:令只有當前一個因子小於或等於後一個因子時才求和
二,PrintPN函數
錯誤:沒有按大小順序輸出
解決方案:一個因子一個因子輸出
三,pta提交
錯誤:部分正確
解決:增加範圍
錯誤:運行超時,判斷完數一個循環就夠,兩個循環的話,10000數據就要執行10的8次方,在函數內就進行了判斷函數
解決:令dactorsum函數只起到取其除自身以外因子的和的作用
7-1 求組合數
1.本題PTA實驗結果展示
2.設計思路
- 第一步:定義m,n,end;
- 第二步:輸入m,n
- 第三步:調用fact函數,令end=fact(n)/(fact(m)*fact(n-m));
- 第四步:輸出
- 定義函數fact
- 第一步:定義pro=1;i
- 第二步:令i=a,等於自變量
- 第三步:pro*=i
- 第四步:i--,重復步驟三,直到i<1
- 第五步:返回pro
3.本題調試過程中碰到的問題以及解決方案
錯誤:部分正確
解決方案:全部變量都改為double型
二、同學代碼結對互評(1分)
1.同學互評照片。
2.我的代碼、互評同學代碼截圖
- 曾文惠
- 王宵瑩
3.我和同學代碼不同在哪裏?有哪些各自優勢?你更喜歡哪種代碼風格?如果同學代碼有錯的也請幫忙指出來哪裏出問題。
三.截圖本周題目集的PTA提交列表及最後排名
四、本周學習總結(2分)
1.你學會了什麽?
1.1 C語言哪些數據類型?
- 1.2 字符型數據需要註意地方?
- (1)每個字符在內存中占一個字節
- (2)getchar()和putcher()只能處理單個字符的輸入和輸出
- (3)%c
(4)輸入多個字符時,字符間不能有空格
- 1.3 自增自減運算符?
- (1)++
- (2)--
1.4 運算符優先級?
{{uploading-image-422303.png(uploading...)}}- 1.5 C語言哪些表達式?課堂派哪裏做錯,做錯的請在這裏分析原因?
- 算數表達式,條件表達式,逗號表達式,賦值表達式,邏輯表達式,關系表達式
原因:對於這些符號的運算先後順序還不太熟練
- 1.6 其他內容?
無
2.本周的內容,你還不會什麽?
- (1)對於一些符號的運算順序還不太熟練
3.循環結構考試總結(全部同學都要寫)
- 1.哪題做錯了,怎麽改?
- 最後兩道題目做錯了
要做函數的pta還有數據pta也開放了,所以目前還沒有時間去思考怎麽改,
- 2.考試結果滿意麽,怎麽改進?
- 挺滿意的,原本以為自己有挺多難題沒解決的,在班級會排倒數,結果竟然及格了,所以還是挺滿意的
但是還是不缺乏學霸在我做一半的時候就很瀟灑的滿分離開,所以同樣的老師下,還是自己不夠努力
- 3.其他總結。
及時做好筆記,及時做完作業,效率不高,沒法像學霸一小時做幾道pta,而是兩三小時做一題,所以熬夜也要打代碼,日積月累,問題只會越積越多。
C語言第五次作業函數