C ++帮助无法使其工作

时间:2011-07-24 08:05:36

标签: c++

编写一个程序,生成用户输入的数字的所有因子。例如,数字12的因子为2 * 2 * 3.该程序具有以下要求:

  1. 用户必须输入正整数。如果用户输入其他内容,您的程序应输出错误消息并让用户输入新值。使用do / while循环确保用户输入成功。

  2. 必须按递增顺序输出因子。您的计划应报告的最低因素是2.

  3. 您的程序每行应输出4个因子,每个因子包含10个字符的字段。 (提示:输出的因子数决定何时输出endl!)

  4. 您需要一个while循环来报告因素。以下是一些有用的提示:

    1. 如果(a%b == 0)则a是因子b。

    2. 找到因子后,输出因子,然后通过将数字除以因子来减少您使用的数字...即b = b / a;

  5. 我有这个代码我无法显示这些因素。输入数字后,最后不显示因子。

    #include<iostream>
    
    using namespace std;
    
    int factor(int& n)
    {
      for(int k=2; k<=n; k++)
        if(n%k==0)
        {
          n = n/k;
          return k;
        }
    }
    
    
    int main()
    {
      int n;
      int p=0;
    
      do
      {
        cout << "Enter a Positive Integer :";
        cin >> n;
      } while(n<=0);
    
      cout << "Factors are " << endl;
    
      while(1)
      {
        if(n==1) break;
        cout << factor(n) << " ";
        p++;
        if(p%4==0) 
          cout << endl;   // new line after every 4 factors !!
    
        system("pause");
        return 0;
      }
    }
    

2 个答案:

答案 0 :(得分:5)

由于你的(缺乏)缩进很难看到,但这一部分:

system("pause");
return 0;

内部 while(1)循环。它应该在while循环之外。

答案 1 :(得分:0)

因此在缩进后很明显:

 while(1)
 {
  if(n==1) break;
  cout << factor(n) << " ";
  p++;
  if(p%4==0) 
    cout << endl;   // new line after every 4 factors !!

  system("pause");
  return 0;
 }

在计算并打印出从main返回的第一个因子之后。所以请缩进代码并保持正确的格式。即使您在iffor等下单行,也请将它们括在大括号中。