第一章
例题
608. 差
读取四个整数 A,B,C,DA,B,C,D,并计算 (A×B−C×D)(A×B−C×D) 的值。
输入格式
输入共四行,第一行包含整数 AA,第二行包含整数 BB,第三行包含整数 CC,第四行包含整数 DD。
输出格式
输出格式为 DIFERENCA = X
,其中 XX 为 (A×B−C×D)(A×B−C×D) 的结果。
数据范围
−10000≤A,B,C,D≤10000−10000≤A,B,C,D≤10000
输入样例:
5
6
7
8
输出样例:
DIFERENCA = -26
相关代码
#include<iostream>
using namespace std;
int main()
{
int a,b,c,d;
cin>>a>>b>>c>>d;
cout<<"DIFERENCA = "<<a*b-c*d<<endl;
return 0;
}
604. 圆的面积
计算圆的面积的公式定义为 A=πR2A=πR2。
请利用这个公式计算所给圆的面积。
ππ 的取值为 3.141593.14159。
输入格式
输入包含一个浮点数,为圆的半径 RR。
输出格式
输出格式为 A=X
,其中 XX 为圆的面积,用浮点数表示,保留四位小数。
数据范围
0<R<10000.000<R<10000.00
输入样例:
2.00
输出样例:
A=12.5664
相关代码
#include<iostream>
using namespace std;
int main()
{
double R;
cin>>R;
printf("A=%.4lf",3.14159*R*R);
return 0;
}
606. 平均数1
读取两个浮点数 AA 和 BB 的值,对应于两个学生的成绩。
请你计算学生的平均分,其中 AA 的成绩的权重为 3.53.5,BB 的成绩的权重为 7.57.5。
成绩的取值范围在 00 到 1010 之间,且均保留一位小数。
输入格式
输入占两行,每行包含一个浮点数,第一行表示 AA,第二行表示 BB。
输出格式
输出格式为 MEDIA = X
,其中 XX 为平均分,结果保留五位小数。
数据范围
0≤A,B≤10.00≤A,B≤10.0
输入样例:
5.0
7.1
输出样例:
MEDIA = 6.43182
相关代码
#include<iostream>
using namespace std;
int main()
{
double a,b;
cin>>a>>b;
printf("MEDIA = %.5lf",(3.5*a+7.5*b)/11);
return 0;
}
609. 工资
请编写一个程序,可以读取一名员工的员工编号,本月工作总时长(小时)以及时薪,并输出他的工资条,工资条中包括员工编号和员工月收入。
输入格式
输入包含两个整数和一个浮点数,分别代表员工编号,工作时长以及时薪。
每个数占一行。
输出格式
输出共两行,第一行格式为 NUMBER = X
,其中 XX 为员工编号。
第二行格式为 SALARY = U$ Y
,其中 YY 为该员工月收入,保留两位小数。
数据范围
1≤员工编号≤1001≤员工编号≤100,
1≤总工作时长≤2001≤总工作时长≤200,
1≤时薪≤501≤时薪≤50
输入样例:
25
100
5.50
输出样例:
NUMBER = 25
SALARY = U$ 550.00
相关代码
#include<iostream>
using namespace std;
int main()
{
int x,t;
double h,y;
cin>>x>>t>>h;
cout<<"NUMBER = "<<x<<endl;
printf("SALARY = U$ %.2lf",t*h);
return 0;
}
615. 油耗
给定一个汽车行驶的总路程(kmkm)和消耗的油量(ll),请你求出汽车每消耗 11 升汽油可行驶多少公里路程。
输入格式
输入共两行,第一行包含整数 XX,表示行驶总路程。
第二行包含保留一位小数的浮点数 YY,表示消耗的油量。
输出格式
输出格式为 M km/l
,其中 MM 为计算结果,保留三位小数。
数据范围
1≤X,Y≤1091≤X,Y≤109
输入样例:
500
35.0
输出样例:
14.286 km/l
相关代码
#include<iostream>
using namespace std;
int main()
{
int x;
double y;
cin>>x>>y;
printf("%.3lf km/l",x/y);
return 0;
}
616. 两点间的距离
给定两个点 P1P1 和 P2P2,其中 P1P1 的坐标为 (x1,y1)(x1,y1),P2P2 的坐标为 (x2,y2)(x2,y2),请你计算两点间的距离是多少。
distance=(x2−x1)2+(y2−y1)2‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾√distance=(x2−x1)2+(y2−y1)2
输入格式
输入共两行,每行包含两个双精度浮点数 xi,yixi,yi,表示其中一个点的坐标。
输入数值均保留一位小数。
输出格式
输出你的结果,保留四位小数。
数据范围
−109≤xi,yi≤109−109≤xi,yi≤109
输入样例:
1.0 7.0
5.0 9.0
输出样例:
4.4721
相关代码
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
double x1,y1,x2,y2,s;
cin>>x1>>y1>>x2>>y2;
printf("%.4lf",sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)));
return 0;
}
653. 钞票
在这个问题中,你需要读取一个整数值并将其分解为多张钞票的和,每种面值的钞票可以使用多张,并要求所用的钞票数量尽可能少。
请你输出读取值和钞票清单。
钞票的可能面值有 100,50,20,10,5,2,1100,50,20,10,5,2,1。
经过实验证明:在本题中,优先使用面额大的钞票可以保证所用的钞票总数量最少。
输入格式
输入一个整数 NN。
输出格式
参照输出样例,输出读取数值以及每种面值的钞票的需求数量。
数据范围
0<N<10000000<N<1000000
输入样例:
576
输出样例:
576
5 nota(s) de R$ 100,00
1 nota(s) de R$ 50,00
1 nota(s) de R$ 20,00
0 nota(s) de R$ 10,00
1 nota(s) de R$ 5,00
0 nota(s) de R$ 2,00
1 nota(s) de R$ 1,00
相关代码
#include<iostream>
using namespace std;
int main()
{
int n,a[9],b[8]={0,100,50,20,10,5,2,1};
cin>>n;
cout<<n<<endl;
for(int i=1;i<=7;i++)
{
a[i]=n/b[i];
n=n%b[i];
printf("%d nota(s) de R$ %d,00\n",a[i],b[i]);
}
return 0;
}
654. 时间转换
读取一个整数值,它是工厂中某个事件的持续时间(以秒为单位),请你将其转换为小时:分钟:秒来表示。
输入格式
输入一个整数 NN。
输出格式
输出转换后的时间表示,格式为 hours:minutes:seconds
。
数据范围
1≤N≤10000001≤N≤1000000
输入样例:
556
输出样例:
0:9:16
相关代码
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
cout<<n/3600<<":"<<n%3600/60<<":"<<n%3600%60<<endl;
return 0;
}
习题
605. 简单乘积
读取两个整数值。
在此之后,计算它们的乘积并将结果存储在名为 PROD 的变量中。
输出结果如下例所示。
输入格式
共两行,每行包含一个整数。
输出格式
输出格式为 PROD = X
,其中 XX 为乘积结果。
数据范围
输入的两个整数的绝对值均不超过 1000010000。
输入样例:
3
9
输出样例:
PROD = 27
相关代码
#include<iostream>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
cout<<"PROD = "<<a*b<<endl;
return 0;
}
611. 简单计算
给定你两个产品的产品编号,产品数量以及产品单价。
请你计算买下两种产品一共需要花费多少钱。
输入格式
输入共两行。
每行包含两个整数以及一个浮点数,表示其中一件产品的产品编号,产品数量以及产品单价。
输出格式
输出格式为 VALOR A PAGAR: R$ X
,其中 XX 为产品总价值,保留两位小数。
数据范围
1≤产品编号,产品数量≤100001≤产品编号,产品数量≤10000,
1.00≤产品单价≤10000.001.00≤产品单价≤10000.00
输入样例:
12 1 5.30
16 2 5.10
输出样例:
VALOR A PAGAR: R$ 15.50
相关代码
#include<iostream>
using namespace std;
int main()
{
int a;
double s,b,c;
for(int i=1;i<=2;i++){
cin>>a>>b>>c;
s=s+b*c;
}
printf("VALOR A PAGAR: R$ %.2lf",s);
return 0;
}
612. 球的体积
给定你一个球体的半径 RR,请你计算球体的体积。
计算球体的公式为 V=(4/3)∗π∗R3V=(4/3)∗π∗R3。
ππ 取 3.141593.14159。
注意:有些语言中 (4/3)(4/3) 无法得到 1.3333…1.3333…,建议在公式中使用 (4/3.0)(4/3.0)。
输入格式
输入一个整数 RR。
输出格式
输出格式为 VOLUME = X
,其中 XX 为球体的体积,结果保留三位小数。
数据范围
1≤R≤20001≤R≤2000
输入样例:
3
输出样例:
VOLUME = 113.097
相关代码
#include<iostream>
using namespace std;
int main()
{
int r;
double d=3.14159;
cin>>r;
printf("VOLUME = %.3lf",(1.0*4/3)*d*r*r*r);
return 0;
}
613. 面积
给定三个浮点数 A,BA,B 和 CC。
然后,计算如下图形的面积:
- 底边为 AA,高为 CC 的三角形。
- 半径 CC 的圆。(π=3.14159π=3.14159)
- 底边为 AA 和 BB,高为 CC 的梯形。
- 边长为 BB 的正方形。
- 边长为 AA 和 BB 的长方形。
输入格式
输入共一行,包含三个保留一位小数的浮点数 A,B,CA,B,C。
输出格式
输出共五行,形式如下所示:
第一行,格式为 TRIANGULO: X
,其中 XX 为所求三角形面积。
第二行,格式为 CIRCULO: X
,其中 XX 为所求圆形面积。
第三行,格式为 TRAPEZIO: X
,其中 XX 为所求梯形面积。
第四行,格式为 QUADRADO: X
,其中 XX 为所求正方形面积。
第五行,格式为 RETANGULO: X
,其中 XX 为所求长方形面积。
所有答案保留三位小数。
数据范围
0≤A,B,C≤10000.00≤A,B,C≤10000.0
输入样例:
3.0 4.0 5.2
输出样例:
TRIANGULO: 7.800
CIRCULO: 84.949
TRAPEZIO: 18.200
QUADRADO: 16.000
RETANGULO: 12.000
相关代码
#include<iostream>
using namespace std;
int main()
{
double a,b,c,d=3.14159;
cin>>a>>b>>c;
printf("TRIANGULO: %.3lf\n",a*c/2);
printf("CIRCULO: %.3lf\n",d*c*c);
printf("TRAPEZIO: %.3lf\n",(a+b)*c/2);
printf("QUADRADO: %.3lf\n",b*b);
printf("RETANGULO: %.3lf\n",a*b);
return 0;
}
607. 平均数2
读取三个浮点数 A,BA,B 和 CC 的值,对应于三个学生的成绩。
请你计算学生的平均分,其中 AA 的成绩的权重为 22,BB 的成绩的权重为 33,CC 的成绩的权值为 55。
成绩的取值范围在 00 到 1010 之间,且均保留一位小数。
输入格式
输入共三行,每行包含一个浮点数,第一行表示 AA,第二行表示 BB,第三行表示 CC。
输出格式
输出格式为 MEDIA = X
,其中 XX 为平均分,结果保留一位小数。
数据范围
0≤A,B,C≤10.00≤A,B,C≤10.0,
输入样例:
5.0
6.0
7.0
输出样例:
MEDIA = 6.3
相关代码
#include<iostream>
using namespace std;
int main()
{
double a,b,c;
cin>>a>>b>>c;
printf("MEDIA = %.1lf",0.1*(a*2+3*b+5*c));
return 0;
}
610. 工资和奖金
请你编写一个程序,给定你一个销售人员的名字,底薪以及月销售额。
请你计算他的月收入是多少。
已知月收入等于底薪加 15%15% 的月销售额。
所有数据保留两位小数。
输入格式
输入第一行包含一个由大写字母构成的长度不超过 1010 的字符串,表示销售人员的名字。
第二行包含一个浮点数,表示该人员的底薪。
第三行包含一个浮点数,表示该人员的月销售额。
输出格式
输出格式为 TOTAL = R$ X
,XX 为该人员月收入。
数据范围
0≤底薪,月销售额≤10000.000≤底薪,月销售额≤10000.00
输入样例:
JOAO
500.00
1000.00
输出样例:
TOTAL = R$ 650.00
相关代码
#include<iostream>
#include<string>
using namespace std;
int main()
{
string a;
cin>>a;
double d,s;
cin>>d>>s;
printf("TOTAL = R$ %.2lf",d+0.15*s);
return 0;
}
614. 最大值
给定三个整数,请你找出它们中的最大值。
下列公式可能对你有所帮助:
max(a,b)=(a+b+abs(a−b))2max(a,b)=(a+b+abs(a−b))2
输入格式
输入占一行,包含三个整数。
输出格式
输出格式为 X eh o maior
,其中 XX 为三个数中的最大值。
数据范围
1≤给定整数≤1091≤给定整数≤109
输入样例:
7 14 106
输出样例:
106 eh o maior
相关代码
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int a,b,c;
cin>>a>>b>>c;
cout<<max(max(a,b),c)<<" eh o maior"<<endl;
return 0;
}
617. 距离
两辆汽车在同一地点,同时,沿同一方向前进。
一辆车的速度为 60 km/h60 km/h,另一辆车的速度为 90 km/h90 km/h。
显然,快车与慢车的距离会不断拉开,每过一个小时(6060 分钟),两车的距离就拉开 3030 公里。
现在,告诉你两车之间的距离为 LL 公里,请你求出两车已经行驶了多长时间?
输入格式
输入包含一个整数 LL,表示两车之间的距离。
输出格式
输出格式为 X minutos
,其中 XX 为已经行驶的时间,单位为分钟。
数据范围
1≤L≤1091≤L≤109
输入样例:
30
输出样例:
60 minutos
相关代码
#include<iostream>
using namespace std;
int main()
{
int l;
cin>>l;
cout<<2*l<<" minutos"<<endl;
return 0;
}
618. 燃料消耗
一辆汽车每行驶 1212 公里需要消耗 11 升汽油,现在告诉你该汽车的行驶速度 SS(km/hkm/h)和行驶时间 TT(hh),请你计算该车在行驶过程中一共消耗了多少升汽油。
输入格式
输入共两行,第一行包含一个整数 TT,表示行驶时间(hh)。
第二行包含一个整数 SS,表示行驶速度(km/hkm/h)。
输出格式
输出行驶期间的总油耗,结果保留三位小数。
数据范围
1≤T,S≤1071≤T,S≤107
输入样例:
10
85
输出样例:
70.833
相关代码
#include<iostream>
using namespace std;
int main()
{
long long int t,s;
cin>>t>>s;
printf("%.3lf",t*s*1.0/12);
return 0;
}
656. 钞票和硬币
读取一个带有两个小数位的浮点数,这代表货币价值。
在此之后,将该值分解为多种钞票与硬币的和,每种面值的钞票和硬币使用数量不限,要求使用的钞票和硬币的总数量尽可能少。
钞票的面值是 100,50,20,10,5,2100,50,20,10,5,2。
硬币的面值是 1,0.50,0.25,0.10,0.051,0.50,0.25,0.10,0.05 和 0.010.01。
经过实验证明:在本题中,优先使用面额大的钞票和硬币可以保证所用的钞票和硬币总数量最少。
输入格式
输入一个浮点数 NN。
输出格式
参照输出样例,输出每种面值的钞票和硬币的需求数量。
数据范围
0≤N≤1000000.000≤N≤1000000.00
输入样例:
576.73
输出样例:
NOTAS:
5 nota(s) de R$ 100.00
1 nota(s) de R$ 50.00
1 nota(s) de R$ 20.00
0 nota(s) de R$ 10.00
1 nota(s) de R$ 5.00
0 nota(s) de R$ 2.00
MOEDAS:
1 moeda(s) de R$ 1.00
1 moeda(s) de R$ 0.50
0 moeda(s) de R$ 0.25
2 moeda(s) de R$ 0.10
0 moeda(s) de R$ 0.05
3 moeda(s) de R$ 0.01
相关代码
#include<iostream>
using namespace std;
int main()
{
double n;
int c[12],a[12]={10000,5000,2000,1000,500,200,100,50,25,10,5,1};
cin>>n;
int t=n*100;
for(int i=0;i<12;i++)
{
c[i]=t/a[i];
t=t%a[i];
if(i==0)cout<<"NOTAS:"<<endl;
if(i==6)cout<<"MOEDAS:"<<endl;
if(i<6)printf("%d nota(s) de R$ %.2lf\n",c[i],(double)a[i]/100);
if(i>=6)printf("%d moeda(s) de R$ %.2lf\n",c[i],(double)a[i]/100);
}
return 0;
}
655. 天数转换
读取对应于一个人的年龄(以天为单位)的整数值,并转化为年,月和日表示方式输出,年、月、日分别对应 ano(s)
, mes(es)
, dia(s)
。
注意:为了方便计算,假设全年 365365 天,每月 3030 天。 数据保证,不会出现 1212 个月和几天的情况,例如 360,363360,363 或 364364。
输入格式
输入一个整数 NN。
输出格式
参照输出样例,输出转换后的天数表达。
数据范围
1≤N≤10000001≤N≤1000000
输入样例:
400
输出样例:
1 ano(s)
1 mes(es)
5 dia(s)
相关代码
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
cout<<n/365<<" ano(s)"<<endl;
cout<<n%365/30<<" mes(es)"<<endl;
cout<<n%365%30<<" dia(s)"<<endl;
return 0;
}