我这么菜,怎么会这种题呢?
by Dasknight @ 2019-04-30 20:35:01
@[zssxbb](/space/show?uid=197829) 这是什么写法~~这题有这么难写吗~~
by 我不认识你 @ 2019-04-30 20:43:19
@[我不认识你](/space/show?uid=111380) 我比较菜嘛。所以就按照自己傻逼的写法 嘻嘻嘻
by zssxbb @ 2019-04-30 21:41:33
帮你改了下
```cpp
#include<iostream>
#include<stdio.h>
using namespace std;
string s;
int main() {
cin >> s;
int k = 0;
int j = 0;
int len = s.length();
for (; j < len; j++) {
if (s[j] == '.') {
k = 1;
break;
}
else if (s[j] == '/') {
k = 2;
break;
}
else if (s[j] == '%') {
k = 3;
break;
}
else {
continue;
}
}
switch (k) {
case 1:
{
int n = j - 1;
while (n!=-1&&s[n] == '0') {
n--;
}
if (n == -1)printf("0");
for (int i = n; i >= 0; i--) {
printf("%c", s[i]);
}
printf(".");
n = j + 1;
int m = len - 1;
while (n!=m+1&&s[n] == '0') {
n++;
}
if (n == m + 1)printf("0");
/*while (s[m] == '0') {
m--;
}*/
for (int i = m; i >= n; i--) {
printf("%c", s[i]);
}
}
break;
case 2:
{
int n = j - 1;
while (n!=-1&&s[n] == '0') {
n--;//n--会出现n=-1的情况
}
if (n == -1)printf("0");
for (int i = n; i >= 0; i--) {
printf("%c", s[i]);
}
printf("/");
n = j + 1;
int m = len - 1;
/*while (s[n] == '0') {
n++;
}*/
while (m!=n-1&&s[m] == '0') {
m--;
}
if (m == n - 1)printf("0");
for (int i = m; i >= n; i--) {
printf("%c", s[i]);
}
}
break;
case 3:
{
int n = 0;
/*while (s[n] == '0') {
n++;
}*/
int m = len - 2;
while (m!=-1&&s[m] == '0') {
m--;
}
if (m == -1)printf("0");
for (int i = m; i >= n; i--) {
printf("%c", s[i]);
}
printf("%c", s[len - 1]);
}
break;
default:
{
int n = len - 1;
while (n!=-1&&s[n]=='0') {//s[n]是字符不能那样判断
n--;
}
if (n == -1)printf("0");
for (int i = n; i >= 0; i--) {
printf("%c", s[i]);
}
}
}
return 0;
}
```
by tomsteve @ 2019-05-05 18:03:32
针对一些特殊值,比如000,00.00,000/000,010/010,00100/00100,00100.00100,00.00等
by tomsteve @ 2019-05-05 18:05:13