序号与代码
来源:互联网 发布:苹果在线软件安卓版 编辑:程序博客网 时间:2024/05/21 19:28
扩展Excel表列序号为1,2,……的列代码依次为A,B,C,……,Y,Z;AA,AB,……,AZ;BA,BB,……,AZ;BA,BB,……,BZ;……;ZA,ZB,……,ZZ;AAA,……;
试进行列序号与列代码的相互转换;
输入列序号(不超过15位整数)或列代码(不超过10个大写字母),输出对应的列代码或对应的列序号;
例如,输入列序号28,输出对应的列代码AB;输入列代码BA,输出对应的列序号53;
1.说明:
设置3个数组:字符串数组b存储输入的列序号与列代码,整型数组a存储把b串中的每一个字符转换为整数,整型数组p存储把序号s通过“除26取余”的各位余数;
(1)、以字符串方式输入代码或序号,并把各字符转换为数字存储在a数组中,检测若输入的字符不是数字或大写字母时退出;
(2)、一个数字(如a[1])若非数字,则实施代码转换为代码;否则,实施序号转换为代码;
(3)、代码转换为序号: 应用a[k]-16把一个代码转换为数字(如A~1,B~2,……),然后在k循环中通过s=(s+a[k])*26转换,整数s即代码的序号;
(4)、序号转换为代码:首先把各数字a[k]应用s=(s+s[k])*10转换为十进制整数s;然后通过“除26取余”把s转换为26进制数,从低位开始为p[1],p[2],……(若p[m]=0,则p[m]=26;,相应的被除数x=x-1;),最后从高位到低位以字符方式输出p[k],即为所求的列代码;
2.程序设计:
#include<stdio.h>#include<math.h>int main(){ int k,m,a[20],p[20]; double s,x; char b[20]; printf("请输入列序号或列代码:"); scanf("%s",b); /*以字符串方式输入代码或序号*/ for(m=0,k=0;b[k]!='\0';k++) { m++; if(b[k]>90 || b[k]<48 || b[k]>57 && b[k]<65) return; a[m]=b[m-1]-48; } if(a[1]>9) /*代码转换为序号*/ { for(s=0,k=1;k<m;k++) s=(s+a[k]-16)*26; /*大写字母转换为数字计算*/ s=s+a[m]-16; printf("对应的序号为:%.0f\n",s); } else /*序号转换为代码*/ { for(s=0,k=1;k<m;k++) s=(s+a[k])*10; s=s+a[m]; /*输入的整数由字符串转换为整数*/ x=s; m=0; while(x>0) { m++; /*转换为26进制*/ p[m]=(int)fmod(x,26); x=floor(x/26); if(p[m]==0) { p[m]=26; x=x-1; } } printf("对应的代码为:"); for(k=m;k>=1;k++) printf("%c",p[k]+64); printf("\n"); }}
3.程序运行示例及其注意事项:
请输入列序号或列代码:123456789098765对应的代码为:VSDYLBQNTE请输入列序号或列代码:ABCDEFGHIJ对应的序号为:5872551179180
注意:程序设计了自动判别功能,即根据输入数据的类型进行判别并转换为另一类型数据;
为了验证转换结果是否可靠,可运行程序实施相互转换:
- 输入某一序号的转换的代码;然后输入该代码,即时验证输出的序号与上次输入的序号是否相同;
- 序号与代码
- 序号
- TCP传输中序号与确认序号的交互
- jsp代码列表数据加上序号
- 如何快速去除代码前面的序号
- 全排列问题:序号与排列转换
- 字典序序号与全排列的关系【全排列与序号换算方法】
- 类 与 对象 1 姓名 性别 序号 差异
- 字符与数字互换 —— nyoj 303 序号互换
- asp.net,copy网页的代码去掉格式化代码前面的序号
- 复制网页上的代码后去除前面的序号的简便方法
- 如何在sublime中去掉复制代码而产生的序号
- 添加序号
- CxGrid序号
- 序号,恩
- 关于序号
- 序号互换
- 序号互换
- docker dockerFile 参数解释,及生成jdk+tomcat镜像实例
- 0402 0603 0805 1206焊盘封装尺寸
- MySQL之从一个表中的两个Id分别获取另一个表中对应这两个Id的名字
- windows下使用redis requirepass认证不起作用
- 二进制文件读写
- 序号与代码
- 用Ogre实现无缝地图
- java windows com 对象 jacob
- Python基础——核心数据类型_序列_列表
- Spring Aop简单实例
- Android基础控件——SwipeRefreshLayout最简单的下拉刷新
- 使用mapreduce读取es中数据到hdfs
- Android ListView的item点击无响应的解决方法
- 阿里云linux服务器如何修改root管理密码