前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言多分支语句-学习八

C语言多分支语句-学习八

作者头像
XG.孤梦
发布2022-02-28 21:23:02
7130
发布2022-02-28 21:23:02
举报
文章被收录于专栏:日志随记日志随记

switch语句

  • switch语句用来实现多分支选择结构
  • 一般形式:
代码语言:javascript
复制
switch(表达式)  //表达式必须为整数类型,包括字符型
{ 
    case 常量表达式1:  语句1;  break;
    case 常量表达式2:  语句2;  break;
    ....
    case 常量表达式n:  语句n;  break;
    default:  语句n+1
}
  • 说明
    • 在case后的各常量表达式值不能相同,否则会出现错误。
    • 在case后允许有多个语可以不用{}括起来,没有语句时,什么也不做,执行后面case的语句,直到遇到break
    • case和default子句的先后顺序可以变动,而不会影响程序执行结果。
    • default子句可以省略不用
例子

要求按照考试成绩的等级输出百分制分数段,A等为90分以上,B等为70~89分,c等为60一69分,D等为60分以下。成绩的等级由键盘输入。

代码语言:javascript
复制
#include <stdio.h>

void main() {
    char grade;
    scanf_s("%c", &grade);

    switch (grade)
    {
    case 'A': printf("90分以上\n"); break;
    case 'B': printf("70-89分\n"); break;
    case 'C': printf("60-79分\n"); break;
    case 'D': printf("60分以下\n"); break;

    default:
        printf("输入错误!\n");
    }
}

例2:按照输入的百分制分数,打印相应的评语。要求:用switch语句实现。

  • 90—100 优秀
  • 80—89 良好
  • 70—79 中等
  • 60—69 及格
  • <60 不及格
代码语言:javascript
复制
#include <stdio.h>

void main() {
    float score;
    scanf_s("%f", &score);

    switch ((int)(score/10))
    {   // case后面只能是常量表达式值,不能是关系表达式
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
    case 5: printf("不及格\n"); break;
    case 6: printf("及格\n"); break;
    case 7: printf("中等\n"); break;
    case 8: printf("良好\n"); break;
    case 9:
    case 10: printf("优秀\n"); break;
    default:
        printf("输入错误!\n");
    }
}

选择结构

从键盘输入一个年份,判断是否是闰年,将结果输出到控制台

代码语言:javascript
复制
#include <stdio.h>

void main()
{
    int year, leap;
        scanf_s("%d", &year); 
    if (year % 4 == 0)
        if (year % 100 == 0)
            if (year % 400 == 0)
                leap = 1; 
            else leap = 0;
        else leap = 1;
    else leap = 0;

    switch (leap) {
    case 1: printf("%d是闰年\n", year); break;
    case 0: printf("%d不是闰年\n", year); break;
    }
}

求 ax² + bx + c = 0 方程的解。

  • 解题思路:处理以下各情况
    • a = 0 不是二次方程
    • b² -4ac = 0 有两个相等实根
    • b² -4ac > 0 有两个不等实根。
    • b² -4ac < 0 有两个共辄复根。
代码语言:javascript
复制
#include <stdio.h>
#include <math.h>

void main()
{
    float a,b,c,disc,x1,x2,realpart,imagpart;

    scanf_s("%f %f %f", &a, &b, &c);

    if (fabs(a) <= 1e-6)
        printf("这个方程不是一元二次方程\n");
    else
    {
        disc = b * b - 4*(a * c);
        if (fabs(disc) <= 1e-6)
            printf("方程有两相同的实数根为%.2f\n", -b /(2 * a));
        else if (disc > 1e-6) {
            x1 = (-b + sqrt(disc)) / (2 * a);
            x2 = (-b - sqrt(disc)) / (2 * a);
            printf("方程有两不同的实数根为 x1=%.2f x2=%.2f\n",x1,x2);
        }
        else
        {
            realpart = -b / (2 * a);
            imagpart = sqrt(-disc)/ (2 * a);
            printf("方程有两个共辄复根\n %.2f+%.2fi\n", realpart, imagpart);
            printf(" %.2f-%.2fi\n", realpart, imagpart);
        }
    }
}
  • 不能用if (a==0)
    • 因为a是实数,而实数在计算和存储时会有一些微小的误差。
    • 采取的办法是判别 a的绝对值 是否小于一个很小的数(如 10^-6 如果小于此数,就认为a等于0。)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-01-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • switch语句
    • 例子
    • 选择结构
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档