我需要找到所有小於或等於我的輸入數字的總和(它要求它們在基數10和2中都是迴文式的)。這裏是我的代碼:查找基數2和10中的迴文數並對它們進行求和
#include <stdio.h>
#include <stdlib.h>
int pal10(int n) {
int reverse, x;
x = n;
while (n != 0) {
reverse = reverse * 10 + n % 10;
n = n/10;
}
if (reverse == x)
return 1;
else
return 0;
}
int length(int n) {
int l = 0;
while (n != 0) {
n = n/2;
l++;
}
return l;
}
int binarypal(int n) {
int v[length(n)], i = 0, j = length(n);
while (n != 0) {
v[i] = n % 2;
n = n/2;
i++;
}
for (i = 0; i <= length(n); i++) {
if (v[i] == v[j]) {
j--;
} else {
break;
return 0;
}
}
return 1;
}
int main() {
long s = 0;
int n;
printf("Input your number \n");
scanf("%d", &n);
while (n != 0) {
if (binarypal(n) == 1 && pal10(n) == 1)
s = s + n;
n--;
}
printf("Your sum is %ld", s);
return 0;
}
它總是返回0。我的猜測是我做錯了什麼在binarypal
功能。我該怎麼辦?
我會記住你的建議。我計劃在未來2-3天內學習指針。任何視頻教程或一般的教程,將幫助我嗎?(我知道有大量的人有教程,但我想徵求您的意見) –
@AlexBalauca:我沒有最愛,也沒有看過一個很長一段時間。理解指針的最好方法是從理解他們的朋友處獲得幫助。簡而言之,指針是一個簡單的對象,它包含另一個對象的內存地址。您可以更改其值以使其指向不同的對象。想一下地址簿:它是一組指向房屋的指針:地址簿的每個頁面都是指向實際房屋的指針(或者如果是空白的,則爲無)。您可以通過在頁面上書寫一個新地址來更改地址。其中一些地址可能也是無效的。 – chqrlie