蓝桥杯的一道题目:

Excel是最常用的办公软件。每个单元格都有唯一的地址表示。比如:第12行第4列表示为:“D12”,第5行第255列表示为“IU5”。

事实上,Excel提供了两种地址表示方法,还有一种表示法叫做RC格式地址。

第12行第4列表示为:“R12C4”,第5行第255列表示为“R5C255”。

任务:编写程序,实现从RC地址格式到常规地址格式的转换。

【输入、输出格式要求】

用户先输入一个整数n(n<100),表示接下来有n行输入数据。

接着输入的n行数据是RC格式的Excel单元格地址表示法。

程序则输出n行数据,每行是转换后的常规地址表示法。

例如:用户输入:

2

R12C4

R5C255

则程序应该输出:

D12

IU5

这道题目不难,首先将用户输入的整数n和地址字符串接收,将地址里的行和列提取出来,然后将列数转换为第二种格式,将列和行输出即可。下面给出一种解法:

1 #include

2 voidTrans()3 {4 int col=0,row=0; //行,列

5 charcol_1,col_2;6 char s[20];7 scanf("%s",s);8 inti,j;9 for(i=1;s[i]!=‘C‘;i++)10 {11 row=row*10+s[i]-48; //不要忘记减48

12 }13 i++; //将C跳过

14 while(s[i]!=0)15 {16 col=col*10+s[i]-48;17 i++;18 }19 col_1=col/26+65-1;20 col_2=col%26;21 col_2=col_2?(col_2+65-1):‘Z‘;22 if(col_1!=64)23 printf("%C",col_1);24 printf("%c",col_2);25 printf("%d",row);26 }27 intmain()28 {29 intn;30 scanf("%d",&n);31 inti;32 for(i=0;i

37 return 0;38 }

其中Trans()函数完成地址转换和输出的功能。但上面的程序有些问题:输入输出格式不能满足要求。即当n>1时,用户每输入一个地址,程序就立刻返回结果,而不是按要求当用户输入完毕后再将结果一起输出。其运行结果是这样的:

这种结果不太符合要求,接下来给一段改进的:

1 #include

2 #include

3 char *Trans()4 {5 int col=0,row=0; //行,列

6 charcol_1,col_2;7 char s[20];8 scanf("%s",s);9 inti;10 for(i=1;s[i]!=‘C‘;i++)11 {12 ; //找到C

13 }14 i++; //将C跳过

15 while(s[i]!=0)16 {17 col=col*10+s[i]-48;18 i++;19 }20 col_1=col/26+65-1;21 col_2=col%26;22 col_2=col_2?(col_2+65-1):‘Z‘;23 char j=0;24 char *ans;25 ans=(char *)malloc(20*sizeof(char)); //动态内存分布

26 if(col_1!=64)27 {28 ans[j++]=col_1;29 ans[j++]=col_2;30 }31 else

32 {33 ans[j++]=col_2;34 }35 for(i=1;s[i]!=‘C‘;i++)36 {37 ans[j++]=s[i]; //找到C

38 }39 ans[j]=0; //不要忘记结束标志,否则会输出乱字符40 //free(ans);//不能释放,否则无法执行下一步的返回地址

41

42 returnans;43 }44 intmain()45 {46 intn;47 scanf("%d",&n);48 inti;49 char *str[100]={""}; //此处定义一个指针数组

50 for(i=0;i

59 return 0;60 }

下面是运行的结果:

当所有地址输入完毕后再输出结果。

程序第24行定义了一个指针ans,用于存放转换后的结果,并且作为Trans函数的返回值;在main函数中的49行定义了一个指针数组,用于接收每次转换后的结果并存储起来,当所有地址都转换完成后再一起输出。

但是注意,在Trans函数中ans不能被定义为数组类型,因为局部变量的地址空间在函数运行完后会被收回。因此若在Trans函数中将ans定义为数组,那么在Trans调用结束后ans空间将被收回,将其作为返回值没有意义。可以将ans定义为全局变量的数组或者是静态变量的数组,这样可以完成地址传递的功能,但是也要注意多次调用此函数时全局变量被多次赋值时的相互覆盖问题。

原文:http://www.cnblogs.com/Atsea/p/3575538.html

蓝桥杯上Excel地址c语言,C语言求解Excel地址转换问题相关推荐

  1. c语言 java 性能 测试_这个蓝桥杯系统的题,用c语言去评测是满分,改为Java说运行错误是0分,但是我查看输入输出,至少第...

    这个蓝桥杯系统的题,用c语言去评测是满分,改为Java说运行错误是0分,但是我查看输入输出,至少第一个是对的啊提交序号1269960作者彭云成提交时间02-0507:49:27评测结果运行错误得分.. ...

  2. 蓝桥杯基础练习合集一(C语言) 1.A+B问题2.数列排序3.十六进制转八进制4.十六进制转十进制5.十进制转十六进制

    目录 1.A+B问题 2.数列排序 3.十六进制转八进制 4.十六进制转十进制 5.十进制转十六进制 1.A+B问题 问题描述 输入A.B,输出A+B. 输入格式 输入的第一行包括两个整数,由空格分隔 ...

  3. 金蝉素数c语言,算法笔记_204:第四届蓝桥杯软件类决赛真题(Java语言C组)

    前言:以下代码仅供参考,若有错误欢迎指正哦~ 1好好学习 汤姆跟爷爷来中国旅游.一天,他帮助中国的小朋友贴标语.他负责贴的标语是分别写在四块红纸上的四个大字:"好.好.学.习".但 ...

  4. 洛谷P8707 [蓝桥杯 2020 省 AB1] 走方格 C语言/C++

    [蓝桥杯 2020 省 AB1] 走方格 题目描述 在平面上有一些二维的点阵. 这些点的编号就像二维数组的编号一样,从上到下依次为第 1 1 1 至第 n n n 行,从左到右依次为第 1 1 1 至 ...

  5. 蓝桥杯上了白名单《2022-2025学年面向中小学生的全国性竞赛活动名单》

    前几天,教育部发布了<2022-2025学年面向中小学生的全国性竞赛活动名单>(白名单),直接刷爆了朋友圈. 01什么是白名单赛事? 白名单赛事指的是由教育部公布的面向6-18岁学生的竞赛 ...

  6. 蓝桥杯---特别数的和(C语言)

    蓝桥杯-特别数的和 解决方案: 1.从1遍历至n 2.确定每个数是否含有2.0.1.9 #include"stdio.h" int g(int a,int n){//遍历数的每一位 ...

  7. c语言实数加法程序,蓝桥杯 算法提高 实数相加(c语言版附注释)

    试题 算法提高 实数相加 蓝桥杯试题解答汇总链接 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 计算两个实数相加的结果. 输入的实数满足如下要求: (1)小数点前的整数部分最多10 ...

  8. 蓝桥杯上Excel地址c语言,2017蓝桥杯Excel地址(C++C组)

    题目:Excel地址 Excel单元格的地址表示很有趣,它使用字母来表示列号. 比如, A表示第1列, B表示第2列, Z表示第26列, AA表示第27列, AB表示第28列, BA表示第53列, . ...

  9. 算法笔记_204:第四届蓝桥杯软件类决赛真题(Java语言C组)

    目录 1 好好学习 2 埃及分数 3 金蝉素数 4 横向打印二叉树 5 危险系数 6 公式求值   前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 好好学习 汤姆跟爷爷来中国旅游.一天,他帮助中国的 ...

最新文章

  1. jq修改iframe html代码,jQuery控制iFrame(实例代码)
  2. console.log 简写
  3. #在蓝懿学习iOS的日子#第六个练习日
  4. PowerDesigner脚本使用记录
  5. python日期加减源码_Python 时间序列的时间延迟计算
  6. 交互式计算机图形学总结:第七章 离散技术
  7. Pro Android学习笔记(二九):用户界面和控制(17):include和merge
  8. u3d 总是背向相机_纪念光学科学家“肖特”的相机
  9. 如何自己研究SAP Cloud for Customer的订单类型设计
  10. lambda 高并发_玩Java 8 – Lambda和并发
  11. 快递下单后取消订单_网约车定位地点不动,男子别的平台下单,没取消订单要付6.6元...
  12. 宝塔 + 百度BCC + centos + vue + 搭建nginx服务器
  13. Python Web项目自定义虚拟环境
  14. python中的reindex_Python reindex使用详解
  15. 企业级的Java快速开发平台,首选iMatrix平台。
  16. c语言程序设计必备单词,C语言编程必背单词版.docx
  17. html5移动页面自适应手机屏幕大小,移动页面自适应手机屏幕的方法
  18. 动态加密?看我如何见招拆招爬取某点评全站内容!
  19. 音乐付费的大门为谁而开?
  20. matlab中dot是什么,matlab中ddot是什么

热门文章

  1. 【转载】简直可爱极了的即时通讯
  2. 在星辰世界的guandan
  3. 那些没有兴趣花必要的C++时间
  4. 学习编程技术常见的疑问,你敢说你没有过一个吗?信你个鬼!
  5. mysql navicat安装_MySQL与Navicat的安装及使用教程
  6. IT行业培训必读:优秀程序员的十个习惯
  7. 小学奥数 7648 蓄水池水管问题 python
  8. 1.7 编程基础之字符串 16 忽略大小写的字符串比较 python
  9. Python 的post请求 get请求实例
  10. java两个对象赋值_一起学Java(二十六)----- 对象之间赋值