首页 > 解决方案 > 如果有人能找到我可以修复我的 switych c 代码的方法?

问题描述

您好,我刚开始学习 C,我正在尝试编写一个代码,它的值是一天一个月和一年的数字,它以文字显示月份并限制天数,但如果你能告诉我,我无法成功我做错了什么

#include <stdio.h>

int main()
{
    int a,b,c;
        //day month year
    scanf("%d%d%d",&a,&b,&c);
    
    switch(b,a<=31)
    {
        case 1: printf("%d January %d",a,c+2000);
        break;
        case 2: printf("%d February %d",a,c+2000);
        break;
        case 3: printf("%d March %d",a,c+2000);
        break;
        case 4: printf("%d April %d",a,c+2000);
        break;
        case 5: printf("%d May %d",a,c+2000);
        break;
        case 6: printf("%d Juny %d",a,c+2000);
        break;
        case 7: printf("%d July %d",a,c+2000);
        break;
        case 8: printf("%d August %d",a,c+2000);
        break;
        case 9: printf("%d September %d",a,c+2000);
        break;
        case 10: printf("%d October %d",a,c+2000);
        break;
        case 11: printf("%d November %d",a,c+2000);
        break;
        case 12: printf("%d December %d",a,c+2000);
        break;
        
        
        default : printf("One of your numbers are wrong");
    }

}

标签: c

解决方案


switch条件只能取一个变量。因为, a&c在这里是常量,所以它们应该按原样使用。

#include <stdio.h>

int main()
{
    int a,b,c;
        //day month year
    scanf("%d%d%d",&a,&b,&c);
    // date validation should be done before and if it is valid. then only process further
    if (a < 1 || a > 31) {
        cout << "Invalid date.";
        exit(1);
    } 
    
    switch(b)
    {
        case 1: printf("%d January %d",a,c+2000);
        break;
        case 2: printf("%d February %d",a,c+2000);
        break;
        case 3: printf("%d March %d",a,c+2000);
        break;
        case 4: printf("%d April %d",a,c+2000);
        break;
        case 5: printf("%d May %d",a,c+2000);
        break;
        case 6: printf("%d Juny %d",a,c+2000);
        break;
        case 7: printf("%d July %d",a,c+2000);
        break;
        case 8: printf("%d August %d",a,c+2000);
        break;
        case 9: printf("%d September %d",a,c+2000);
        break;
        case 10: printf("%d October %d",a,c+2000);
        break;
        case 11: printf("%d November %d",a,c+2000);
        break;
        case 12: printf("%d December %d",a,c+2000);
        break;
        
        
        default : printf("One of your numbers are wrong");
    }

}

注意:日期未正确验证。最好先创建一个函数并对其进行验证。前任。像二月一样检查不能超过 29 天。


推荐阅读