C语言:分支和循环

C语言是一门结构化的程序设计语言

1.顺序结构        2.选择结构        3.循环结构

分支语句(选择结构)和循环语句

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

什么叫语句?

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

int main()
{
    int a=0;
    ;//是语句————为空语句
        
    return 0;
}

if语句

语法结构:

 if else 语句多样化

int main()
{
    int age=100;
    if(age<18);
        printf("未成年\n");
    else if(age>=18&&age<28)
        printf("青年\n");
    else if(age>28&&age<50)
        printf("壮年\n");
    else if(age>=50&&age<90)
        printf("老年\n");
    else
        printf("老不死...\n");



    //if(age<18);
        //printf("未成年\n");
    //else
        //printf("成年\n");



    //if(age<18);
        //printf("未成年\n");
return 0;
}

 在C语言中如何表示真假?

————0表示假,非0表示真

如果条件成立,要执行多条语句,应该怎样使用代码块如下所示用括号括起来,这里的一对{}就是一个代码块

 悬空else问题

你认为下面所示代码打印的结果是什么?(什么都不会输出)

int main()
{
    int a=0;
    int b=2;
    if(a==1)
        if(b==2)
            printf("hehe\n");
        else//else会和距离他最近的if进行匹配
        printf("haha\n");
    return 0;

}

注意:else与距离他最近的if进行匹配,因此代码的时候一定要注意相应的缩进

int main()
{
    int a=0;
    int b=2;
    if(a==1)
      {  if(b==2)
            printf("hehe\n");
       }
    else
        printf("haha\n");
    return 0;

}
//输出haha

if书写形式的对比

//代码1
if(condition)
{
    return x;
}
    return y;//条件成立返回x,不成立返回y

//代码2
if(condition)
{
    return x;
}
else
{
    return y;
}            //条件成立返回x,条件不成立返回y


//代码3 什么都不会打印,不会进入到if语句里面

int main()
{
    int num=4;
    if(5==num)
    {
        printf("haha\n");
    }
    return 0;
}


//代码4:会打印出来哈哈
int main()
{
    int num=4;
    if(num=5)//=符号为赋值意思,==为判断相等
    {
    printf("哈哈\n");
    }
}

练习1.判断一个数是否为奇数

        2.输出1-100之间的奇数

int main()
{    
    while(i<=100)
    {
        if(i%2==1)
            printf("%d",i);
            i++;
    }
    
    return 0
}

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

switch语句:

switch(整形表达式)
{
    语句项;
}

case 整型常量表达式(不能设置为变量)
        语句;

int main()
{    
    int day=0;
    scanf("%d",&day);
    switch(day)
    {
    case 1:
        printf("星期一\n");
    break;
     case 2:
        printf("星期二\n");
   break;
     case 3:
        printf("星期三\n");
   break;
     case 4:
        printf("星期四\n");
   break;
     case 5:
        printf("星期五\n");
   break;
     case 6:
        printf("星期六\n");
   break;
     case 7:
        printf("星期天\n");
   break;
     default ;
        printf("输入错误")
        break;
    }

    return 0;
}

  defalut和break

default子句:如果表达的值与所有的case标签的值都不匹配怎么办?结果就是所有语句都会被跳过而已,程序并不会中止,也不会报错。

写出下列代码的运行结果

int main()
{
    int n=1;
    int m=2;
    switch(n)
    {
    case 1:
        m++;
    case 2:
        n++;
    case 3:
        switch(n)
        {//switch允许嵌套使用
        case 1:
            n++;
        case 2
            m++;
            n++;
            break;
        }    
    case 4:
        m++;
        break;
    default:
    break;
    }
printf("m=%d,n=%d\n",m,n);
return 0;
}

//m=5;n=3

循环语句

while循环        for循环        do while循环

//while语法结构、、表达式为真进入循环
while(表达式)
    循环语句:

总结break在while循环中的作用:

        其实在循环中只要遇到break,就停止后面的所有的循环,之间终止循环,所以while重点break的用于永久终止循环的。

总结countinue在while循环中的作用就是:

        countinue是用于终止本次循环的也就是本次循环中continue后边的代买不会再执行,而是直接跳转到while语句的判断部分。进行下一次循环入口的判断

看接下来几段代码块

#incldue<sdtio.h>
int main()
{
    int ch=0;
    //EOF-end of file____-1文件结束标志
    while((ch=getchar())!=EOF)
     {
        putchar(ch);
     }
   return 0;
}
//键盘上按crtl+z结束
//读取字符串
while((ch=getchar())!=EOF)
{

}

 

int main()
{
    int ret=0;
    int ch=0;
    char password[20]={0};
    printf("请输入密码:")
    scanf("%s",password);//输入密码,并存放在password之中
//缓冲区中还剩余一个‘\n’
//读取一下'\n'
    while((ch=getchar())!='n')
    {

    }
    printf("请确认(Y/N)");
    ret=getchar();//Y/N
    if(ret==’Y‘)
    {
        printf("确认成功\n“);
    }
    else
    {
        printf("放弃确认\n");
    }
        return 0;
    
}
int main()
{
    int ch=0;
    while((ch=getchar())!=EOF)
    {
        if(ch<'0'||ch>'9')
            continue;
        putchar(ch);    
    }
return 0;
}

for循环............................

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值