開發平台(Platform): (Ex: Win10, Linux, ...)
Linux
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
我將line 42 最後的*2 移到line 43的話,第一個temp的直就是我想要的8,為何只是分成兩行寫而已會得到不同答案?
餵入的資料(Input):
12345
預期的正確結果(Expected Output):
想讓第一個temp值為8(因為2 * 4)
錯誤結果(Wrong Output):
第一個temp值為9
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
#include <stdio.h>
#include <math.h>
int judge(long a, int len);
int main(void)
{
long num;
printf("Number: ");
scanf("%li", &num);
// Claim a new variable "check" to see how length the num is
long check = num;
int count = 0;
while (check)
{
check = round(check / 10);
count++;
}
printf("Length: %d\n", count);
int sum = judge(num, count);
printf("sum = %d\n", sum);
}
int judge(long a, int len)
{
long even = 0, odd = 0, temp;
for (int i = 1; i <= len; i++)
{
// odd terms
if (i % 2 != 0)
{
odd += fmod(a, pow(10, i)) / pow(10, i - 1);
printf("odd: %li\n", odd);
}
// even terms
else
{
temp = fmod(a, pow(10, i)) / pow(10, i - 1) * 2;
// temp *= 2;
printf("temp: %li\n", temp);
even += temp / 10 + temp % 10;
printf("even: %li\n", even);
}
}
return odd + even;
}
補充說明(Supplement):
https://glot.io/snippets/gdt9xrcs0a