gpt4 book ai didi

c - 高级数字模式

转载 作者:行者123 更新时间:2023-11-30 18:44:30 25 4
gpt4 key购买 nike

给定一个数字 N,打印以下图案。

输入格式

输入包含数字N

约束

1 < N < 100

输出格式

所需的模式输入 5 是

1 
2 9
3 8 10
4 7 11 14
5 6 12 13 15

输入 3 是

1 
2 5
3 4 6

这是我尝试过的代码..但结果不一样

#include<stdio.h>
void pattern(int n)
{
for(int i=1; i<=n; i++)
{
int k = i;
for(int j=1; j<=i; j++)
{
printf("%d ",k);
k = n - j + k;

}
printf("\n");
}
}
int main()
{

int n = 5;
pattern(n);
return 0;
}


这是上面代码的结果

1                                                                                                                                             
2 6
3 7 10
4 8 11 13
5 9 12 14 15

我应该如何修改上面的代码以获得预期的输出?

最佳答案

这是一个有趣的问题,但并不容易。我不会编写一个程序来解决它(部分原因是我太懒了),但我可以描述我将如何解决它。

您已经有一个外循环 for(int i=1; i<=n; i++)它对行进行倒计数,以及一个内部循环 for(int j=1; j<=i; j++)它跨列计数。这些都很好。

在内循环中我将测试 if(j % 2 == 1) 。如果j % 2是 1 我们在奇数列中,我们想要对该列进行倒数。但如果j % 2是 0,我们在偶数列中,我们必须以其他方式进行操作。

首先,我有一个变量,它是应该位于列顶部的数字(在 n=5 的情况下为 1、9、10、14 或 15)。我必须用两种不同的方式计算这个数字,一种用于“奇数”列,一种用于“偶数”列。

然后我会使用该数字作为基数来倒数奇数列,并向上倒数偶数列。具体来说:我会添加 i到奇数列中,但减去 i在偶数列中。但实际上这并不完全正确,因为 i除了 1 之外,列的顶部不是 1,所以我实际上需要添加或减去的将是 i 的某个函数和j 。但我认为你可以解决这个问题。

关于c - 高级数字模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57822756/

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