日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言编程回文数用数组,【C语言程序设计】C语言回文数怎么求?

發布時間:2024/1/23 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言编程回文数用数组,【C语言程序设计】C语言回文数怎么求? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題描述

打印所有不超過n(取n<256)的其平方具有對稱性質的數(也稱回文數)。

問題分析

對于要判定的數n計算出其平方后(存于a),按照“回文數”的定義要將最高位與最低位、次高位與次低位……進行比較,若彼此相等則為回文數。此算法需要知道平方數的位數,再一一將每一位分解、比較,此方法對于位數已知且位數不是太多的數來說比較適用。

此問題可借助數組來解決。將平方后的(a的)每一位進行分解,按從低位到高位的順序依次暫存到數組中,再將數組中的元素按照下標從大到小的順序重新將其組合成一個數眾(如n=15,則a=225且k=522),若k等于n×n則可判定n為回文數。

算法設計

從低位到高位將某一整數拆分。對于一個整數(設變量名為a)無論其位數多少,若欲將最低位拆分,只需對10進行求模運算a%10,拆分次低位首先要想辦法將原來的次低位作為最低位來處理;

用原數對10求商可得到由除最低位之外的數形成的新數,且新數的最低位是原數的次低位,根據拆分最低位的方法將次低位求出a/10、a%10,對于其他位上的數算法相同。

利用這個方法要解決的一個問題就是,什么情況下才算把所有數都拆分完?

當拆分到只剩原數最高位時(即新數為個位數時),再對10求商的話,得到的結果肯定為0,可以通過這個條件判斷是否拆分完畢。

根據題意,應將每次拆分出來的數據存儲到數組中,原數的最低位存到下標為0的位置,次低位存到下標為1的位置……依次類推。

————————

程序段如下:

for (i=0; a!=0; i++)

{

m[i] = a % 10;

a /= 10;

}

將數組中元素重新組合成一新數。

拆分時變量a的最高位仍然存儲在數組中下標最大的位置,根據“回文數”定義,新數中數據的順序與a中數據的順序相反;

所以我們按照下標從大到小的順序分別取出數組中的元素組成新數k,由幾個數字組成一個新數時只需用每一個數字乘以所在位置對應的權值然后相加即可;

在編程過程中應該有一個變量t來存儲每一位對應的權值,個位權值為1,十位權值為10,百位權值為100……,所以可以利用循環,每循環一次t的值就擴大10倍。

對應程序段如下:

for( ; i>0; i--)

{

k += m[i-l] * t;

t *= 10;

}

————————

下面是完整的代碼:

#include

intmain()

{int m[16], n, i, t, count=0;longunsigned a, k;

printf("No. number it's square(palindrome)\n");for( n=1; n<256; n++ ) /*窮舉n的取值范圍*/{

k=0; t=1; a=n*n; /*計算n的平方*/

for( i=0; a!=0; i++ ) /*從低到高分解數a的每一位存于數組m[1]~m[16]*/{

m[i]= a % 10;

a/= 10;

}for(; i>0; i--)

{

k+= m[i-1] * t; /*t記錄某一位置對應的權值*/t*= 10;

}if(k == n*n)

printf("%2d%10d%10d\n", ++count, n, n*n);

}return 0;

}

運行結果:

No.? ? number? ? it's square(palindrome)

1? ? ? ? 1? ? ? ? 1

2? ? ? ? 2? ? ? ? 4

3? ? ? ? 3? ? ? ? 9

4? ? ? ? 11? ? ? 121

5? ? ? ? 22? ? ? 484

6? ? ? ? 26? ? ? 676

7? ? ? 101? ? 10201

8? ? ? 111? ? 12321

9? ? ? 121? ? 14641

10? ? ? 202? ? 40804

11? ? ? 212? ? 44944

最后,不管你是轉行也好,初學也罷,進階也可,如果你想學編程~

【值得關注】我的

問題答疑,學習交流,技術探討,還有超多編程資源大全,零基礎的視頻也超棒~

總結

以上是生活随笔為你收集整理的c语言编程回文数用数组,【C语言程序设计】C语言回文数怎么求?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。