11-999之間的所有三重回文數字

問題描述:找出11-999之間的所有三重回文數字,所謂三重回文數a就是指a,a的平方,a的立方都是迴文數字。

分析:1.首先要能判斷一個數字是否爲迴文數字。

判斷一個字符串是否爲迴文字符串是簡單的,所以我們先把它用itoa()函數變成字符串。注意存儲數字的字符串要足夠大,放得下立方後的數字。


itoa(num, str, 10);

itoa()函數有3個參數:第一個參數是要轉換的數字,第二個參數是要寫入轉換結果的目標字符串,第三個參數是轉移數字時所用 的基數。在上例中,轉換基數爲10。10:十進制;2:二進制...

itoa並不是一個標準的C函數,它是Windows特有的,如果要寫跨平臺的程序,請用sprintf。是Windows平臺下擴展的,標準庫中有sprintf,功能比這個更強,用法跟printf類似:

char str[255];
sprintf(str, "%x", 100); //將100轉爲16進製表示的字符串。

下列函數可以將整數轉換爲字符串:
itoa() 將整型值轉換爲字符串
itoa() 將長整型值轉換爲字符串
ultoa() 將無符號長整型值轉換爲字符串


2.從11-999遍歷,若一個數的本身,平方,立方都是迴文數字,則輸出。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int judge(long n){
	char str[10];
	int len,i,j;
	itoa(n,str,10);
	len=strlen(str);
	for(i=0,j=len-1;i<j;i++,j--){
		if(str[i]!=str[j]){
			return 0;
		}
	}
	return 1;
}
int main(void){
	long i;//count=0;
	printf("迴文數字有:\n");
	for(i=11;i<1000;i++){
		if(judge(i)&&judge(i*i)&&judge(i*i*i)){
			printf("%-4ld ",i);
			//count++;
			//if(count%4==0)
			//	printf("\n");
		}
	}
}

輸出結果是: 

好了,撒花 ^_^

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章