求1,2题答案(C语言题目)

2025-03-22 07:37:55
推荐回答(2个)
回答(1):

//1.题
#include 
int main(int argc, char const* argv[])
{
    int year, month;
    printf("输入哪一年“空格分开”哪一月\n");
    scanf("%d%d", &year, &month);
    int r = 28;
    int min = 30;
    int max = 31;
    if(year%400==0||(year%4==0&&year%100))
        if(month==2)
            r=29;
    switch (month) {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
                 printf("%d\n", max);
                     break;
        case 4:
        case 6:
        case 9:
        case 11:
                printf("%d\n", min);
                    break;
        case 2:
                printf("%d\n", r);
                    break;
        default:
                printf("月份格式错误\n");
    }
    return 0;
}
//2.题
#include 
int main(int argc, char const* argv[])
{
    int result = 0;
    int ch = 0;
    while ((ch=getchar())!='\n') {
        if (ch>='0'&&ch<='9') {
            result += (ch-'0');
        }
    }
    printf("%d\n", result);
    return 0;
}

回答(2):

1.
#include
static int Month[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
int isLeapYear(int iYear){ return ((iYear%400 == 0) || (iYear%4==0 && iYear%100!=0));}

int main(int argc,char **argv){
    int y,m;
    scanf("%d %d",&y,&m);
    if(m==2) printf("%d",Month[m]+isLeapYear(y));
    else printf("%d",Month[m]);
    return 0;
}

2.

#include
int main(int argc,char ** argv){
    char c;
    int sum = 0;
    while((c = getchar())!='\n'){
        if(c>=0x30 && c<=0x39) sum+=c-0x30;                
    }
    printf("%d",sum);
    return 0;
}