应对这类题是否需要将结果存入数组最后一起输出,还是可以随程序运行逐行输出
查看原帖
应对这类题是否需要将结果存入数组最后一起输出,还是可以随程序运行逐行输出
886012
shuaishuaiqi楼主2023/1/24 19:53

******** 经过测试********

1.这是不存得分结果的

#include<iostream>
#include<cstring>
char c[100000];
using namespace std;
int main()
{
	
	int z=0, y=0,i;
	for (i = 0;;i++)
	{
		cin >> c[i];
		if (c[i] == 'E')
		{
			break;
		}
	}
	int n = i;//一共比的局数
	//11分制下
	for ( i = 0;i < n;i++)
	{
		if (c[i] == 'W')
		{
			z++;
		}
		else if (c[i] == 'L')
		{
			y++;
		}
		if ((z>=11||y>=11)&&abs(z-y)>=2)
		{
			printf("%d:%d\n", z, y);
			z = 0, y = 0;
		}
	}
	printf("%d:%d\n", z, y);
	cout <<'\n';
	//21分制下
	z = 0, y = 0;
	for (i = 0;i < n;i++)
	{
		if (c[i] == 'W')
		{
			z++;
		}
		else if (c[i] == 'L')
		{
			y++;
		}
		if ((z >= 21 || y >= 21) && abs(z - y) >= 2)
		{
			printf("%d:%d\n", z, y);
			z = 0, y = 0;
		}
	}
	printf("%d:%d", z, y);
	return 0;
}
  

2.这是将得分结果存进去一起输出的

  #include<iostream>
#include<cstring>
char c[100000];
int shiyiz[100000], shiyiy[100000],ershiyiz[100000], ershiyiy[100000];//存比赛结果
using namespace std;
int main()
{
	
	int z=0, y=0,t=0,l=0,i;
	for (i = 0;;i++)
	{
		cin >> c[i];
		if (c[i] == 'E')
		{
			break;
		}
	}
	int n = i;//一共比的局数
	//11分制下
	for ( i = 0;i < n;i++)
	{
		if (c[i] == 'W')
		{
			z++;
		}
		else if (c[i] == 'L')
		{
			y++;
		}
		if ((z>=11||y>=11)&&abs(z-y)>=2)
		{
			shiyiz[t] = z, shiyiy[t] = y;
			t++;
			z = 0, y = 0;
		}
	}
	shiyiz[t] = z, shiyiy[t] = y;
	//21分制下
	z = 0, y = 0;
	for (i = 0;i < n;i++)
	{
		if (c[i] == 'W')
		{
			z++;
		}
		else if (c[i] == 'L')
		{
			y++;
		}
		if ((z >= 21 || y >= 21) && abs(z - y) >= 2)
		{
			ershiyiz[l] = z, ershiyiy[l] = y;
			l++;
			z = 0, y = 0;
		}
	}
	ershiyiz[l] = z,ershiyiy[l]=y;
	for (i = 0;i <= t;i++)
	{
		cout << shiyiz[i] << ':' << shiyiy[i] << endl;
	}
	cout << endl;
	for (i = 0;i <= l;i++)
	{
		cout << ershiyiz[i] << ':' << ershiyiy[i] << endl;
	}
	return 0;
}

最终经过检验,两者都可以ac

2023/1/24 19:53
加载中...