作爲我最後一個問題的後續here。將A1轉換爲R1C1格式
我正在嘗試與上一個問題相反。也就是說,將表單A1的輸入轉換爲表單R1C1的輸出(更多內容請看我的最後一個問題)。
我會解釋我的算法。假設我們需要將BC23轉換爲R23C55。我從BC23中提取'BC'和'23',並將它們存儲在單獨的數組中。我做了另一個數組,它們分別爲A,B,C存儲值1,2,3 ...等等,當它們進入輸入時。例如,我的數組將包含2和3分別作爲B和C的前兩個元素。然後我使用一些數學將其轉換爲數字,在這種情況下爲55。
這裏是完整的代碼。
#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
char str[5],col[5],row[5];
int i=0,j=0,k=0,lenOfstr,lenOfcol;
scanf("%s",str);
while(str[i]>='A'&&str[i]<='Z')
{
col[j]=str[i];
i++;
j++;
}
col[j]='\0';
lenOfstr=strlen(str);
lenOfcol=strlen(col);
int ascCol[lenOfcol];
for(i=lenOfcol;i<lenOfstr;i++)
{
row[k]=str[i];
k++;
}
row[k]='\0';
for(i=0;i<lenOfcol;i++)
{
ascCol[i]=col[i]-64;
}
int sum=0;
for(i=0;i<lenOfcol;i++)
{
sum=sum+(ascCol[i]*pow(26,lenOfcol-i-1));
}
printf("%d",sum);
return 0;
}
在我無法調試的最後一段代碼中有一個小錯誤。
int sum=0;
for(i=0;i<lenOfcol;i++)
{
sum=sum+(ascCol[i]*pow(26,lenOfcol-i-1));
}
printf("%d",sum);
輸入Z應該給我輸出26,AA應該給27.但是我的代碼給出了26。此後,輸出始終比正確輸出少1; BC給54而不是55.
有人幫我。
這聽起來像一個浮點問題。有些數字不能完全表示,所以當它們被提升爲另一種數據類型時,數字可能是錯誤的。例如,double - > int。您可能需要使用一個bignum庫。 –
我沒有在任何地方使用浮點 –
'pow'返回一個浮點數 –