样例对了,但是好多都是紫色RE,不应该呀?求大佬帮助,不至于全部运行时错误吧
查看原帖
样例对了,但是好多都是紫色RE,不应该呀?求大佬帮助,不至于全部运行时错误吧
677229
JJW_GLAZE楼主2022/2/9 19:54
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>
#define N 100
int fact(int n)//阶乘运算
{
	 int pro=1;
     int m=1;
     for(;m<=n;++m)
		pro=pro*m;
     return(pro);
}
void arrayforward(char *p)//数组前移
{
	int i;
	for(i=0;;i++)
	{
		*(p+i)=*(p+i+1);
		if((int)*(p+i+1)==10) break;
	}
}
int main()
{
	char a[N]={0};
	int i;
	int num=0;//整体位数
	int num1=0,num2=0;//分段位数
	int kind=0;//种类
	char bet;//中间值
	int length=0;
	for(i=0;;i++)
	{
		scanf("%c",&a[i]);
		if((int)a[i]==10) break;
		num++;
	}
	for(i=0;i<num;i++)
	{
		if(a[i]=='.') {kind=1;break;}
		else if(a[i]=='/') {kind=2;break;}
		else if(a[i]=='%') {kind=3;break;}
		else kind=0;
	}
	switch(kind)
	{
	case 0:
		for(i=0;i<=num/2-1;i++)
		{
			bet=a[num-i-1];
			a[num-i-1]=a[i];
			a[i]=bet;
		}
		while(a[0]=='0') arrayforward(a);
		for(i=0;(int)a[i]!=10;i++)
			printf("%c",a[i]);
		printf("\n");
		break;
	case 1:
		for(i=0;;i++)
		{
			if(a[i]=='.') break;
			num1++;
		}
		for(;i<num-1;i++)	
			num2++;
		for(i=0;i<=num1/2-1;i++)
		{
			bet=a[num1-i-1];
			a[num1-i-1]=a[i];
			a[i]=bet;
		}
		for(i=num1+1;i<=num1+1+num2/2-1;i++)
		{
			bet=a[num+num1+1-i-1];
			a[num+num1+1-i-1]=a[i];
			a[i]=bet;
		}
		while(a[0]=='0') arrayforward(a);
		for(i=0,length=0;;i++)
		{
			if((int)a[i]==10) break;
			length++;
		}
		while(a[length-1]=='0'&&a[length-2]!='.')
		{
			for(i=0,length=0;;i++)
			{
				if((int)a[i]==10) break;
				length++;
			}
			while(a[length-1]=='0'&&a[length-2]!='.') arrayforward(a+length-1);
		}
		for(i=0;(int)a[i]!=10;i++)
			printf("%c",a[i]);
		printf("\n");
		break;
	case 2:
		for(i=0;;i++)
		{
			if(a[i]=='/') break;
			num1++;
		}
		for(;i<num-1;i++)	
			num2++;
		for(i=0;i<=num1/2-1;i++)
		{
			bet=a[num1-i-1];
			a[num1-i-1]=a[i];
			a[i]=bet;
		}
		for(i=num1+1;i<=num1+1+num2/2-1;i++)
		{
			bet=a[num+num1+1-i-1];
			a[num+num1+1-i-1]=a[i];
			a[i]=bet;
		}
		while(a[0]=='0') arrayforward(a);
		for(i=0,length=0;;i++)
		{
			if((int)a[i]==10) break;
			length++;
		}
		while(a[length-1]=='0')
		{
			for(i=0,length=0;;i++)
			{
				if((int)a[i]==10) break;
				length++;
			}
			while(a[length-1]=='0') arrayforward(a+length-1);
		}
		for(i=0;(int)a[i]!=10;i++)
			printf("%c",a[i]);
		printf("\n");
		break;
	case 3:
		for(i=0;i<=num/2-1;i++)
		{
			bet=a[num-i-1-1];
			a[num-i-1-1]=a[i];
			a[i]=bet;
		}
		while(a[0]=='0') arrayforward(a);
		for(i=0;(int)a[i]!=10;i++)
			printf("%c",a[i]);
		printf("\n");
		break;
	}
	return 0;
}
2022/2/9 19:54
加载中...