一、PTA實驗作業
題目1:使用函數輸出指定范圍內的完數
聲明fact函數 double fact(int n);
定義變量 int m,n; double result;
輸入m,n
調用fcat函數 result=fact(n)/(fact(m)fact(n-m)),進入第六步
printf("result = %.0f",result)
定義函數double fact(int n)
定義變量int i;double result=1;
進入循環for(i=1;i<=n;i++) 循環第九步
result=resulti
返回result的值
3.本題調試過程碰到問題及PTA提交列表情況說明
一開始錯誤,輸入 2 7時答案等於0.000000,通過調試,監控result,發現result參數定義錯誤,定義成了int,因為在fact函數中同名變量result它只是整數,而在主函數中它是double型的導致錯誤。
階乘忘記給result初始化為1,導致輸出結果為0
題目3:使用函數驗證哥德巴赫猜想
1.本題PTA提交列表
2.設計思路
定義prime函數及形參即int prime(int p)
定義變量並初始化 int i,n;n=sqrt(p);
如果p為1,則返回0;
否則進入循環for(i=2;i<=n;i++)循環第四步
如果p能整除i,則返回0
return 1
定義Goldbach函數即void Goldbach(int n)
定義變量int q,p
進入循環for(p=2;p<=n;p++)循環第十步和第十一步
if(prime(p)==1),則q=n-p;
if(prime(q)==1) 則printf("%d=%d+%d",n,p,q)並退出循環
3.本題調試過程碰到問題及PTA提交列表情況說明
輸出許多形式為n=q+p的結果,通過調試監控n,p,q發現循環沒有在輸出一次數據后結束,在if里輸出后添了一句break就正確了
忘記判斷p是否為1,如果為1直接就不為素數
一開始Goldbach函數中for(q=1;q<=n;q++),q一開始初始化為1,但1顯然不為素數導致錯誤
三、截圖本周題目集的PTA最后排名
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。