解题思路:
为了采用规范化编程,建议把那个3n+1猜想写进一个函数,返回值是每个传入的数的循环长度。这个题思路也很简单,就是输入对于每次输入的i,j,先输出i,j,然后判断一下i和j的大小,始终让i保存最小的数,然后就写一个循环从i到j,弄一个maxlen初始化为0,循环时只要每个数最大循环长度大于maxlen,那就替换保存。
注意事项:
1、i,j的大小一定要判断,有可能i比j大,如果不判断,循环可能不执行
2、一定要先输出i,j,然后再做处理,这样才能保证i,j的输出和输入时一样,别等到最后输出i,j还有maxlen,因为途中i,j可能要改变顺序。
参考代码:
#include <iostream>
using namespace std;
int conject(int num)
{
int len = 0;
while (num!=1)
{
if (num%2==0)
num /= 2;
else
num = num * 3 + 1;
len++;
}
return len+1;
}
int main()
{
int i, j;
while (cin>>i>>j)
{
cout << i << " " << j << " ";
if (i>j)
{
swap(i,j);
}
int maxlen = 0;
for (int k=i; k<=j; k++)
{
if (conject(k)>maxlen)
maxlen = conject(k);
}
cout << maxlen <<endl;
}
return 0;
}
0.0分
0 人评分
printf基础练习2 (C语言代码)浏览:826 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:634 |
WU-图形输出 (C++代码)浏览:836 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:818 |
C语言程序设计教程(第三版)课后习题5.8 (C语言代码)浏览:1324 |
Tom数 (C语言代码)浏览:758 |
1071题解浏览:585 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:487 |
C语言程序设计教程(第三版)课后习题10.1 (C语言代码)浏览:826 |
C二级辅导-等差数列 (C语言代码)浏览:831 |