在十进制与一个很像26进制的进制之间转换,b--的情况刚开始没考虑到,很纠结
#include<stdio.h> #include<stdlib.h> int main(){ int n,i,j,flag1,flag2,a,b,k;char c[20],d[20],t[10]; scanf("%d",&n); while(n--){ scanf("%s",c); i=0;flag1=0,flag2=0; while(c[i]>='A'&&c[i]<='Z')i++; if(i>=1)flag1=1; while(c[i]>='0'&&c[i]<='9')i++; if(c[i]=='\0')flag2=1; if(flag1==1&&flag2==1){ i=0,a=0,b=0,j=0,k=0; d[k++]='R'; while(c[i]>='A'&&c[i]<='Z'){ a*=26; a+=(c[i++]-'A'+1); } while(c[i]!='\0'){ b*=10; b+=(c[i++]-'0'); } while(b>0){ t[j++]=(b%10)+'0'; b/=10; } j--; while(j>=0){ d[k++]=t[j--]; } j=0; d[k++]='C'; while(a>0){ t[j++]=a%10+'0'; a/=10; } j--; while(j>=0){ d[k++]=t[j--]; } d[k]='\0'; puts(d); }else{ i=1,a=0,b=0,j=0,k=0; while(c[i]>='0'&&c[i]<='9'){ a*=10; a+=(c[i++]-'0'); } i++; while(c[i]>='0'&&c[i]<='9'){ b*=10; b+=(c[i++]-'0'); } while(b>0){ if(b%26==0){ t[j++]='Z'; b/=26;b--;} else { t[j++]='A'+b%26-1; b/=26; } } j--; while(j>=0){ d[k++]=t[j--]; } j=0; while(a>0){ t[j++]=a%10+'0'; a/=10; } j--; while(j>=0){ d[k++]=t[j--]; } d[k]='\0'; puts(d); } } return 0; }