哪位大佬,帮忙看看,debug半天了都没问题,但不知道为啥去不掉多余的0
查看原帖
哪位大佬,帮忙看看,debug半天了都没问题,但不知道为啥去不掉多余的0
412341
songyikang楼主2021/8/3 17:49
#include<iostream>
using namespace std;
#include<cstring>
void reverse1(char s[]){			//对于整数部分字符串的换位
	int k=0;
	for(int i=strlen(s)-1;i>=0;i--){
		if(strlen(s)==1&&s[0]==0){
			cout<<0;
			break;
		}
//		cout<<s[i];
		while(s[i]==0&&k==0){
			i--;
		}
//		cout<<s[i];
		k=1;
		cout<<s[i];
	}
}
void reverse2(char s[]){			//对于小数部分字符串的换位
	int k=0;
	int j=0;
	
	for(int j=0;j<strlen(s);j++){
		if(s[j]!=0){
			break;
		}
	}
	if(j==strlen(s)){
		cout<<0;
	}
	else{
		for(int i=strlen(s)-1;i>=j;i--){
				cout<<s[i];
		}
	}
	
}
void arrayCopy(char s1[],char s2[],int index1,int index2){	//提取总字符串中的部分,将总字符串根据符号索引分成两部分
	int j=0;
	for(int i=index1;i<=index2;i++){
		s1[j++]=s2[i];
	}
}
int main(){
	char s[20];
	char part1[10];
	char part2[10];
	cin>>s;
	int k=0;
	
	for(int i=0;i<strlen(s);i++){
		if(s[i]=='.'){							//找到符号索引,把输入的字符串分成两部分
			k=i;
			arrayCopy(part1,s,0,i-1);
			arrayCopy(part2,s,i+1,strlen(s)-1);
			reverse1(part1);
			cout<<'.';
			reverse2(part2);
		}
		else if(s[i]=='/'){
			k=i;								//找到符号索引,把输入的字符串分成两部分
			arrayCopy(part1,s,0,i-1);
			arrayCopy(part2,s,i+1,strlen(s)-1);
			reverse1(part1);
			cout<<'/';
			reverse1(part2);
		}
		else if(s[i]=='%'){
			k=i;								//找到符号索引,把输入的字符串分成两部分
			arrayCopy(part1,s,0,i-1);
			reverse1(part1);
			cout<<"%";
		}
	}
	if(k==0){
			reverse1(s);
		}
	
	
	
	
	
	
	
	
	
}
2021/8/3 17:49
加载中...