一个小菜鸟关于goto的尝试
题目:给你一个年份和月份,求该月有多少天代码如下:
#include<stdio.h>
int main()
{
int y,m;
scanf("%d %d",&y,&m);
if(y%4==0&&y%100!=0)
{
if(m==2)
{
printf("29\n");
}
if(m==1,3,5,7,8,10,12)
{
goto A;
}
else
{
goto B;
}
}
else
{
if(m==2)
{
printf("29\n");
}
if(m==1,3,5,7,8,10,12)
{
goto A;
}
else
{
goto B;
}
}
A : printf("31");
B : printf("30");
return 0;
}
当我输入2012 2 的时候应该输出2可我的输出为29 3130求大佬解释哪里出错了{:10_250:} 程序错误比较多,特别是 if(m==1,3,5,7,8,10,12) 这一句,根本没有这样的写法。。
这里的 A 和 B 都只是一个标签,指向程序的某一个位置,因此 goto A 执行了 printf("31"); 后还会执行 printf("30");。因此这题不适合用 goto 做。 本帖最后由 baige 于 2020-10-3 12:58 编辑
标签只是标签,程序到标签位置正常执行。 你得在B标签之前加一句return 或者 加一句goto到最后的return
页:
[1]