C语言分支语句-总结笔记-创新互联

分支语句

C语言是结构化的编程语言。C语言对生活中的事情进行抽象,总结为顺序、判断、循环关系。

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册、网页空间、营销软件、网站建设、科尔沁网站维护、网站推广。

概述:

判断(分支)语句:

  • if
  • switch

循环语句:

  • while
  • for
  • do while

go to

1.什么是语句

C语言的语句可以分为一下几类:

  1. 表达式语句
  2. 函数调用语句
  3. 控制语句
  4. 复合语句
  5. 空语句

本次介绍的是控制语句。

控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言有三种结构:顺序结构、选择结构、循环结构)

可以分为三类:

  • 条件判断语句(分支语句):if语句、switch语句;
  • 循环语句:do while语句、while语句、for语句;
  • 转向语句:break语句、goto语句、continue语句、return语句

下面我们将逐一介绍

2.分支语句(选择结构) 2.1 if语句

在你面前有两个选择或者多个选择时。example:周一、三、五选择吃火锅,二四六选择吃盖饭,周日随缘。那么这个例子就需要进行选择,在C语言中可以使用if语句实现。

//语法结构
//单个if
if (表达式)
    语句;

//if与else
if (表达式)
    语句;
else
    语句二;

//多个选择时,可以用else if
if (表达式)
    语句一;
else if (表达式)
    语句二;
else 
    语句三;
  • 对于单if语句,如果if语句后面的表达式成立,则执行if下面的代码。
  • 对于else if语句,如果 if 语句的表达式成立则执行 if 下面的代码,否则执行 else 后面的语句。
  • 对于多个选择。自上而下按顺序判断,如果有满足 if 或 else if 的表达式时,执行相应的语句。if 和 else if 语句没有满足条件的,则执行else的语句
  • else 或 else if 与最近的 if配套,不能只看缩进关系。每个判断后,语句如果包含多个(多行),应使用 { }代码块.

代码演示:

//one

#includeint main()
{int age = 0;
    scanf("%d", &age);
    if (age< 18)
    {printf("未成年人\n");
        printf("禁止吸烟\n");
    }
    return 0;
}
//two

#includeint main()
{int age = 0;
    scanf("%d",&age);
    if (age<18)
        printf("未成年");
    else
        printf("已成年");
    
	return 0;
}
//three

#includeint main()
{
    int age = 0;
    scanf("%d",&age);
    if (age< 18)
        printf("未成年");
    else if (age>=18 && age<=30)
        printf("青年");
     else if (age>30 && age<=50)
        printf("中年");
     else
         printf("老年");
    return 0;
}

以上年龄划分仅为演示代码。

总结:

  • 如果语言表达式为真,则语句执行。
  • C语言中用 0 表示假,用非 0 表示真。

如果条件成立,要执行多条语句,要使用代码块,上面代码 one 中就是使用了代码块。一对 { } 就是一个代码块。

#includeint main()
{if(表达式)
   {语句列表1;
   }
    else
   {语句列表2;
   }
    return 0;
}
2.1.1 悬空else

看以下代码:

#includeint main()
{
    int a = 0;
    int b = 2;
    if (a==1)
        if (b==1)
            printf("I am so happy today");
    else 
        printf("I am so sad today");
	return 0;
}

那么上面的代码输出是什么呢?

答案是没有输出。因为 else 是与最近的 if 配套的,不能只看缩进,else 与 (b==1) 这层 if 搭配。由于判断 a=1 的 if 条件已经不成立了,所以根本不会运行 表达式一后面的执行语句。

改正

//适当的使用 { } 可以是代码的逻辑更清晰
//要有良好的写代码的习惯和让人舒服的风格
#includeint main()
{
	int a = 0;
	int b = 2;
	if (a == 1)
	{
		if (b == 2)
			printf("I am so happy today");
		else
			printf("I am so sad today");
	}
	return 0;
}
2.1.2 if风格对比
//代码1
if (condition)
{
	return x;
}
return y;

//代码2
if (condition)
{
	return x;
}
else 
{
	return y;
}

其实上面两个代码的作用是一样的,代码二逻辑更为清晰。像我一样的初学者,建议代码二。

//代码三
int main()
{
    int num = 1;
    if (5 == num)
    {
        printf("I am happy");
    }
	return 0;
}

if 的判断语句这样写的话,如果出现少些一个等号这样的错误,会直接报错导致程序运行不了,防止条件判断语句变为 赋值语句,程序能运行但是有 bug。

2.1.3小练习
//判断一个数是否为奇数,是的话就输出。
int main()
{
    int num = 0;
    scanf("%d",&num);
    if (num %2 == 1)
        printf("%d\n",num);
	return 0;
}
//打印0~100之间的奇数
//这里会用到循环,主要看if
int main()
{
	int main()
{
	int i = 0;
	while (i<= 100)
	{
		if (i % 2 == 1)
		{
			printf("%d\n",i);
		}
		i++;
	}

	return 0;
}
2.2 switch语句

switch语句也是分支语句的一种。常常用于多分支的结构。

比如:按照输入的数字输出对应的星期几,那么我们也可以用 7个 if 语句判断实现。但是代码冗杂,这是哦我们可以使用 switch 语句。

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

语句项是什么?

//语句项是一些case语句
case 整型常量表达式:
	语句;

通过代码来看一下:

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

那么结果是什么呢?

如果输入6,会发现输出 星期六 星期天。

why?

是因switch语句的执行顺序是判断成功自上而下一次执行。也就是说输入 6 的时候。case 6 成立输出星期六,但是没有终止,因此会输出星期天。

以上情况可以用break解决

#includeint main()
{
    int day = 0;
    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;
   }
    return 0;
}

那么如果我们现在要求:输入1~5输出“工作日”,输入6或7输出“休息日”。

代码:

int main()
{
    int day = 0;
    scanf("%d",&day);
    switch (day)
    {
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
            printf("工作日");
            break;
        case 6:
        case 7:
            printf("休息日");
            break;
    }
    return ;
}

break语句 的实际效果是把语句列表划分为不同的分支部分。

2.2.x default子句

如果我们输入的条件与case都不一致怎么办?

答:使用default子句,当case子句的条件都不满足的时候,便会执行 default 子句。

#includeint 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

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


名称栏目:C语言分支语句-总结笔记-创新互联
新闻来源:http://ybzwz.com/article/ddihho.html