写对称字母塔的时候,程序看起来都很复杂,但一步一步来,总是可以解决的!这个过程需要耐心!

    写对称字母塔的时候一点感受,程序看起来都很复杂,但一步一步来,总是可以解决的!这个过程需要耐心!静下心来,一步一步的实验,打印结果,看是否是需要的。

    程序乍一看都很复杂,也搞不到头绪。我觉得是自己还没有仔细思考过这个问题的解决办法。自己一步一步的想下解决办法,总能一步一步的得到你想要的。即使解决不了,再去看其他人的解决办法,都会很容易想明白,并记住!



    刚看到题目的时候,没有任何思路,想着是不是可以两个循环把这个图案打印出来。想来想去好像不行,于是第一天就把这个放一边了。

    隔了两天又想来把这题给搞定,就想着前面有打印字母递增的算法,还有递减的算法,是不是可以用这些思路去解决问题。

    正好又看到网友的思路是把图案分三部分打印,一部分是前面空格,一部分是字母前半部分,最后是字母后半部分。所以设计一个外循环,然后三个内循环,一个循环打印前面的空格,一个打印字母前半部分,一个打印后半部分。扫了一样网友的算法,乱糟糟的感觉,就思路还记得,设计多个循环!其他的一闭上眼睛就忘了。

    想来想去,自己去动手写下应该就能理解了,于是就来写吧。



1, 先搞一个递增的外循环,循环次数由输入字母减去‘A’来控制。

<span style="font-size:14px;">for(row=0 ; row<=ch-'A'; row++)
{

}
</span>


2,再搞一个递减内循环,做空格循环次数控制。初始化应该是和外循环成反向的。

<span style="font-size:14px;">	for(row=0 ; row<=ch-'A'; row++)
	{
		for(bl=(ch-'A'-row-1); bl>=0 ; bl--)
			printf("_", bl );

		printf("\n");
	
	}</span>

测试打印,空格看不到,换成 ‘_’ 来试试。

打印结果正确。



3,再搞一个递增循环,做字母前半部分。

<span style="font-size:14px;">for(row=0 ; row<=ch-'A'; row++)
	{
		for(bl=(ch-'A'-row-1); bl>=0 ; bl--)
			printf("_", bl );
		for( line = 'A' ; line <='A'+row ; line++)
			printf("%c", line );

		printf("\n");
	
	}</span>

测试打印,结果也还行。


4,最后搞一个递减循环,来控制反序字母打印。

此步骤刚开始搞不明白如何设计循环初始化条件,和循环界限设定。不断调试了有五六次,最终再把这项设定好。


<span style="font-size:14px;">for(row=0 ; row<=ch-'A'; row++)
	{
		for(bl=(ch-'A'-row-1); bl>=0 ; bl--)
			printf("_", bl );
		for( line = 'A' ; line <='A'+row ; line++)
			printf("%c", line );
		for(line='A'+row -1; line >= 'A' ; line--)
			printf("%c", line );
		printf("\n");
	
	}</span>


完整代码:

    我这个代码没有做输入条件筛选,应该是可以做 字母输入判定, 大小写判定,然后设计分支来处理不同情况,后面再来完善这些功能。

<span style="font-size:14px;">#include<stdio.h>

int main(void)
{
	int row ,line ,bl;
	char ch;

	scanf("%c", &ch);
	for(row=0 ; row<=ch-'A'; row++)
	{
		for(bl=(ch-'A'-row-1); bl>=0 ; bl--)
			printf("_", bl );
		for( line = 'A' ; line <='A'+row ; line++)
			printf("%c", line );
		for(line='A'+row -1; line >= 'A' ; line--)
			printf("%c", line );
		printf("\n");
	
	}


	return 0;
}</span>



  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个实现字母输出的 C 语言程序,可以根据输入的数字 N 输出 N 层字母。 ``` #include <stdio.h> void print_triangle(int n) { int i, j, k; char c; for (i = 1; i <= n; i++) { for (j = 1; j <= n - i; j++) { printf(" "); } c = 'A'; for (k = 1; k <= i * 2 - 1; k++) { printf("%c", c); if (k < i) { c++; } else { c--; } } printf("\n"); } } int main() { int n; printf("Please enter the number of triangles to print: "); scanf("%d", &n); for (int i = 0; i < n; i++) { printf("Triangle %d:\n", i + 1); print_triangle(i + 1); printf("\n"); } return 0; } ``` 示例输出: ``` Please enter the number of triangles to print: 3 Triangle 1: A ABA ABCBA Triangle 2: A ABA ABCBA ABCCBA Triangle 3: A ABA ABCBA ABCCBA ABCDCBA ``` 该程序中,`print_triangle` 函数用于输出一个字母,参数 `n` 表示字母的层数。 程序首先输出提示信息,让用户输入要输出的字母的数量,然后使用一个循环依次输出每个字母。在每个字母输出之前,程序会先输出一个标题,提示当前输出的字母是第几个。 `print_triangle` 函数中使用三个循环来实现字母的输出。第一个循环用于控制字母的层数,第二个循环用于输出每一层的空格,第三个循环用于输出每一层的字母。 在第二个循环中,程序通过输出一定数量的空格来控制字母中每一层的位置,使得字母呈现出金字的形状。 在第三个循环中,程序使用一个变量 `c` 来表示当前要输出的字母,初始值为 'A'。在输出每一行的字母时,程序先输出一定数量的字母,然后再逆序输出一定数量的字母。在输出过程中,程序通过控制变量 `c` 的值来输出正确的字母。 最后,程序使用换行符来结束每一行的输出,使得字母的每一层都能够单独占据一行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值