2.5 课后习题与实验

习题 2-1

习题和第一章习题完全一致,所以略。

习题 2-2

一个三角形的三边长分别是 a、b、c,那么它的面积为 $ \sqrt{p(p-a)(p-b)(p-c)} $
,其中 $ p=\frac{1}{2}(a+b+c) $。输入这三个数字,计算三角形的面积,四舍五入精确到 1 位小数。

保证能构成三角形,$ 0\leq a,b,c\leq 1000 $,每个边长输入时不超过2位小数。

输入输出样例

输入 输出
3 4 5 6.0

建模分析:

这就是一个算术题。

解答

#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;

int main()
{
    double a,b,c,p;
    cin>>a>>b>>c;
    p=(a+b+c)/2;
    cout<<setprecision(1)<<fixed<<sqrt(p*(p-a)*(p-b)*(p-c))<<endl;
    return 0;
}

备注:
如果题目不保证三条边 a,b,c 能构成三角形,就必须先检查是否能形成三角形。能形成三角形的条件是两短边之和大于长边。即 a+b > c 。

习题 2-3

cin,cout改用scanf,printf输入输出。(略)

习题 2-4

阅读以下程序,猜测结果,并上机验证。

#include<cstdio>
using namespace std;

int main()
{
	float a=0.1;
	printf("%f \n",2-a*a*100);
	printf("%.16f \n",2-a*a*100);
	printf("%d \n",int(2-a*a*100));
	printf("%d",int(2-a*a*100+0.5));
	return 0;
}

输出:

1.000000
0.9999998807907104
0
1

浮点数的误差造成int向下取整,所以为0。所以int取整都+0.5,保证四舍五入。

习题 2-5

小玉买文具(洛谷P1421)。

班主任给小玉一个任务,到文具店里买尽量多的签字笔。已知一只签字笔的价格是 1 元 9 角,而班主任给小玉的钱是 a 元 b 角,小玉想知道,她最多能买多少只签字笔呢。

输入格式

输入只有一行两个整数,分别表示 a 和 b。

输出格式

输出一行一个整数,表示小玉最多能买多少只签字笔。

输入输出样例

输入 输出
10 3 5

说明/提示
数据规模与约定
对于全部的测试点,保证 $ 0 \leq a \leq 10^4 $,$0 \leq b \leq 9 $

建模分析:

将元和角转换成统一用角来计算,这样一直签字笔就是19角,小玉有 a*10 + b
角,那么答案就转换成求算式: (a*10+b)/19 的结果了。

解答

#include<iostream>
using namespace std;

int a,b;
int main()
{
    cin>>a>>b;
    cout<<(a*10+b)/19;
    
    return 0;
}

习题 2-6

Apples Prologue(洛谷P5709)

八尾勇喜欢吃苹果。她现在有 $ m(m\le 100) $个苹果,吃完一个苹果需要花费$ t(0 \le t \le100) $ 分钟,吃完一个后立刻开始吃下一个。现在时间过去了 $ s(s\le 10000) $ 分钟,请问她还有几个完整的苹果?

输入格式

输入三个非负整数表示 m 、t 和 s。

输出格式

输出一个整数表示答案。

如果你出现了 RE,不如检查一下被零除?

输入输出样例

输入 输出
50 10 200 30

建模分析:

  1. 整体来看还是一个除法运算,需要注意的就是问的是剩下几个完整苹果,所以未吃完的也要扣掉。
  2. 另外一个就是最少剩下也是0,不能吃成负数。

解答

#include<iostream>
using namespace std;

int m,t,s,n;

int main()
{
    cin>>m>>t>>s;
    if(s>0)
    {
        if(t>0)
        {
            n=s/t;
            if(s%t>0)
                n=n+1;
        }
        else
            n=m;
    }
    else
        n=0;    
        
    n=m-n;
    if(n<0)
    	n=0;
    cout<<n;
}

习题 2-7

对角线(洛谷P2181)

对于一个 n 个顶点的凸多边形,它的任何三条对角线都不会交于一点。请求出图形中对角线交点的个数。

例如,6 边形:

对角线

输入格式

输入只有一行一个整数 nn,代表边数。

输出格式

输出一行一个整数代表答案。

输入输出样例

输入 输出
3 0
6 15

数据规模与约定

  • 对于 50% 的数据,保证 3≤n≤100。
  • 对于 100% 的数据,保证 $ 3 \leq n \leq 10^5 $

建模分析:

解答


未完......

posted @ 2021-04-16 16:28  CodeSpark  阅读(391)  评论(0)    收藏  举报