acwing刷题指南2.1

//条件语句

660.零食

#include
using namespace std;
int main()
{
    int x,y;
    cin>>x>>y;
    if(x == 1) printf("Total: R$ %.2lf\n",y*4.00);
    else if(x == 2) printf("Total: R$ %.2lf\n",y*4.50);
    else if(x == 3)printf("Total: R$ %.2lf\n",y*5.00);
    else if(x == 4) printf("Total: R$ %.2lf\n",y*2.00);
    else if(x == 5) printf("Total: R$ %.2lf\n",y*1.50);
    return 0;
}
659.区间

#include
using namespace std;
int main()
{
    double a;
    scanf("%lf",&a);
    if(a>=0 && a<=25) printf("Intervalo [%d,%d]",0,25);
    else if(a>25 && a<=50) printf("Intervalo (%d,%d]",25,50);
    else if(a>50 && a<=75) printf("Intervalo (%d,%d]",50,75);
    else if(a>75 && a<=100) printf("Intervalo (%d,%d]",75,100);
    else printf("Fora de intervalo");
   
    return 0;
}

664.三角形

注意三角形判断方式

#include
using namespace std;
int main()
{
    double A,B,C;
    scanf("%lf%lf%lf",&A,&B,&C);
    if(A+B>C && A+C>B && B+C>A) printf("Perimetro = %.1lf",A+B+C);
    else printf("Area = %.1lf",(A+B)*C/2.0);
    return 0;
}

667. 游戏时间

(读取两个整数 A 和 B,表示游戏的开始时间和结束时间,以小时为单位。

然后请你计算游戏的持续时间,已知游戏可以在一天开始并在另一天结束,最长持续时间为 24小时。

如果 A 与 B 相等,则视为持续了 24 小时。)

看样例可得知

A>B就要加上24,然后再用24+B - A即可,A

输入样例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
using namespace std;
int main()
{
    int A,B;
    cin>>A>>B;
    if(B < A) B += 24;
    if(A == B) cout<<"O JOGO DUROU 24 HORA(S)"<     else if(A < B) cout<<"O JOGO DUROU "<     return 0;
}

669.加薪

直接模拟即可

#include
using namespace std;
int main()
{
    double n;
    scanf("%lf", &n);
    int per = 0;

    if(n >= 0 && n <= 400.00)
        per = 15;
    else if(n > 400.00 && n <= 800.00)
        per = 12;
    else if(n > 800.00 && n <= 1200.00)
        per = 10;
    else if(n > 1200.00 && n <= 2000.00)
        per = 7;
    else
        per = 4;
    double add = n * per / 100;
    printf("Novo salario: %.2lf\n", n+add);
    printf("Reajuste ganho: %.2lf\n", add);
    printf("Em percentual: %d %%\n", per);    
    return 0;
}

670.动物

纯模拟 ,分情况讨论即可

#include
using namespace std;
int main()
{
    string s,a,b;
    cin>>s>>a>>b;
    if(s=="vertebrado"&&a=="ave"&&b=="carnivoro")
        cout<<"aguia";
    else if(s=="vertebrado"&&a=="ave"&&b=="onivoro")
        cout<<"pomba";
    else if(s=="vertebrado"&&a=="mamifero"&&b=="onivoro")
        cout<<"homem";
    else if(s=="vertebrado"&&a=="mamifero"&&b=="herbivoro")
        cout<<"vaca";
    else if(s=="invertebrado"&&a=="inseto"&&b=="hematofago")
        cout<<"pulga";
    else if(s=="invertebrado"&&a=="inseto"&&b=="herbivoro")
        cout<<"lagarta";
    else if(s=="invertebrado"&&a=="anelideo"&&b=="hematofago")
        cout<<"sanguessuga";
    else
        cout<<"minhoca";
    return 0;
}

668.游戏时间2

预先设定差一天后用余数处理,需要注意时间差为24小时的时候取余会变为0,需要特殊处理一下。

#include
using namespace std;
int main()
{
    int a, b, c, d, minute1, minute2;

    cin >> a >> b >> c >> d;
    minute1 = a * 60 + b;
    minute2 = c * 60 + d;
    int hour = 0, minute = 0;
    int soso = minute2 - minute1;
    if(soso == 0)
    {
        hour = 24;
        minute = 0;
    }
    else
    {
        if(soso < 0)       //如 22:00 到 5:00 
        {      
            soso+= 24 * 60; //soso计算的是5点到22点的时间,共17小时,故用一天的分钟(24*60)减去,才是正确经历的分钟
        }
        hour = soso / 60;
        minute = soso % 60;
    }
    cout << "O JOGO DUROU " << hour << " HORA(S) E " << minute << " MINUTO(S)";
    return 0;
}

AcWing 672. 税

小学数学题目native

#include
using namespace std;
int main()
{
    double a;
    cin>>a;
    if(a > 0 && a <= 2000.0) cout<<"Isento";
    else if(a > 2000.0&&a <= 3000) printf("R$ %.2lf",(a-2000)*0.08);
    else if(a > 3000.0 && a <= 4500) printf("R$ %.2lf",(a-3000)*0.18+80);
    else if(a > 4500.0) printf("R$ %.2lf",(a-4500)*0.28+350);
    return 0;
}

658.一元二次方程的解

初中数学解一元二次方程的公式直接上

#include
using namespace std;
int main()
{
    double a,b,c;
    scanf("%lf%lf%lf",&a,&b,&c);
    if(b*b-4*a*c < 0 || a == 0)cout<<"Impossivel calcular"<     else  printf("R1 = %.5f\nR2 = %.5f\n",(-b+sqrt(b*b-4*a*c))/(2*a),(-b-sqrt(b*b-4*a*c))/(2*a));
    return 0;
}

663.简单排序

题目有个这样的要求:

首先,将三个整数按升序顺序输出,每行输出一个整数。

然后,输出一个空行

紧接着,将三个整数按原输入顺序输出,每行输出一个整数。

新手可以考虑用数组,我这里用的是if语句,再开三个变量存原来的数,要不然不符合题意

#include
using namespace std;
int main()
{
    int a,b,c,x,y,z;
    cin>>a>>b>>c;
    x = a,y = b,z = c;
    if(a>b) swap(a,b);
    if(a>c) swap(a,c);
    if(b>c) swap(b,c);
     printf("%d\n%d\n%d\n", a, b, c);
    cout << endl;
    printf("%d\n%d\n%d\n", x, y, z);
    return 0;
}

661.平均数3

#include
using namespace std;

int main()
{
   double x1,x2,x3,x4,ave,y;
   cin >> x1 >> x2 >> x3 >> x4;
   ave=(2*x1+3*x2+4*x3+x4)/10.0;
   cout <<"Media: " << ave << endl;
   if(ave>=7.0) cout << "Aluno aprovado." << endl;
   else if(ave < 5.0) cout << "Aluno reprovado." << endl;
   else{
       cout << "Aluno em exame." << endl;
       cin >> y;
       cout << "Nota do exame: " << y << endl;
       ave = (ave+y)/2;
       if (ave >= 5.0) cout << "Aluno aprovado."<< endl;
       else {
           cout << "Aluno reprovado." << endl;
       }
        cout << "Media final: " << ave << endl;
   } 
   return 0;
}

你可能感兴趣的:(OI新手入门刷题,c++)