1、先分别统计三位同学的各科成绩。
2、把各科的成绩分别相加得出结果就可以了。js全名javascript是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。
<script type="text/javascript">var totalWeightedScore
var lastScore
var totalCredit
var gainCredit
function checkScore(fs){
if(isNaN(fs) || fs <0 || fs >100){
alert("分数输入错误,范围0-100,请重新输入")
return false
}
return true
}
function checkCredit(is){
if(isNaN(is) || is <1 || is >4){
alert("分数输入错误,范围1-4,请重新输入")
return false
}
return true
}
function getNextScore(){
var data = window.prompt("请输入下一门课程的成绩,输入-1表示结束", '0')
var fs = parseFloat(data)
if(fs == -1){
endX()
return
}
if(!checkScore(data)){
getNextScore()
}else{
lastScore = fs
getNextCredit()
}
}
function getNextCredit(){
var data = window.prompt("请输入课程的学分", '0')
var is = parseInt(data)
if(!checkCredit(is)){
getNextCredit()
}else{
totalCredit += is
if(lastScore >= 60){
gainCredit += is
}
totalWeightedScore += lastScore * is
getNextScore()
}
}
function startX(){
lastScore = -1
totalWeightedScore = 0
totalCredit = 0
gainCredit = 0
getNextScore()
}
function endX(){
if(lastScore == -1){
alert("未输入任何分数与学分")
return
}
var weightedScore = totalWeightedScore / totalCredit
weightedScore = Math.round(weightedScore * 100) / 100
var info = "加权平均分:" + weightedScore
+ "\n总学分数:" + totalCredit
+ "\n及格总学分数:" + gainCredit
if(gainCredit == totalCredit){
info += "\nAll Pass"
}else if(gainCredit <totalCredit / 2){
info += "\n二一不及格"
}
alert(info)
}
</script>
<input type="button" value=" 开始 " onclick="startX()"/>
通常对于分数形式数列进行求和,结果应该以分数形式精确表达。
不懂 javascript,写了一段 fortran 代码,有算法注释(绿色字体内容)。供参考。
这个数列的前20项之和,分数的精确结果为:
302163077445280087617864490505 / 9251704366605890848773498384;
小数近似值为:32.6602607986416428993589060054738884429061689127289861207667
附:计算结果和 fortran 代码,计算时间小于1毫秒