本来看这个题感觉很简单,不就是Ascall值换来换去嘛,其实也真的这样,但是对于小白来说,ascall根本记不住
题目说了,每个数不会重复超过9次(这见到那多了,不然根本不会写)
其次如何实现字符英文和整型之间转换和字符数字与整形之间的转换,又是个点
首先说说,字符英语和整型的转换
int temp='a';
这样就OK了,当你输出temp,就是对应a的Ascall值
然后就是,字符数字与整形之间的转换
第一步也是
int temp='3';//你要知道这里转化过来的是3的Ascall值,不是数字3
这时,就有同学疑问,呢要怎么变回3
其实Ascall很有规律的,数字的Ascall是连续的
'0'的Ascall值为48,'3'是51
所以两者相减就行
int temp='3'-'0';
这样就ok了
好了,回到题上,看完上面应该就明了,直接上代码
#include<bits/stdc++.h>
#include<cstring>
using namespace std;
char a[110],b;
int temp;
int main()
{
cin.tie(0);cout.tie(0);//就是输入输出加个速
cin>>a;
int h=strlen(a);
for(int i=0;i<h;i++)
{
int f=(int)a[i]; //先转化每个字符的Ascall
if(f>=65&&f<=90||f>=97&&f<=122)//通过Ascall可看出大写A-Z范围是65-90,小写a-z范围是97-122
{
b=a[i];
temp=1;//这里统一了,就算是要重复的字母也会跟不重复的字母同时输出一次
}
else
{
temp=a[i]-'0';
temp--;//因为它在上一步就输出过一次了
}
while(temp--)
cout<<b;
}
return 0;
}