续接上周周记,控制语句(顺序语句,选择语句,循环语句)

#include<stdio.h>
int main(void)
{    
    char a;
    char b = "hello world";
    a = getchar(b);  //字符输入
    putchar(a);   //字符输出
    return 0;
}

目录

1.控制语句

1.1顺序语句

1.2选择语句

1.2.1 单分支选择语句

1.2.2 双分支语句

1.2.3 多分支if语句

1.2.4 switch语句

1.3 循环语句

1.3.1 for语句


1.控制语句

C语言中控制语句主要三种,分别是顺序语句(它是最基本的控制语句,使用频率最高),选择语句(if,if  else,switch case)和循环语句(for,while,do  while)

1.1顺序语句

语句按照一定的先后顺序去执行

//顺序语句
#include<stdio.h>
int main(void)
{
    int a = 2;
    int b = 3;
    int c;
    c = a + b;
    printf("c = %d\n",c);
    return 0;
}

//以上就是按照先后顺序一句一句去执行
//结果为c = 5

1.2选择语句

1.2.1 单分支选择语句

if(表达式)

{

        语句;

}

判断表达式的值是否为真,若为真,执行“语句”;反之,不执行。在C语言中,非0为真,0为假。

#include<stdio.h>
int main(void)
{
    int a = 8;
    int b = 2;
    if(a>b)
    {
        a = b;
    }           //如果满足a>b,将b的值赋给a;否则不执行“a = b;”
    printf("a = %d,b = %d\n",a,b);  //满足a>b,所以将b的值赋给a,a此时的值为2
    return 0;
}

//结果为:a = 2,b =,2

1.2.2 双分支语句

if(表达式)

{

        语句1;

}

else

{

        语句2;

}

判断表达式的值是否为真,若为真,执行“语句1”;反之,执行“语句2”。

//案例:输入一个年份,判断是闰年还是平年
//闰年:能被4整除(取余为0)但不能被10整除(取余不为0),或者能被400整除
#include<stdio.h>
int main()
{
    int year;  //定义一个整型变量,用来保存输入的年份
    printf("请输入一个年份:\n");
    scanf("%d",&year);
    if((0 == year%4 && 0 != year%100) || (0 == year%400))  //if后不能有分号
    {
        printf("%d年为闰年",year);
    }
    else                         //else后面不能有表达式
    {
        printf("%d年为平年",year);
    }
    return 0;
}

1.2.3 多分支if语句

if(表达式1)
{
    语句1;
}
else  if(表达式2)
{
    语句2;
}
else   if(表达式3)
{
     语句3;
}
··· ···
else   if(表达式n)
{
    语句n;
}
else
{
    语句n+1;
}

从上至下,以此判断表达式的值,如果表达式的值为真,则执行相应的语句,然后跳出整个if语句

//案例:输入一个成绩,判断成绩的等级
//60分一下等级为D(不包含60分),60~70分等级为C(不包含70分),70~80分等级为B(不包含80分),
//80分以上等级为A,满分为100,判断区间为0~100

#include<stdio.h>
int main(void)
{
    int chj;
    printf("请输入一个成绩:\n");
    scanf("%d",&chj);
    if(chj<=0 && chj<60)
    {
        printf("%d分为等级D",chj);
    }
    else  if(chj>=60 && chj<70)
    {
        printf("%d分为等级C",chj);
    }
     else  if(chj>=70 && chj<80)
    {
        printf("%d分为等级B",chj);
    }
     else  if(chj>=80 && chj<101)
    {
        printf("%d分为等级A",chj);
    }
    else 
    {
        printf("输入错误,已超出判断范围");  
    }
    return 0;
}

1.2.4 switch语句

switch(表达式)    //后面没有分号
{
    case 标号1:
                语句1;
    case 标号2:
                语句2;
    case  标号3:
                语句3;
    ··· ···
    case  标号n:
                语句n;
    default :
                语句n+1;
}

注意:(1)表达式不能为float型

           (2)标号必须为常量

           (3)表达式 = 标号 时,执行冒号后面的语句,直到switch语句结束为止;或者碰到break 语句结束。

//判断以下程序执行的结果
#include<stdio.h>
int main(void)
{
    int a = 5;
    switch(a)
    {
        case 2: printf("2\n");
        befault: printf("不存在该选项\n");
        case 4:
        case 1: printf("1\n");
        case 3: printf("3\n"); break;
        case 0: printf("0\n");
    }
    return 0;
}
//给a初始化为5,在switch语句中寻找标号5,但是不存在标号5,则执行befault那一行
//打印出“不存在该选项”;然后依次向下执行case 4:无语句继续向下执行,case 1: 打印“1”,
//case 3: 打印“3”,直到case 3: 后面有break语句,结束switch语句。打印结果如下:
//结果为:不存在该选项
//        1
//        3

案例:输入年,月,输出这一年的这个月有多少天 

//案例:输入年,月,输出这一年的这个月有多少天
//2月要注意,先要判断是闰年(29天)还是平年(28天)
//闰年的判断条件:能被4整除但不能被100整除,或者能被400整除
//1,3,5,7,8,10,12月,每月有31天
//4,6,9,11月,每月有30天

#include<stdio.h>
int main(void)
{
    int year,month;
    printf("请输入一个年份和月份:\n");
    scanf("%d%d",&year,&month);
    switch(month)
{
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12: printf("%d年%d月有31天\n",year,month); break;
        case 4:
        case 6:
        case 9:
        case 11: printf("%d年%d月有30天\n",year,month); break;
        case 2:
                if((0 == year%4 && 0 != year%100) || year%400 == 0)
                {
                    printf("%d年%d月有29天\n",year,month);    
                }
                else
                {
                    printf("%d年%d月有28天\n",year,month);  
                }
       befault: printf("输入错误"); break;
}
    return 0;
}

1.3 循环语句

循环三要素:循环的起始条件,循环的终止条件,循环变量的变化

1.3.1 for语句

for(表达式1;表达式2;表达式3)
{
    语句;
}

//表达式1 为循环变量的起始条件
//表达式2 为循环变量的终止条件
//表达式3 为循环变量的变化

先执行表达式1的值,再执行表达式2,如果表达式2的判断结果为真,则执行循环体中的“语句”,最后执行表达式3,如此循环,直到表达式2 的判断结果为假时,跳出循环。

1.省略“表达式1”

//不省略表达式1
#include<stdio.h>
int main()
{
    int i;  //定义一个循环变量
    for(i=0;i<5;i++)
    {
        printf("hello"\n);
    }
    return 0;
}

//表达式1省略
/*
#include<stdio.h>
int main()
{
    int i = 0;  //定义一个循环变量,赋初值为0
    for(;i<5;i++)  //表达式1可以省略,但是后面的分号不能省略
    {
        printf("hello"\n);
    }
    return 0;
}

//省略表达式1时,需要在for之前给循环变量赋初值
*/

2.省略“表达式2” 

//不省略表达式2
#include<stdio.h>
int main()
{
    int i;  //定义一个循环变量
    for(i=0;i<5;i++)
    {
        printf("hello"\n);
    }                          //打印五次“hello”
    return 0;
}

//表达式2省略
/*
#include<stdio.h>
int main()
{
    int i;  //定义一个循环变量
    for(i=0;;i++)  //表达式2可以省略,但是后面的分号不能省略
    {
        printf("hello"\n);
    }
    return 0;
}

//省略表达式2时,为无限循环/死循环,打印n个“hello”
*/

3.省略“表达式3”

//不省略表达式3
#include<stdio.h>
int main()
{
    int i;  //定义一个循环变量
    for(i=0;i<5;i++)
    {
        printf("hello"\n);
    }                          //打印五次“hello”
    return 0;
}

//表达式3省略
/*
#include<stdio.h>
int main()
{
    int i;  //定义一个循环变量
    for(i=0;i<5;)  //表达式3省略
    {
        printf("hello"\n);
        i++;    //在不改变题意的前提下,i++移动位置
    }
    return 0;
}

*/

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值