C语言初阶2 -分支与循环

  • 分支语句
    • if
    • switch
  • 循环语句
    • while
    • for
    • do while
  • goto语句

什么是语句

        C语言中由一个分号 ; 隔开的就是一个语句. 如:

                printf("hh");

                1+2;

分支语句(选择结构)

        if 语句

                语法结构

                        单分支

                                if(表达式)

                                        语句;

                        双分支

                                if(表达式)

                                        语句1;

                                else

                                        语句2;

                        多分支

                                if(表达式)

                                        语句1;

                                else if(表达式2)

                                        语句2;

                                else

                                        语句3;

                        多级分支

                                if(表达式)

                                        语句1;

                                else

                                {

                                        if(表达式2)

                                                语句2;

                                        else

                                                语句3;

                                }

#include <stdio.h>
int main()
{
    int age = 10;
    
    if(age < 10)
        printf("未成年\n");
    else if(age>=18 && age<28);                        //(18<=age<28)是错误表达
        printf("青年\n");  
    else if(age>=28 && age<50);                       
        printf("壮年\n") ;  
    else if(age>=50 && age<90);                       
        printf("老年\n");
    else
        printf("老老年\n") ;                               
    return 0;
}  
                        执行多条语句

                        if (表达式)

                        {

                                语句1;

                                语句2;

                        }

#include <stdio.h>
int main()
{
    int age = 10;
    
    if(age < 10)
        //printf("未成年\n");
        //printf("不能谈恋爱\n")                     执行多条语句是用代码块{ }
    {
        printf("未成年\n");
        printf("不能谈恋爱\n");            
    }
                             
    return 0;
}  
                        else的悬顶结构

                        if 1...

                                if 2...

                                        语句;

                        else

                                语句;                                                 //此 else 会与 if 2匹配

                        

                        if 1...

                        {

                                if 2...

                                        语句;

                        }

                        else                                //此 else 会与 if 1 匹配

                                语句;

                if 语句写法

                        / / 代码 1

                                if (condition)

                                {

                                        return x;

                                }

                                return y;

                        / / 代码 2

                                if (condition)

                                {

                                        return x;

                                }

                                else

                                {

                                        return y;

                                }

                        / / 代码 3

#include <stdio.h>
int main()
{
    int num = 4;
    if(num=5)
        printf("hh");                        //错误 '='(赋值) 与 '=='判断 不同,但编译器不报错
        
    int num = 4;
    if(5==num)                                //即使'5=num'编译器会 报错
        printf("hh")      
    return 0;
}

        switch语句

                switch语句也是一种分支语句,常常用于多分支情况。

                语法结构

                        switch(整型表达式)

                        {

                                语句项;

                        }

#include <stdio.h>
int main()
{
    int day = 0;                           
    scanf("%d",&day);
    switch(day)                          //整型表达式,前面day类型必须为整型
    {
        case 1:                          //从case进入代码块
            printf("星期一\n") ;
            break;                       //从break出
       case 2:
            printf("星期二\n") ;
            break;
        case 3:
            printf("星期三\n") ;
            break;
       case 4:
            printf("星期四\n") ;   
            break;                             
    }  
    return 0;
}
                        语句项

                                即一些case语句

                                case 整型常量表达式 :

                                        语句;

#include <stdio.h>
int main()
{
    int day = 0;                           
    scanf("%d",&day);
    switch(day)                          
    {
        case 1:                                                      
        case 2:                            //空,跳
        case 3:
        case 4:
        case 5:
            printf("工作日\n");
            break
        default:                            //处理异常情况
            printf("输入错误\n");
            break;                                          
    }  
    return 0;
}

循环语句

        while循环

                continue

#include <stdio.h>
int main()
{
    int i = 1;
    while(i<=5)
    {
        if(i==5)
            continue;                //跳出本次循环
        printf("%d",i) 
        i++;                         //死循环       
    }
    return 0;
}

                getchar 与 putchar

#include <stdio.h>
int main()
{
    int ch = getchar();
    putchar(ch);
    printf("%c\n",ch);
    return 0;
}
#include <stdio.h>
int main()
{    
    int ch = 0;
    while(  (ch = getchar()) !=EOF  )               //输入EOF时不会停止,分别识别'E','O','F' != "EOF"
    {                                               //"EOF" -> end of file -> -1
        putchar(ch);    
    }                                                //ctrl + z 停止
    return 0;
}
#include <stdio.h>
int main()
{    
    int ret = 0;
    ch=0;
    char password[20]={0};
    printf("输入密码:");
    scanf("%s",password);
    while(   (  ch=getchar() )!='\n' )            //接受\n
    {
        ;    
    }
    printf("请确认");
    ret =getchar();
    if(ret=='Y')
        printf("ok");
    else
        printf("ok");
     return 0;        
}

C语言中getchar()函数的详解_getchar()的功能-CSDN博客

                练习

                        求两个数的最大公约数

辗转相除法
#include <stdio.h>
int main()
{    
    int m = 24;
    int n = 18;
    int r;
    scanf("%d%d",&m,&n);
    while(r=m%n)
    {
        r=m%n;
        m=n;                    //
        n=r;           
    }
    printf("%d",n);
    return 0;
}  

        for循环

                语法

                        for (表达式1,表达式2,表达式3)

                                循环语句;

                        表达式1 为初始化部分,用于初始化循环变量.

                        表达式2 为条件判断部分,用于判断循环是否终止.

                        表达式3 为调整部分,用于循环条件的调整.

#include <stdio.h>
int main()
{    
    int i = 0;
    for(i = 0;i<10;i++)            //最好i<10,而不是i<=9(10次打印)
    {
        printf("%d",i);    
    }
    return 0;        
}

                变种

#include <stdio.h>
int main()
{    
    
    for(;;)                   //判断部分被省略表示恒为真(死循环)
    {
        printf("hh");    
    }
    
    int i = 0;
    int j = 0;
    for (;i<10;i++)
    {
        for(;j<10;j++)
        {
            printf("hehe")        
        }            
    }                           //最终打印10次hehe,j没有初始化
    return 0;        
}

        do...while循环

                语法

                        do

                                循环;

                        while(表达式);

执行流程

#include <stdio.h>
int main()
{    
    int i =1;
    do
    {
        printf("%d",i);
        i++; 
    }                
    while(i<10);
    return 0;        
}

goto语句

        不建议使用

#include <stdio.h>
int main()
{    
again:
    printf("hello");
    goto again;        
    return 0;        
}

        关机程序

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
    char input[20] = { 0 };
    system("shutdown -s -t 60");  //system--执行系统命令;shutdow 关机
again:
    printf("即将关机\n:");
    scanf("%s", input);
    if (strcmp(input, "我是猪") == 0)
    {
        system("shutdown -a");
    }
    else
    {
        goto again;
    }
    return 0;
}...shell:startup

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值