C语言 switch语句详细讲解 简单计算器及PTA例题季节判断,今天星期几-1(switch语句实现), 数据按需处理

一,switch语句

1,使用格式

 2,注意事项

(1)当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。

(2)不是每一个 case 都需要包含 break。如果 case 语句不包含 break,控制流将会 继续 后续的 case,直到遇到 break 为止。

(3)上面所有 case 都无法判断结果时,可用default代替其他所有情况。

(4)case后的表达式(的结果)必须是一个常量或字面量,不能是字符等。

(5)不管有几个case,switch后面都需要加大括号

二,例题

接下来来看几个例题就能完全明白

1,"简单计算器"

题目:输入两个整数和一个运算符,输出结果。

输入样例:6+7 输出结果:13

代码如下:

#include<stdio.h>
int main()
{
	int a,b;
	char c;//运算符用字符数据类型定义 
	scanf("%d%c%d",&a,&c,&b);
	switch(c)//判断的是运算符类型
	{
		case '+':printf("%d",a+b);break; 
		//单引号将字符括起来相当于用一个整数来表达(参考之前文章里的ASCII表讲解) 
		case '-':printf("%d",a-b);break; 
		case '*':printf("%d",a*b);break; 
		case '/':printf("%d",a/b);break;
		default:printf("error"); 
	} 
	return 0;
}

2.季节判断

设计程序,实现季节判断,若输入 1、2、3月,则输出Spring;若输入4、5、6月,则输出Summer;若输入7、8、9月,则输出Autumn;若输入10、11、12月,则输出Winter;若输入其他月份,输出Input Error。

要求:使用switch语句实现。

输入格式:

输入一个整数表示月份。

输出格式:

根据月份输出相应的季节。

代码如下:

#include<stdio.h>
int main()
{
    int x;
    scanf("%d",&x);
    switch(x)
    {   
        case 1:
        case 2:
        case 3:printf("Spring"); break;//不需要每一个case后面都必须有表达式和break
        case 4:
        case 5:
        case 6:printf("Summer");break;
        case 7:
        case 8:
        case 9:printf("Autumn");break;
        case 10:
        case 11:
        case 12:printf("Winter");break;
        default:printf("Input Error");
    }
    return 0;
}

3,今天星期几-1(switch语句实现)

假如某月的1日是星期三,那么输入该月中的日期,要求输出对应的星期数。如输入3,则输出Friday。

输入格式:

输入该月中的日期(范围为1-31)

输出格式:

如输入的数据在1~31范围内,则输出对应的英文单词:星期几;否则输出:Error

输入样例1:

3

输出样例1:

在这里给出相应的输出。例如:

Friday

输入样例2:

32

输出样例2:

在这里给出相应的输出。例如:Error

这个题用switch就显得很复杂,因为switch语句的局限性是只能做到完全相等的匹配

这题我的做法应该比较麻烦,仅供参考,欢迎大家给出好的解决方案

我是利用周期性,if-else语句划分范围去将日期减去相应周期

代码如下:

#include <stdio.h>
int main()
{
    int x;
    scanf("%d",&x);
    if(x>7 && x<15)
    x=x-7;
    else if(x>14 && x<22)
    x=x-14;
    else if(x>21 && x<29)
    x=x-21;
    else if(x>28 && x<32)
    x=x-28;
    switch(x)
    {
        case 1:printf("Wednesday");break;
        case 2:printf("Thursday");break;
        case 3:printf("Friday");break;
        case 4:printf("Saturdy");break;
        case 5:printf("Sunday");break;
        case 6:printf("Monday");break;
        case 7:printf("Tuesday");break;
        default:printf("Error");
    }
    return 0;
}

4.数据按需处理

输入一个实数和一个1-4的整数,根据该整数的值,输出实数对应的运算结果。数字1-4与计算功能的对应关系为:
1 输出相反数(保留两位小数)
2 输出平方数(保留两位小数)
3 输出实数的整数部分(取整数部分)
4 输出“EXIT”

要求:使用switch语句实现。

输入格式:

输入一个实数和一个整数。题目保证实数在float数据范围内,整数是1-4中的数。

输出格式:

输出对应的运算结果。

代码如下:

#include <stdio.h>
int main()
{
    int y,z;
    float x;
    scanf("%f %d",&x,&y);
    if(y==3)
/*存储类型是浮点型而输入的整数是3时输出类型变为整数,所以提前判断并将数据储存到整数类型变量z中。*/
        z=x;
  switch(y)
  {
      case 1:printf("%.2f",-1*x);break;
      case 2:printf("%.2f",x*x);break;
      case 3:printf("%d",z);break;
      case 4:printf("EXIT");break;
  }
    return 0;
}

以上就是我的学习记录,希望有所帮助,互相进步

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值