gpt4 book ai didi

c - 我使用 C 编程在我的帕斯卡三角形中有一些间距错误

转载 作者:太空宇宙 更新时间:2023-11-03 23:58:13 24 4
gpt4 key购买 nike

我的代码中的间距不对,任何人都可以帮忙。我试过了(如下图)

#include <stdio.h>

int factorial(int n){
int fact = 1;

if(n == 0){
return 1;
} else {
for(int i = 1; i <= n; i++){
fact = fact * i;
}
return fact;
}
}

int choose(int n, int r)
{
int ans;

ans = (factorial(n))/((factorial(r))*(factorial(n-r)));
return ans;
}

void triangle(int numOfRows){
for(int n=0; n<numOfRows; n++)
{
for(int i=1; i<=numOfRows-n; i++){
printf(" "); // Note the extra space
}
for(int r=0; r<=n; r++)
{
printf("%5d ",choose(n,r)); // Changed to %3d
}
printf("\n");
}
}

int main(){
int rows;
printf("Enter the number of rows: ");
scanf("%d", &rows);

while(rows > 0 && rows <=13){

triangle(rows);

printf("Enter the number of rows: ");
scanf("%d", &rows);
}
return 0;
}

预期的输出应该是:
enter image description here
谢谢,我会很感激(这也是我第一次使用这个网站,很抱歉格式不好)。

程序最多需要处理 13 行(这在我的主要函数的 while 循环中显示)。

最佳答案

您需要进行一些更改以使三角形与预期输出中的左侧对齐。

首先,您在 printf(" ") 的第一个循环中添加了 3 个额外的空格,这是固定使用 <而不是 <=在循环条件下。

其次,由于 "%5d " 添加了 4 个额外的字符在第二个 printf调用,您需要避免第一次迭代(当 r == 0 时)仅使用 "%d " .

下面是 triangle()更改后的功能将如下所示:

void triangle(int numOfRows) {
for(int n = 0; n < numOfRows; n++) {
for(int i = 1; i < numOfRows-n; i++) {
printf(" ");
}
for(int r = 0; r <= n; r++) {
printf(r == 0 ? "%d " : "%5d ", choose(n, r));
}
printf("\n");
}
}

还有一些示例输出(最多可以工作 13 个,至少在我的同时使用 gcc 和 clang 的 64 位 Linux 上是这样):

Enter the number of rows: 3
1
1 1
1 2 1
Enter the number of rows: 4
1
1 1
1 2 1
1 3 3 1

Enter the number of rows: 5
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
Enter the number of rows: 13
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
1 10 45 120 210 252 210 120 45 10 1
1 11 55 165 330 462 462 330 165 55 11 1
1 12 66 220 495 792 924 792 495 220 66 12 1

关于c - 我使用 C 编程在我的帕斯卡三角形中有一些间距错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56351738/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com