請教C語言程式填空T,請教乙個C語言程式填空T?

時間 2021-08-30 11:19:48

1樓:匿名使用者

factorsum(int x)

main() }

注:如果想輸出的數中不相等,在第2個填空處改一下if(factorsum(j)==i&&i!=j)解釋說明:按上方提示順序

1.首先factorsum()函式的作用是求出乙個數的因子之和。根據例子說明很顯然因數不包括數本身,所以在填空處為i

2.此處為程式錯誤,x是主函式傳過去的數,目的是要求此數因數的和,經過迴圈,凡是能被x整除的i就是x的因數,而y就是將x各個因數累加的和,所以應該改為:y=y+i;

3.此處填空原因是:根據題目所說,只有甲的因數和=乙同時乙的因數和=甲,甲乙才是一對親密數。

所以題目主函式中i經過factorsum()後,其因數和附給j,此時,我們需要將j再經過factorsum()得出其因數和與i的值進行比較,若相等則說明他們是一對親密數字。

輸出結果為:

6,628,28

220,284

284,220

496,496

1184,1210

1210,1184

2樓:陽光上的橋

第一處:i<=x

第二處:i==factorsum(j)

你們老師的答案可能就是這樣,但是程式確實錯了,錯不是因為我填錯了,而是出題的人就出錯了。這裡的因子應該除開1和它本身,否則乙個數的因子之和要比它本身大,那就不可能出現親密對數。

舉個例,6的因子之和就應該為5,而不能是11,否則就沒有親密對數,修改完善後的程式如下,在sco unix上執行通過:

$ cat a.c

/*程式**開始*/

int factorsum(int x)

main()

}/*程式**結束*/

$ cc a.c

$ a.out

48,75

75,48

140,195

195,140

1050,1925

1575,1648

1648,1575

1925,1050

$我第乙個空之所以填錯,是因為程式自己寫的i=1誤導了我,應該i=2,否則無解。

3樓:

一樓的朋友你說錯了,6的因子之和為6,你還不知什麼是因子吧,如:6=1+2+3

看看我的回答吧,可能不對,請大家指點。

int factorsum(int x)

main() }

4樓:張凱

一樓的第二個空是否應填 i==j

因為j=factorsum(i); (已經付值了)再用j=factorsum(i); 那樣程式將再呼叫一次浪費資源,用i==j;就可以了

c語言程式請教,C語言程式設計請教 編寫一個程式,

你必須使用陣列來實現資料的結構為例stud number 20 20 stud name等等 學生成績管理系統是用來管理班級成績。有一些資訊在系統如下 學生 學生姓名 學生性別,c 得分,vb得分,電腦維修,平均得分,總分。實現簡單的功能 選單是 1 輸入學生的分數從鍵盤或從檔案 您可以建立子選單,...

請教C語言問題,請教乙個C語言問題

第乙個引數需要填寫的是 myout.txt 檔案檔案路徑及檔名 第二個引數則代表著流形態,其中有以下幾種狀態 r 開啟唯讀檔案,該檔案必須存在。r 開啟可讀寫的檔案,該檔案必須存在。rb 讀寫開啟乙個二進位制檔案,只允許讀寫資料。rt 讀寫開啟乙個文字檔案,允許讀和寫。w 開啟只寫檔案,若檔案存在則...

請教C語言問題,求高手指教,請教乙個C語言問題,求高手指教

思路基本沒錯,也基本正確,個別地方出錯了。1 由於acm是先全部輸入再統一輸出,你用乙個max來儲存肯定有問題,可以需要事先宣告乙個陣列來儲存結果。下面 裡是用動態記憶體申請陣列。2 就是排序比較的時候,你有個問題,估計是手誤 if i t 實際上應該是if j t 因為i是外層迴圈,j才是你要排序...