問題描述:找出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");
}
}
}
輸出結果是:
好了,撒花 ^_^