西工大noj(2~10)

 

02题:

/*
 *题目:输入圆半径r和圆柱高h,计算圆周长l,圆面积s,圆球表面积sq,圆球体积vq和圆柱体体积vz
 */

 #include <iostream>

 using namespace std;

 int noj_002()
 {
     double r, h, l, s, sq, vq, vz;
     static double pi = 3.1415926;
     cout << "请输入圆半径r:";
     cin >> r;
     cout << endl;
     cout << "请输入圆柱高h:";
     cin >> h;
     cout << endl;
     l = 2 * pi * r;
     s = pi * r * r;
     sq = 4 * pi * r * r;
     vq = 4 * pi * r * r * r / 3;
     vz = s * h;
     cout << "圆周长l=" << l << endl;
     cout << "圆面积s=" << s << endl;
     cout << "圆球表面积sq=" << sq << endl;
     cout << "圆球体积vq=" << vq << endl;
     cout << "圆柱体体积=" << vz << endl;

     return 0;
 }

03题:

/*
 *题目:输入某学生的数学,英语和C语言课程成绩,输出三门课程的总成绩和平均成绩(保留6位小数)
 */
#include <iostream>
#include <iomanip>

using namespace std;

int noj_003()
{
    double math, english, clang, ttlpnt, averagepnt;
    cout << "依次输入数学,英语,C语言成绩:";
    cin >> math >> english >> clang;
    cout << setiosflags(ios::fixed) << setprecision(6);
    ttlpnt = math + english + clang;
    averagepnt = ttlpnt / 3;
    cout << "总成绩为:" << ttlpnt << endl;
    cout << "平均成绩为:" << averagepnt << endl;

    return 0;
}

04题:

/*
 *题目:找出三个数据A,B和C的最大值
 */
#include <iostream>

using namespace std;

int noj_004()
{
    int A, B, C, D;
    cout << "请输入数据:";
    cin >> A >> B >> C;
    D = (A >= B? A : B);
    cout << "最大值为:";
    cout << (C >= D? C : D);
    return 0;
}

05题:

/*
 *题目:如果一个整数逆序后得到的数值与原数值相同,则称为“幸运数”,输入一个整数N(N<100000),判断是否为幸运数
 */
#include <iostream>

using namespace std;

int noj_005()
{
    int N;
    cout << "请输入数据:";
    cin >> N;
    if ((N > 10000 && N < 100000) && (N / 10000 == N % 10) && (N / 1000 % 10 == N / 10 % 10))
        cout << "yes";
    else if ((N > 1000 && N < 10000) && (N /1000 == N % 10) && (N / 100 % 10 == N / 10 % 10))
        cout << "yes";
    else if ((N > 100 && N < 1000) && (N / 100 == N % 10))
        cout << "yes";
    else if ((N > 10 && N < 100) && (N / 10 == N % 10))
        cout << "yes";
    else if ((N > 0 && N < 10))
        cout << "yes";
    else
        cout << "no";
    return 0;
}

06题:

/*
 *题目:企业发放的奖金按利润提成,利润低于或等于10万元可提10%,利润高于10万元低于20万元时低于10万元的部分按10%提成,
 *      高于10万元的部分可提成7.5%,20万到40万之间,高于20万的部分,可提成5%,40万到60万之间时高于40万元的部分,可提成3%,
 *      60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分提成1%,算奖金(保留6位小数)
 */
#include <iostream>
#include <stdio.h>

using namespace std;

int noj_006()
{
    double profit, royalty;
    cout << "请输入利润(万元):";
    cin >> profit;
    if (profit >= 0 && profit <= 10)
    {
        royalty = profit * 0.1;
    }
    else if (profit > 10 && profit <= 20)
    {
        royalty = 10 * 0.1 + (profit - 10) * 0.075;
    }
    else if (profit > 20 && profit <= 40)
    {
        royalty = 10 * 0.1 + (20 - 10) * 0.075 + (profit - 20) * 0.05;
    }
    else if (profit > 40 && profit <= 60)
    {
        royalty = 10 * 0.1 + (20 - 10) * 0.075 + (40 - 20) * 0.05 + (profit - 40) * 0.03;
    }
    else if (profit > 60 && profit <= 100)
    {
        royalty = 10 * 0.1 + (20 - 10) * 0.075 + (40 - 20) * 0.05 + (60 - 40) * 0.03 + (profit - 60) * 0.015;
    }
    else if (profit > 100)
    {
        royalty = 10 * 0.1 + (20 - 10) * 0.075 + (40 - 20) * 0.05 + (60 - 40) * 0.03 + (100 - 60) * 0.015 + (profit - 100) * 0.01;
    }
    else
    {
        cout << "输入有误,请重新输入!" << endl;
        noj_006();
    }
    printf("%5.6f\n", royalty);

    return 0;
}

07题:

/*
 *题目:出租车起步价(2公里内,含2公里)为7元,超过2公里且在15(含)公里以内,每公里收费1.5元,超过15公里每公里收费2.1元,不足1公里按1公里算,算车费(保留6位小数)
 */
#include <iostream>
#include <math.h>
#include <stdio.h>

using namespace std;

int noj_007()
{
    double mile, cost;
    cout << "请输入里程数:";
    cin >> mile;
    if (mile <= 2)
    {
        cost = 7;
    }
    else if (mile > 2 && mile <= 15)
    {
        cost = 7 + ceil((mile - 2)) * 1.5;
    }
    else if (mile > 15)
    {
        cost = 7 + 8 * 1.5 + ceil((mile - 15)) * 2.1;
    }
    printf("%5.6f", cost);

    return 0;
}

08题:

/*
 *题目:输入一个日期(YYYY-MM-DD),判断这是一年的第几天
 */
#include <iostream>
#include <string>

using namespace std;

int noj_008()
{
    string date;
    int year, month, day, sum;
    cout << "请按YYYY-MM-DD的格式输入日期:";
    cin >> date;
    year = stoi(date.substr(0, 4));    //stoi()非标准库函数,慎用
    month = stoi(date.substr(5, 2));
    day = stoi(date.substr(8, 2));
    int Jan = 31, Mar = 31, Apr = 30, May = 31, June = 30, July = 31, Aug = 31, Sep = 30, Oct = 31, Nov = 30, Dec = 31, Feb;
    if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
    {
        Feb = 29;
    }
    else
    {
        Feb = 28;
    }
    switch(month)
    {
    case 1:
        sum = day;
        break;
    case 2:
        sum = Jan + day;
        break;
    case 3:
        sum = Jan + Feb + day;
        break;
    case 4:
        sum = Jan + Feb + Mar + day;
        break;
    case 5:
        sum = Jan + Feb + Mar + Apr + day;
        break;
    case 6:
        sum = Jan + Feb + Mar + Apr + May + day;
        break;
    case 7:
        sum = Jan + Feb + Mar + Apr + May + June + day;
        break;
    case 8:
        sum = Jan + Feb + Mar + Apr + May + June + July + day;
        break;
    case 9:
        sum = Jan + Feb + Mar + Apr + May + June + July + Aug + day;
        break;
    case 10:
        sum = Jan + Feb + Mar + Apr + May + June + July + Aug + Sep + day;
        break;
    case 11:
        sum = Jan + Feb + Mar + Apr + May + June + July + Aug + Sep + Oct + day;
        break;
    case 12:
        sum = Jan + Feb + Mar + Apr + May + June + July + Aug + Sep + Oct + Nov + day;
        break;
    default:
        break;
    }
    cout << sum << endl;

    return 0;
}

09题:

/*
 *题目:百分制成绩转换为五分制成绩,规则:A:90~100;B:80~89;C:70——79;D:60~69;E:60分以下
 */
#include <iostream>

using namespace std;

int noj_009()
{
    int score;
    char grade;
    cout << "请输入百分制成绩:";
    cin >> score;
    if (score >= 90 && score <= 100)
    {
        grade = 'A';
    }
    else if (score >= 80 && score <= 89)
    {
        grade = 'B';
    }
    else if (score >= 70 && score <= 79)
    {
        grade = 'C';
    }
    else if (score >= 60 && score <= 69)
    {
        grade = 'D';
    }
    else
    {
        grade = 'E';
    }
    cout << grade;

    return 0;
}

10题(补图):

10题图

 

/*
 *题目:有4个圆塔,圆心分别为(2,2),(-2,2),(-2,-2),(2,-2),圆半径为1,高度为10m,塔外高度为0,输入一点坐标,求该点建筑高度
 */
#include <iostream>

using namespace std;

int noj_010()
{
    double x, y;
    cout << "请输入x轴坐标:";
    cin >> x;
    cout << endl;
    cout << "请输入y轴坐标:";
    cin >> y;
    cout << endl;
    if (((x-2) * (x-2) + (y-2) * (y-2) <= 1) ||
        ((x-2) * (x-2) + (y+2) * (y+2) <= 1) ||
        ((x+2) * (x+2) + (y-2) * (y-2) <= 1) ||
        ((x+2) * (x+2) + (y+2) * (y+2) <= 1))
    {
        cout << 10;
    }
    else
    {
        cout << 0;
    }

    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值