C中的丰富数字

问题描述:

我有一个编程任务,我真的很难过。问题是: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:// *。com/help/how-to-ask,查看SO上欢迎哪些类型的问题。你没有解释你的问题,你没有提供真正的代码,与丰富的数字有关......投票结束。 –

丰富的数字是一个非常简单的概念 - 你可以找到在*的信息:我觉得http://en.wikipedia.org/wiki/Abundant_number

如果你只想任何解决方案(不是最快的),你可以明确地找到所有除数及其每个数字的总和。

首先,...

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大否则。