gpt4 book ai didi

C 程序打印数字、星号和连字符的梯形图案

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

我今天在测试中被问到了这个问题。

我必须打印以下图案:-

例如,如果用户输入 n=4,那么输出应该是这种模式 -
1*2*3*4*17*18*19*20
--5*6*7*14*15*16
----8*9*12*13
------10*11

如果 N=5,则应再次打印代码
1*2*3*4*5*26*27*28*29*30
--6*7*8*9*22*23*24*25
----10*11*12*19*20*21
------13*14*17*18
--------15*16

我可以设法部分打印图案...帮助..
到目前为止的进展...

#include <stdio.h>
void pattern(int);
int main()
{
int n;
scanf("%d",&n);
pattern(n);
return 0;
}
void pattern(int n)
{
int i,j,k=1,l=2,h;
for(i=n;i>0;i--)
{
if(i<n)
{
for(h=1;h<=l;h++)
printf("-");
l=l+2;
}
for(j=1;j<=i;j++)
{
printf("%d",k);
k++;
if(j!=i)
printf("*");
}
printf("\n");
}
}

这会打印 n=4:-

4  
1*2*3*4
--5*6*7
----8*9
------10

最佳答案

给你:

#include<stdio.h>
void pattern(int);
int main()
{
int n;
scanf("%d",&n);
pattern(n);
return 0;
}
void pattern(int n)
{
int i,j,k=1,l=2,h;
int rest=n*(n+1)+1,rn=0;

for(i=n;i>0;i--)
{
if(i<n)
{
for(h=1;h<=l;h++)
printf("-");
l=l+2;
}
for(j=1;j<=i;j++)
{
printf("%d",k);
k++;
printf("*");
}

rest=rest-i;
rn=rest;

for(int p=1;p<=i;p++)
{
printf("%d",rn);
rn++;
if(p!=i)
printf("*");

}
printf("\n");
}
}

我发现你在打印连字符和一半数字方面做得很好。所以剩下的就是另一半,它应该随着每一行而递减。我们需要打印的最大数字是n*(n+1)。因此,我们计算该数字(在变量剩余中),然后我们需要用 i(行上元素数量的一半)递减该数字。

关于C 程序打印数字、星号和连字符的梯形图案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34829030/

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