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