注册 登录
编程论坛 C语言论坛

c语言输出字母金字塔代码那三行for是什么意思呀?

YKindred 发布于 2018-03-20 13:22, 1946 次点击
程序代码:
#include
int main(void)
{
    int i, j, k;
    char letter;
    printf("shuru:");
    scanf_s("%c", &letter,1);
    k = letter - 'A' + 1;   
    for (i = 0; i < k; i++)        
    {
        for (j = 0; j < k - i; j++)printf(" ");
        for (j = 0; j <= i; j++)printf("%c", 'A' + j);
        for (j = i - 1; j >= 0; j--)printf("%c", 'A' + j);
        printf("\n");
    }
    return 0;
}
4 回复
#2
rjsp2018-03-20 13:53
程序代码:
#include <stdio.h>

int main(void)
{
    char letter;
    printf( "Type an uppercase letter: " );
    scanf( "%c", &letter );

    const int n = letter-'A'+1;
    for( int i=0; i<n; ++i )
        printf( "%*.*s%s\n", n, i+1, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "ZYXWVUTSRQPONMLKJIHGFEDCBA"+26-i );
}


[此贴子已经被作者于2018-3-20 13:55编辑过]

#3
YKindred2018-03-20 14:13
以下是引用rjsp在2018-3-20 13:53:42的发言:

#include <stdio.h>

int main(void)
{
    char letter;
    printf( "Type an uppercase letter: " );
    scanf( "%c", &letter );

    const int n = letter-'A'+1;
    for( int i=0; i<n; ++i )
        printf( "%*.*s%s\n", n, i+1, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "ZYXWVUTSRQPONMLKJIHGFEDCBA"+26-i );
}

啥意思
#4
will丶2018-03-20 14:34
怎么跟你讲呢,脑子里要有那种举一反三的程序运行思维
程序代码:
#include<stdio.h>
int main(void)
{
    int i, j, k;
    char letter;
    printf("shuru:");
    scanf_s("%c", &letter,1);
    k = letter - 'A' + 1;
    for (i = 0; i < k; i++)
    {
        for (j = 0; j < k - i; j++)printf(" ");//这一层循环输出空格,输出都是从左往右的,效果就是让三角形看起来是个正三角形'
        for (j = 0; j <= i; j++)printf("%c", 'A' + j);//这一层循环是从最左边开始输出从'A'开始依次递增,直到i位置
        for (j = i - 1; j >= 0; j--)printf("%c", 'A' + j);//这层循环是从i位置开始往右输出,依次递减直到为'A'
        printf("\n");
    }
    return 0;
}
#5
will丶2018-03-20 14:37
回复 3楼 YKindred
这个是用正则表达式做的
1