在C中打印列

时间:2017-06-13 11:31:24

标签: c

有类似的问题,但没有一个可以帮助我找到我正在寻找的答案,所以我来寻求帮助!

此外,这是作业,所以我正在寻找更多的解释,而不仅仅是工作代码。

我需要打印两列或四列输出,以显示数字1-20的阶乘。

我非常接近,我似乎无法弄清楚如何让这两件并排。

代码:

lngFactorial = 1;

// Factorials 1 - 10
for (intIndex = 1; intIndex <=10; intIndex += 1)
{

    lngFactorial *= intIndex;
    printf("%d! = %-20lu \n", intIndex, lngFactorial );
}

// Factorials 11 - 20
for (intIndex = 11; intIndex <= 20; intIndex += 1)
{
    lngFactorial *= intIndex;
    printf("%20d ! = %lu \n", intIndex, lngFactorial);
}

输出:

1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
6! = 720
7! = 5040
8! = 40320
9! = 362880
10! = 3628800
              11 ! = 39916800
              12 ! = 479001600
              13 ! = 1932053504
              14 ! = 1278945280
              15 ! = 2004310016
              16 ! = 2004189184
              17 ! = 4006445056
              18 ! = 3396534272
              19 ! = 109641728
              20 ! = 2192834560

所以,这是4列,我需要弄清楚要打印

1! = 1    11! = 39961800

或者我在printf中遗漏了什么?

非常感谢任何指导。

4 个答案:

答案 0 :(得分:5)

将列打印在一起,例如

// Using long long to allow big numbers and to prevent overflow.
unsigned long long lngFactorial1 = 1;
unsigned long long lngFactorial2 = 3628800;// 10!
for (intIndex = 1; intIndex <= 10; intIndex++) {
    lngFactorial1 *= intIndex;
    lngFactorial2 *= intIndex + 10;
    printf("%d! = %-20llu ; %d! = %-20llu;\n", intIndex, lngFactorial1, intIndex + 10, lngFactorial2);
}

答案 1 :(得分:2)

使用换行符后,您无法返回上一行(不更改)。

如果你需要1!和11!在同一行中,它们必须打印在一行中,然后打印换行符。因此,对于特定的迭代,将打印i和(10 + i)阶乘。 (1 <<; = I&LT; = 10)。

此外,对于存储超过12的阶乘,您将需要长数据类型。

答案 2 :(得分:1)

为此你需要printf看起来像这样

printf("%d! = %-20lu "%20d ! = %lu", intIndex, lngFactorialn, (intIndex + 10), lngFactorialn);

因此您需要先计算这些,然后同时打印它们。 我认为这应该只用一个for循环来实现。

答案 3 :(得分:0)

正如其他答案所提到的,你必须同时计算每列中的相同行。这是我的解决方案,适用于各种列号:

library(leaflet)
m <- leaflet(AM_Peak) %>% 
addTiles('http://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png',
attribution='Map tiles by <a href="http://stamen.com">Stamen Design</a>, 
<a href="http://creativecommons.org/licenses/by/3.0">CC BY 3.0</a> &mdash; Map data &copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>') %>%
setView(103.831959, 1.360270, zoom = 11) %>% 
addCircles(~x_AM_Peak$Entry_Station_Long, ~x_AM_Peak$Entry_Station_Lat,
weight =x_AM_Peak$radius, radius=40, 
label = ~as.character(x_AM_Peak$Entry_Station),color="#ffa500", stroke = TRUE, fillOpacity = 0.8) %>%
    addPolylines(data = y_AM_Peak,
                 stroke = TRUE,color = "#6eff2a", weight = 0.2, opacity = 0.2,
                 fill = FALSE, fillOpacity = 0.1, dashArray = NULL,
                 smoothFactor = 1)