C primer plus 第六版 第六章 第五题 编程练习答案

版权声明:转载请注明来源~ https://blog.csdn.net/Lth_1571138383/article/details/83119959

Github地址:φ(>ω<*) 这里这里。

#include<stdio.h>
int main(void)
{
	int i = 0;  // Create for loop.
	int j = 0;  // Same with last one.
	int l = 0;  // Same with last one.
	int m = 0;  // Save value.

	char n = '\n';
	char a = 'A';
	char get = 0;

	printf("Please input capital letter:");
	scanf("%c", &get);
	putchar(n);

	m = get - a;

	for(i = 0; i < m; i++)
	{
		for(j = m; j > i; j--)
		{
			putchar(n);
		}
		for( l = 0, a = 'A'; l <= i; l++)
		{
			printf("%c", a++);
		}
		for (l = 0; l < i; a--)
		{
			printf("%c", a);
		}

	}

	return 0;
}

#include<stdio.h>
int main(void)
{
    int i = 0;  // Create for loop.
    int j = 0;  // Same with last one.
    int l = 0;  // Same with last one.
    int m = 0;  // Save value.

    char n = '\n';
    char a = 'A';
    char get = 0;

    printf("Please input capital letter:");
    scanf("%c", &get);
    putchar(n);

    m = get - a;

    for(i = 0; i < m; i++)
    {
        for(j = m; j > i; j--)
        {
            putchar(n);
        }
        for( l = 0, a = 'A'; l <= i; l++)
        {
            printf("%c", a++);
        }
        for (l = 0; l < i; a--)
        {
            printf("%c", a);
        }

    }

    return 0;
}

/*
伪代码:
   首先创建三个变量控制三个循环。
   创建一个int变量保存行数。
   创建一个Char变量来保存目标A。
   在scanf用户输入字母,大写。
   
   首先是一个大循环,结束点为一行升降序处理完毕。
   initialize 先初始化i; 
   test 即为行数控制,将用户输入减去目标A即可得到金字塔行数;
   update 部分则更新i,增加行数。

   内部小循环1 
   initialize 初始化j等于行数m。
   test 本循环输出空格,将j与当前输出行数相比,即可控制空格数量。
   update 更新j自减。

   内部小循环2
   initialize 初始化 l, a = ‘A’
   test 将l与i比较,行数即为控制输出 A 往后的字母数量。
   update 更新l , 输出 A 之后的字母,。

   内部小循环3
   initialize 初始化l
   test 跟循环2一样,将l与行数(i)比较,差则为倒序输出字母次数,也是A的自减次数。
   update A 自减 , 将A和A往后的已输出字母,倒序输出。
*/

猜你喜欢

转载自blog.csdn.net/Lth_1571138383/article/details/83119959