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

08-0

样例输入 #2

5 / 2

样例输出 #2

08-19

题解

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

样例输出

2023-087

题解

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;
}
那年 • 这天
写于2022年1月5日
没有伞的孩子□□□□,必须学会努力奔跑□□□。

赞助 点赞 3 unread messages

暂无评论,抢沙发?

发表回复

您的电子邮箱地址不会被公开□□□□□□。 必填项已用*标注