当前位置:   article > 正文

C++ (字符串) 数字反转(升级版)_数字反转c++语言程序

数字反转c++语言程序

https://www.luogu.com.cn/problem/P1553

        这题主要就是要学会使用字符串的一些操作,比如find(),还有用到algorithm库的reverse函数进行反转比较方便。稍微难一点的地方我觉得就在于有几个比较刁钻的测试点不好找,因为刷题少所以没有注意到,还得多谢袁老师,比如 0 , 0.0 , 0/1 , 0% 这几个点。

  1. #include<string>
  2. #include<iostream>
  3. #include<algorithm>
  4. using namespace std;
  5. void inter(string a);//整数反转
  6. void decimal(string a); //小数反转
  7. void fraction(string a);//分数反转
  8. void percent(string a);//百分数反转
  9. int main()
  10. {
  11. string num;
  12. cin >> num;
  13. if(num.length() == 1) {
  14. cout<<num;
  15. return 0;
  16. }
  17. if(num.find('.') != string::npos)
  18. {
  19. decimal(num);
  20. }
  21. else if(num.find('/') != string::npos)
  22. {
  23. fraction(num);
  24. }else if(num.find('%') != string::npos)
  25. {
  26. percent(num);
  27. }else{
  28. inter(num);
  29. }
  30. return 0;
  31. }
  32. void inter(string a)
  33. {
  34. long long i;
  35. reverse(a.begin(),a.end());
  36. for(i=0; a[i] == '0' && i<a.length(); i++);
  37. for(int j=i; j<a.length(); j++)
  38. cout<<a[j];
  39. }
  40. void decimal(string a)
  41. {
  42. int k,i,j;
  43. string s1,s2;
  44. k=a.find('.');
  45. reverse(a.begin(),a.begin()+k);
  46. reverse(a.begin()+k+1,a.end());
  47. //输出小数点前部分
  48. for(i=0; a[i] == '0' && i<a.length() ;i++);
  49. if(a[i] == '.') cout<<'0'; //处理小数点前面为0的情况
  50. for(j=i; j<k+1; j++)
  51. cout<<a[j];
  52. //输出小数点后部分
  53. for(i=a.length()-1; a[i] == '0' && i>k+1; i--);
  54. for(j=k+1; j<i+1; j++)
  55. cout<<a[j];
  56. }
  57. //跟小数的处理方法类似
  58. void fraction(string a)
  59. {
  60. long long k,i,j;
  61. string s1,s2;
  62. k=a.find('/');
  63. reverse(a.begin(),a.begin()+k);
  64. reverse(a.begin()+k+1,a.end());
  65. for(i=0; a[i] == '0' && i<a.length() ;i++);
  66. if(a[i] == '/') cout<<'0'; //处理0/1这种分子为0的情况
  67. for(j=i; j<k+1; j++)
  68. cout<<a[j];
  69. for(i=k+1; a[i] == '0' && i<a.length() ;i++);
  70. for(j=i; j<a.length(); j++)
  71. cout<<a[j];
  72. }
  73. void percent(string a)
  74. {
  75. long long i;
  76. reverse( a.begin(),a.end()-1 );
  77. for(i=0; a[i] == '0' && i<a.length(); i++);
  78. if(a[i] == '%') cout<<'0';
  79. for(int j=i; j<a.length(); j++)
  80. cout<<a[j];
  81. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/bf789/article/detail/60523
推荐阅读
相关标签
  

闽ICP备14008679号