C语言提问:如何编程此题:给定人何以正整数n,对它进行以下操作:

给定任何以正整数n,对它进行以下操作:
n是偶数:n=n/2 n是奇数:n=3*n+1
这样进行多次操作后,最后必定变为1
如对13进行操作:13->40->20->10->5->16->8->4->2->1
一共进行了9次操作,则称13这个数的周期是9。
要求输入n,输出其周期并给出中间数据转换过程。

#include <stdio.h>
main(void)
{
int n,t=0;
scanf("%d",&n);
while(1)
{
printf("%d->",n);
if(n%2==0)
{
n=n/2;
t++;
}
else
{
n=3*n+1;
t++;
}
if(n==1)
{printf("%d\n",n);
break;
}
}
printf("周期是:%d",t);

}

输入13
输出:13->40->20->10->5->16->8->4->2->1
周期是9
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-12-19
这样如何,每次运行只能计算一次:
#include<stdio.h>
void main()
{
int n,T=0,m;
scanf("%d",&n);
m=n;
printf("%d",n);
while(m!=1)
{
if(m%2)m=3*m+1;
else m=m/2;
T++;
printf("->%d",m);
}
printf("\n周期:%d\n",T);
}