小王子

聆听小王子,守望成长,静待花开

小王

问题描述

编写程序,计算下列分段函数y=f(x)的值。
y=-x+2.5; 0<=x<5
y=2-1.5(x-3)(x-3); 5<=x<10
y=x/2-1.5; 10<=x<20

输入

一个浮点数N0<=N<20

输出

输出N对应的分段函数值:f(n)。
结果保留到小数点后三位。

样例输入

1.0

样例输出

1.500

题解

cpp

#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
    double N = 0,y = 0;
    scanf("%lf",&N);
    if (N > 0 && N < 5) 
        y = -N +2.5; 
    else if (N >= 5 && N < 10) 
        y = 2 - 1.5*(N-3)*(N-3); 
    else if (N>=10 && N<20)
        y = N / 2 -1.5;
    printf("%.3lf",y);
    return 0;
}
3年前 (12月25日)
小王

问题描述

读取两个正整数值A和B。
如果其中一个是另一个的整数倍,则输出Sao Multiplos ,否则输出 Nao sao Multiplos。

输入格式

共一行,两个整数A和B。

输出格式

按题目所述,输出结果。

数据范围

0<AB<100

输入样例

6 24

输出样例

Sao Multiplos

题解一

cpp

#include <iostream>
using namespace std;
int main()
{
    int A = 0,B = 0;
    cin>>A>>B;
    if (A % B == 0 || B % A == 0)
        cout<<"Sao Multiplos";
    else
        cout<<"Nao Sao Multiplos";
    return 0;
}

题解二

cpp

#include <iostream>
using namespace std;
int main()
{
    int A = 0,B = 0;
    cin>>A>>B;
    switch (A % B && B % A)
    {
        case 0:cout<<"Sao Multiplos";break;
        default:cout<<"Nao Sao Multiplos";
    }
    return 0;
}
3年前 (12月24日)
小王

BMI指数是国际上常用的衡量人体胖瘦程度的一个标准,其算法是m/h²(40<m<1201.4<h<20),其中m是指体重(千克),h是指身高(米)。不同体型范围与判定结果如下:
小于185:体重过轻,输出Underweight;大于等于185且小于24正常体重,输出Normal;大于等于24: 肥胖,不仅要输出BMI值(使用cout的默认精度),然后换行,还要输出Overweight。

问题描述

现在给出体重和身高数据,需要根据BMI指数判断体型状态并输出对应的判断。
对于非C++语言,在输出时,请四舍五入保留六位有效数字输出,如果小数部分存在后缀0,不要输出后缀0。
请注意,保留六位有效数字不是保留六位小数。例如114.5149应该输出为114.515,9198.10应该输出为9198.1。

输入格式共一行。
第一行,共2个浮点数,m, h分别表示体重(单位为kg)和身高(单位为m)。

输入

70 1.72

输出

Normal

题解

cpp

#include <iostream>
using namespace std;
int main()
{
    double m = 0, h = 0, BMI = 0;
    cin>>m>>h;
    BMI = m / (h * h);
    if (BMI < 18.5)
        cout<<"Underweight";
    else if (BMI <= 24 && BMI >= 18.5)
        cout<<"Normal";
    else
    {
        cout<<BMI<<endl;
        cout<<"Overweight";
    }
    return 0;
}
3年前 (12月23日)
小王

问题描述

读取三个整数并按升序对它们进行排序。

输入格式

共一行,包含三个整数。

输出格式

首先,将三个整数按升序顺序输出,每行输出一个整数。
然后,输出一个空行。
紧接着,将三个整数按原输入顺序输出,每行输出一个整数。

数据范围

-100<输入整数<100

输入样例

7 21 -14

输出样例

-14
7
21

7
21
-14

题解

cpp

#include <iostream>
using namespace std;
int main()
{
    int a = 0,b = 0,c = 0,x = 0,d = 0,z = 0;
    cin>>a>>b>>c;
    if (a <= b && a <= c)
        x = a;
    else if (b <= a && b <= c) 
        x = b; 
    else 
        x = c; 
    if (a >= b && a >= c)
        d = a;
    else if (b >= a && b >= c)
        d = b;
    else
        d = c;
    z = a + b + c - x - d;
    cout<<x<<endl;
    cout<<z<<endl;
    cout<<d<<endl;
    cout<<" "<<endl;
    cout<<a<<endl;
    cout<<b<<endl;
    cout<<c<<endl;
    return 0;
}

演示

3年前 (12月21日)
小王

问题描述

一个最简单的计算器,支持+,*四种运算。仅需考虑输入输出为整数的情况,数据和运算结果不会超过int表示的范围。

输入

输入只有一行,共有三个参数,其中第1、2个参数为整数,第3个参数为操作符(+*)。

输出

输出只有一行,一个整数,为运算结果。然而:
1如果出现除数为0的情况,则输出:Divided by zero!
2.如果出现无效的操作符(即不为+*/之一),则输出:Invalid operator!

样例输入

1 2 +

样例输出

3

题解

cpp

#include <iostream>
using namespace std;
int main()
{
    int a = 0,b = 0,d = 0;
    char c = 0;
    cin>>a>>b>>c;
    if (c != '+' && c != '-' && c != '*' && c != '/')
        cout<<"Invalid operator!";
    else if (c == '+')
    {
        d = a + b;
        cout<<d;
    }
    else if (c == '-')
    {
        d = a - b;
        cout<<d;
    }
    else if (c == '*')
    {
        d = a * b;
        cout<<d;
    }
    else if (c == '/' && b != 0)
    {
        d = a / b;
        cout<<d;
    }
    else if (c == '/' && b == 0)
        cout<<"Divided by zero!";
    return 0;
}

演示

3年前 (12月19日)
小王

问题描述

读取对应于一个人的年龄(以天为单位)的整数值,并转化为年,月和日表示方式输出,年、月、日分别对应 ano(s),mes(es),dia(s)。

注意

为了方便计算,假设全年365天,每月30天。数据保证,不会出现12个月和几天的情况,例如360、363或364。

输入格式

输入一个整数N。

输出格式

参照输出样例,输出转换后的天数表达。

数据范围

1 ≤ N ≤ 1000000

输入样例

400

输出样例

1 ano(s)
1 mes(es)
5 dia(s)

题解

cpp

#include <iostream>
using namespace std;
int main()
{
    int N = 0, y = 0, m = 0, d = 0;
    cin >> N;
    y = N / 365;
    m = (N - y * 365) / 30;
    d = N - y * 365 - m * 30;
    cout << y << " ano(s)" << endl;
    cout << m << " mes(es)" << endl;
    cout << d << " dia(s)";
    return 0;
}

演示

3年前 (12月17日)
小王

问题描述

从键盘输入一指定金额(以元为单位,如345),然后输出支付该金额的各种面额的人民币数量,显示100元,50元,20元,10元,5元,1元各多少张,要求尽量使用大面额的钞票。

输入

一个小于1000的正整数。

输出

输出分行,每行显示一个整数,从上到下分别表示100元,50元,20元,10元,5元,1元人民币的张数

样例输入

735

样例输出

7
0
1
1
1
0

题解

cpp

#include <iostream>
using namespace std;
int main()
{
    int y = 0,a = 0,b = 0,c = 0,d = 0,e = 0,f = 0;
    cin>>y;
    a = y / 100;
    b = (y - a * 100) / 50;
    c = (y - a * 100 - b * 50) / 20;
    d = (y - a * 100 - b * 50 - c * 20) / 10;
    e = (y - a * 100 - b * 50 - c * 20 - d * 10) / 5;
    f = (y - a * 100 - b * 50 - c * 20 - d * 10 - e * 5) / 1;
    cout<<a<<endl;
    cout<<b<<endl;
    cout<<c<<endl;
    cout<<d<<endl;
    cout<<e<<endl;
    cout<<f;
    return 0;
}

演示

3年前 (12月16日)
小王

问题描述

甲流并不可怕,在中国,它的死亡率并不是很高。请根据截止2009年12月22日各省报告的甲流确诊数和死亡数,计算甲流在各省的死亡率。

输入

输入仅一行,有两个整数,第一个为确诊数,第二个为死亡数。

输出

输出仅一行,甲流死亡率,以百分数形式输出,精确到小数点后3位。

样例输入

10433 60

样例输出

0.5758

提示

输出%可以使用printf(“%%”)

题解

cpp

#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
	double s = 0, p = 0, l = 0;
	scanf("%lf %lf", &p, &s);
	l = s * 100 / p;
	printf("%.3lf%%",l);
	return 0;
 } 

操作演示

3年前 (12月15日)