C++程序问题:如何实现用户输入数与指定奇数分别相乘并输出正确结果
解决C++程序中分别相乘的问题
嘿,我一眼就看出问题所在啦!你当前的代码里,每次循环都把计算结果重新赋值给了N变量,导致后续的乘法都是基于上一次计算后的结果来进行的,而不是用你最初输入的那个原始数字。比如输入1的时候:
- 第一次循环:
1 * 3 = 3,然后把3存回N - 第二次循环:
3 * 5 = 15,再把15存回N - 以此类推,自然就得到了累积相乘的结果,而不是你想要的分别相乘。
修复方案
你只需要保留原始输入的数字,不要在循环中修改它。有两种简单的方式:
方式1:保存原始输入值
新增一个变量来存储用户最初输入的数字,循环中用这个原始值去和每个奇数相乘:
#include <iostream> int main() { int original_N; std::cout << "Input a number: "; std::cin >> original_N; int limit = 9; for(int i = 3; i <= limit; ++i) { if(i % 2 != 0) // if odd { int result = original_N * i; std::cout << result << std::endl; } } return 0; }
方式2:直接使用原始值计算(更简洁)
如果你不需要保留中间结果,甚至可以不用额外变量,直接在输出时计算N * i,同时确保不要修改N的值:
#include <iostream> int main() { int N; std::cout << "Input a number: "; std::cin >> N; int limit = 9; for(int i = 3; i <= limit; ++i) { if(i % 2 != 0) // if odd { std::cout << N * i << std::endl; // 直接计算原始N和i的乘积 } } return 0; }
额外优化小建议
其实你的循环是从3到9,步长可以设为2,这样就不需要判断i % 2 != 0了,代码会更高效:
for(int i = 3; i <= limit; i += 2) { // 每次加2,只遍历奇数 std::cout << N * i << std::endl; }
现在输入1测试,输出就会是你期望的:
Input a number: 1 3 5 7 9
内容的提问来源于stack exchange,提问作者bean
相关产品推荐
相关产品推荐

