马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
某门课规定总成绩由两部分组成,即平时成绩和期末考试成绩,这两部分成绩的比例为a:b,假设a为3,b为7,则意味着在总成绩中平时成绩占30%,期末考试成绩占70%。现在请你写一段程序来计算一下,某位同学是否及格。
输入格式:
为4个用空格分隔的整数,依次代表两种成绩所占比例a,b 以及平时成绩,期末考试成绩。注意:测试用例不保证a+b一定等于10。
输出格式:
为两行,第一行为该同学的总成绩(保留1位小数),第二行,如果该同学总成绩及格(大于等于60),则输出pass,否则输出fail。测试用例保证合法,且整数可以用int存储,小数可以用float存储。
下面是我的代码#include <stdio.h>
int main()
{
int a,b,pingshi,mowei;
scanf("%d %d %d %d",&a,&b,&pingshi,&mowei);
float persent1 = (float)(a/(a + b));
float persent2 = (float)(b/(a + b));
int chengji = (pingshi * persent1)+(mowei * persent2);
printf("%.1f\n",chengji);
if(chengji > 60)
{
printf("pass\n");
}
else
{
printf("fail\n");
}
return 0;
}
C/C++交流
对于你的代码,有几个可以改进的地方。
首先,计算百分比所占比例时,a和b应该强制转换为float类型,以确保计算结果为浮点数。
其次,在计算总成绩时,将pingshi和mowei分别与persent1和persent2相乘后再相加,可以得到更精确的结果。
最后,判断及格与否时,应该使用大于等于60来判断。
修改后的代码如下: #include <stdio.h>int main() { int a, b, pingshi, mowei; scanf("%d %d %d %d", &a, &b, &pingshi, &mowei); float persent1 = (float)a / (a + b); float persent2 = (float)b / (a + b); float chengji = pingshi * persent1 + mowei * persent2; printf("%.1f\n", chengji); if (chengji >= 60) { printf("pass\n"); } else { printf("fail\n"); } return 0;}
请注意,以上代码假设输入的a和b之和不为0。如果需要对这种情况进行处理,请在代码中添加相应的条件判断。
希望能对你有所帮助!如果还有其他问题,请随时提问。
球一个最佳答案谢谢啦!这对我非常重要!
|