全部问题 > 当前问题

老师我这段程序错在哪里了?年月求日的程序

#include<stdio.h>

void main()

{

int year,month,days;

printf("请输入年份与月份");

scanf("%d%d",&year,&month);

switch(month)

case 2:

if((year%400==0||(year%4==0&&year%100!=0))

days=29天;

else

days=28天;break;

case 4:case 6:case 9:case 11:

days=30天;break;

default:

days=31天;break;

printf("%d天\n",days);

}




:\c语言\年份月份.cpp(10) : error C2146: syntax error : missing ')' before identifier 'days'

E:\c语言\年份月份.cpp(10) : error C2018: unknown character '0xcc'

E:\c语言\年份月份.cpp(10) : error C2018: unknown character '0xec'

E:\c语言\年份月份.cpp(10) : error C2018: unknown character '0xa3'

E:\c语言\年份月份.cpp(10) : error C2018: unknown character '0xbb'

E:\c语言\年份月份.cpp(11) : error C2143: syntax error : missing ';' before 'else'

E:\c语言\年份月份.cpp(12) : error C2018: unknown character '0xcc'

E:\c语言\年份月份.cpp(12) : error C2018: unknown character '0xec'

E:\c语言\年份月份.cpp(12) : error C2043: illegal break

E:\c语言\年份月份.cpp(13) : error C2046: illegal case

E:\c语言\年份月份.cpp(13) : error C2046: illegal case

E:\c语言\年份月份.cpp(13) : error C2046: illegal case

E:\c语言\年份月份.cpp(13) : error C2046: illegal case

E:\c语言\年份月份.cpp(14) : error C2018: unknown character '0xcc'

E:\c语言\年份月份.cpp(14) : error C2018: unknown character '0xec'

E:\c语言\年份月份.cpp(14) : error C2043: illegal break

E:\c语言\年份月份.cpp(15) : error C2047: illegal default

E:\c语言\年份月份.cpp(16) : error C2018: unknown character '0xcc'

E:\c语言\年份月份.cpp(16) : error C2018: unknown character '0xec'

E:\c语言\年份月份.cpp(16) : error C2043: illegal break


匿名课官 2017-4-24 23:38:27

共 4 个回答

qqq 2017-4-25 10:09:39

你仔细看看这一句if((year%400==0||(year%4==0&&year%100!=0)),是不是少括号?

还有,你这每个数字后面都写个天。。服了。。怎么能把中文字符赋值给变量呢。。

最后一个问题 你的switch语句块为什么不用大括号括起来。。。

匿名课官 2017-4-25 20:51:06

回复 qqq

非常感谢!但是修改完了还有个问题。

#include<stdio.h>

void main()

{

int year,month,days;

printf("ÇëÊäÈëÄê·ÝÓëÔ·Ý");

scanf("%d%d",&year,&month);

switch(month)

{

case 2:

if((year%400==0)||(year%4==0&&year%100!=0))

days=29;break;

else

days=28;break;

case 4:case 6:case 9:case 11:

days=30;break;

default:

days=31;break;

}

printf("%dÌì\n",days);

}


修改完了,为什么第十二条else还是不对?

error C2181: illegal else without matching if

最佳答案

qqq 2017-5-2 17:58:14

if((year%400==0)||(year%4==0&&year%100!=0))

days=29;break;

else

days=28;break;

这一段代码,判断if条件,如果符合那就执行days=29,只有days=29是if语句里的执行语句,不加大括号的话,if只能管到一句,所以break是一定会执行的,那么后面的else就不合法了,应该改成:

if((year%400==0)||(year%4==0&&year%100!=0))

{days=29;break;}

else

{days=28;break;}


匿名课官 2017-5-2 18:23:15

回复 qqq:谢谢老师!

问题来自: switch语句