天天看點

c語言最大的整型變量,整型變量範圍最大到32750?

該樓層疑似違規已被系統折疊 隐藏此樓檢視此樓

main()

{

int a,b;

scanf("%d",&a);

for(b=0;b<800;b++)

{

if(a%2==0)

{a=a/2;}

else

{a=a*3+1;}

}

printf("%d",a);

getch();

}

編譯執行以上代碼,輸入32751,那麼輸出-1.按照上面的算法是不可能輸出-1的。

是以就是值過大了。輸入32750,輸出是1。說明這個值是不會導緻出錯的。

還有,大家能不能幫我看一下,我這個代碼是否讓計算機執行了下面所說的運算:

3x + 1 問題

從任意一個正整數開始,重複對其進行下面的操作:如果這個數是偶數,把它除以 2 ;如果這個數是奇數,則把它擴大到原來的 3 倍後再加 1 。你會發現,序列最終總會變成 4, 2, 1, 4, 2, 1, … 的循環。

例如,所選的數是 67,根據上面的規則可以依次得到:

67, 202, 101, 304, 152, 76, 38, 19, 58, 29, 88, 44, 22, 11, 34, 17,

52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1, 4, 2, 1, ...

數學家們試了很多數,沒有一個能逃脫“421 陷阱”。但是,是否對于 所有 的數,序列最終總會變成 4, 2, 1 循環呢?

這個問題可以說是一個“坑”——乍看之下,問題非常簡單,突破口很多,于是數學家們紛紛往裡面跳;殊不知進去容易出去難,不少數學家到死都沒把這個問題搞出來。已經中招的數學家不計其數,這可以從 3x + 1 問題的各種别名看出來: 3x + 1 問題又叫 Collatz 猜想、 Syracuse 問題、 Kakutani 問題、 Hasse 算法、 Ulam 問題等等。後來,由于命名争議太大,幹脆讓誰都不沾光,直接叫做 3x + 1 問題算了。

直到現在,數學家們仍然沒有證明,這個規律對于所有的數都成立。

這個代碼是否可以做421運算的實驗?讓計算機幫我算。

因為怕循環次數不夠,寫800。在整型變量範圍内試了一些數,确實輸出也就1、2、4三個其中一個。

據說長整型變量最大值可以達到更高,誰告訴我定義長整型變量、輸出長整型變量的值的代碼怎麼寫?