C++ switch语句和ceil()、pow()、round()及sqrt()函数

一个switch语句允许测试一个变量等于多个值时的情况。每个值称为一个case,且被测试的变量会对每个switch case进行检查。

switch语句

语法

C++ 中 switch 语句的语法:

cpp

switch(expression){
    case constant-expression :
        statement(s);
        break; // 可选的
    case constant-expression :
        statement(s);
        break; // 可选的

    // 您可以有任意数量的 case 语句
    default : // 可选的
        statement(s);
}

switch语句必须遵循下面的规则:

  1. switch 语句中的expression必须是一个整型或枚举类型,或者是一个class类型,其中class 有一个单一的转换函数将其转换为整型或枚举类型。
  2. 在一个 switch 中可以有任意数量的 case 语句。每个case后跟一个要比较的值和一个冒号。
  3. case 的 constant-expression必须与switch中的变量具有相同的数据类型,且必须是一个常量或字面量。
  4. 当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。
  5. 当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行。
  6. 不是每一个 case 都需要包含 break。如果 case 语句不包含 break,控制流将会继续 后续的 case,直到遇到 break 为止。
  7. 一个 switch 语句可以有一个可选的 default case,出现在 switch 的结尾。default case 可用于在上面所有 case 都不为真时执行一个任务。default case 中的 break 语句不是必需的。

流程图

Switch语句

嵌套 switch 语句

您可以把一个 switch 作为一个外部 switch 的语句序列的一部分,即可以在一个 switch 语句内使用另一个 switch 语句。即使内部和外部 switch 的 case 常量包含共同的值,也没有矛盾。
C++ 中的 switch 语句允许至少 256 个嵌套层次。

cpp

switch(ch1) {
    case 'A':
        cout << "这个 A 是外部 switch 的一部分";
        switch(ch2) {
            case 'A':
                cout << "这个 A 是内部 switch 的一部分";
                break;
            case 'B': // 内部 B case 代码
        }
        break;
    case 'B': // 外部 B case 代码
}

pow()函数

与许多编程语言不同的是,C++没有指数运算符。计算数字的幂需要使用库函数。
pow函数的作用是求幂。

头文件

math.h/cmath

数学公式

pow(x , y)

计算x的y次幂

返回值

返回幂指数的结果,即x的y次幂。若x为负数且y为小数,或者x为0且y小于等于0,将出现结果错误。

返回类型

double型。
使用 pow 函数时应遵循一些指导原则:

  1. 程序必须包含 cmath 头文件;
  2. 在传递给函数的两个参数中,至少第一个参数应该是 double 类型的,当然也可以两个都是;
  3. 因为 pow 函数返回一个 double 值,所以被赋值的任何变量也应该是 double 类型的;

可以将 pow 函数视为一个“黑箱”,它接收 2 个数字,然后发送出第 3 个数字。发出来的数字是以第一个数字为底数、第二个数字为指数的幂值。
pow()函数

sqrt()函数

开平方使用sqrt()函数

头文件

math.h/cmath

功能

double sqrt(double x)

返回 x 的平方根
sqrt函数

abs()函数

int abs(int x) 返回 x 的绝对值。

int abs(int x)

该函数返回 x 的绝对值。

头文件

math.h/cmath

ceil()函数

原型

double ceil(double x)

该函数返回不小于 x 的最小整数值。

功能

把一个小数向上取整。

头文件

math.h/cmath

round函数

原型

double round(double x)

round()用于舍入给定的数字,该数字可以是float或double。它将舍入函数中提供的参数返回最接近的整数值,中间情况舍入为零。

功能

把一个小数四舍五入。

头文件

math.h/cmath

实例

四则运算计算器

问题描述
使用switch语句制作一个四则运算计算器,实现加减乘除功能。
要求:结果保留两位小数。

输入
两个浮点型的数字,一个字符。

输出
一个浮点型的数字。

样例

样例输入 #1

2 + 3

样例输出 #1

5.00

样例输入 #2

5 / 2

样例输出 #2

2.50

题解

cpp

#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
    double a = 0,b = 0,d = 0;
    char c = 0;
    cin>>a>>c>>b;
    switch(c)
    {
        case '+':d = a + b;break;
        case '-':d = a - b;break;
        case '*':d = a * b;break;
        case '/':d = a / b;break;
    }
    printf("%.2lf",d);
    return 0;

球的体积

问题描述
已知球的体积公式为:V=4/3πr³;其中V表示体积,π表示圆周率(π取3.14),r表示球的半径。已知一个半径r(0 < r <= 1000),求出这个球的体积。(结果保留3位小数)请使用pow()函数。
输入
输入r的值,表示球的半径
输出
输出一个数,表示球的体积
样例输入

10

样例输出

4186.667

题解

cpp

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main()
{
    double v = 0,pi = 3.14,r = 0;
    cin>>r;
    v = 4.0/3*pi*pow(r,3);
    printf("%.3lf",v);
    return 0;
}

恩格尔系数

问题描述
恩格尔系数是德国统计学家恩格尔在19世纪提出的反映一个国家和
地区居民生活水平状况的定律,计算公式为:

N = 人均食物支出金额 / 人均总支出金额 * 100%

联合国根据恩格尔系数的大小,对世界各国的生活水平有一个划分标准,即一个国家平均家庭恩格尔系数大于等于60%为贫穷;50%~60%为温饱;40%~50%为小康;30%~40%属于相对富裕;20%~30%为富裕;20%以下为及其富裕。
输入
输入两个浮点数。
输出
生活水平。
样例输入

10 20

样例输出

温饱

题解

cpp

#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
    double a = 0,b = 0,n = 0;
    cin>>a>>b;
    n = a / b * 100;
    if (n >= 60)
        cout<<"贫穷";
    else if (n >= 50 && n < 60)
        cout<<"温饱";
    else if (n >= 40 && n < 50)
        cout<<"小康";
    else if (n >= 30 && n < 40)
        cout<<"相对富裕";
    else if (n >= 20 && n < 30)
        cout<<"富裕";
    else
        cout<<"极其富裕";
    return 0;
}

计算a、b、c的n次方和

问题描述
输入四个正整数a、b、c、n,(a、b、c均小于200,n<=6),求a、b、c的n次方和。
输入
四个正整数,分别代表a、b、c、n的值
输出
一个正整数。
样例输入

11 22 33 4

样例输出

1434818

题解

cpp

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main()
{
    int a = 0,b = 0,c = 0,n = 0,d = 0;
    cin>>a>>b>>c>>n;
    a = pow(a,n);
    b = pow(b,n);
    c = pow(c,n);
    cout<<a+b+c;
    return 0;
}

小明买书

问题描述
春节来临,小明想用自己的零花钱购买一些书送给贫困山区的小朋友,他来到书店挑了4本书,每本书的价格分别为6元、13元、15元、20元,小明想把钱用光同时尽量书本数量最多(小明的零花钱为大于等于35元的挣钱)。
输入
小明的零花钱。
输出
每种价格书购买的数量。
样例输入

37

样例输出

6元:4 13元:1 15元:0 20元:0

题解

cpp

#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
    int x = 0,a = 0,b = 0,c = 0,d = 0;
    cin>>x;
    a = x / 6;
    switch (x % 6)
    {
        case 1:a -= 2,b += 1;break;
        case 2:a -= 3,d += 1;break;
        case 3:a -= 2,c += 1;break;
        case 4:a -= 4,b += 1,c += 1;break;
        case 5:a -= 5,c += 1,d += 1;
    }
    cout<<a<<" "<<b<<" "<<c<<" "<<d;
    return 0;
}
暂无评论,抢沙发?
gravatar头像

发表评论

您的电子邮箱地址不会被公开。