《程序设计语言综合设计》第四周上机练习——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.注意终止符。。。