题解 P3954 【成绩】

这可能是CCF的NOIP普及组历年来最简单的一道题了,考试时看到这题直接晕倒,这题是不是有坑?这么简单?没错,还真就这么简单,专门来考验你是否会编程。但CCF出来的成绩却令我非常意外,60分!!谷测满分,CCF60分!!看到之后我就愤怒了,接下来我来总(pan)结(dian)当年那些神错法。

30分代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a,b,c;
    int s;
    scanf("%d%d%d",&a,&b,&c);
    s=(int)(a*0.2+b*0.3+c*0.5);//第一次强制转化
    printf("%.lf",(double)s);//第二、三次强制转化
} 

运行:

输入:60 90 80

输出:78

谷测:

AC!记录:https://www.luogu.org/record/show?rid=4962057

60分代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    int x=a*0.2+b*0.3+c*0.5;//第一次强制转化
    printf("%d",x);
}

运行:

输入:60 90 80

输出:78

谷测截图:

AC! 记录:https://www.luogu.org/record/show?rid=4962081

满分代码!

#include<bits/stdc++.h>
using namespace std;
int main()
{
    double a,b,c;
    double s;
    scanf("%lf%lf%lf",&a,&b,&c);
    s=a*0.2+b*0.3+c*0.5;
    printf("%.lf",s);//double型精度满足要求
} 

或者

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a,b,c;
    int s;
    scanf("%d%d%d",&a,&b,&c);
    s=a*20/100+b*30/100+c*50/100;//不涉及强制转化
    printf("%d",s);
} 

这告诉了我们一个惨痛的道理,书上的概念性的东西是多么重要,了解了这些才能获得这题的全分,了解类型的转换。幸好CCF最后把我们的分还是给加回来了,谢谢你啊!。

这一题还是别抄了吧,这题还抄……

posted @ 2018-03-20 23:09  Douglas_Zhou  阅读(363)  评论(0编辑  收藏  举报