[NOI题库]1.3编程基础之算术表达式与顺序执行 题解(一)

01 A+B问题

      经典的A+B Problem——各大题库上的首题。读入$a,b$,输出$a+b$。

#include <iostream>
using namespace std;
int main()
{
    int a,b;
    cin>>a>>b;
    cout<<a+b<<endl;
    return 0;
}
01.cpp

02 计算(a+b)*c的值

      读入$a,b,c$,输出$c(a+b)$。

#include <iostream>
using namespace std;
int main()
{
    int a,b,c;
    cin>>a>>b>>c;
    cout<<(a+b)*c<<endl;
    return 0;
}
02.cpp

03 计算(a+b)/c的值

      读入$a,b,c$,输出$\lfloor \dfrac{a+b}{c} \rfloor$。事实上,如果算子均为整数,C++中的除号"/"就可以实现取整了。

#include <iostream>
using namespace std;
int main()
{
    int a,b,c;
    cin>>a>>b>>c;
    cout<<(a+b)/c<<endl;
    return 0;
}
03.cpp

04 带余除法

      小学算术,设读入的是$a,b$,那么所求的两个数依次为 a/b 和 a%b 。

#include <iostream>
using namespace std;
int main()
{
    int a,b;
    cin>>a>>b;
    cout<<a/b<<" "<<a%b<<endl;
    return 0;
}
04.cpp

05 计算分数的浮点数值

      用 double 类型存储并进行除法运算,注意按格式输出。当然也可以用 1.0*a/b 这样的语句得到实数除的结果。

#include <cstdio>
using namespace std;
int main()
{
    int a,b;
    scanf("%d%d",&a,&b);
    printf("%.9f\n",1.0*a/b);
    return 0;
}
05.cpp

06 甲流疫情死亡率

      好可怕的背景啊。。。。。。其实就是两个数相除,结果化为百分数输出。输出语句可以写为 printf("%.3f%%\n",100*x); ,x就是计算出来的商。

#include <cstdio>
using namespace std;
int main()
{
    int a,b;
    scanf("%d%d",&a,&b);
    b=b*100;
    printf("%.3f%%\n",1.0*b/a);
    return 0;
}
06.cpp

07 计算多项式的值

      这道题可以直接算,不过有更好的方法,就是霍纳法则:

\[f(x)=ax^3+bx^2+cx+d=((ax+b)x+c)x+d\]

      这样可以使运算次数减少很多。

#include <cstdio>
using namespace std;
int main()
{
    double x,a,b,c,d;
    scanf("%lf%lf%lf%lf%lf",&x,&a,&b,&c,&d);
    printf("%.7f\n",(((a*(x)+b)*x)+c)*x+d);
    return 0;
}
07.cpp

08 温度表达转化

      给出$F$,求$C=\dfrac{5}{9}(F-32)$。

#include <cstdio>
using namespace std;
int main()
{
    double f,c;
    scanf("%lf",&f);
    c=5*(f-32)/9;
    printf("%.5f\n",c);
    return 0;
}
08.cpp

09 与圆相关的计算

      给出$R$,求$C=2\pi R$和$S=\pi R^2$。

#include <cstdio>
#define PI 3.14159
using namespace std;
int main()
{
    double r;
    scanf("%lf",&r);
    printf("%.4f %.4f %.4f\n",2*r,2*PI*r,PI*r*r);
    return 0;
}
09.cpp

10 计算并联电阻的阻值

      给出$R_1,R_2$,求

\[R=\frac{1}{\frac{1}{R_1}+\frac{1}{R_2}}\]

#include <cstdio>
using namespace std;
int main()
{
    float r,r1,r2;
    scanf("%f%f",&r1,&r2);
    r=1.0/(1/r1+1/r2);
    printf("%.2f\n",r);
    return 0;
}
10.cpp

 

posted @ 2015-09-24 13:25  常可  阅读(1946)  评论(0编辑  收藏  举报