问题描述:
C语言 验证3n+1问题
对于给定的一个正整数,若该数为偶数则将其除以2,若为奇数则将其乘3再加1.反复进行上述过程,直到结果为1时停止.这就是著名的“3n+1”问题.要求对于给定的整数,按3n+1规则变换到1所需要的数字变换次数.
输入
输入数据文件有多个数据分别对应一种情形.
输出说明
对于每一个整数,要求先输出“Case #:”(#为序号),然后输出读入的整数、逗号、空格、计算结果.若输入的数据为非正整数,结果为-1.
输入样例
1024 1023 0 100 66
输出样例
Case 1:1024,10
Case 2:1023,62
Case 3:0,-1
Case 4:100,25
Case 5:66,27
我的程序是
#include
int main(void)
{
int i,j,b;
double x,a;
while(scanf("%d",&x))
{
if(x>0){
a=x;
i=0;
b=x;
while(b>1)
{
if(b%2==0)
b=b/2;
else
b=3*b+1;
i++;
}
j++;
printf("Case %d:%.lf,%lf",j,a,i);
}
if(b
1个回答
分类:
综合
2014-11-01
问题解答:
我来补答
#include
int main(void)
{
\x09int i, j = 0, b;
\x09int x, a;
\x09while (scanf("%d", &x) == 1)
\x09{
\x09\x09if (x <= 0) {
\x09\x09\x09j++;
\x09\x09\x09printf("Case %d: %d, -1\n", j, x);
\x09\x09\x09continue;
\x09\x09}
\x09\x09a = x;
\x09\x09i = 0;
\x09\x09b = x;
\x09\x09while (b > 1)
\x09\x09{
\x09\x09\x09if (b % 2 == 0)
\x09\x09\x09\x09b = b / 2;
\x09\x09\x09else
\x09\x09\x09\x09b = 3 * b + 1;
\x09\x09\x09i++;
\x09\x09}
\x09\x09j++;
\x09\x09printf("Case %d: %d, %d\n", j, a, i);
\x09}
} 再答: 如果没有其他问题就采纳一下吧
展开全文阅读