解题思路:求解每一个数的循环长度,然后再求最大值。
注意事项:注意前面的大,后面的小时,要先交换两个数,但是也要注意先输出或保存交换前的两个数,因为是按输入顺序输出前面两个数的
参考代码:
#include <stdio.h> int main() { int a,b,t,max; int i,n,m; while(scanf("%d%d",&a,&b)!=EOF) { printf("%d %d ",a,b); max=0; if(a>b) { t=a; a=b; b=t;} for(i=a;i<=b;i++) { m=i;n=0; while(1) { if(m==1) break; if(m%2==0) m=m/2; else m=3*m+1; n++; } if(i>2) n++; //如果i超过2,则步骤加1 if(max<n) max=n; } printf("%d\n",max); } return 0; }
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题6.11 (C语言代码)浏览:525 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:668 |
【数组的距离】 (C语言代码)浏览:787 |
C语言训练-排序问题<1> (C语言代码)浏览:636 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:693 |
程序员的表白 (C语言代码)浏览:706 |
C语言程序设计教程(第三版)课后习题6.6 (C语言代码)浏览:366 |
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:672 |
C语言程序设计教程(第三版)课后习题10.4 (C语言代码)浏览:943 |
1011题解浏览:819 |