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

C语言字母排列

Rainsweet 发布于 2019-11-28 20:05, 3001 次点击
                          A
                        BBB
                     CCCCC
                   DDDDDDD
                     CCCCC
                        BBB
                           A
请问这个用C语言怎么表示
#include<stdio.h>
#define N 7            
#define L (80-N)/2   
int main()
{
    char c = 'A';
    int i, j, p;
    for (i = 1; i <= N; i++, p____)
    {
        if (i <= (N + 1) / 2)
            p = ____;
        else
            p = ____;
        for (j = 1; j <= L+____; j++)
            printf(" ");
        for (j = 1; j <= 2 * p - 1; j++)
            printf("%c", c);
        printf("\n");
    }
    return 0;

}
我想请问四根横线处应该填什么才能答出,谢谢
8 回复
#2
纯蓝之刃2019-11-29 10:22
你确定题没给错?你的c在什么地方改变的,你这打印出来不就是空格和‘A’两种字符么
#3
rjsp2019-11-29 10:27
你贴完了后,回头看过一眼吗?
                          A
                        BBB
                     CCCCC
                   DDDDDDD
                     CCCCC
                        BBB
                           A
前面的空格数分别是 26 24 21 19 21 24 27,这里面有什么规律?
#4
纯蓝之刃2019-11-29 10:48
回复 3楼 rjsp
不,楼主贴的没问题,感觉是论坛处理的问题,你用手机客户端查看就是正常的菱形。
老静给的回复是:手机用不同的字体空格宽度不一样,排版可能会有一些差别,特别是用空格做缩进的时候。​图形部分可以要求用户按照他们自己的排版,加一个截图。

[此贴子已经被作者于2019-11-29 10:58编辑过]

#5
rjsp2019-11-29 12:33
回复 4楼 纯蓝之刃
确实是这样

但在手机上,直接数空格,空格数仍然是错乱的
#6
lin51616782019-11-29 14:47
填空题太蠢了
#7
纯蓝之刃2019-11-29 21:11
将就看吧,可能还能优化一下吧。
程序代码:
#include<stdio.h>
#define N 7
#define L (80-N)/2
int main()
{
    char c = 'A';
    int i, j, p;
    for (i = 1; i <= N; i++, p=c='A'+abs(N/2-abs((N+1)/2-i)))
    {
        if (i <= (N + 1) / 2)
            p = i;
        else
            p = N-i+1;
        for (j = 1; j <= L+N-p; j++)
            printf(" ");
        for (j = 1; j <= 2 * p - 1; j++)
            printf("%c", c);
        printf("\n");
    }
    return 0;

}
#8
zhaohh32112019-11-30 09:02
我就来看看,怎样会提高积分?
#9
梦醒归何处2019-11-30 17:26
1