【Day 15】switch statement

switch 是 C 提供的另一种条件判断的方式(python 没有的 !),本身只能比较数字字元。但如果使用适当的话,或许比 if 更有效率。

switch的语法会长这样:

switch(expression)
{
    case constant1:
        statements1;
        break;
    case constant2:
        statements2;
    ...
    default:
        default statements;
}

一开始,会先看看 switch 括号中的 expression,得到 expression 的数值(或字元)後,会一一与 case 设定的数字(或字元)比较,如果符合,就会执行以下的 statement,直到遇到 break 後才会离开 switch 的区块。如果都没有符合的数值(或字元),就会执行 default 里的 statements。default 是可以省略的!
或许这样讲解还有点笼统,我们用程序码来讲一次!

#include<stdio.h>
int main(){
	float a, b;
	char c;
	printf("输入两个数字 运算方法>>");
	scanf("%f %f %c", &a, &b, &c);
	switch(c){
		case '+':
			printf("a+b=%.2f", a + b);
			break;
		case '-':
			printf("a-b=%.2f", a - b);	
			break;
		case '*':
			printf("a*b=%.2f", a * b);
			break;
		case '/':
			printf("a/b=%.2f", a / b);
			break;
		default:
			printf("输入错误");
		
	}
	return 0;
}

输出结果:


这个程序,是输入两个数字,并可以决定对这两个数字做甚麽运算。
首先,我们会输入两个数字以及一个运算方式(+-*/),运算方式是一个字元,被存在变数 c 中。
然後,我们再用 switch 判断 c 是甚麽字元,并做出相对应的运算,如果不是四则运算的字元,我们输出"输入错误"来提醒使用者。
switch 里面的 break 值得我们拿出来讨论一下~

break

在 C 语言中 break 有两种用法:

  1. 一个回圈(loop)里面如果遇到 break,回圈立刻终止。(回圈的部分以後会再说明)
  2. 终止 switch 语句
    如果上面的 switch 程序的 case 中没有了 break 会怎麽样呢?
    他就会找到符合条件後,从那里开始往下执行!
    如果把上面程序码 break 删掉後:
#include<stdio.h>
int main(){
	float a, b;
	char c;
	printf("输入两个数字 运算方法>>");
	scanf("%f %f %c", &a, &b, &c);
	switch(c){
		case '+':
			printf("a+b=%.2f", a + b);
			
		case '-':
			printf("a-b=%.2f", a - b);	
		case '*':
			printf("a*b=%.2f", a * b);
		case '/':
			printf("a/b=%.2f", a / b);
		default:
			printf("输入错误");
		
	}
	return 0;
}

输出结果:

今天讲完了 switch,明天要开始进入回圈单元了~


<<:  Day 30 结语和 Azure 的学习资源- 打完魔王之後的最终章通常是剧情动画

>>:  Day 30:Google Map 结合口罩资料 & 铁人赛最後一天

Day20 - RB tree

大家好,我是长风青云。今天是铁人赛的20天,但我影片说错了QQ ...

[day-27] U-net Experiments (3) - performance 2

前言 除了 EM segmentatation challenge 比赛之外,还有参加了另外一个比赛...

Day 13 文字人脸效果

文字人脸效果 教学原文参考:文字人脸效果 这篇文章会介绍使用 GIMP 的图层混合功能,搭配文字输入...

Day 1:AI与钱的结合- 轻松的简介

先读References: 很酷的网页: https://www.sinotrade.com.tw/...

Day26-玩弄一下IBDesignable与IBInspectable来方便设置渐层功能

想要玩弄这两个attribute,就得对他们有所了解,否则玩得不尽兴,因为很有可能你设置了这两个属性...