Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 无法更改变量值_C++ - Fatal编程技术网

C++ 无法更改变量值

C++ 无法更改变量值,c++,C++,在main函数中,如果调用coutnum1; cin>>num2; 对于(inti=(num1>num1; cin>>num2; 对于(int i=(num1

在main函数中,如果调用
coutnum1;
cin>>num2;

对于(inti=(num1cout

首先,您的
奇数
偶数
函数不应该使用指针,因为您已经返回了值

其次,您没有在
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;
}
#包括
使用名称空间std;
int偶数(int num){
返回(num)/2;
}
int奇数(int num){
返回(3*(num)+1);
}
整数周期(整数){
整数周期=0;
while(num!=1){
如果(数值%2==0){
num=偶数(num);
}否则{
num=奇数(num);
}
循环++;
}
返回(循环+1);
}
int main(){
int num1,num2,max=0,答案;
cin>>num1;
cin>>num2;

对于(int i=(num1std::cout@Mayerz,当
std::cout
被破坏时,输出被刷新。这也不能解释最终答案的变化。我只是误读了,虽然他删除了一行重要的内容,但现在你对
num1
num2
使用了哪些输入值。顺便说一下,有
std::max
std::min
functions.Thx man,事实上,我仍在努力理解指针的概念。Thx是你的答案。我应该初始化循环变量。在
C++
中,更常见的是在实际需要修改变量值的情况下使用引用。我推荐页面,它解释得很好。
#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;
}