《程序设计语言综合设计》第四周上机练习——4 特殊的翻译

 1 #include<string.h>
 2 #include<iostream>
 3 using namespace std;
 4 char s[300],s1[300];
 5 int i,j=0,h,e;
 6 int main()
 7 {
 8     for(cin>>s;;j=0)
 9     {
10         //确定重复开始位置head和重复结束位置end,若无重复跳出大循环
11         for(h=0;s[h]!=0;h++) if(s[h]==s[h+1]&&s[h]>96) break;
12         for(e=h;s[e]!=0;e++) if(s[e]!=s[e+1]&&s[e]>96) break;
13         if(s[e]==0) break;
14         //将翻译后的s记录到s1
15         for(i=e+1;s[i]!=0;i++) s1[j++]=s[i];//复制part1
16         s1[j++]=s[h]-32;                    //字母
17         if(e-h<9) s1[j++]=e-h+49;           //数字(1位的情况)
18         else                                //数字(2位的情况)
19         {
20             s1[j++]=48+(e-h+1)/10;
21             s1[j++]=48+(e-h+1)%10;
22         }
23         for(i=0;i<h;i++) s1[j++]=s[i];      //复制part3
24         s1[j]=0;                            //别忘了补上终止符
25         //将s1复制给s,然后继续循环
26         strcpy(s,s1);
27     }
28     cout<<s;
29 }

1.注意数字大于9的情况需进位,如10个a结果是a10;

2.注意由数字产生的连续,如11个a结果是a11,别把数字当成字母!!!

3.注意终止符。。。

原文地址:https://www.cnblogs.com/miaohengming/p/12499725.html