C语言求助 #12 #15 没过
查看原帖
C语言求助 #12 #15 没过
892284
EAZINZERO楼主2023/2/17 14:47
#include<stdio.h>
#include<string.h>
//删数字末尾的零 
void abandon(int begin, int finall, char* u)
{
	for (int i = begin; i >= finall;i--)
	{
		if (u[i] == '0')
			u[i] = '\0';
		else
			return;
	}
}
//删小数点后的零 
void abandonn(int begin, int finall, char* u)
{
	for (int ii = begin; ii <= finall;ii++)
	{
		if (u[ii] == '0')
			u[ii] = '\0';
		else
			return;
	}
}
//倒叙打印 
void print(int begin, int finall, char* u)
{
	for (int i = begin;i >= finall;i--)
		if(u[i] != '\0')printf("%c", u[i]);

}
int main()
{
	char ss[200] = { 0 }, a[50] = { 0 };// b[50] = { 0 };
	int len,k = 0,i;
	scanf("%s", ss);
	len = strlen(ss);
	//是否为整数
	for (i = 0;i < len;i++)
	{
		if (!(ss[i] >= '0' && ss[i] <= '9'))
		{
			k = i;break;
		}
	}

	//整数 || 百分数
	if (i == len || ss[len - 1] =='%')
	{
		abandon(len - 1, 0, ss);
		if (ss[len - 1] != '%')
		{
			if (ss[0] == '\0')
			{
				printf("0");return 0;
			}
			else
			{
				print(len - 1, 0, ss);
			}
		}
		else
		{
			abandon(len - 1, 0, ss);
			abandon(len - 2, 0, ss);
			if (ss[0] == '\0')
			{
				printf("0%%");return 0;
			}
			else
			{
				print(len - 2, 0, ss);
				printf("%%");
			}
		}
		len = strlen(ss);
	}
	else if (ss[k] == '.')
	{
		for (int ii = 0;ii < k;ii++)
			a[ii] = ss[ii];
	/*	for (int ii = k + 1;ii < len;i++)
			b[ii] = ss[ii];*/
		abandon(k - 1, 0, a);
		if (a[0] == '\0' &&ss[len - 1] == '\0')
		{
		printf("0");return 0;
		}if (a[0] == '\0')
		printf("0");
		print(k - 1, 0, a);
		printf(".");
		abandonn(k + 1, len - 1, ss);
		if(ss[len - 1] == '\0')
		printf("0");
		else
		print(len, k + 1, ss);
	}
	else if (ss[k] == '/')
	{
		abandon(len - 1, 0, ss);
		for (int ii = 0;ii < k;ii++)
			a[ii] = ss[ii];
		abandon(k - 1, 0, a);
		if (a[0] == '\0')
		{
			printf("0");return 0;
		}
		print(k-1, 0, a);
		printf("/");
		print(len - 1, k + 1, ss);
	}
	return 0;
}
2023/2/17 14:47
加载中...