whale-1901 发表于 2020-10-3 12:32:18

一个小菜鸟关于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:}

zltzlt 发表于 2020-10-3 12:36:30

程序错误比较多,特别是 if(m==1,3,5,7,8,10,12) 这一句,根本没有这样的写法。。

这里的 A 和 B 都只是一个标签,指向程序的某一个位置,因此 goto A 执行了 printf("31"); 后还会执行 printf("30");。因此这题不适合用 goto 做。

baige 发表于 2020-10-3 12:38:50

本帖最后由 baige 于 2020-10-3 12:58 编辑

标签只是标签,程序到标签位置正常执行。

mrcrisis 发表于 2020-10-3 12:50:02

你得在B标签之前加一句return 或者 加一句goto到最后的return
页: [1]
查看完整版本: 一个小菜鸟关于goto的尝试