《C++编程这样学》第三章:分支结构- 加油站题解

1. 判断是否相邻

题目链接:http://csp.magu.ltd/problem/J0309

【问题描述】

编写程序,输入三个整数a、b、c,判断这三个整数是否相邻,如果相邻输出“yes”,否则输出“no”。

【题解代码】
#include <iostream>
using namespace std;

int main()
{
    int a, b, c;
    cin >> a >> b >> c;
    if (a > b) swap(a, b);
    if (b > c) swap(b, c);
    if (a > b) swap(a, b);
    if (a+1 == b && b+1 == c) cout << "yes";
    else cout << "no";
    return 0;
}

2.求学生成绩等级

题目链接:http://csp.magu.ltd/problem/J0310

【问题描述】

编写程序,输入一个学生的语文、数学、英语、编程4门课的成绩,计算并输出该生分别获A、B、C等级的课程门数,等级划分规则如下。

  1. 如果成绩在90分到100分之间(包括90分和100分),等级为A;
  2. 如果成绩在60分到89分之间(包括60分和89分),等级为B;
  3. 如果成绩不足60分,等级为C;
【题解代码】
#include <iostream>
using namespace std;

int main()
{
    int n;
    cin >> n;
    if (n >= 90 && n <= 100)
    {
        cout << "A";
    }
    if (n >= 60 && n <= 89)
    {
        cout << "B";
    }
    if (n < 60)
    {
        cout << "C";
    }
    return 0;
}

3.长方形判断

题目链接:http://csp.magu.ltd/problem/J0311

【问题描述】

编写程序,输入四个正整数a、b、c、d,分别表示四根木棍的长度,判断这四根木棍是否能组成长方形,如果能组成长方形,则输出“yes”,否则输出“no”。

【题解代码】
#include <iostream>
using namespace std;

int main()
{
    int a, b, c, d;
    cin >> a >> b >> c >> d;
    bool f = 0;
    if(a == b && c == d) f = 1;
    else if(a == c && b == d) f = 1;
    else if(a == d && b == c) f = 1;
    else f = 0;
    if (f) cout << "yes";
    else cout << "no";
    return 0;
}

4.直角三角形判断

题目链接:http://csp.magu.ltd/problem/J0312

【问题描述】

编写程序,输入三个正整数,分别表示三条线段的长度,判断能否以这三条线段为边组成一个直角三角形。如果能组成直角三角形,则输出“yes”,否则输出“no”。

【题解代码】
#include <iostream>
using namespace std;

int main()
{
    int a, b, c;
    cin >> a >> b >> c;
    if(a > b) swap(a, b);
    if(b > c) swap(b, c);
    if(a > b) swap(a, b);
    if(a*a + b*b == c*c) {
        cout << "yes";
    }
    else cout << "no";
    return 0;
}

5.苹果和虫子

题目链接:http://csp.magu.ltd/problem/J0313

【问题描述】

小明买了一箱苹果,总共有n个,很不幸的是箱子里混进了一条虫子。虫子每x小时能吃掉一个苹果,假设虫子在吃完某一个苹果之前不会吃另一个,编程计算经过y小时小明还有多少个完整的苹果?

【题解代码】
#include <iostream>
using namespace std;

int main()
{
    int n, x, y;
    cin >> n >> x >> y;
    int ans = n - y / x - (y % x != 0);
    if (ans < 0) ans = 0;
    cout << ans;
    return 0;
}

6.骑车与走路

题目链接:http://csp.magu.ltd/problem/J0314

【问题描述】

如果没有自行车,在大学校园里上课、办事会很不方便。但实际上,并非去办任何事情都是骑自行车快,因为骑自行车总要找车、开锁、停车、锁车等,这要耽误一些时间。假设找到自行车,开锁并骑上自行车的时间为27秒;停车、锁车的时间为23秒。步行每秒行走1.2米,骑自行车每秒行走3.0米。编写程序,要去有一定距离的地方办事,判断是骑自行车快还是走路快。

【题解代码】
#include <iostream>
using namespace std;

int main()
{
	int x;
	cin >> x;
	double b = 50 + x/3.0;
	double w = x / 1.2;
	if (b == w) cout << "All";
	else if (b < w) cout << "Bike";
	else cout << "Walk";	
	return 0;
} 

7.判断能否被3、5、7整除

题目链接:http://csp.magu.ltd/problem/J0315

【问题描述】

编写程序,输入一个整数n,判断它能否被3,5,7整除,并输出以下信息:

  1. 如果能同时被3,5,7整除(直接输出3 5 7,各个数中间留一个空格);
  2. 如果只能被3、5、7中的两个数整除,则输出两个数,小的在前,大的在后,例如:3 5或者 3 7或者5 7,中间用一个空格分隔;
  3. 如果只能被3、5、7中的一个数整除,则输出这个除数;
  4. 如果不能被3、5、7中的任何数整除,输出小写字符“n”;
【题解代码】
#include <iostream>
using namespace std;

int main()
{
    int n;
    cin >> n;
    bool f = false;
    if (n % 3 == 0)
    {
        cout << "3 ";
        f = 1;
    }
    if (n % 5 == 0)
    {
        cout << "5 ";
        f = 1;
    }
    if (n % 7 == 0)
    {
        cout << "7";
        f = 1;
    }
    if (f == 0)
        cout << "n";

    return 0;
}

8.输出星期几

题目链接:http://csp.magu.ltd/problem/J0316

【问题描述】

编写程序,输入一个正整数n ( 1 ⩽ (1\leqslant 1n ⩽ 9 ) \leqslant9) 9,输出其对应的星期几的英语单词。其中,1~7分别对应“Monday” “Tuesday” “Wednesday” “Thursday” “Friday” “Saturday” “Sunday”,如果不是1~7之间的数,输出“invalid”。

【题解代码】
#include<iostream> 
using namespace std;
int main()
{
	int n;
	cin>>n;
	switch (n)
	{
		case 1:cout<<"Monday";break;
		case 2:cout<<"Tuesday";break;
		case 3:cout<<"Wednesday";break;
		case 4:cout<<"Thursday";break;
		case 5:cout<<"Friday";break;
		case 6:cout<<"Saturday";break;
		case 7:cout<<"Sunday";break;
	    default:cout<<"invalid";
	}
	return 0;
}

9.输出某年某月的天数

题目链接:http://csp.magu.ltd/problem/J0317

【问题描述】

编写程序,输入年份year和月份month,计算并输出该年该月的天数。
提示:
1.每年的1、3、5、7、8、10、12月有31天;
2.每年的4、6、9、11月有30天;
3.闰年的2月有29天,非闰年的2月有28天;

【题解代码】
#include <iostream>
using namespace std;

int main()
{
    int y, m;
    cin >> y >> m;
    if (m == 2)
    {
        if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0)
            cout << 29;
        else
            cout << 28;
    }
    else if (m == 4 || m == 6 || m == 9 || m == 11)
    {
        cout << 30;
    }
    else
        cout << 31;
    return 0;
}

10.买铅笔(NOIP2016 普及组)

题目链接:http://csp.magu.ltd/problem/J0318

【问题描述】

老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物。老师发现商店一共有三种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同。为了公平起见,老师决定只买同一种包装的铅笔。

商店不允许将铅笔的包装拆开,因此老师可能需要购买超过n支铅笔才够给小朋友们发礼物。

现在老师想知道,在商店每种包装的数量都足够的情况下,要买够至少n支铅笔最少需要花费多少钱。

【题解代码】
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    int n;
    cin >> n;
    int m, p;
    cin >> m >> p;
    int minn = ceil(n*1.0/m) * p;

    cin >> m >> p;
    int sum = ceil(n*1.0/m) * p;
    if (sum < minn)
        minn = sum;

    cin >> m >> p;
    sum = ceil(n*1.0/m) * p;
    if (sum < minn)
        minn = sum;
    cout << minn;
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值