#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
char a[100];
long int n,i,j,k,l,sum,p,q;
while(scanf("%ld",&l))
{
for(i=0; i<pow(10,l); i++)
{
if(l==2)
sum=((i/10)+(i%10))*((i/10)+(i%10));
else if(l==4)
sum=((i/100)+(i%100))*((i/100)+(i%100));
else if(l==8)
sum=((i/10000)+(i%10000))*((i/10000)+(i%10000));
if(sum==i)
{
itoa(i,a,100);
j=strlen(a);
for(k=0; k<l-j; k++)
printf("0");
for(k=0; k<j; k++)
a[k]=a[k]+48;
puts(a);
}
}
}
return 0;
}
我不明白這個輸出是什麼。我試圖找出quirksome數字。我是一個初學者,請幫助。 關於quirksome號: 數3025具有顯着的怪癖:如果在等於 長度(30和25)的兩個字符串分割其十進制表示和方如此獲得的數目的總和,則獲得原始數:c中字符串中的隨機符號
(30 + 25) = 3025
這部分:'用於(K = 0; k <Ĵ; k ++) a [k] = a [k] +48;'似乎沒什麼意義。如果'a'已經是一個十進制整數,爲什麼你會覆蓋這些字符?很混亂。 – unwind
無關,但你忘了'#include'。不要使用「48」等魔法數字,而是使用「0」來代替;這是相當的,但清楚地表明你的意圖。 –
...以及您期望的輸出是什麼? –