Void函数无输出问题求助:编写打印函数却无任何输出
问题分析与修复方案
嘿,我一眼就瞅出你代码的问题啦!程序没输出的核心原因是触发了除以零的未定义行为!
看你Print函数里的循环逻辑:
for (int i = 0; i <= n; i++){ if (n%i == 0){ cout << i << ' '; } }
当循环第一次执行时,i的值是0,这时候n%i本质上是做除法运算,而除数为0在C++里是绝对不允许的——程序会直接崩溃或者终止运行,根本走不到后面的输出步骤,自然就看不到任何内容了。
简单修复方法
只需要把循环的起始值从0改成1就行,毕竟找一个数的因数时,我们不会考虑0(而且0也不能作为除数):
#include <iostream> using namespace std; void Print(int n){ for (int i = 1; i <= n; i++){ // 把i的初始值从0改为1 if (n%i == 0){ cout << i << ' '; } } cout << endl; } int main(){ int x; cin >> x; Print(x); return 0; }
额外提个小优化:如果用户输入的x是负数,当前代码也不会输出任何有效因数,你可以考虑在函数开头先把n转为绝对值,或者在main里提示用户输入正整数,不过这是可选的优化方向啦。
内容的提问来源于stack exchange,提问作者Mohammad Alshareef
相关产品推荐
相关产品推荐

