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");
        }
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

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");
        }
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

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");
        }
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

先看这个的输出结果 
错误输出

前两行没有问题,后面出现问题,那是为什么呢,可以发现,第一个循环每次加一过后,第二个循环都会初始化为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;
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

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");
        }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值