首页 > 试题广场 >

编写一个程序,输出菱形图案,第一行为1个字母A,第2行为3个

[问答题]
编写一个程序,输出菱形图案,第一行为1个字母A,第2行为3个字母B,依此类推,第n行为2n-1个相应的字母,以后每行递减。n由键盘输入。

推荐
使用for循环实现本题功能,外层for循环每输出一次执行一次。对于每输出的一行,先用for输出相应的空格,即进行输出定位,然后用for循环输出相应个数的字母。其中用c标记每行要输出的字母,初值为'A'每输出一行,c增1,从而改变输出的字母,以便依次取'A'、'B'、'C'等。程序如下:
#include <stdio.h>
void main()
{
    char c;
    int i,j,k,n;
    printf("输入n:");
    scanf("%d",&n);
    printf("对应的菱形图\n");
    c='A';
    for (k=1-n;k<=n-1;k++)
    {   i=n-abs(k);                   /*调用函数abs(k)求k的绝对值*/
        for (j=1;j<=n-i+1;j++)            /*输出行定位*/
            printf(" ");                          
        for (j=1;j<=2*i-1;j++)             /*输出字母*/
            printf("%c",c);
        printf("n");
        c++;                    /*取下一个字母*/
    }
}
本程序的一次执行结果如下:
输入n:5
对应的菱形图
A
BBB
CCCCC
DDDDDDD
EEEEEEEEE
FFFFFFF
GGGGG
HHH
I
发表于 2018-05-06 21:56:26 回复(0)
#include <stdio.h>
int main()
{
    int n=4;
    int i,j,k;
    char ch;
    for(i=0;i<n;i++){
        for(j=0;j<n-i-1;j++){
            printf(" ");
        }
        ch = 'A' + i;
        for(k=1;k<=2*i+1;k++){
            printf("%c",ch);
        }
        printf("\n");
    }
    
    for(i=0;i<n-1;i++){
        for(j=0;j<=i;j++){
            printf(" ");
        }
        ch = ch - 1;
        for(k=1;k<=2*(n-i)-3;k++){
            printf("%c",ch);
        }
        printf("\n");
    }
    return 0;
}

   A
  BBB
 CCCCC
DDDDDDD
 CCCCC
  BBB
   A

发表于 2018-09-05 11:22:59 回复(0)