本题目与前面的把序列字母转换为数字的题目正好相反,是把数字转化为对应的序列字母。首先是步骤:根据逐步求商先确定字母有多少个,再动态申请空间避免内存浪费*(s+size-i)就对应于s[size-i],从后往前逐步的给每个字母赋值即可。
#include<stdio.h> #include<string.h> #include<stdlib.h> char *convertToTitle(int n) { char *s; int fac=26,size=0,num=n,i=1; while(num>0) { num=(num - 1) / 26; size++; } s=(char*)malloc(size*sizeof(char)); while(n>0){ n--; *(s+size-i)=(char)(n%fac+'A')+*s; n/=fac; i++; } return s; } int main() { int x; while(scanf("%d",&x)!=EOF) { printf("%s\n",convertToTitle(x)); } return 0; }
时间: 2024-10-04 02:50:55