初学C语言,几种利用嵌套循环的字母打印格式

2019/07/22 C 逃离CSDN

初学C语言,几种利用嵌套循环的字母打印格式

  • 1、最简单的换行嵌套,一个 for 循环控制行数,一个 for 循环控制每行输出量。
#include <stdio.h>
/*输出类似于
$
$$
$$$
$$$$
$$$$$
*/
int main(void)
{
    int m,n;

    for(m=1;m<=5;m++)
        for(n=1;n<=m;n++)
        {
            printf("$");
            if(n==m)
                printf("\n");
        }
}
  • 2、相比于第一例,多了一个字符倒序输出,利用数组下标中加上变量 n 实现。
#include <stdio.h>
/*输出形如
F
FE
FED
FEDC
FEDCB
FEDCBA
*/

int main(void)
{
    char lett[27]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    int m,n;

    for(m=1;m<=6;m++)
        for(n=1;n<=m;n++)
        {
            printf("%c",lett[6-n]);
            if(n==m)
                printf("\n");
        }
}
  • 3、这个的难点在于一开始不理解 ch++ 的正确使用方法,直接使用数组的方式两个循环嵌套去做,(错误)代码如下:
#include <stdio.h>

int main(void)
{
    char lett[27]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    int m,n;

    for(m=0;m<=6;m++)
        for(n=0;n<=m;n++)
        {
            printf("%c",lett[m+n]);
            if(n==m)
                printf("\n");
        }
}

先看这个的输出结果:

前两行没有问题,后面出现问题,那是为什么呢,可以发现,第一个循环每次加一过后,第二个循环都会初始化为 0,也就是说,A 可以理解为 0+0,B=1+0,C=1+1,然后第一个循环变成 2,第二个循环为 0,也就是第三行又出现了一个 C。

正确代码如下:

#include <stdio.h>

/*输出形如
A
BC
DEF
GHIJ
KLMNO
PQRSTU
*/
int main(void)
{
    char ch='A';
    int i,j;
    for(i=1;i<7;i++)                //控制行数
        {
        for(j=0;j<i;j++)            //控制每行字母个数
            printf("%c",ch++);      //ch每次操作递增
        printf("\n");
        }
    return 0;
}
  • 4、该例根据用户不同的输入值进行不同的输出,前三例稍加修改也可以的,有种复杂的写法用了四个循环,一个循环控制行数,内部三个循环一个循环打印空格,一个循环打印升序字母,一个循环打印降序字母。该例用了一个 for 循环加上 if…else 语句直接完成升序和降序字母的输出。
#include <stdio.h>
/*输出形如
***A
**ABA
*ABCBA
的图形,其中“*”代表空格,行数由用户定义
*/
int main(void)
{
    int i,j,k;
    char input;

    printf("please input a capital letters:");      //输入大写字母以定义行数
    scanf("%c",&input);

    for(i=0;i<(int)(input-'A'+1);i++)               //控制行数
        {
        for(j=1;j<=(int)(input-'A'+1-i);j++)        //打印空格
        printf(" ");
        for(k=0;k<=2*i;k++)                         //打印字母
        if(k<=i)
            putchar('A'+k);
        else
            putchar('A'+2*i-k);
        printf("\n");
        }

}

Search

    Table of Contents