为什么每次游戏结束界面输出的当前得分与历史最高分总是一样的,好像并没有与记录的历史最高分进行比较。
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
int xpj(int a[10][5]){//每个学生平均分;
int i,j;
for(i=0;i<10;i++){//第i+1个同学
double c;
int b=0;
for(j=0;j<5;j++){//第i+1个同学的成绩平均分
b+=a[i][j];
c=b/5.00;}
printf("第%d个同学的成绩平均分%0.2f\n",i+1,c);}
}
举个例子,例如,3X5的成绩矩阵
–科目成绩 | A | B | C | D | E |
---|---|---|---|---|---|
学生1 | 1 | 2 | 3 | 4 | 5 |
学生2 | 2 | 3 | 4 | 5 | 6 |
学生3 | 3 | 4 | 5 | 6 | 7 |
/以上代碼的运算原理:先计算学生1 所有成绩的平均值为:3,然后用相同的
方法 循环2次求出 另外两个学生 所有成绩成绩平均值。
答案:
这个问题可能涉及到两个方面:一是前端部分的逻辑问题,二是后端部分对于历史最高分的记录问题。
if (currentScore == highestScore) {
displayHighestScore(highestScore);
} else {
displayCurrentScore(currentScore);
}
这段代码错误地将历史最高分与当前得分相等的情况与历史最高分大于当前得分的情况混为一谈,导致在两种情况下均输出历史最高分。应该将判断分成两步,分别判断是否存在历史最高分,以及历史最高分是否大于当前得分。修正后的代码示例如下:
if (highestScore) {
if (highestScore > currentScore) {
displayHighestScore(highestScore);
} else {
displayCurrentScore(currentScore);
updateHighestScore(currentScore);
}
} else {
displayCurrentScore(currentScore);
updateHighestScore(currentScore);
}
在后端部分,可能存在历史最高分记录的问题。如果历史最高分是通过一个本地变量来保存,那么在游戏结束后或者浏览器关闭后,这个变量就会被清空,导致历史最高分无法记录。应该将历史最高分保存在数据库或者服务器端,这样才能保证历史最高分记录的准确性和持久性。
代码示例:
首先,在服务器端设置一个 API,用于获取历史最高分和更新最高分:
// GET /api/score
app.get('/api/score', (req, res) => {
res.json({ highestScore: highestScore });
});
// POST /api/score
app.post('/api/score', (req, res) => {
const newScore = req.body.score;
if (newScore > highestScore) {
highestScore = newScore;
res.json({ success: true });
} else {
res.json({ success: false });
}
});
然后,前端通过 AJAX 请求来获取最高分和更新最高分,示例代码如下:
// 获取历史最高分
function fetchHighestScore() {
$.ajax({
url: '/api/score',
type: 'GET',
dataType: 'json',
success: function(response) {
displayHighestScore(response.highestScore);
}
});
}
// 更新历史最高分
function updateHighestScore(newScore) {
$.ajax({
url: '/api/score',
type: 'POST',
dataType: 'json',
data: { score: newScore },
success: function(response) {
if (response.success) {
console.log('历史最高分已更新');
} else {
console.log('历史最高分未更新');
}
}
});
}
通过这样的方式,就可以把历史最高分保存在服务器端,从而避免出现本地变量被清空的问题。