Linux C学习第五天(控制语句)

if-else
V1.
#include<stdio.h>
int main(int argc, char *argv[])
{
    int a;
    scanf("%d", &a);

    if (a>80)
    {
        if (a>100)
        {
            printf("erro\n");
        }

        if (a>90)
        {
            printf("A\n");
        }
        else
        {
            printf("B\n");
        }
    }
    else
    {
        if (a>70)
        {
            printf("C\n");
        }
        else
        {
            if (a>60)
            {
                printf("D\n");
            }
            else
            {
                printf("GG\n");
            }
        }
    }

    return 0;
}
V2.
#include<stdio.h>
int main(int argc, char *argv[])
{
    int  a;
    scanf("%d", &a);
    if (a>=90)
        printf("A\n");
    else if (a>=80)
        printf("B\n");
    else  if (a>=70)
        printf("C\n");
    else  if (a>=60)
        printf("D\n");
    else
        printf("不及格\n");
}
switch-case
#include<stdio.h>
int main(int argc, char *argv[])
{
    int a;
    scanf("%d", &a);

    switch(a)
    {
        case 3:
            printf("Wednesday\n");
        case 4:
            printf("Thursday\n");
            break;
        case 1:
            printf("Monday\n");
            break;
        case 2:
            printf("Tuesday\n");
            break;
        case 5:
            printf("Friday\n");
            break;
        case 6:
        case 7:
            printf("Study day\n");
            break;

        default:
            printf("error\n");
    }
    
}
/* case 后必须是整型常量或字符常量,表达式也ok
    switch(表达式1)
    {
        case 整型或字符型常量:
            语句;
        case 常量表达式:
            语句;
        case 常量2:
            语句
        default:
            语句;
    }
* 执行表达式1,
* 根据表达式的结果对case后的语句进行匹配,如果没有匹配的case 则选择default的语句
*
* 匹配成功后会从对应的case语句开始执行,如果有break,则直接结束switch,
* 否则顺序执行,继续执行后面的case,直到遇到break或switch结束
*
* 语句后加break可以保证case的独立型
* 最后一个语句可以不用break;
*
* case 语句的先后没有关系;
* */
  • 注:区间范围问题用if        确定值的问题用switch
;只有一个分号,表示空语句;{}    这个是代码块的意思。
while()循环
V0.
#include<stdio.h>
#define   N    0
#define   M    100
int main(int argc, char *argv[])
{
    int i = 0;
    while (i<100);  //循环体执行了 N - M 次

    {
        if (i%7 == 0)  //0 1  99
        {
            printf("%d\t", i);
        }
        i++;
    }
    printf("\n");

}
/*
* while (表达式)
* {
*  循环体语句;
* }
* 先判断表达式真假,如果为真,执行语句循环体,
* 再判断表达式真假......
* while 中必须要改变表达式的值,表达式自己改变,循环体语句中改变:
*     while (a--)
*     {
*       ;
*     }
*     while ()
*     {
*       a--;
*     }
*
*     while (){} 循环体中只有一条语句时,{}阔以省略
*
*     while (1)   //无限循环语句
*     {
*     ;
*     }
*     while (1) ;
*
* * ******************************************************** */
V1.
#include<stdio.h>
int main(int argc, char *argv[])
{
    int i=0;
    while (i++ <100)
    {
        if(i%7 == 0)  //1  99 100
        {
            printf("%d\t", i);
        }
    }

    printf("\n");

    return 0;
}
V2.
#include<stdio.h>
int main(int argc, char *argv[])
{
    int i = 0;
    while (++i<100) // 1 2  99
    {
        if(i%7 == 0)
        {
            printf("%d\t", i);
        }
    }

}
do-while
#include<stdio.h>
int main(int argc, char *argv[])
{
    int i;
    i = 0;
    do
    {
        if ((i%7) == 0)
        {
            printf("%d\t", i);
        }
        i++;
    } while (i<100);  //
    printf("\n");


}

/*
  do
  {
     循环体语句;
  }while (条件表达式);   //分号 分号  分号

* 先执行循环体,然后再判断条件表达式是否成立,yes则再次执行循环体
*这是一个至少执行一次的循环。
* * *********************************** */
特殊用法:
#include<stdio.h>
#define   FUN   {\
                 printf("hello world\n"); \
                 printf("hello  define\n");\
                }
#define  FUN1  do\
                {\
                 printf("hello world\n"); \
                 printf("hello  define\n");\
                }while (0)

int main(int argc, char *argv[])
{
    int i;
    i = 1;
    if (1==i)
        FUN1;
    else
    {
        printf("hello ET\n");
        printf("hello  stupid human\n");
    }

    return 0;
}

for
V0.
#include<stdio.h>
int main(int argc, char *argv[])
{
    int i, j;
    i = 0;
    j = 0;

    for (i=0; i<6; i++)
    {
        printf("i====>%c: ", 'A'+i);

        for (j=0; j<10; j++)
        {
            printf("j=%-3d", j);
        }

        printf("<====\n");
    }

}
V1.
#include<stdio.h>
#define  M  0
#define  N  100
int main(int argc, char *argv[])
{
    int i;
    for (i=0; i<100; i++) //0 1 2 98 99  N-M
    {
        if (i%7 == 0)
        {
            printf("%d\t", i);
        }
    }
    printf("\n");
    
}
/* ******************************************* *
* for (表达式1; 表达式2;  表达式3)
* {
*  循环体;
* }
* 表达式1;
* 判断表达式2是否为真,
*  假
*      结束for
*  真
*      执行 循环体  -->表达式3-->表达式2
*
*
  for (; ; )
     ;
* ******************************************** */   
V2.
#include<stdio.h>
int main(int argc, char *argv[])
{
    int i;
    i = 0;
    for (; i<100; )
    {
        if (i%7 == 0)
        {
            printf("%d\t", i);
        }
        i++;
    }
}
break    cantinue
break:在死循环和case中使用,跳过本次循环还未执行的语句,提前结束for循环
V0.
#include<stdio.h>
int main(int argc, char *argv[])
{
    int i, j;

    for (i=0; i<6; i++)
    {
        printf("%c:i===> ", i+'A');
        if (3==i)
        {
            break;
        }

        for (j=0; j<10; j++)
        {
            printf("j=");
            if (5==j) //Q
            {
                break;
            }
            printf("%d", j);
            printf("   ");
        }

        printf("<====\n");
    }
}
V1.
#include<stdio.h>
int main(int argc, char *argv[])
{
    int i, j;

    for (i=0; i<6; i++)
    {
        printf("%c:i===> ", i+'A');

        for (j=0; j<10; j++)
        {
            printf("j=");
            if (3==i) //只对i=3时有影响
            {
                break;
            }
            printf("%d", j);
            printf("   ");
        }

        printf("<====\n");
    }
}
V2.
#include<stdio.h>
int main(int argc, char *argv[])
{
    int i, j;

    for (i=0; i<6; i++)
    {
        printf("%c:i===> ", i+'A');
        if (3==i)
        {
            continue;
        }

        for (j=0; j<10; j++)
        {
            printf("j=");
            if (5==j) //Q
            {
                break;
            }
            printf("%d", j);
            printf("   ");
        }

        printf("<====\n");
    }
}
contuine:只在循环中使用
跳出本次循环,只是提前结束本次循环
V0.
#include<stdio.h>
int main(int argc, char *argv[])
{
    int i;
    for (i=0; i<10; i++)
    {
        printf("i=");
        if (5==i)
        {
            continue;
        }
        printf("%d", i);
        printf("___ ");
    }

    printf("\n");

}
V1.
#include<stdio.h>
int main(int argc, char *argv[])
{
    int i, j;
    i = 0;
    j = 0;
    for (i=0; i<6; i++)
    {
        printf("%c:i===> ", i+'A');
        if (3==i)
        {
            continue;
        }
        for (j=0; j<10; j++)
        {
            printf("j=");
            if (5==j)
            {
                continue;
            }
            printf("%d", j);
            printf("   ");
        }
        printf("<====\n");
    }
}
永远都不要使用的goto
V0.
#include<stdio.h>
int main(int argc, char *argv[])
{
    int i;
    i = 0;
flag:
    printf("i=");
    printf("%d", i);
    printf("   ");
    i++;
    if (i<10)
    {
        goto flag;
    }
    printf("\n");
}
PS:宏定义的打广告:
#include<stdio.h>
#define __FASIGHT__
#define _qq1324318389_
#define mynameiswangxiaoming
#define  __init__
#define  _linux_                //这些只定义了前面半截,而没有实际的意义,可以用来打广告
_qq1324318389_ int __FASIGHT__ main(int argc, char *argv[])
{
    int i;
    __init__ i = 0;
    while (i<100 mynameiswangxiaoming )
    {
        if (i%7 == 0)
        {
            _linux_ printf("%d\t", i);
        }
    }
    printf("\n");
}

猜你喜欢

转载自blog.csdn.net/nan_lei/article/details/81036808