如何将我的功能放在类似的行中?

时间:2016-03-01 03:41:41

标签: c

下面的代码显示了输入数字的因素:

#include <stdio.h>
#include <stdlib.h>


void factorer(int x);
void factorer2(int x);

int main()
{
  int number;
  printf("Find factors of: ");
  scanf("%d", &number );
}

void factorer(int x)
{
  int number;
  int dividend;

  dividend = x;

  for (number = 1; number <= x; number++) {
    if(dividend % number == 0) {
      printf("%d\n", number);
    }
  }
}

void factorer2(int x)
{
  int number;
  int dividend;

  dividend = x;

  for (number = x; number > 0; number--) {
    if (dividend % number == 0) {
      printf("%d\n", number);
    }
  }
}

例如,如果10是输入数字,则输出为

1
2
5
10
10
5
2
1

但我想要的输出就像是

1 x 10
2 x 5
5 x 2
10 x 1

我知道在void中无法调用printf()个函数,那么我怎么能够实现这个呢?

更新

我已经尝试了先生@ gene的代码,但输出会显示如下:

1 x 0
2 x 0
5 x 0
10 x 1

不是我想要的输出

2 个答案:

答案 0 :(得分:2)

使用:

printf(" %d x %d \n",dividend,number/dividend);

答案 1 :(得分:2)

学习如何将算法分解为函数需要练习。这不是必要的,因为问题很简单。

int main (void) {
  int number;
  printf("Find factors of: ");
  scanf("%d", &number);
  for (int i = 1; i <= number; i++)
    if (number % i == 0)
      printf("%d x %d\n", i, number / i);
  return 0;
}