#include<stdio.h>
int main()
{
int length,interval,hz,cc,ave;
while(scanf("%d %d",&length,&interval)!=EOF)
{
hz=length;
int i=0;
for(length=length-interval;length>interval;length-=interval)
{
int temp=0;
for(int j=1;j<=interval;j++)
{
i+=2;
temp+=i;
cc=temp;
}
ave=cc/interval;
printf("%d ",ave);
}
int temp=0;
for(int j=1;j<=(hz%interval);j++)
{
i+=2;
temp+=i;
cc=temp;
}
printf("%d\n",cc/(hz%interval));
}
return 0;
}
求大神看看这段代码错哪里了
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 芣苢的成长之路 2023-06-26 23:31关注
1、在内部的 for 循环中,循环变量 j 的初始值应为 0 而不是 1,因为循环中的计算是从数列的起始值开始的;2、在第一个 for 循环中,循环条件 length > interval 可能会导致错误。应该改为 length >= interval,以确保最后不足 interval 个数时也能进行计算;3、在计算平均值时,使用的是整数除法 cc/interval,这可能导致结果向下取整,而不是四舍五入到最接近的整数。可以考虑使用浮点数运算,并将 cc 和 interval 转换为浮点数进行计算,然后再将结果转换为整数。修改为 ave = (int)((float)cc / interval + 0.5);,其中 (float) 将变量转换为浮点数,+ 0.5 实现四舍五入;4、在最后一个 for 循环中,计算平均值时使用了 (hz % interval),但是该值可能为 0,此时会导致除以 0 的错误。应该添加一个条件判断,当 (hz % interval) 为 0 时,将其改为 interval,即使用 ave = cc / (hz % interval ? hz % interval : interval);。以下附上修改后的代码:
#include <stdio.h> int main() { int length, interval, hz, cc, ave; while (scanf("%d %d", &length, &interval) != EOF) { hz = length; int i = 0; for (length = length - interval; length >= interval; length -= interval) { int temp = 0; for (int j = 0; j < interval; j++) { i += 2; temp += i; cc = temp; } ave = (int)((float)cc / interval + 0.5); printf("%d ", ave); } int temp = 0; for (int j = 0; j < (hz % interval ? hz % interval : interval); j++) { i += 2; temp += i; cc = temp; } ave = cc / (hz % interval ? hz % interval : interval); printf("%d\n", ave); } return 0; }
解决 无用评论 打赏 举报
悬赏问题
- ¥50 求大神教题,这个代码和讲解思路都怎么写呀,完全卡住了
- ¥15 python随机森林对两个excel表格读取,shap报错
- ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
- ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。
- ¥30 求给定范围的全体素数p的(p-2)/p的连乘积值
- ¥15 VFP如何使用阿里TTS实现文字转语音?
- ¥100 需要跳转番茄畅听app的adb命令
- ¥50 寻找一位有逆向游戏盾sdk 应用程序经验的技术
- ¥15 请问有用MZmine处理 “Waters SYNAPT G2-Si QTOF质谱仪在MSE模式下采集的非靶向数据” 的分析教程吗
- ¥15 adb push异常 adb: error: 1409-byte write failed: Invalid argument