奥数与C++小学三年级(第三题平均分配、第四题乘5、第五题乘15)

第三题方法一(代码)

#include <iostream>  
  
int main() {  
    // 初始化甲班和乙班的学生人数  
    int studentsA = 42;  
    int studentsB = 35;  
    // 新转来的学生人数  
    int newStudents = 25;  
      
    // 计算总人数  
    int totalStudents = studentsA + studentsB + newStudents;  
      
    // 计算平均每班应有的人数  
    int averageStudentsPerClass = totalStudents / 2;  
      
    // 分别计算甲班和乙班应分到的学生数  
    int studentsToA = averageStudentsPerClass - studentsA; // 甲班需要增加的学生数  
    int studentsToB = averageStudentsPerClass - studentsB; // 乙班需要增加的学生数  
      
    // 输出结果  
    std::cout << "甲班原有学生: " << studentsA << ", 分配后增加: " << studentsToA << ", 总计: " << averageStudentsPerClass << std::endl;  
    std::cout << "乙班原有学生: " << studentsB << ", 分配后增加: " << studentsToB << ", 总计: " << averageStudentsPerClass << std::endl;  
      
    return 0;  
}

第三题方法二(代码)

#include <iostream>  
  
int main() {  
    // 初始化甲班和乙班的学生人数  
    int studentsA = 42;  
    int studentsB = 35;  
    // 新转来的学生人数  
    int newStudents = 25;  
      
    // 首先,找出乙班比甲班少的学生数  
    int diff = studentsA - studentsB;  
      
    // 如果乙班人数少于甲班,则先补足这个差值  
    if (diff > 0 && newStudents >= diff) {  
        studentsB += diff;  
        newStudents -= diff;  
    }  
      
    // 现在,两班人数相等或乙班人数更多(但不影响后续分配),将剩余的新学生平均分配到两班  
    int studentsPerClass = newStudents / 2;  
    studentsA += studentsPerClass;  
    studentsB += studentsPerClass;  
      
    // 如果newStudents是奇数,则最后一名学生也需要被分配(这里假设给甲班)  
    if (newStudents % 2 != 0) {  
        studentsA++;  
    }  
      
    // 输出结果  
    std::cout << "甲班分配后学生数: " << studentsA << std::endl;  
    std::cout << "乙班分配后学生数: " << studentsB << std::endl;  
      
    return 0;  
}

第四题代码

#include <iostream>  
    
int main() {  
    // 432×5 和 432×10/2 在数学上是等价的,因为乘以10后再除以2与直接乘以5效果相同。
    int number = 432;  
    // 首先计算 432 * 10  
    int resultTimesTen = number * 10;  
    // 然后将结果除以2  
    int result = resultTimesTen / 2;  
  
    // 输出结果  
    std::cout << "432 * 5 的结果是:" << result << std::endl;  
  
    return 0;  
}

第五题验证程序代码

#include <iostream>  
  
// 函数用于计算给定数与15的乘积  
int multiplyByFifteen(int number) {  
    // 直接计算 number * 15  
    int directResult = number * 15;  
  
    // 计算 number 加上它的一半,然后乘以10  
    int halfNumber = number / 2; // 注意:这里假设number是偶数或我们接受整数除法  
    int alternativeResult = (number + halfNumber) * 10;  
  
    // 输出两种计算方式的结果  
    std::cout << number << " * 15 = " << directResult << std::endl;  
    std::cout << "(" << number << " + " << halfNumber << ") * 10 = " << alternativeResult << std::endl;  
  
    // 验证两种计算方式是否等价  
    if (directResult == alternativeResult) {  
        std::cout << "两种方法的结果是等价的。" << std::endl;  
    } else {  
        std::cout << "警告:两种方法的结果不相等,可能存在整数除法的问题。" << std::endl;  
    }  
  
    // 返回直接计算的结果  
    return directResult;  
}  
  
int main() {  
    // 测试几个例子  
    multiplyByFifteen(24);  
    multiplyByFifteen(248);  
    multiplyByFifteen(3456);  
  
    return 0;  
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值