[PTA]组织星期信息

输入一个正整数repeat (0<repeat<10),做repeat次下列运算:

定义一个指针数组将下面的星期信息组织起来,输入一个字符串,在表中查找,若存在,输出该字符串在表中的序号,否则输出-1。

Sunday Monday Tuesday Wednesday Thursday Friday Saturday

输入输出示例:括号内为说明,无需输入输出

输入样例 (repeat=3) :

输出样例:

/*注:单从写的人崩不崩溃来说,这条代码就不是最佳(可以通过测试点),但我写
这条代码其实是想让各位朋友体会指针的便利(只是其他地方的语法多,指针这部分
很简洁而且便利),还有预处理的重要*/

#include<stdio.h>
#include<string.h>
int function(char* p, int k);
char Monday[10] = { "Monday" };
char Sunday[10] = { "Sunday" };
char Tuesday[10] = { "Tuesday" };
char Wednesday[10] = { "Wednesday" };
char Thursday[10] = { "Thursday" };
char Friday[10] = { "Friday" };
char Saturday[10] = { "Saturday" };//为每个星期定义一个数组,当然也可以定义7阶数组
int main()
{
	int n = 0;
	scanf("%d", &n);
	getchar();//接收回车
	for (int i = 0; i < n; i++)
	{
		char A[100];
		int lenth = 0;
		gets(A);
		lenth = strlen(A);//输入并计算长度
		function(A, lenth);
	}
}
int function(char* p, int k)
{
	switch (*p)
	{
	case 'S':
	if (k == 6)//因为S和T为首字母的英文字符长度不同,所以可以通过数组长度判断
/*但是其他的,比如:F只有一天就不需要所以就不用字符数组长度
判断*/
	{
		for (int i = 0; i < k; i++)
		{
			if (*(p + i) != Sunday[i])
			{
				printf("-1");
				return 0;//直接输出返回,下同
			}
		}printf("1\n"); break; 
	}
	else
	{
		for (int i = 0; i < k; i++)
		{
			if (*(p + i) != Saturday[i])
			{
				printf("-1");
				return 0;
			}
		}printf("7\n"); break;
	}
	case 'M':for (int i = 0; i < k; i++)
	{
		if (*(p + i) != Monday[i])
		{
			printf("-1");
			return 0;
		}
	}printf("2\n"); break;
	case 'W':for (int i = 0; i < k; i++)
	{
		if (*(p + i) != Wednesday[i])
		{
			printf("-1");
			return 0;
		}
	}printf("4\n"); break;
	case 'F':for (int i = 0; i < k; i++)
	{
		if (*(p + i) != Friday[i])
		{
			printf("-1");
			return 0;
		}
	}printf("6\n"); break;
	default:
		if (k==7)
		{
			for (int i = 0; i < k; i++)
			{
				if (*(p + i) != Tuesday[i])
				{
					printf("-1");
					return 0;
				}
			}printf("3\n"); break;
		}
		else
		{
			for (int i = 0; i < k; i++)
			{
				if (*(p + i) != Thursday[i])
				{
					printf("-1");
					return 0;
				}
			}printf("5\n"); break;
		}
	}
	return 0;
}

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值