#include#include int main(void) { //1.读入字符串 char a[100] = { 0 }; char b[100] = { 0 }; char c[100] = { 0 }; char d[100] = { 0 }; scanf_s("%s", a, 100); scanf_s("%s", b, 100); scanf_s("%s", c, 100); scanf_s("%s", d, 100); //2.判断日期 int cnt; char date[7][10] = { "MON","TUE","WED","THU","FRI","SAT","SUN" }; unsigned int max = strlen(a); if (max < strlen(b)) max = strlen(b); for (cnt = 0; cnt < max; cnt++) { if (a[cnt] == b[cnt] && a[cnt] >= 65 && a[cnt] <= 71) { int day = a[cnt] - 65; printf("%s", date[day]); break; } } //3.钟头确定 int clock[24] = { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23 }; for (cnt += 1; cnt < max; cnt++) { if (a[cnt] == b[cnt]) { if (a[cnt] >= 48 && a[cnt] <= 57) { printf(" %02d", clock[a[cnt] - 48]); break; } if (a[cnt] >= 65 && a[cnt] <= 78) { printf(" %02d", clock[a[cnt] - 55]); break; } } } printf(":"); //4.分钟确定 unsigned int max2 = strlen(c); if (max2 < strlen(d)) max2 = strlen(d); for (cnt = 0; cnt < max2; cnt++) { if (c[cnt] == d[cnt]) { if (c[cnt] >= 65 && c[cnt] <= 90) { printf("%02d", cnt); break; } if (c[cnt] >= 97 && c[cnt] <= 122) { printf("%02d", cnt); break; } } } return 0; }
写在前面:
我认为这道题就是在考察对于题目的理解和翻译 要理解好题目的各项要求 还要有点猜测出题者的意图
1.读入字符串
这个地方我们直接用字符串 考虑到后面是对字符串内部的每个字母进行比较
2.日期判断
题目要求是大写英语字母 我们就用ASC码来做范围进行确定
记得要在第一次打印完后就break——不要犯低级错误
3.钟头确定
总之用数组来储存数字 将字符都转化为整数类型
这里注意一下 钟头必须是两位数字 这个是后来检查的时候发现的
4.分钟确定
做好判断后即输出
注:关于“没有为字符串添加零终止符”
搜寻csdn上的高阅读量回答后 主要就是在字符串后面添加一个{0}即可 ——这也说明这个并不是将字符串进行初始化 而仅仅是添加一个零终止符



