当前位置: 首页 > 工具软件 > 3n1b > 使用案例 >

c语言中3n+1问题,C语言 验证3n+1问题

冀望
2023-12-01

问题描述:

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}

} 再答: 如果没有其他问题就采纳一下吧

展开全文阅读

 类似资料: