白银第二期第二题

题目:字符串若全为大写字母,或者除了第一个字母以外的所有字母都是大写的。在这种情况下,我们应该自动更改所有字母的大小写,其余情况不变
题解:建立字符和初始化整数为0,建立循环,判断是否全为大写,是的话整数为1,再建立循环判断第二种情况,是的话为2,再用if判断,0的话直接输出,1的话换为小写字母,2的话更换字母大小写

#include <iostream>
#include<string>
#include<iomanip>
using namespace std;
int main()
{
	char a[101],flag=0;
	while (cin>>a)
	{
		for (int i = 0; a[i]!='\0'; i++)
		{
			if (a[i] >= 'A'&&a[i] <= 'Z') flag = 1;
			else
			{
				flag = 0;
				break;
			}
		}
		if (a[0] >= 'a'&&a[0]<='z'&&strlen(a)>1)
		{
			for (int i = 1; a[i] != '\0'; i++)
			{
				if (a[i] >= 'A'&&a[i] <= 'Z') flag = 2;
				else
				{
					flag = 0;
					break;
				}
			}
		}
		if (flag == 0)
		{
			if (strlen(a) > 1)
			{
				for (int i = 0; a[i] != '\0'; i++)
				{
					cout << a[i];
				}
				cout << endl;
			}
			else
			{
				a[0] -= 32;
				cout << a[0] << endl;
			}
		}
		else if (flag == 1)
		{
			for (int i = 0; a[i] != '\0'; i++)
			{
				a[i] += 32;
				cout << a[i];
			}
			cout << endl;
		}
		else 
		{
			a[0] -= 32;
			cout << a[0];
			for (int i = 1; a[i] != '\0'; i++)
			{
				a[i] += 32;
				cout << a[i];
			}
			cout << endl;
		}
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_43981315/article/details/84963059