解题思路:
为了采用规范化编程,建议把那个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 人评分
点我有惊喜!你懂得!浏览:2212 |
C语言程序设计教程(第三版)课后习题10.1 (Java代码)浏览:1436 |
简单的a+b (C语言代码)浏览:524 |
C语言程序设计教程(第三版)课后习题7.1 (C语言代码)浏览:512 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:1090 |
printf基础练习2 (C语言代码)浏览:644 |
C语言程序设计教程(第三版)课后习题10.4 (C语言代码)浏览:535 |
C语言程序设计教程(第三版)课后习题9.8 (C语言代码)浏览:664 |
C二级辅导-同因查找 (C语言代码)浏览:563 |
输入输出格式练习 (C语言代码)浏览:842 |