第一讲:顺序结构
1. A + B
输入两个整数,求这两个整数的和是多少。
输入格式
输入两个整数A,B,用空格隔开
输出格式
输出一个整数,表示这两个数的和
数据范围
0≤A,B≤10^8
输入样例
3 4
输出样例
7
参考代码:
#include<iostream>
using namespace std;
int main()
{
int a, b;//定义两个变量a,b
cin >> a >> b;//输入a,b
cout << a + b << endl;//输出a+b的和
return 0;
}
2. 差
读取四个整数 A,B,C,D,并计算 (A×B−C×D) 的值。
输入格式
输入共四行,第一行包含整数 A,第二行包含整数 B,第三行包含整数 C,第四行包含整数 D。
输出格式
输出格式为 DIFERENCA = X
,其中 X 为 (A×B−C×D) 的结果。
数据范围
−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每次只能读取一行的值,所以要写四个cin来分别读取a,b,c,d的值。
cin>>a;
cin>>b;
cin>>c;
cin>>d;
cout<<"DIFERENCA = "<<(a*b-c*d)<<endl;
return 0;
}
3.圆的面积
计算圆的面积的公式定义为 A=πR^2。
请利用这个公式计算所给圆的面积。
π 的取值为 3.14159。
输入格式
输入包含一个浮点数,为圆的半径 R。
输出格式
输出格式为 A=X
,其中 X 为圆的面积,用浮点数表示,保留四位小数。
数据范围
0<R<10000.00
输入样例:
2.00
输出样例:
A=12.5664
参考代码:
#include <iostream>
using namespace std;
int main()
{
double pi = 3.14159
double A=0.0;
double r=0.0;
scanf("%lf",&r);
A = pi * r * r;
printf("A=%.4lf\n",A);
return 0;
}
4.平均数1
读取两个浮点数 A 和 B的值,对应于两个学生的成绩。
请你计算学生的平均分,其中 A 的成绩的权重为 3.5,B 的成绩的权重为 7.5。
成绩的取值范围在 0 到 10 之间,且均保留一位小数。
输入格式
输入占两行,每行包含一个浮点数,第一行表示 A,第二行表示 B。
输出格式
输出格式为 MEDIA = X
,其中 X 为平均分,结果保留五位小数。
数据范围
0≤A,B≤10.0
输入样例:
5.0
7.1
输出样例:
MEDIA = 6.43182
参考代码:
#include <iostream>
using namespace std;
int main()
{
double A,B;
cin>>A;
cin>>B;
printf("MEDIA = %.5lf",(A*3.5+B*7.5)/11);//计算的时候值要乘以它的权重再算平均值。
return 0;
}
5.工资
请编写一个程序,可以读取一名员工的员工编号,本月工作总时长(小时)以及时薪,并输出他的工资条,工资条中包括员工编号和员工月收入。
输入格式
输入包含两个整数和一个浮点数,分别代表员工编号,工作时长以及时薪。
每个数占一行。
输出格式
输出共两行,第一行格式为 NUMBER = X
,其中 X为员工编号。
第二行格式为 SALARY = U$ Y
,其中 Y 为该员工月收入,保留两位小数。
数据范围
1≤员工编号≤100
1≤总工作时长≤200
1≤时薪≤50
输入样例:
25
100
5.50
输出样例:
NUMBER = 25
SALARY = U$ 550.00
参考代码:
#include <iostream>
using namespace std;
int main()
{
int num,time;
double income;
cin>>num;
cin>>time;
cin>>income;
cout<<"NUMBER = "<<num<<endl;
//工资=工作时长 * 每小时的薪酬
printf("SALARY = U$ %.2lf\n",time*income);
return 0;
}
6.油耗
给定一个汽车行驶的总路程(km)和消耗的油量(l),请你求出汽车每消耗 1升汽油可行驶多少公里路程。
输入格式
输入共两行,第一行包含整数 X,表示行驶总路程。
第二行包含保留一位小数的浮点数 Y,表示消耗的油量。
输出格式
输出格式为 M km/l
,其中 M 为计算结果,保留三位小数。
数据范围
1≤X,Y≤10^9
输入样例:
500
35.0
输出样例:
14.286 km/l
参考代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int s;//路程
double oil;//消耗的石油
cin>>s;
cin>>oil;
printf("%.3lf km/l\n",s/oil);//行驶公里:路程/消耗的石油。
return 0;
}
7.两点间的距离:
给定两个点 P1 和 P2,其中 P1 的坐标为 (x1,y1),P2 的坐标为 (x2,y2),请你计算两点间的距离是多少。
输入格式
输入共两行,每行包含两个双精度浮点数 xi,yi,表示其中一个点的坐标。
输入数值均保留一位小数。
输出格式
输出你的结果,保留四位小数。
数据范围
−10^9≤xi,yi≤10^9
输入样例:
1.0 7.0
5.0 9.0
输出样例:
4.4721
参考代码:
根号(√ ̄):开平方,2*2 = 4,根号4 = 2,3 * 3 = 9,根号9 = 3;
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
double x1,x2,y1,y2;
cin>>x1>>y1;
cin>>x2>>y2;
//sqrt()函数是用来求一个数开根号的,sqrt(n)的结果就是根号n
double distance=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
printf("%.4lf\n",distance);
return 0;
}
8.钞票
在这个问题中,你需要读取一个整数值并将其分解为多张钞票的和,每种面值的钞票可以使用多张,并要求所用的钞票数量尽可能少。
请你输出读取值和钞票清单。
钞票的可能面值有 100,50,20,10,5,2,1。
经过实验证明:在本题中,优先使用面额大的钞票可以保证所用的钞票总数量最少。
输入格式
输入一个整数 N。
输出格式
参照输出样例,输出读取数值以及每种面值的钞票的需求数量。
数据范围
0<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=0;
cin >> n;
cout<<n<<endl;
//每次拿出相应钱的个数后,初始值n都要减去。这里减去用%,
//比如有510元,有五张100,516%100后就是求余数,
//还剩下16;%一个数结果就是除以这个数后剩下的余数。
cout << n / 100 << " nota(s) de R$ 100,00" << endl;
n %= 100;
cout << n / 50 << " nota(s) de R$ 50,00" << endl;
n %= 50;
cout << n / 20 << " nota(s) de R$ 20,00" << endl;
n %= 20;
cout << n / 10 << " nota(s) de R$ 10,00" << endl;
n %= 10;
cout << n / 5 << " nota(s) de R$ 5,00" << endl;
n %= 5;
cout << n / 2 << " nota(s) de R$ 2,00" << endl;
n %= 2;
cout << n / 1 << " nota(s) de R$ 1,00" << endl;
return 0;
}
9.时间转换
读取一个整数值,它是工厂中某个事件的持续时间(以秒为单位),请你将其转换为小时:分钟:秒来表示。
输入格式
输入一个整数 N。
输出格式
输出转换后的时间表示,格式为 hours:minutes:seconds
。
数据范围
1≤N≤1000000
输入样例:
556
输出样例:
0:9:16
参考代码:
#include <iostream>
using namespace std;
int main()
{
int s;
cin>>s;
//s/3600表示有多少个小时,%3600/60表示分钟,%3600%60表示剩余的秒
cout<<s/3600<<":"<<s%3600/60<<":"<<s%3600%60<<endl;
return 0;
}
10.简单乘积
读取两个整数值。
在此之后,计算它们的乘积并将结果存储在名为 PROD 的变量中。
输出结果如下例所示。
输入格式
共两行,每行包含一个整数。
输出格式
输出格式为 PROD = X
,其中 X为乘积结果。
数据范围
输入的两个整数的绝对值均不超过 10000。
输入样例:
3
9
输出样例:
PROD = 27
参考代码:
#include <iostream>
using namespace std;
int main()
{
int a,b;
cin>>a;
cin>>b;
cout<<"PROD = "<<a*b;
return 0;
}
11.简单计算
给定你两个产品的产品编号,产品数量以及产品单价。
请你计算买下两种产品一共需要花费多少钱。
输入格式
输入共两行。
每行包含两个整数以及一个浮点数,表示其中一件产品的产品编号,产品数量以及产品单价。
输出格式
输出格式为 VALOR A PAGAR: R$ X
,其中 X 为产品总价值,保留两位小数。
数据范围
1≤产品编号,产品数量≤100001≤产品编号,产品数量≤10000,
1.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 x1,x2,y1,y2;
double a,b;
cin>>x1>>y1>>a;
cin>>x2>>y2>>b;
//只需要计算两个产品的数量*价格,再相加的和
printf("VALOR A PAGAR: R$ %.2lf\n",y1*a+y2*b);
return 0;
}
12.球的体积:
给定你一个球体的半径 R,请你计算球体的体积。
π取 3.14159。
注意:有些语言中 (4/3)(4/3) 无法得到 1.3333…,建议在公式中使用 (4/3.0)。
输入格式
输入一个整数 R。
输出格式
输出格式为 VOLUME = X
,其中 X 为球体的体积,结果保留三位小数。
数据范围
1≤R≤2000
输入样例:
3
输出样例:
VOLUME = 113.097
参考代码:
#include <iostream>
using namespace std;
//#define相当于改名子,在后面的整个程序中P就等价于3.14159,
//可以理解为自己在班里的学号就是就代表了自己的名字
#define P 3.14159
int main()
{
int r;
cin>>r;
double V=(4/3.0)*P*r*r*r;
printf("VOLUME = %.3lf",V);
return 0;
}
13.面积
给定三个浮点数 A,B, 和 C。
然后,计算如下图形的面积:
- 底边为 A,高为 C 的三角形。
- 半径 C的圆。(π=3.14159)
- 底边为 A 和 B,高为 C 的梯形。
- 边长为 B 的正方形。
- 边长为 A 和 B的长方形。
输入格式
输入共一行,包含三个保留一位小数的浮点数 A,B,C。
输出格式
输出共五行,形式如下所示:
第一行,格式为 TRIANGULO: X
,其中 X 为所求三角形面积。
第二行,格式为 CIRCULO: X
,其中 X 为所求圆形面积。
第三行,格式为 TRAPEZIO: X
,其中 X 为所求梯形面积。
第四行,格式为 QUADRADO: X
,其中 X 为所求正方形面积。
第五行,格式为 RETANGULO: X
,其中 X 为所求长方形面积。
所有答案保留三位小数。
数据范围
0≤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;
#define P 3.14159
int main()
{
double a,b,c;
cin>>a>>b>>c;
//*0.5等价于除以2,或*二分之一
printf("TRIANGULO: %.3lf\n",a*c*0.5);
printf("CIRCULO: %.3lf\n",P*c*c);
printf("TRAPEZIO: %.3lf\n",(a+b)*c*0.5);
printf("QUADRADO: %.3lf\n",b*b);
printf("RETANGULO: %.3lf\n",a*b);
return 0;
}
14.平均数
读取三个浮点数 A,B和 C的值,对应于三个学生的成绩。
请你计算学生的平均分,其中 A的成绩的权重为 2,B 的成绩的权重为 3,C的成绩的权值为 5。
成绩的取值范围在 0到 10 之间,且均保留一位小数。
输入格式
输入共三行,每行包含一个浮点数,第一行表示 A,第二行表示 B,第三行表示 C。
输出格式
输出格式为 MEDIA = X
,其中 X 为平均分,结果保留一位小数。
数据范围
0≤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;
//总和:每个数*自己的权重并相加。除以权重的和2+3+5=10;
double avge=(a*2+b*3+c*5)/10;
printf("MEDIA = %.1lf",avge);
return 0;
}
15.工资和奖金
请你编写一个程序,给定你一个销售人员的名字,底薪以及月销售额。
请你计算他的月收入是多少。
已知月收入等于底薪加 15% 的月销售额。
所有数据保留两位小数。
输入格式
输入第一行包含一个由大写字母构成的长度不超过 10 的字符串,表示销售人员的名字。
第二行包含一个浮点数,表示该人员的底薪。
第三行包含一个浮点数,表示该人员的月销售额。
输出格式
输出格式为 TOTAL = R$ X
,X为该人员月收入。
数据范围
0≤底薪,月销售额≤10000.00
输入样例:
JOAO
500.00
1000.00
输出样例:
TOTAL = R$ 650.00
参考代码:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string name;
double income,sell;
cin>>name>>income>>sell;
//月销售额的15%,就是月销售额*0.15
printf("TOTAL = R$ %.2lf",income+sell*0.15);
return 0;
}
16.最大值
给定三个整数,请你找出它们中的最大值。
输入格式
输入占一行,包含三个整数。
输出格式
输出格式为 X eh o maior
,其中 X 为三个数中的最大值。
数据范围
1≤给定整数≤10^9
输入样例:
7 14 106
输出样例:
106 eh o maior
参考代码:
#include <iostream>
using namespace std;
int main()
{
int a,b,c;
cin>>a>>b>>c;
//&&符号两边要同时满足才能符合。
if(a>b&&a>c)
{
cout<<a<<" eh o maior"<<endl;
}
else if(b>a&&b>c)
{
cout<<b<<" eh o maior"<<endl;
}
else
{
cout<<c<<" eh o maior"<<endl;
}
return 0;
}
17.距离
两辆汽车在同一地点,同时,沿同一方向前进。
一辆车的速度为 60 km/h,另一辆车的速度为 90 km/h。
显然,快车与慢车的距离会不断拉开,每过一个小时(60 分钟),两车的距离就拉开 30 公里。
现在,告诉你两车之间的距离为 L 公里,请你求出两车已经行驶了多长时间?
输入格式
输入包含一个整数 L,表示两车之间的距离。
输出格式
输出格式为 X minutos
,其中 X 为已经行驶的时间,单位为分钟。
数据范围
1≤L≤10^9
输入样例:
30
输出样例:
60 minutos
参考代码:
#include <iostream>
using namespace std;
int main()
{
int x;
cin>>x;
//每小时拉开30公里,每小时60公里相当于没两分钟拉开一公里。
//所以行驶的公里数*2就是行驶的时间。
cout<<x*2<<" minutos";
return 0;
}
18.燃料消耗
一辆汽车每行驶 12 公里需要消耗 1 升汽油,现在告诉你该汽车的行驶速度 S(km/h)和行驶时间 T(ℎ),请你计算该车在行驶过程中一共消耗了多少升汽油。
输入格式
输入共两行,第一行包含一个整数 T,表示行驶时间(h)。
第二行包含一个整数 S,表示行驶速度(km/h)。
输出格式
输出行驶期间的总油耗,结果保留三位小数。
数据范围
1≤T,S≤10^7
输入样例:
10
85
输出样例:
70.833
#include<iostream>
using namespace std;
int main()
{
long long s,t;
cin>>s;
cin>>t;
//总的距离=行驶时间*每小时速度。
double oil=s*t/12.0;
printf("%.3lf\n",oil);
return 0;
}
19.钞票和硬币
读取一个带有两个小数位的浮点数,这代表货币价值。
在此之后,将该值分解为多种钞票与硬币的和,每种面值的钞票和硬币使用数量不限,要求使用的钞票和硬币的总数量尽可能少。
钞票的面值是 100,50,20,10,5,2。
硬币的面值是 1,0.50,0.25,0.10,0.05。
经过实验证明:在本题中,优先使用面额大的钞票和硬币可以保证所用的钞票和硬币总数量最少。
输入格式
输入一个浮点数 N。
输出格式
参照输出样例,输出每种面值的钞票和硬币的需求数量。
数据范围
0≤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()
{
int a[12]={10000,5000,2000,1000,500,200,100,50,25,10,5,1};
double n;
cin>>n;
int m=(int)(n*100);
printf("NOTAS:\n");
for(int i=0;i<12;i++)
{
if(i<6) {printf("%d nota(s) de R$ %.2lf\n",m/a[i],(double)a[i]/100);m%=a[i];}
if(i==6) printf("MOEDAS:\n");
if(i>=6) {printf("%d moeda(s) de R$ %.2lf\n",m/a[i],(double)a[i]/100);m%=a[i];}
}
return 0;
}
20.天数转换
读取对应于一个人的年龄(以天为单位)的整数值,并转化为年,月和日表示方式输出,年、月、日分别对应 ano(s)
, mes(es)
, dia(s)
。
注意:为了方便计算,假设全年 365365 天,每月 3030 天。 数据保证,不会出现 1212 个月和几天的情况,例如 360,363360,363 或 364364。
输入格式
输入一个整数 N。
输出格式
参照输出样例,输出转换后的天数表达。
数据范围
1≤N≤1000000
输入样例:
400
输出样例:
1 ano(s)
1 mes(es)
5 dia(s)
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int a[3]={365,30,1};
cout<<n/365<<" ano(s)"<<endl;n%=365;
cout<<n/30<<" mes(es)"<<endl;n%=30;
cout<<n<<" dia(s)"<<endl;
return 0;
}
第二讲:判断语句
1.倍数
读取两个正整数值 A 和 B。
如果其中一个是另一个的整数倍,则输出 Sao Multiplos
,否则输出 Nao sao Multiplos
。
输入格式
共一行,两个整数 A 和 B。
输出格式
按题目所述,输出结果。
数据范围
0<A,B<100
输入样例:
6 24
输出样例:
Sao Multiplos
参考代码:
#include <iostream>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
if(a%b==0 || b%a==0)
cout<<"Sao Multiplos"<<endl;
else
cout<<"Nao sao Multiplos"<<endl;
return 0;
}
2.零食
某商店出售 5 种零食,零食编号为 1∼5。
5 种零食的价目表如下所示:
零食种类 价格
零食 1 R$ 4.00
零食 2 R$ 4.50
零食 3 R$ 5.00
零食 4 R$ 2.00
零食 5 R$ 1.50
现在给定某种零食的编号和数量,请你计算总价值是多少。
输入格式
输入包含两个整数 x 和 y,其中 x 为零食编号,y 为零食数量。
输出格式
输出格式为 Total: R$ X
,其中 X 为总价值,保留两位小数。
数据范围
1≤x≤5
1≤y≤100
输入样例:
3 2
输出样例:
Total: R$ 10.00
参考代码:
#include <iostream>
using namespace std;
int main()
{
double b;
int a;
cin>>a>>b;
//switch语句中,a是几就去执行case几,但是每个case后必须以break结尾.
switch(a)
{
case 1:
printf("Total: R$ %.2lf\n",b*4);
break;
case 2:
printf("Total: R$ %.2lf\n",b*4.5);
break;
case 3:
printf("Total: R$ %.2lf\n",b*5);
break;
case 4:
printf("Total: R$ %.2lf\n",b*2);
break;
case 5:
printf("Total: R$ %.2lf\n",b*1.5);
break;
}
return 0;
}
3.区间
给定一个浮点数,请你判断该数字属于以下哪个区间:[0,25],(25,50],(50,75],(75,100]。
如果给定的数值小于 00 或大于 100100,则程序输出 Fora de intervalo
,表示超出范围。
开区间 (a,b):在实数 a 和实数 b 之间的所有实数,但不包含 a 和 b。
闭区间 [a,b]:在实数 a和实数 b 之间的所有实数,包含 a 和 b。
输入格式
输入一个浮点数。
输出格式
判断输入数值位于哪个区间,按格式 Intervalo x
输出,其中 x 为区间范围 [0,25],(25,50],(50,75],(75,100] 中的一个。
如果数值位于所有区间之外,则输出 Fora de intervalo
。
输入样例:
25.01
输出样例:
Intervalo (25,50]
参考代码:
#include <iostream>
using namespace std;
int main()
{
//开区间( 或)用>或<,闭区间[ 或 ]用>=或<=
double n;
cin>>n;
if(n>=0 && n<=25) cout<<"Intervalo [0,25]"<<endl;
else if(n>25 && n<=50) cout<<"Intervalo (25,50]"<<endl;
else if(n>50 && n<=75) cout<<"Intervalo (50,75]"<<endl;
else if(n>75 && n<=100) cout<<"Intervalo (75,100]"<<endl;
else cout<<"Fora de intervalo"<<endl;
return 0;
}
4.三角形
读取三个浮点数 A,B 和 C 并验证是否可以用它们形成三角形。
如果可能,则计算并输出三角形的周长:
Perimetro = XX.X
如果不可能,则计算并输出以 A 和 B为底以 C 为高的梯形面积:
Area = XX.X
输入格式
共一行,包含三个浮点数 A,B,C。
输出格式
按题目描述格式,输出答案,答案保留一位小数。
数据范围
0<A,B,C<100.0
输入样例1:
6.0 4.0 2.0
输出样例1:
Area = 10.0
输入样例2:
6.0 4.0 2.1
输出样例2:
Perimetro = 12.1
参考代码:
#include <iostream>
using namespace std;
int main()
{
double a,b,c;
cin>>a>>b>>c;
if(a+b>c && a+c>b &&b+c>a) printf("Perimetro = %.1lf\n",a+b+c);
else printf("Area = %.1lf\n", (a+b)*c*0.5);
return 0;
}
5.游戏时间
读取两个整数 A 和 B,表示游戏的开始时间和结束时间,以小时为单位。
然后请你计算游戏的持续时间,已知游戏可以在一天开始并在另一天结束,最长持续时间为 24 小时。
如果 A与 B相等,则视为持续了 24 小时。
输入格式
共一行,包含两个整数 A 和 B。
输出格式
输出格式为 O JOGO DUROU X HORA(S)
,其中 X 为游戏持续时间。
数据范围
0≤A,B≤23
输入样例1:
16 2
输出样例1:
O JOGO DUROU 10 HORA(S)
输入样例2:
0 0
输出样例2:
O JOGO DUROU 24 HORA(S)
输入样例3:
2 16
输出样例3:
O JOGO DUROU 14 HORA(S)
参考代码:
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
int res;
if(a<b) res = b - a;
else res = b - a + 24;
printf("O JOGO DUROU %d HORA(S)",res);
return 0;
}
6.加薪
ABC 公司决定给员工加薪,加薪情况如下所示:
薪水 涨薪幅度
0 - 400.00 15%
400.01 - 800.00 12%
800.01 - 1200.00 10%
1200.01 - 2000.00 7%
超过 2000.00 4%
读取员工的工资,计算并输出员工的新工资,以及员工增加的收入和涨薪幅度。
输入格式
共一行,包含一个保留两位小数的浮点数。
输出格式
输出格式如下所示:
第一行输出 Novo salario: X
,X 表示员工新工资,保留两位小数。
第二行输出 Reajuste ganho: Y
,Y表示员工增加的具体收入数值,保留两位小数。
第三行输出 Em percentual: Z
,Z 表示涨薪幅度,注意用百分比表示。
数据范围
0≤原工资≤2500.00
输入样例:
400.00
输出样例:
Novo salario: 460.00
Reajuste ganho: 60.00
Em percentual: 15 %
参考代码:
#include <iostream>
using namespace std;
int main()
{
double n;
cin>>n;
if(n>=0 && n<=400)
printf("Novo salario: %.2lf\nReajuste ganho: %.2lf\nEm percentual: %d %\n",
n+=n*0.15,n*0.15,15);
else if(n>400 && n<=800)
printf("Novo salario: %.2lf\nReajuste ganho: %.2lf\nEm percentual: %d %\n",
n+=n*0.12,n*0.12,12);
else if(n>800 && n<=1200)
printf("Novo salario: %.2lf\nReajuste ganho: %.2lf\nEm percentual: %d %\n",
n+=n*0.1,n*0.1,10);
else if(n>1200 && n<=2000)
printf("Novo salario: %.2lf\nReajuste ganho: %.2lf\nEm percentual: %d %\n",
n+=n*0.07,n*0.07,7);
else
printf("Novo salario: %.2lf\nReajuste ganho: %.2lf\nEm percentual: %d %\n",
n+=n*0.04,n*0.04,4);
return 0;
}
7.动物
给定你三个葡萄牙语单词,这些词将根据下表从左到右定义一个动物。
请你确定并输出这个动物的名称。
输入格式
根据上表,输入包含三个单词,每行一个,用以识别动物,单词由小写字母构成。
输出格式
输出识别出的动物的名称。
输入样例:
vertebrado
mamifero
onivoro
输出样例:
homem
参考代码:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
string a,b,c;
cin>>a>>b>>c;
if(a=="vertebrado")
{
if(b=="mamifero")
{
if(c=="onivoro") cout<<"homem"<<endl;
else cout<<"vaca"<<endl;
}
else if(c=="carnivoro")
{
cout<<"aguia"<<endl;
}
else cout<<"pomba"<<endl;
}
else if(b=="inseto")
{
if (c=="hematofago") cout<<"pulga"<<endl;
else cout <<"lagarta"<<endl;
}
else if(c=="hematofago") cout <<"sanguessuga"<<endl;
else cout<<"minhoca"<<endl;
return 0;
}
8.选择练习1
读取 44 个整数值 A,B,C和 D。
如果四个整数同时满足以下条件:
- B 大于 C。
- D 大于 A。
- C和 D 的总和大于 A 和 B 的总和。
- C 和 D是正值。
- A是偶数。
则输出 Valores aceitos
,否则,输出 Valores nao aceitos
。
输入格式
输入占一行,包含四个整数 A,B,C,D。
输出格式
如果输入数值满足题目条件则输出 Valores aceitos
,否则输出 Valores nao aceitos
。
数据范围
−100≤A,B,C,D≤100
输入样例:
5 6 7 8
输出样例:
Valores nao aceitos
参考代码:
#include <iostream>
using namespace std;
int main()
{
int a,b,c,d;
cin>>a>>b>>c>>d;
if(b>c && d>a && c+d>a+b && c>0 && d>0 && a%2==0)
cout <<"Valores aceitos"<<endl;
else cout<<"Valores nao aceitos"<<endl;
return 0;
}
9.DDD
给定一个整数,请根据下表确定并输出其对应的城市名称:
如果输入数字不在上表中,则输出 DDD nao cadastrado
。
输入格式
共一行,包含一个整数。
输出格式
输出对应城市名称,如果没有对应城市名称,则输出 DDD nao cadastrado
。
输入样例:
11
输出样例:
Sao Paulo
参考代码:
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
if(n==11) printf("Sao Paulo");
else if(n==21) printf("Rio de Janeiro");
else if(n==61) printf("Brasilia");
else if(n==71) printf("Salvador");
else if(n==32) printf("Juiz de Fora");
else if(n==19) printf("Campinas");
else if(n==27) printf("Vitoria");
else if(n==31) printf("Belo Horizonte");
else printf("DDD nao cadastrado");
return 0;
}
10.点的坐标
给定两个保留一位小数的浮点数 X,Y,用来表示一个点的横纵坐标。
请你判断该点在坐标系中的位置。
输入格式
共一行,包含两个浮点数 X,Y,表示点的横纵坐标。
输出格式
如果点在第一象限,则输出 Q1
,在第二象限,则输出 Q2
,以此类推。
如果点在原点处,则输出 Origem
。
否则,如果点在 x坐标上,则输出 Eixo X
,在 y 坐标上,则输出 Eixo Y
。
数据范围
−10.0≤X,Y≤10.0
输入样例1:
4.5 -2.2
输出样例1:
Q4
输入样例2:
0.0 0.0
输出样例2:
Origem
参考代码:
坐标轴的正负:
#include <iostream>
using namespace std;
int main()
{
double a,b;
cin>>a;
cin>>b;
if(a>0 && b>0) cout<<"Q1"<<endl;
else if(a<0 && b>0) cout<<"Q2"<<endl;
else if(a<0 && b<0) cout<<"Q3"<<endl;
else if(a>0 && b<0) cout<<"Q4"<<endl;
else if(a==0 && b==0) cout<<"Origem"<<endl;
else if(a!=0 && b==0) cout<<"Eixo X"<<endl;
else cout<<"Eixo Y"<<endl;
return 0;
}
11.三角形类型
读取表示三角形三条边的 3 个浮点数 A,B 和 C 并按降序排列,使 A 边是三边中最大的一边。
接下来,根据以下情况,确定它们可以组成的三角形类型:
- 如果 A≥B+C,则说明三条边不能构成三角形,请输出:
NAO FORMA TRIANGULO
- 否则,说明三条边可以构成三角形,然后按如下情况输出:
- 如果A^2=B^2+C^2,请输出:
TRIANGULO RETANGULO
- 如果A^2>B^2+C^2,请输出:
TRIANGULO OBTUSANGULO
- 如果A^2<B^2+C^2,请输出:
TRIANGULO ACUTANGULO
- 如果三个边长度都相同,请输出:
TRIANGULO EQUILATERO
- 如果只有两个边长度相同而第三个边长度不同,请输出:
TRIANGULO ISOSCELES
- 如果A^2=B^2+C^2,请输出:
输入格式
共一行,包含三个浮点数 A,B,C。
输出格式
输出 A,B,C 组成的三角形的类型。
注意,上述条件可能满足不止一条,这种情况下将所有类型名称,按题目介绍顺序输出,每行输出一条。
数据范围
0<A,B,C≤10.0
输入样例:
7.0 5.0 7.0
输出样例:
TRIANGULO ACUTANGULO
TRIANGULO ISOSCELES
参考代码:
#include <iostream>
using namespace std;
int main()
{
double a,b,c;
cin>>a;
cin>>b;
cin>>c;
if(a<b) swap(a,b);
if(a<c) swap(a,c);
if(b<c) swap(b,c);
if(a+b>c && a+c>b && b+c>a)
{
if(a*a==b*b+c*c) cout<<"TRIANGULO RETANGULO"<<endl;
if(a*a>(b*b+c*c)) cout<<"TRIANGULO OBTUSANGULO"<<endl;
if(a*a<(b*b+c*c)) cout<<"TRIANGULO ACUTANGULO"<<endl;
if(a==b && a==c) cout<<"TRIANGULO EQUILATERO"<<endl;
if((a==b && a!=c)||(a!=b && b==c)||(a!=b && a==c))
cout<<"TRIANGULO ISOSCELES"<<endl;
}
else cout<<"NAO FORMA TRIANGULO"<<endl;
return 0;
}
12. 游戏时间2
读取四个整数 A,B,C,D,用来表示游戏的开始时间和结束时间。
其中 A 和 B为开始时刻的小时和分钟数,C 和 D 为结束时刻的小时和分钟数。
请你计算游戏的持续时间。
比赛最短持续 1分钟,最长持续 24 小时。
输入格式
共一行,包含四个整数 A,B,C,D。
输出格式
输出格式为 O JOGO DUROU X HORA(S) E Y MINUTO(S)
,表示游戏共持续了 X 小时 Y分钟。
数据范围
0≤A,C≤23,
0≤B,D≤59
输入样例1:
7 8 9 10
输出样例1:
O JOGO DUROU 2 HORA(S) E 2 MINUTO(S)
输入样例2:
7 7 7 7
输出样例2:
O JOGO DUROU 24 HORA(S) E 0 MINUTO(S)
输入样例3:
7 10 8 9
输出样例3:
O JOGO DUROU 0 HORA(S) E 59 MINUTO(S)
参考代码:
#include <cstdio>
int main()
{
int a,b,c,d;
scanf("%d %d %d %d",&a ,&b, &c, &d);
int start =a*60+b;
int end =c*60+d;
int cost_time=end-start;
//1440表示24小时的分钟数,表示从第一天玩的第二天.
if(cost_time<=0) cost_time+=1440;
printf("O JOGO DUROU %d HORA(S) E %d MINUTO(S)",cost_time/60,cost_time%60);
return 0;
}
13.税
读取一个保留两位小数的浮点数值,表示一个公民的工资。
在公民缴纳个人所得税时,不同收入部分需要缴税的税率也是不同的。
请根据下表确定该公民需要缴纳的个人所得税是多少。
输入格式
共一行,包含一个浮点数。
输出格式
如果公民需要缴税,则输出所需缴纳的税额。输出格式为 R$ X
,其中 X 为个税的金额,保留两位小数。
如果公民不需要缴税,则输出 Isento
。
数据范围
0≤公民工资≤5000
输入样例1:
3002.00
输出样例1:
R$ 80.36
输入样例2:
1700.00
输出样例2:
Isento
输入样例3:
4520.00
输出样例3:
R$ 355.60
样例解释
对于样例 1,0∼2000.00部分不用缴税,2000.01∼3000.00 部分按 8% 的税率缴税,共计 1000×8%=80,3000.01∼3002.00 部分按 18% 的税率缴税,共计 2×18%=0.36,合计 80.36。
对于样例 2,公民收入未超过 2000,所以输出 Isento
。
对于样例 33,0∼2000.000∼2000.00 部分不用缴税,2000.01∼3000.00 部分按 8% 的税率缴税,共计 1000×8%=80,3000.01∼4500.00 部分按 18% 的税率缴税,共计 1500×18%=270,4500.01∼4520部分按 28%的税率缴税,共计 20×28%=5.60,合计 355.60。
参考代码:
#include <iostream>
using namespace std;
int main()
{
double salary;
cin>>salary;
if(salary<=2000) printf("Isento");
else if(salary<=3000 && salary>2000) printf("R$ %.2lf",(salary-2000)*0.08);
else if(salary<=4500 && salary>3000) printf("R$ %.2lf",80+(salary-3000)*0.18);
else if(salary>4500) printf("R$ %.2lf",80+270+(salary-4500)*0.28);
return 0;
}
14.简单排序
读取三个整数并按升序对它们进行排序。
输入格式
共一行,包含三个整数。
输出格式
首先,将三个整数按升序顺序输出,每行输出一个整数。
然后,输出一个空行。
紧接着,将三个整数按原输入顺序输出,每行输出一个整数。
数据范围
−100≤输入整数≤100
输入整数各不相同。
输入样例:
7 21 -14
输出样例:
-14
7
21
7
21
-14
参考代码:
#include <iostream>
using namespace std;
int main()
{
int a, b, c;
cin >> a >> b >> c;
int x = a, y = b, z = c;
if (b < a)
{
int t = a;
a = b;
b = t;
}
if (c < a)
{
int t = a;
a = c;
c = t;
}
if (c < b)
{
int t = b;
b = c;
c = t;
}
cout << a << endl << b << endl << c << endl << endl;
cout << x << endl << y << endl << z << endl;
return 0;
}
15.一元二次方程公式
读取三个浮点数 a,b,c 的值,利用一元二次方程求根公式对方程 ax^2+bx+c=0 进行求解。
一元二次方程求根公式为:
如果 b^2−4ac<0 导致方程无解或 a=0,则输出 Impossivel calcular
。
输入格式
输入占一行,包含三个浮点数 a,b,c。
输出格式
参照输出格式,输出方程的根,输出结果保留五位小数,如果无解则输出 Impossivel calcular
。
两个根可以按任意顺序输出,都算正确。
数据保证不存在只有一个解的情况。
数据范围
−1000.0≤a,b,c≤1000.0
输入样例:
10.0 20.1 5.1
输出样例:
R1 = -0.29788
R2 = -1.71212
参考代码:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double a,b,c;
cin>>a;
cin>>b;
cin>>c;
if((b*b-4*a*c)<0||a==0) printf("Impossivel calcular\n");
else
{
printf("R1 = %.5lf\nR2 = %.5lf",
(-b+sqrt(b*b-4*a*c))/(2*a),(-b-sqrt(b*b-4*a*c))/(2*a));
}
return 0;
}
20.平均数3
读取 44 个数字 N1,N2,N3,N4,这 4 个数字都是保留 1 位小数的浮点数,对应于学生获得的 4 个分数。
这 4 个分数的权重分别为 2,3,4,1,请你计算学生成绩的平均值 X 并输出 Media: X
。
接下来分为以下三种情况:
- 如果平均值为 7.0 或更高,则输出
Aluno aprovado.
。 - 如果平均值小于 5.0,则输出
Aluno reprovado.
。 - 如果平均值大于等于 5.0并且小于 7.0,则输出
Aluno em exame.
,并再读取一个数字 Y,然后输出Nota do exame: Y
。接下来重新计算平均值 Z=(X+Y)/2,如果 Z 大于或等于 5.0,则输出Aluno aprovado.
,否则输出Aluno reprovado.
。最后输出Media final: Z
,表示学生的最终成绩。
输入格式
输入中包含四个浮点数,表示学生的四个成绩。
也有部分满足情况 3 的数据,多包含一个浮点数。
输出格式
输出的结果,具体形式参照题目描述和输出样例。
只要输出结果与答案的绝对误差不超过 0.1 即视为正确。
数据范围
0≤输入数据≤10.0
输入样例1:
2.0 4.0 7.5 8.0
6.4
输出样例1:
Media: 5.4
Aluno em exame.
Nota do exame: 6.4
Aluno aprovado.
Media final: 5.9
输入样例2:
2.0 6.6 4.0 9.0
输出样例2:
Media: 4.9
Aluno reprovado.
输入样例3:
9.0 4.0 8.5 9.0
输出样例3:
Media: 7.3
Aluno aprovado.
参考代码:
#include <iostream>
using namespace std;
int main()
{
double a,b,c,d;
cin>>a;
cin>>b;
cin>>c;
cin>>d;
double avge=(a*2+b*3+c*4+d)/10;
printf("Media: %.1lf\n",avge);
if(avge>=7) printf("Aluno aprovado.\n");
else if(avge<7 && avge>=5)
{
printf("Aluno em exame.\n");
double y;
cin>>y;
printf("Nota do exame: %.1lf\n",y);
double z=(avge+y)/2;
if(z>=5)
printf("Aluno aprovado.\n");
else
printf("Aluno reprovado.\n");
printf("Media final: %.1lf\n",z);
}
else printf("Aluno reprovado.\n");
return 0;
}