输入一个正整数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;
}