C语言的循环结构、选择结构

三个循环结构

  • for循环
  • while循环
  • do…while循环

for(循环变量赋初值【可选】; 循环条件判断【可选】; 循环变量增值【可选】) { 循环体 }
程序结构图如下:
在这里插入图片描述

执行for(expression1;expression2;expression3)这行代码的流程是,先初始化循环变量,再判断是否符合循环条件,也就是开始总是先执行条件判断部分。
while(表达式【判断是否符合循环条件】) {循环体 }
do{循环体} while(循环条件判断);
程序结构图如下:
在这里插入图片描述
do { } while();必须执行一次循环体,因为它先执行结构体再判断,而while( ) { }for(exp1;exp2;exp3){ }可以先判断循环条件再执行循环体,可以实现一次也不执行循环体.

例子:

int main()//这是输出第1~12个fibonacci数字的程序
{
    int i,a=1,b=1,c=0;
    printf("%d\t%d\t",1,1);//输出前两个fibonacci数字
    for(i=0;i<10;i+=1)//输出第3~12个fibonacci数字
    {
        c=a+b;
        a=b;
        b=c;
        printf("%d\t",c);
    }
    //***************************************************************************************
    //用while语句:
    a=1;b=1;c=0;//重置变量值
    printf("%c",10);//空格
    printf("%d\t%d\t",1,1);//输出前两个fibonacci数字
    i=0;
    while(i<10)
    {
        c=a+b;
        a=b;
        b=c;
        printf("%d\t",c);
        i++;
    }
    //****************************************************************************************
    //用do while语句:
    a=1;b=1;c=0;
    printf("%c",10);
    printf("%d\t%d\t",1,1);//输出前两个fibonacci数字
    i=0;
    do
    {
        c=a+b;
        a=b;
        b=c;
        printf("%d\t",c);
        i++;
    }
    while(i<10);
}

两个选择结构

第一个选择结构:

  • 不带else的:if (expression) {codeblock}
  • 带else的:if(expression) esle {codeblock}
  • else部分嵌套多层if的:if(expression1) else if(expression2)else if(expression3){codeblock}

例子:

int main()
//输出1900年到2025年的闰年
{
    int i,start,end;
    start =1900;
    end=2025;
    for(i=start;i<=end;i+=1)
    {
        if(i%4==0&&i%100!=0||i%400==0)//优先级:% 大于 != 大于 == 大于 && 大于 ||
           printf("%d leap year\n",i);
        else printf("%d\n",i);
    }
}

第二个选择结构:

switch () {case 1:{ };break;case 2 { };break; default : { } };
例子:

int main()
{
    char n;
    n=getchar();
    switch(n)
    {
        case '1':printf("case 1");printf("\ncase有多个语句时,可以不加{}");break;
        case '2':printf("case 2");;break;
        case '3': case 4: {printf("case 3 or case 4");};break;
        case 'q':printf("q");break;
        default :printf("default");
    }
}

说明:
1.switch后面的括号内应该是个整型值,要知道,字符型是特殊的整型;
2.case 和 default 只是“入口”,
(1).它们出现的顺序不重要,因为case和default只是“入口”的标志。例如你可以将default放在最前面;
(2).进入某个“入口”后,程序就一直执行下去,不遇到break不会停止,直到执行完所有switch内的语句;这就是为什么
每个case后面都需要加break、
好几个case可以共用一段程序、
case后执行多个语句的话不用加{ }

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值