2014-02-10 68 views
-3

我有一個編程任務,我真的很難過。問題是:C中的豐富數字

寫一個程序,讀取一個數字列表,併爲每個數字,確定並打印出該數字是否豐富。

輸入規格 1.第一個整數輸入爲正整數n,表示下一個測試用例的數量。 2.接下來的n個輸入都是單個正整數,每個輸入都要確定數量是否豐富。

輸出規範 輸出與兩個以下格式爲每個輸入數的一行: 測試用例#T:X是豐富的。 測試用例#t:X不豐富。

現在這是我寫的所有,我不知道如何弄清楚數量豐富的部分。

#include <stdio.h> 
#include <stdlib.h> 
int main(){ 

int n, i, array [] = {n}; 

printf("Please enter n followed by n numbers:"); 
scanf(" %d", &n); 

for (i=0; i<n; i++){ 
    scanf(" %d", &array[n]); 
} 

system ("pause"); 
return 0; 
} 
+1

好吧,我會咬:「豐富的數字」的定義是什麼? –

+2

我不認爲在分配這個任務之前,「分配內存」這個詞在這個類中被覆蓋了嗎? – WhozCraig

+0

請查看幫助文本https:// stackoverflow。com/help/how-to-ask,查看SO上歡迎哪些類型的問題。你沒有解釋你的問題,你沒有提供真正的代碼,與豐富的數字有關......投票結束。 –

回答

1

豐富的數字是一個非常簡單的概念 - 你可以找到在維基百科的信息:我覺得http://en.wikipedia.org/wiki/Abundant_number

如果你只想任何解決方案(不是最快的),你可以明確地找到所有除數及其每個數字的總和。

0

首先,...

int n, i, array [] = {n}; 

不會做你認爲它;它聲明array只包含1個元素,並且一個元素初始化爲值n(尚未自行初始化,因此該值將不確定)。它將無法保存n值。

根據您給出的規範,您實際上不需要存儲整個輸入數字列表;你應該能夠讀取一個,測試豐,然後讀了下,測試豐,等於是你的代碼的結構是這樣的:

int n = 0; 
... 
printf("Please enter n followed by n numbers:"); 
scanf(" %d", &n); 

for (int i = 0; i < n; i++) 
{ 
    int candidate; 
    scanf("%d", &candidate);    // read the next input 

    printf("%d is%s abundant\n", 
    candidate, 
    !test(candidate) ? " NOT" : "");  // test the next input and 
              // print NOT if the test fails 
} 

printf陳述是寫作的一種簡潔的方式

if (test(candidate) == 0) 
    printf("%d is NOT abundant\n", candidate); 
else 
    printf("%d is abundan\n", candidate); 

test功能是你將需要弄清楚自己的東西,但它的外形將是

  1. 找到的正確除數輸入值
  2. 薩姆在一起
  3. 該結果進行比較,以所述輸入
  4. 返回1是結果比輸入,0大否則。