就最后这2个点了,求帮助(wtcl)
#include <bits/stdc++.h>
using namespace std;
char b[10001];
char c[10001];
char a[100001];
int main(){
scanf("%s",a);
int n=strlen(a);
int flag=0;
for(int i=0;i<n;i++){
if(a[i]=='.')
flag=1;
if(a[i]=='/')
flag=2;
if(a[i]=='%')
flag=3;
}
if(flag==0){
int w=0;
for(int i=n-1;i>=0;i--){
if(a[i]!='0'){
w=i+1;
break;
}
}
if(w==0)
printf("0");
else
for(int i=w-1;i>=0;i--)
printf("%c",a[i]);
return 0;
}
if(flag==1){
int dwz;
for(int i=0;i<n;i++){
if(a[i]=='.'){
dwz=i;
break;
}
}
for(int i=0;i<dwz;i++)
b[i]=a[i];
for(int i=dwz+1;i<n;i++)
c[i-1-dwz]=a[i];
int n1=strlen(b);
int w1=0;
for(int i=n1-1;i>=0;i--){
if(b[i]!='0'){
w1=i+1;
break;
}
}
if(w1==0)
printf("0");
else
for(int i=w1-1;i>=0;i--)
printf("%c",b[i]);
printf(".");
int n2=strlen(c);
int w2=0;
for(int i=0;i<n2;i++){
if(c[i]!='0'){
w2=i;
break;
}
}
for(int i=n2-1;i>=w2;i--)
printf("%c",c[i]);
return 0;
}
if(flag==2){//这里是判断分数的情况,错误应该在这段代码内。
int dwz;
for(int i=0;i<n;i++){
if(a[i]=='/'){
dwz=i;
break;
}
}
for(int i=0;i<dwz;i++)
b[i]=a[i];
for(int i=dwz+1;i<n;i++)
c[i-1-dwz]=a[i];
int n1=strlen(b);
int w1=0;
for(int i=n1-1;i>=0;i--){
if(b[i]!='0'){
w1=i+1;
break;
}
}
if(w1==0)
printf("0");
else
for(int i=w1-1;i>=0;i--)
printf("%c",b[i]);
printf("/");
int n2=strlen(c);
int w2=0;
for(int i=0;i<n2;i++){
if(c[i]!='0'){
w2=i;
break;
}
}
for(int i=n2-1;i>=w2;i--)
printf("%c",c[i]);
return 0;
}
if(flag==3){
int w=0;
for(int i=n-2;i>=0;i--){
if(a[i]!='0'){
w=i+1;
break;
}
}
if(w==0)
printf("0");
else
for(int i=w-1;i>=0;i--)
printf("%c",a[i]);
printf("%c",'%');
return 0;
}
}