标题:C Primer Plus第6章中的例题,请大佬指教一下,谢谢!
取消只看楼主
hyq1979
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2021-4-25
结帖率:0
已结贴  问题点数:20 回复次数:2 
C Primer Plus第6章中的例题,请大佬指教一下,谢谢!
#include <stdio.h>
int main(){
    int i ,j,num;
    char c ;
    printf("Enter the core char you want to print(A...Z):");
    scanf("%c" , &c);
    char ch = 'A';
    num = c - 'A' + 1;
    for (i = 1;i <= num ;i++) {
        for (j = 0;j < num - i ; j++)
            printf("");
        for (ch ='A'; j < num; j++)
            printf("%c" , ch++);
        /*在打印正序字符数时,需要通过ch做递增操作,起始值j在空格处已经通过循环做了初始化,因此只打印剩余字符数*/
        for (j = 1, ch-=2; j < i ; j++, ch--)
            printf("%c",ch);
        printf("/n");
    }
    return 0;
}
中间注释那段变量j没有在for (ch ='A'; j < num; j++)做初始化啊,难道之前的for (j = 0;j < num - i ; j++)中的j=0初始化能带到下面的for语句中?
搜索更多相关主题的帖子: Primer for num printf 初始化 
2021-04-25 22:27
hyq1979
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2021-4-25
得分:0 
而且        for (j = 0;j < num - i ; j++)
            printf("");
这个for循环已经将j++,也并不是0啊。
2021-04-25 22:30
hyq1979
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2021-4-25
得分:0 
#include<stdio.h>
int main(void)
{
    int i,j,number;
    char c,ch='A';
    printf("请输入一个大写字母:");
    scanf("%c",&c);
    number=c-'A'+1; //number为金字塔高度
    for(i=1;i<=number;i++) //比较i与number值,判断金字塔高度循环次数i
    {
        for(j=0;j<number-i;j++) //i同时为每层金字塔所需字符数,number-i即为每层金字塔所需空格数
        printf(" "); //打印每层空格数
        for(ch='A';j<number;j++) //首字母为A,number-j即为每层金字塔所需字符数
        printf("%c",ch++); //打印每层字符数
        for(j=1,ch-=2;j<i;j++,ch--) //i即为每层正序字符数,因为上段ch++多增1个字符,这里需要ch-=2,ch--逆序字符
        printf("%c",ch); //打印逆序字符
        printf("\n"); //
    }
    return 0;        
}
好吧,自己理解的,这个例题对于菜鸟来说还是有点难度。
2021-04-25 23:45



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-505577-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.706006 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved