c语言中的3个循环while,do,for

ps:

第一次写,网上看到说边学边写博客更好,于是趁着放假就写了,目前在学,看完了明解c语言,现在在看c primer plus,刚复习完循环。

 while循环

基本形式为:while(表达式)

当表达式为”真“时开始循环,当表达式为”假“时结束,在c语言中”真“的范围很广,数字中除了0以外的数都为真,而0为假。

在用while循环的时候要小心条件的设置,不要写出无限循环的程序

#include <stdio.h>

int main()
{
    while(1)
        putchar('*');
        
    return 0;
}

 这个例子就是表达式一直判定为真,会无限打印出 * 。

while的范围 

 while的范围另外循环的判定范围一般为while的下一行,如果要使用更复杂的循环就要在加上{}限定范围

#include <stdio.h>

int main()
{
    int i=0;
    
    while(i<5)
    {
        putchar('*');
        i++;
    }
        
    return 0;
}

 while判定“真”的范围还可以是许多其他的表达式如(4<5)也会被认为是”真“然后返回数字1. 或者scanf输入不为数字会被认为”假“返回数字0,有的时候会用bool来做条件,bool只有1或0。

do...while循环

基本形式为:do{

}while(表达式);

表达式内容为执行循环的条件,while后面是加分号的。

#include <stdio.h>

int main()
{
    int i=10;
    
    do
    {
        putchar('*');
        i--;
    }while(i>0);
        
    return 0;
}

while和do的主要区别

while和do...while看起来好像没什么区别,但是其实还是有一个主要的区别的。

while根据表达式可能不会执行循环,但是do一定要执行至少一次循环,例如i=1,表达式为i>1,while就不会执行,但是do至少要执行一次。

for循环

基本形式(表达式1;表达式2;表达式3)

表达式1为初始化,表达式2为判断是否继续循环的条件,表达式3为对于表达式的更新

#include <stdio.h>

int main()
{
    int i;
    
    for(i=0;i<5;i++)
        printf("%d",i);
        
    return 0;
}

 for内的3个表达式是可以多样化的

#include <stdio.h>

int main()
{
    int i,j;
    
    for(i=0,j=5;i<5;i++,j--)
        printf(" %d %d \n",i,j);
        
    return 0;
}

 表达式的内容可以用逗号分开,然后用分号结束

简单嵌套: 

嵌套在循环中十分常见,多重嵌套是经常的

#include <stdio.h>
#define num 5

int main()
{
    int i,j;
    
    for(i=1;i<=num;i++)
    {
        for(j=0;j<i;j++)
            putchar('*');
        putchar('\n');
    }       
    return 0;
}

\\*#define是一个对象式宏,具体就是将num替代了5*\\

结果:

稍微复杂一点的:

#include <stdio.h>
#define num 5

int main()
{
    int i,j;
    char ch;
    
    for(i=1;i<=num;i++)
    {
        for(j=0;j<num-i;j++)
            putchar(' ');
            
        for(j=0,ch='A';j<i;j++,ch++)
            printf("%c",ch);
            
        for(j=0,ch-=2;j<i-1;j++,ch--)
            printf("%c",ch);
        
        putchar('\n');
    }       
    return 0;
}

学生分数分布竖表:

                                这是我学完循环写的一张表

#include <stdio.h>

#define number 80

int main()
{
    int n,m=0;
    int a,b;
    int group[11] = { 0 };
    int num[number];

    printf("请输入学生数量:");

    do {
        scanf("%d", &n);

        if (n<0 || n>number)
            printf("请输入1~%d的数:", number);
    } while (n<0 || n>number);

    printf("请输入%d人的分数\n", n);

    for (a = 0; a < n; a++)
    {
        printf("%2d号:", a + 1);
        do {
            scanf("%d", &num[a]);

            if (num[a] < 0 || num[a]>100)
                puts("请输入1~100的数");
        } while (num[a] < 0 || num[a]>100);

        group[num[a] / 10]++;
    }

    puts("\n---数据表---");

    for (a = 0; a < 10; a++)
    {
        printf("%3d~%3d:", a * 10, a * 10 + 9);

        for (b = 0; b < group[a]; b++)
            ;
        printf("%d人", b);
        putchar('\n');
    }

    printf("    100:");

    for (b = 0; b < group[10]; b++)
        ;
    printf("%d人", b);

    puts("\n--------------------分布图-------------------");

    for (a = 0; a < 11; a++)
    {
        if (m < group[a])
            m = group[a];
    }

    for (a = m; a > 0; a--)
    {
        for (b = 0; b < 11; b++)
        {
            if (group[b] >= a)
                printf(" *  ");
            else
                printf("    ");
        }
        putchar('\n');
    }

    puts("---------------------------------------------\n");

    for (a = 0; a < 11; a++)
        printf(" %d ", 10 * a);

    return 0;
}

  \\*这是竖表麻烦一点,横表简便一些*\\

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值