求助
查看原帖
求助
528140
Forzz_楼主2021/8/17 22:21

下面的代码在本地编译器可以运行,但是到了洛谷上边就显示 编译错误

#include<cmath>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
using namespace std;
char s[10010],a[10010],b[10010],letter=EOF;
bool f=true;
int w_z_=0;
int main(){
	scanf("%s",&s);
    for(int i=0;i<strlen(s);i++){
    	if(s[i]=='.'){
    		letter='.';
    		w_z_=i;
    		break;
		}
		if(s[i]=='/'){
    		letter='/';
    		w_z_=i;
    		break;
		}
		if(s[i]=='%'){
    		letter='%';
    		break;
		}
	}
	if(letter=='.'){//小数 
		for(int i=0;i<w_z_;i++)a[i]=s[i];
		for(int i=w_z_+1;i<strlen(s);i++)b[i-w_z_-1]=s[i];
		strrev(a);
		strrev(b);
		for(int i=0;i<strlen(a);i++){
			if(f&&a[i]=='0')continue;
			else{
				f=false;
				printf("%c",a[i]);
			}
		}
		printf(".");
		f=true;
		for(int i=0;i<strlen(b);i++){
			if(f&&b[i]=='0')continue;
			else{
				f=false;
				printf("%c",b[i]);
			}
		}
	} 
	else if(letter=='/'){//分数 
		for(int i=0;i<w_z_;i++)a[i]=s[i];
		for(int i=w_z_+1;i<strlen(s);i++)b[i-w_z_-1]=s[i];
		strrev(a);
		strrev(b);
		for(int i=0;i<strlen(a);i++){
			if(f&&a[i]=='0')continue;
			else{
				f=false;
				printf("%c",a[i]);
			}
		}
		printf("/");
		f=true;
		for(int i=0;i<strlen(b);i++){
			if(f&&b[i]=='0')continue;
			else{
				f=false;
				printf("%c",b[i]);
			}
		}
	}
	else if(letter=='%'){//百分数 
		strrev(s);
		for(int i=1;i<strlen(s);i++){
			if(f&&s[i]=='0')continue;
			else{
				f=false;
				printf("%c",s[i]);
			}
		}
		printf("%\n");
	}
	else{//整数 
		strrev(s);
		for(int i=0;i<strlen(s);i++){
			if(f&&s[i]=='0')continue;
			else{
				f=false;
				printf("%c",s[i]);
			}
		}
	}
	return 0;
}
2021/8/17 22:21
加载中...