VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1154|回复: 9

[交流] 小白求大哥指教以下代码进行除法运算会报错,不知道怎么解决

[复制链接]
71_avatar_middle
最佳答案
0 
在线会员 发表于 2022-4-26 23:12:19 | 显示全部楼层 |阅读模式
//程序代码如下

#include <iostream>
using namespace std;
#include<string>

struct student
{
        string name;
        int    number;
        char   sex;
        int    chengji;
};
static int num;

int main()
{
       
        student array[] =
        {
                {"zhang1",1001,'f',89},
                {"zhang2",1002,'f',69},
                {"zhang3",1003,'x',77},
                {"zhang4",1004,'f',49},
                {"zhang5",1005,'f',89},
                {"zhang6",1006,'x',69},
                {"zhang7",1007,'f',77},
                {"zhang8",1008,'x',49}
        };
        for (int idx = 0; idx <8; ++idx)
        {

                cout << array[idx].name << "  " << array[idx].number << "  " << array[idx].sex << "  " << array[idx].chengji << endl;
                num+= array[idx].chengji; // 使用= 号就是对num进行赋值操作,使用+=就是对变量进行累加的操作。
                //num = num / idx;    //不注释程序就会报错,菜鸟不知道怎么解决求大哥指点
                cout << "num=" << num << endl;
                };
}

       
QQ截图20220426231014.png




上一篇:DevC++ 下载
下一篇:关于getchar()
71_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2022-4-26 23:16:18 | 显示全部楼层
刚百度了下是不是将IDX初始值改为1就好了。
71_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2022-4-26 23:22:59 | 显示全部楼层
改成1 也不行。。。。。
57_avatar_middle
最佳答案
25 
在线会员 发表于 2022-4-27 09:53:41 | 显示全部楼层
本帖最后由 JLDawson 于 2022-4-27 09:55 编辑

当 idx == 0时,执行语句 :
num = num / idx;   
此时num == 89 ,idx == 0, 即 num = 89 / 0, 除数为0会报错。
num = num / (idx + 1 );
46_avatar_middle
最佳答案
0 
在线会员 发表于 2022-4-27 10:32:18 | 显示全部楼层
Integer division by zero,因为idx初值是0,除以0就会报错。 改成for (int idx = 1; idx <=8; ++idx)试试
46_avatar_middle
最佳答案
0 
在线会员 发表于 2022-4-27 10:34:53 | 显示全部楼层
你要求平均成绩,不能每循环一次就除以一次idx,你把成绩的累计和num放在循环外面,然后num/总人数,得出平均成绩。
46_avatar_middle
最佳答案
0 
在线会员 发表于 2022-4-27 10:41:39 | 显示全部楼层
        for (int idx = 0; idx < 8; ++idx)
        {

                cout << array[idx].name << "  " << array[idx].number << "  " << array[idx].sex << "  " << array[idx].chengji << endl;
                num += array[idx].chengji; // 使用= 号就是对num进行赋值操作,使用+=就是对变量进行累加的操作。
               
        };


        int renshu = sizeof(array) / sizeof(array[0]);
        num = num / renshu;
        cout << "num=" << num << endl;

        return 0;
}

试试这样,能不能通过。
71_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2022-4-27 22:27:21 | 显示全部楼层
红叶风了 发表于 2022-4-27 10:32
Integer division by zero,因为idx初值是0,除以0就会报错。 改成for (int idx = 1; idx

idx改成1,数组第0个元素就没算进去,那个除法就没意义了,
71_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2022-4-27 22:40:20 | 显示全部楼层
红叶风了 发表于 2022-4-27 10:41
for (int idx = 0; idx < 8; ++idx)
        {

明白了,这样就好了。谢谢大哥指点。。
71_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2022-4-27 22:45:39 | 显示全部楼层
JLDawson 发表于 2022-4-27 09:53
当 idx == 0时,执行语句 :
num = num / idx;   
此时num == 89 ,idx == 0, 即 num = 89 / 0, 除数为0 ...

这个放在循环外面idx 就不在作用域了。
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2023-9-28 13:05

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表