本地全对,提交10分,测试点试过全对,蒟蒻求助大佬们!
查看原帖
本地全对,提交10分,测试点试过全对,蒟蒻求助大佬们!
305770
claran_ran_away楼主2022/10/7 21:25

数组开的大小让测试点轮流过了有红... 、

例:

数组35 共30分

数组50 共10分

数组21 共35分

下面代码10分

记录

#include <bits/stdc++.h>
using namespace std;
char start[22];
 
string normal(char need[],bool u/*哪边去0*/){
	char back[22],last[22]; 
	for(int i = strlen(need) - 1,j = 0;i >= 0;i--,j++){//翻转 
		back[j] = need[i];
	}
	if(u == 0){//向前去0 
		bool r = false;
		for(int i = 0,j = 0;i < 22;i++)
			if(r == true){
				last[j] = back[i];
				j++;
				continue;
			}else if(back[i] != '0' && back[i] != 32){
				last[j] = back[i];
				j++; r = true; 
			}
	}else if(u == 1){//向后去0 
		int flag2 = -1; 
		for(int i = 21;i >= 0;i--)
			if(back[i] == '1' || back[i] == '2' || back[i] == '3' || back[i] == '4' || back[i] == '5' || back[i] == '6' || back[i] == '7' || back[i] == '8' || back[i] == '9'){
				flag2 = i;
				break;
			}
		if(flag2 == -1) return "0";
		for(int i = 0;i <= flag2;i++) last[i] = back[i];
	}
	int l = strlen(last) - 1;
	char en[l];
	for(int i = 0;i <= l;i++) en[i] = last[i];//保证无其他空字符返回 
	return en;
}

void point(){//小数 
	char front[22],behind[22];/*分成前后两段*/ int flag;
	for(int i = 0;i < 22;i++) 
		if(start[i] == '.') flag = i;
	for(int i = 0;i < flag;i++) front[i] = start[i];
	for(int i = flag+1,j = 0;i < 22;i++,j++) behind[j] = start[i];
	cout << normal(front,0) << "." << normal(behind,1);
}

void devide(){//分数 
	char front[22],behind[22];/*分成前后两段*/ int flag;
	for(int i = 0;i < 22;i++) 
		if(start[i] == '/') flag = i;
	for(int i = 0;i < flag;i++) front[i] = start[i];
	for(int i = flag+1,j = 0;i < 22;i++,j++) behind[j] = start[i];
	cout << normal(front,0) << "/" << normal(behind,0);
}

void ddevide(){//百分 
	for(int i = 0;i < 22;i++)
		if(start[i] == '%') start[i] = 32;
	cout << normal(start,0) << "%"; 
}

int main(){
	scanf("%s",start);
	for(int i = 0;i < 22;i++)
		if(start[i] == '.'){
			point();
			return 0;
		}else if(start[i] == '/'){
			devide();
			return 0;
		}else if(start[i] == '%'){
			ddevide(); 
			return 0;
		}
	cout << normal(start,0);
	return 0;
} 
2022/10/7 21:25
加载中...