不能改变变量的值
Cout change the variable value
在main函数中,如果我调用cout << answer << "n";
,最后的答案是改变。谁能给我解释一下为什么会这样?
#include <iostream>
using namespace std;
int Even(int *num){
return (*num)/2;
}
int Odd(int *num){
return 3*(*num)+1;
}
int Cycle (int num){
int cycle;
while (num != 1){
if( num%2 == 0 ){
num= Even(&num) ;
}else{
num = Odd(&num) ;
}
cycle++;
}
return cycle+1 ;
}
int main(){
int num1,num2,max=0,answer;
cin>>num1;
cin>>num2;
for(int i = (num1 < num2 ? num1 : num2) ; i<=num2 ; i++ ){
answer = Cycle(i);
//Here is the PROBLEM
cout << answer << "n";
if(max < answer){
max = answer;
}
}
cout <<"Final Answer "<< max <<"n" ;
return 0;
}
输入1 10
没有计数的输出最终答案20
问题不在cout
。
首先,你的Odd
和Even
函数不应该接受指针,因为你已经返回了值。
第二,您没有在Cycle
函数中初始化变量cycle
。
下面的代码可以正常运行:
#include <iostream>
using namespace std;
int Even(int num){
return (num)/2;
}
int Odd(int num){
return (3*(num)+1);
}
int Cycle (int num){
int cycle = 0;
while (num != 1){
if( num%2 == 0 ){
num= Even(num) ;
}else{
num = Odd(num) ;
}
cycle++;
}
return (cycle+1) ;
}
int main(){
int num1,num2, max=0, answer;
cin>>num1;
cin>>num2;
for(int i = (num1 < num2 ? num1 : num2) ; i<=num2 ; i++ ){
answer = Cycle(i);
if(max < answer){
max = answer;
}
}
cout <<"Final Answer "<< max <<"n" ;
return 0;
}
相关文章:
- 你能重载对象变量名本身返回的内容吗
- 变量没有改变?通过向量的函数调用
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- 为什么我不能在一个类的不同行中声明和定义成员变量?
- 递归模板化函数不能分配给具有常量限定类型"const tt &"的变量"state"
- 我可以在这里替换什么,因为我不能在 C# 中使用隐式变量的 lambda 函数?
- 标准在哪里定义了可变变量可以改变
- 为什么左值不能改变自己。左值用户是什么意思?
- 为什么 Player.x 和 Player.y 变量没有改变?
- 应该很琐碎,为什么我不能改变我的向量的值
- 一个元素不能改变的非守恒向量
- 为什么调用 CUDA 内核函数时这个类成员变量没有改变
- 你能改变指针指向的大小吗?
- 不能改变Cocos2d-x MenuItemToggle元素的不透明度
- 不能改变变量的值
- 布尔变量自动改变其值
- 为什么打印一个变量会改变它的值?
- 将指针赋值给未初始化的变量会改变它的值
- 在C中声明全局变量会改变入口点吗?
- c++ 11的thread_local变量能从父线程继承它的初始值吗?