|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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。如果需要对这种情况进行处理,请在代码中添加相应的条件判断。
希望能对你有所帮助!如果还有其他问题,请随时提问。
球一个最佳答案谢谢啦!这对我非常重要! 
|
|