使用abs()解决这个模式[我得到了我的输出..关闭]

发布于 2025-01-14 10:29:31 字数 704 浏览 1 评论 0原文

PS我是一个初学者,我试图找到以下输出:

         1 
      1  2  3 
   1  2  3  4  5 
1  2  3  4  5  6  7 
   1  2  3  4  5 
      1  2  3 
         1

这是我的尝试:

#include<stdio.h>
#include<conio.h>

void main() {    
    int n;
    scanf("%d",&n);   

    for(int i=1;(i<=2*n);i++){
        int temp=1,t=2*n-1;     
           
        for(int j=0;j<abs(n-i);j++){
            printf("  ");
        } 
        for(int j=t;j>=abs((2*(i-1))-t);j--) {            
            printf(" %d",temp);
            temp++;
        }                 
    printf("\n");        
    }    
}

如你所见..我尽力删除 i=n 条件,但未成功。或者如果有人可以提供更简单的方法来打印图案..我将不胜感激

P.S. I'm a beginner and I was trying to find the following output :

         1 
      1  2  3 
   1  2  3  4  5 
1  2  3  4  5  6  7 
   1  2  3  4  5 
      1  2  3 
         1

and here's my try :

#include<stdio.h>
#include<conio.h>

void main() {    
    int n;
    scanf("%d",&n);   

    for(int i=1;(i<=2*n);i++){
        int temp=1,t=2*n-1;     
           
        for(int j=0;j<abs(n-i);j++){
            printf("  ");
        } 
        for(int j=t;j>=abs((2*(i-1))-t);j--) {            
            printf(" %d",temp);
            temp++;
        }                 
    printf("\n");        
    }    
}

as you can see.. I tried my best to remove the i=n condition UNSUCCESSFULLY. or if anyone can provide a more easier way to print the pattern.. I'd my grateful

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

远昼 2025-01-21 10:29:31

对于给定的正输入 n,您希望打印 2 * n - 1 行。

现在考虑每行的缩进:它从 n - 1 位置向下计数到 0,然后向上计数到 n - 1。如果您对从 1 开始的行进行编号,则该缩进为 abs(n - line) 位置。

每行打印的数字计数可以视为缩进的函数:最大值为 2 * n - 1,每个缩进单位都会将其减少 2。稍微重新排列一下,给出每行打印的最大值 2 * (n - indent) - 1

对于您编写一个打印模式的程序来说,这些信息应该足够了,在所有模式行上使用单个外循环,并有意义地使用 abs() 函数。细节保留为应有的练习。

For a given positive input n, you want to print 2 * n - 1 lines.

Now consider the indent of each line: it counts from n - 1 positions down to 0, then back up to n - 1. If you number the lines starting with 1, then that indent is abs(n - line) positions.

The count of numbers to print on each line can be viewed as a function of the indent: the maximum is 2 * n - 1, and each unit of indent reduces that by 2. With a bit of rearrangement, that gives a maximum value to print on each line of 2 * (n - indent) - 1.

That should be sufficient information for you to write a program that prints your pattern, using a single outer loop over all the pattern lines, and employing the abs() function meaningfully. The details are left as the exercise they are meant to be.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文