求助#13 #15
查看原帖
求助#13 #15
162084
thomas_zjl楼主2021/1/23 21:55

就最后这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;
	}
}
2021/1/23 21:55
加载中...