如何解决使用void函数时没有输出
#include <iostream>
using namespace std;
void reverse() {
int reversedDigit = 0.0;
int remainder;
int num = 0;
while (num > 0) {
remainder = num % 10;
num = num / 10;
reversedDigit = (reversedDigit * 10) + remainder;
return;
}
}
int main () {
int num;
cout << "Enter a number:";
cin >> num;
reverse();
return 0;
}
我需要获取一个输入 int
,然后使用 void 函数将其反向打印出来。出于某种原因,我无法输出任何内容。似乎该函数没有被 main 识别。
解决方法
已编辑:最好始终避免全局作用域并使用函数参数。
您需要传递输入和接受输出,因此您需要为 reverse
函数使用两个参数。为了举例,我们称它们为 input
和 output
。
输入可以直接传递,而输出需要通过引用传递,所以函数可以修改它的原始值。
以下示例将输入和输出结果加 2:
void doWork(int input,int &output)
{
output = input + 2;
}
int main()
{
int input = 0;
int output = 0;
cout << "Enter a number: ";
cin >> input;
doWork(input,output);
cout << "Result: " << output;
return 0;
}
旧答案(使用全局范围):
首先:
您在 int num
中声明了 main
,因此 reverse
无法访问它。在全局范围内声明 int num
(下文详细介绍了全局范围)。
第二:
由于您不允许从函数 reverse
打印,您将需要全局变量。在任何函数外声明 int reversedDigit
,就在 void reverse
之上,将其初始化为 0 以避免未定义的行为,并从函数 reverse
中删除现有的。这将使变量全局访问文件范围。然后在reverse函数中,你可以改变这个变量的值并在调用reverse后从main打印出来。
示例代码(输入和输出结果加 2):
int input = 0;
int output = 0;
void doWork()
{
output = input + 2;
}
int main()
{
cout << "Enter number: ";
cin >> input;
doWork();
cout << "Result: " << output;
}
,
#include <iostream>
using namespace std;
int reversedDigit = 0;
int num = 0;
void reverse()
{
int remainder;
while (num > 0){
remainder = num % 10;
num = num / 10;
reversedDigit = (reversedDigit * 10) + remainder;
}
cout << reversedDigit << endl;
}
int main ()
{
cout << "Enter a number:";
cin >> num;
reverse();
}
原因是作用域、函数和主要方法作用域不同你需要cin>>编号;在可以解决您的问题的反向函数中
void reverse(){
int num;
cout << "Enter a number:";
cin >> num;
int reversedDigit = 0.0;
int remainder;
while (num > 0){
remainder = num % 10;
num = num / 10;
reversedDigit = (reversedDigit * 10) + remainder;
}
cout << reversedDigit;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。