解题思路:
题目给的转换只有1-26的数字才能被转换,基于这个思路,而且要求是字典序最大的字符串,
用char类型数组存放输入,对每个元素进行遍历,如果每两个相邻的元素组成的两位数小于26,就把这两位数转换,除非组成的两位数大于26,才考虑对一位数进行转换,这样输出的字符就会是字典序最大
注意事项:
参考代码:
#include<stdio.h> int main() { char a[200000]; scanf("%s",a); char *p=a;//用指针遍历 while(*p!='\0') { int c=*p-'0';//个位 int b=c*10+(*(p+1)-'0');//在前的元素是十位,要注意 if(b<=26&&*(p+1)!='\0')//防止加上了空,出现乱码 { printf("%c",'A'+b-1); p++; } else printf("%c",'A'+c-1); p++; } return 0; }
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题1.5 (C++代码)浏览:1095 |
C语言程序设计教程(第三版)课后习题5.7 (Java代码)浏览:889 |
WU-图形输出 (C++代码)浏览:802 |
WU-整除问题 (C++代码)浏览:612 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:462 |
IP判断 (C语言描述,蓝桥杯)浏览:1095 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:531 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:514 |
简单的a+b (C语言代码)浏览:531 |
蓝桥杯历届试题-翻硬币 (C++代码)浏览:891 |