"stdio.h"
#include
"conio.h"
main()
{
int
day,month,year,sum,leap
printf("\nplease
input
year,month,day\n")
scanf("%d,%d,%d",&year,&month,&day)
switch(month)
/*先计算某月以前月份的总天数*/
{
case
1:sum=0break
case
2:sum=31break
case
3:sum=59break
case
4:sum=90break
case
5:sum=120break
case
6:sum=151break
case
7:sum=181break
case
8:sum=212break
case
9:sum=243break
case
10:sum=273break
case
11:sum=304break
case
12:sum=334break
default:printf("data
error")break
}
sum=sum+day
/*再加上某天的天数*/
if(year%400==0||(year%4==0&&year%100!=0))
/*判断是不是闰年*/
leap=1
else
leap=0
if(leap==1&&month>2)
/*如果是闰年且月份大于2,总天数应该加一天*/
sum++
printf("It
is
the
%dth
day.",sum)
getch()
}
#include <stdio.h>int main()
{
char ch
scanf("%c", &ch)
if (ch == 'm') printf(" monday\n")
if (ch == 't')
{
getchar()
printf("请输入第二个字母:")
scanf("%c", &ch)
if (ch == 'u')printf(" tuesday\n")
else printf(" thursday\n")
}
if (ch == 'w')printf(" wednesday\n")
if (ch == 'f')printf(" friday\n")
if (ch == 's')
{
getchar()
printf("请输入第二个字母:")
scanf("%c", &ch)
if (ch == 'a')printf(" saturday\n")
else printf(" sunday\n")
}
else
printf("没有相同。\n")
}
你输入了S后的回车还在缓冲区中,后来被读取到letter中了,而不是你输入的字母,所以才会出错,你在之前再加一个getchar就行了。还有你的第二个else if中不需要再读取字母了,直接判断就行了。下面是整理后的代码。我建议你直接读取一段作为字符串来判断比较方便,这样比较麻烦。#include <stdio.h>
void main()
{
printf("please enter the first letter of someday:\n")
char letter
while ((letter = getchar()) != 'y') {
switch (letter) {
case 'S': {
printf("please enter the second letter:")
getchar()
if ((letter = getchar()) == 'a') {
printf("It is Saturday!\n")
} else if (letter == 'u') {
printf("It is Sunday!\n")
} else {
printf("error\n")
}
break
}
case 'M':
printf("It is Monday!\n")
break
case 'T': {
printf("please enter the second letter:")
getchar()
if ((letter = getchar()) == 'h') {
printf("It is Tuesday!\n")
} else if (letter == 'u') {
printf("It is Thursday!\n")
}
break
}
case 'F':
printf("It is Friday!\n")
break
case 'W':
printf("It is Wednesday!\n")
break
}
}
}