大學生新聞網,大學生新聞發布平臺
大學生新聞網
大學生新聞大學生活校園文學大學生村官
社會實踐活動社會實踐經歷社會實踐報告社會實踐總結社會實踐心得
全國排名校友會版軟科排名分類排名本科排名一本排名二本排名?婆琶學校地址
求職簡歷職場法則面試技巧職場故事求職招聘大學生就業
英語學習計算機學習電氣工程機械工程經濟管理建筑設計財務會計
申請書證明書檢討書自薦信演講稿心得體會調查報告讀后感求職信推薦信其它范文

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<stdio.h>
int main()
{
    int m[16], n, i, t, count=0;
    long unsigned 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;
}
</stdio.h>
運行結果:

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
    作者:大學生新聞網    來源:大學生新聞網
    發布時間:2025-03-11    閱讀:
    掃一掃 分享悅讀
  • C語言求勾股數
  • 所謂勾股數,是指能夠構成直角三角形三條邊的三個正整數(a,b,c)。
  • 03-11 關注:0
  • C語言求回文數
  • 將數組中元素重新組合成一新數。拆分時變量a的最高位仍然存儲在數組中下標最大的位置
  • 03-11 關注:0
  • C語言水仙花數
  • 輸出所有的“水仙花數”,所謂的“水仙花數”是指一個三位數其各位數字的立方和等于該數本身,例如153是“水仙花數”,因為:153 = 13
  • 03-11 關注:0
  • C語言求自守數
  • 自守數是指一個數的平方的尾數等于該數自身的自然數。
  • 03-11 關注:0
  • C語言求親密數
  • C語言求親密數
  • 如果整數A的全部因子(包括1,不包括A本身)之和等于B;且整數B的全部因子(包括1,不包括B本身)之和等于A
  • 03-11 關注:0
  • C語言求完數(完全數)
  • C語言求完數(完全數)
  • 如果一個數等于它的因子之和,則稱該數為“完數”(或“完全數”)。例如,6的因子為1、2、3,而 6=1+2+3,因此6是“完數”。
  • 03-11 關注:1
  • C語言輸出菱形(詳解版)
主站蜘蛛池模板: 亚洲精品伊人久久久久| 青青草原在线视频| 蜜中蜜3在线观看视频| 黄色片网站在线免费观看| 白丝袜美女羞羞漫画| 日本高清com| 国产精品大bbwbbwbbw| 国产精品午夜无码体验区| 免费国产a国产片高清网站| 久久综合九色综合欧美狠狠 | 91精品国产乱码久久久久久| 老师的被到爽羞羞漫画| 日韩精品黄肉动漫在线观看| 国语free性xxxxxhd| 台湾三级香港三级经典三在线 | 国产高清免费的视频| 免费无遮挡肉动漫在线观看| 久久国产精品99精品国产| 男女抽搐动态图| 欧美日在线观看| 在线观看国产精品麻豆| 免费观看日本污污ww网站一区| 丰满年轻的继坶| 韩国免费乱理论片在线观看2018| 欧美人成在线观看| 国产精品香蕉在线| 亚洲第一网站男人都懂| 一个人看的毛片| 欧美日韩在线视频一区| 成人午夜精品无码区久久| 国产三级免费电影| 久久嫩草影院免费看夜色| 免费在线视频a| 欧美成a人片在线观看久| 国产手机精品一区二区| 亚洲专区中文字幕| 最新黄色网址在线观看| 日韩人妻无码免费视频一区二区三区 | 性欧美xxxx| 另类重口100页在线播放| gogogo高清在线播放|