如何在 C 中的嵌套 for 循环构造中处理 printf?

How do I handle printf in a nested for Loops construct in C?

我需要在 C 中使用嵌套 for 循环实现一个函数。

函数声明如下:

void nest_loop(int n);

并且应该为值 n = 5 打印以下内容

A B C D E
  A B C D
    A B C
      A B
        A

但是我需要实现该函数,以便它为以下 Intervall [0,9]

中的任何 unsigned int n 生成输出

在n = 5的情况下

据我了解,有 5 个 for 循环。

for_loop1 打印字符 'A'

的 5 倍

for_loop2 打印字符 'B'

的 4 倍

for_loop3 打印字符 'C'

的 3 倍

for_loop4 打印字符 'D'

的 2 倍

for_loop5 打印 1 次字符 'E'

此外,根据我的理解,嵌套循环结构应该如下所示:

int n = 5;
int c = n - 1;

for(int i = c ; i < 0; i--){ // loop for 'E'
  c--;
  for(int j = c; j < 0; j--){ // loop for 'D'
    c--;
   for(int k = c; k < 0; k--){ // loop for 'C'
     c--;
    for(int l = c; l < 0; l--){ // loop for 'B'
      c--;
     for(int p = c; p < 0; p--){ // loop for 'A'
     }
    }
   }
  }
}

我的嵌套 for 循环结构是否正确? 如果是,那么我现在如何实现 printf 以产生提到的输出?

正如@Jonathon Reinhart 所解释的,您只需要在类似于以下的构造中使用两个循环:

for (int i = n; i > 0; i--) {
  for (int j = 0; j <= i; j++) {
    [...]
  }
}

这里有适合您目的的功能代码

#include <stdio.h>
#include <ctype.h>

int main()
{
    int num;
    scanf("%d", &num);
    char init_char = 'A';

    for(int i = 0; i < num; i++, init_char++){
        for(int j = num; j > i; j--)
            printf("%c", init_char);
        printf("\n");
    }

        return 0;
}

答案在评论中解释得很好,祝你好运:) *我要补充一点,在 C 语言中,您还可以递增字符,阅读什么是 ASCII table 以及如何将字符编码为数字

你知道在书里我们也是从左到右而不是从上到下写的,所以你上面对你的循环的理解是错误的。随时询问任何澄清谢谢。

 #include<stdio.h>
    void nest_loop(int n)
    {
        int i,j;
        char k = 'A';
        for(i=n;i>0;i--)
        {
            for(j=n;j>i;j--)
            {
                printf(" ");//print required spaces.
            }
            for(j=0;j<i;j++)
            {
                printf("%c",k+j);//initial char value of k is A and will be incremented by one as looping continues.
            }
            printf("\n");
        }
    }
    int main()
    {
        int n;
        printf("Enter the row number\n");
        scanf("%d",&n);
        nest_loop(n);
        return 0;
    }

这是功能代码。

#include <stdio.h>
#include <ctype.h>

void nest_loop(int n) {
    for(int i = 0; i < n; i++){
        for (int j = 0; j < i; j++)
            printf("  ");
        char init_char = 'A';
        for(int j = 0; j < n-i; j++, init_char++)
            printf("%c ", init_char);
        printf("\n");
    }
}

int main()
{
    int num;
    printf("input number: ");
    scanf("%d", &num);
    nest_loop(num);
    return 0;
}

输出为

input number: 5
A B C D E 
  A B C D 
    A B C 
      A B 
        A