choose 明明已經宣告了 但為什麼 會說undeclared


#include <stdio.h>
#include <stdlib.h>
//TEMP = [YEAR  - 1]  +  [(YEAR - 1) / 4]  -  [(YEAR - 1) / 100] + [(YEAR - 1) / 400] + DAYS 
//WEEKDAY = TEMP % 7
int isleapYear(int);
int isweekDay(int,int,int);


int main(void){
    do{
        system("cls");
        int year,month;
        printf("請輸入西元年,和月份:");
        scanf("%d-%d",&year,&month);
        getchar();
        printf("     %d年%d月\n",year,month);
        printf("--------------------\n");
        printf("日 一 二 三 四 五 六\n");
        
        int weekend = isweekDay(year,month,1);
        
        int i;
        for (i=0;i<weekend;i++){
            printf("   ");
        }
        
        int endDay;
        if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12){
                endDay=31;
            }else if(month==2){
                if(isleapYear(year)==1){
                        endDay=29;
                    }else{
                        endDay=28;
                    }
                }else{
                    endDay=30;
                }
                
        for(i=1;i<=endDay;i++){
            printf("%2d ",i);
            if((i+weekend)%7==0){
                printf("\n");
            }
        }
        char choose;
        printf("請問還要繼續嗎?(yes = 'y' , no = 'n'):");
        scanf("%c",&choose);
        getchar();
        system("pause");
    }while(choose == 'y');
    
    printf("\n");
    system("pause");
    return 0;
}

int isleapYear(int year){
    if(year %400 == 0 || year %4 == 0){
        return 1;
    }else if (year %100 == 0){
        return 0;
    }else{
        return 0;
    }
}

int isweekDay(int y, int m, int d){
    int days = d;
    int i;
    for(i=1; i<m ;i++){
        if(i==1 || i==3 || i==5 || i==7 || i==8 || i==10 || i==12){
            days+=31;
        }else if(i==2){
            if(isleapYear(y)==1){
                    days+=29;
                }else{
                    days+=28;
                }
            }else{
                days+=30;
            }
        }
    int temp = (y-1) + (int)(y-1)/4 - (int)(y-1)/100 + (int)(y-1)/400 + days;
    int week = temp%7;
    return week;
    }

img


choose 明明已經宣告了
但為什麼 會說undeclared

choose 放到while循环外面

【以下回答由 GPT 生成】

请注意,您提供的代码不完整,因此我无法对问题做出确切的回答。从代码片段中可以看出,在函数main()中声明了两个整型变量yearmonth,但是在代码截断处处于未完成状态。这可能是造成编译器报告“undeclared错误”的原因,因为编译器会在代码的其他部分中查找名为choose的变量,但是没有找到声明或定义。

如果您能提供完整的代码,我将能够更准确地帮助您解决问题。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^