求助 65分 案例都通过了
查看原帖
求助 65分 案例都通过了
453308
laocaitou楼主2021/4/29 11:56

代码如下

// P1553.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include<cstring>
#include <cstdio>
using namespace std;

inline int read(char a[]) {
   char c = getchar();
   while (c == '\n')c = getchar();
   int cnt = 0;
   while (c != '\n' && c != EOF)a[cnt++] = c, c = getchar();
   a[cnt] = 0;
   return cnt;
}

int main()
{
   char a[20];
   read(a);
   int la = strlen(a),mid=0;
   int flag = 1, first = 0,end=1;
   char b[4] = { '1','.','/','%' };
   if (la == 1) {
   	cout << a[0];
   	return 0;
   }


   for (int i = 0; i < la; i++)
   {
   	if (a[i] == '.') {
   		flag = 2;
   		mid = i;
   	}
   	if (a[i] == '/') {
   		flag = 3;
   		mid = i;
   	}
   }
   if (a[la - 1] == '%') {
   	flag = 4;
   }

   if (flag == 1 || flag == 4) {
   	for (int i = la-1; i >= 0; i--)
   	{
   		if (a[i] == '%') {
   			i--;
   		}
   		if (a[i] == '0' && first == 0) {			
   			i--;
   			first = 0;	
   		}
   		if (a[i] != '0' && first == 0) {//第一个开头不是0的数字
   			first++;
   		}
   		if (first != 0 ) {
   			cout << a[i];
   		}
   		
   	}
   	if (flag == 4) {
   		cout << '%';
   		
   	}
   }
   if (flag == 2 || flag == 3) {
   	for (int i = mid-1; i >= 0; i--)
   	{
   		if (a[i] == '0' && first == 0) {
   			i--;
   		}
   		if (a[i] != '0' && first == 0) {//第一个开头不是0的数字
   			first++;
   		}
   		if (first != 0) {
   			cout << a[i];
   		}
   	}
   	cout << b[flag-1];
   	first = 0;
   	for (int i = la-1; i > mid; i--)
   	{
   		if (a[i] == '0' && first == 0) {
   			i--;
   		}
   		if (a[i] != '0' && first == 0) {//第一个开头不是0的数字
   			first++;
   		}		
   		if (a[i] == '0') {
   			for (int k = i-1; k > mid; k--)
   			{
   				if (a[k] != '0') {
   					end = 1;
   					break;
   				}
   			}
   			end = 0;
   		}
   		if (first != 0 && end == 1) {
   			cout << a[i];
   		}
   		
   	}

   }


}

2021/4/29 11:56
加载中...