题解 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最后把我们的分还是给加回来了,谢谢你啊!。
这一题还是别抄了吧,这题还抄……