#include<stdio.h>
#define D(c) (c)>='A'&&(c)<='Z'
#define A(c) (c)>='0'&&(c)<='9'
#define B(c) (c)>='a'&&(c)<='z'
#define C(c) c>='A'&&c<='N'
void put(char e);
void put2(char f);
void put3(int g);
int main()
{
char a[60],b[60],c[60],d[60];
int i,j,count=0;
char e,f;
gets(a);
gets(b);
gets(c);
gets(d);
i=0;
while (a[i]!='\0'&&count<2)
{
if (a[i]==b[i]&&(C(a[i])||A(a[i]))&&count==1)
{f=b[i];
put2(f);
count++;
} if (a[i]==b[i]&&D(a[i])&&count==0)
{e=a[i];count++;
put(e);
}
i++;
}
j=0;
while (c[j]!='\0')
{
if (c[j]==d[j])
{
put3(j);
break;
}
j++;
}
}
void put(char e)
{
switch(e)
{
case'A':printf("MON ");break;
case'B':printf("TUE ");break;
case'C':printf("WED ");break;
case'D':printf("THU ");break;
case'E':printf("FRI ");break;
case'F':printf("SAT ");break;
case 'G':printf("SUN ");break;
}
}
void put2(char f)
{
if (A(f))
printf("%0.2d:",f-'0');
else printf("%d:",f-'A'+10);
}
void put3(int g)
{
printf("%0.2d",g);
#define D(c) (c)>='A'&&(c)<='Z'
#define A(c) (c)>='0'&&(c)<='9'
#define B(c) (c)>='a'&&(c)<='z'
#define C(c) c>='A'&&c<='N'
void put(char e);
void put2(char f);
void put3(int g);
int main()
{
char a[60],b[60],c[60],d[60];
int i,j,count=0;
char e,f;
gets(a);
gets(b);
gets(c);
gets(d);
i=0;
while (a[i]!='\0'&&count<2)
{
if (a[i]==b[i]&&(C(a[i])||A(a[i]))&&count==1)
{f=b[i];
put2(f);
count++;
} if (a[i]==b[i]&&D(a[i])&&count==0)
{e=a[i];count++;
put(e);
}
i++;
}
j=0;
while (c[j]!='\0')
{
if (c[j]==d[j])
{
put3(j);
break;
}
j++;
}
}
void put(char e)
{
switch(e)
{
case'A':printf("MON ");break;
case'B':printf("TUE ");break;
case'C':printf("WED ");break;
case'D':printf("THU ");break;
case'E':printf("FRI ");break;
case'F':printf("SAT ");break;
case 'G':printf("SUN ");break;
}
}
void put2(char f)
{
if (A(f))
printf("%0.2d:",f-'0');
else printf("%d:",f-'A'+10);
}
void put3(int g)
{
printf("%0.2d",g);
}
太菜了,做不出来了。
呜呜呜
几点教训:字符指针赋值字符串时会出错,scanf与gets不能混用,
宏的一些规则还不是很懂,输出要规范。
debug好久。还是有个点错了