#include
int main()
{
char a[60];
char b[60];
char c[60];
char d[60];
scanf_s("%s", a, 60);
scanf_s("%s", b, 60);
scanf_s("%s", c, 60);
scanf_s("%s", d, 60);
int i,j,k;
for (i = 0; i < 60; i++)
{
if (a[i] == b[i])
{
switch (a[i] - 'A')
{
case 0:
printf("MON");
break;
case 1:
printf("TUE");
break;
case 2:
printf("WED");
break;
case 3:
printf("THU");
break;
case 4:
printf("FRI");
break;
case 5:
printf("SAT");
break;
case 6:
printf("SUN");
break;
}
}
for (j = i; j <= 60; j++)
{
if (a[j] >= 'A' && a[j] <= 'N')
{
int n = a[j] - 'A'+10;
printf("%d:", n);
}
}
}
for (k = 0; k < 60; k++)
{
if (c[k] == d[k])
{
printf("0%d", k);
}
}
return 0;
}
我想问的是在判断前两个字符串的字符是否相等时,当判断出第一个后,显示周几,那如何判断第二个以显示是几点呢?
我的代码写的很离谱 希望大家帮我指出问题,提出建议
“Devil组”引证GPT后的撰写:
在判断前两个字符串的字符是否相等时,可以先找到第一个相同的大写字母,根据其代表的数字判断是周几,然后再找到第二个相同的大写字母,根据其代表的数字判断是几点。
具体实现可以参考下面的代码:
#include <stdio.h>
int main()
{
char a[61], b[61], c[61], d[61];
scanf("%s%s%s%s", a, b, c, d);
int i;
for (i = 0; a[i] && b[i]; i++)
{
if (a[i] == b[i] && a[i] >= 'A' && a[i] <= 'G')
{
// 找到第一个相同的大写字母,并判断是周几
printf("%s ", (char []){"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"}[a[i] - 'A']);
// 继续往后找第二个相同的大写字母
for (i++; a[i] && b[i]; i++)
{
if (a[i] == b[i])
{
if (a[i] >= '0' && a[i] <= '9') // 如果是数字
{
printf("%02d:", a[i] - '0'); // 补齐两位
break;
}
else if (a[i] >= 'A' && a[i] <= 'N') // 如果是大写字母A~N
{
printf("%02d:", a[i] - 'A' + 10);
break;
}
}
}
break; // 找到了就跳出循环
}
}
for (i = 0; c[i] && d[i]; i++)
{
if (c[i] == d[i] && ((c[i] >= 'a' && c[i] <= 'z') || (c[i] >= 'A' && c[i] <= 'Z')))
{
printf("%02d", i); // 输出分钟
break;
}
}
return 0;
}
这里采用了两个循环来分别找到两个相同的大写字母。第一个循环找到第一个相同的大写字母后,继续往后找第二个相同的大写字母,直到找到数字或者大写字母A~N为止。第二个循环用来找到第一个相同的小写字母或者大写字母,输出分钟。
不知道你这个问题是否已经解决, 如果还没有解决的话: