c语言实验报告 求大神

如题所述

1、

#include<stdio.h>
int main(){
    int year;
    scanf("%d",&year);
    if(year%400==0 || year%100!=0 && year%4==0)
        printf("%d年是润年\n",year);
    else
        printf("%d年不是润年\n",year);
    return 0;
}

2、

#include<stdio.h>
int main(){
    int year,month;
    int monthOfDay[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    scanf("%d %d",&year,&month);
    if(month!=2)
        printf("该月一共%d天\n",monthOfDay[month]);
    else{
        if(year%400==0 || year%100!=0 && year%4==0)
            printf("该月一共%d天\n",monthOfDay[month]+1);
        else
            printf("该月一共%d天\n",monthOfDay[month]);
    }
    return 0;
}

3、

#include<stdio.h>
int main(){
    int year,month,op;
    int monthOfDay[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    printf("请选择:\n");
    printf("1、判断闰年\n");
    printf("2、判断某月多少天\n");
    printf("输入其他数字退出\n");
    scanf("%d",&op);
    if(op==1){
        printf("请输入年份:");
        scanf("%d",&year);
        if(year%400==0 || year%100!=0 && year%4==0)
            printf("%d年是润年\n",year);
        else
            printf("%d年不是润年\n",year);
    }
    else if(op==2){
        printf("请输入年月,以空格分开(例如1993 11):");
        scanf("%d %d",&year,&month);
        if(month!=2)
            printf("该月一共%d天\n",monthOfDay[month]);
        else{
            if(year%400==0 || year%100!=0 && year%4==0)
                printf("该月一共%d天\n",monthOfDay[month]+1);
            else
                printf("该月一共%d天\n",monthOfDay[month]);
        }
    }
    else{
        printf("退出啦!\n");
    }
    return 0;
}

4、我把上面几个功能转成函数了,否则代码量有点大了。。

#include<stdio.h>
int isLeapYear(int year);
int getDayOfMonth(int year,int month);

int main(){
    int year,month,day;
    int ans=0,i;
    printf("请输入年月日,以空格分开(例如2015 12 20):");
    scanf("%d %d %d",&year,&month,&day);
    ans+=day;
    for(i=1;i<month;i++)
        ans+=getDayOfMonth(year,i);
    printf("这是%d年中的第%d天\n",year,ans);
    return 0;
}

int isLeapYear(int year){
    if(year%400==0 || year%100!=0 && year%4==0)
        return 1;
    return 0;
}

int getDayOfMonth(int year,int month){
    int monthOfDay[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    if(month!=2)
        return monthOfDay[month];
    return monthOfDay[month]+isLeapYear(year);
}

5、用函数跑还是比较方便的

#include<stdio.h>
#include<windows.h>
int isLeapYear(int year);
int getDayOfMonth(int year,int month);
int getDayOdYearFormData(int year,int month,int day);
int main(){
    int year,month,day,op;
    int ans=0,i;
    while(1){
        printf("请选择:\n");
        printf("1、判断闰年\n");
        printf("2、计算某月多少天\n");
        printf("3、计算某日是一年中的第几天\n");
        printf("输入其他数字退出\n");
        scanf("%d",&op);
        if(op==1){
            printf("请输入年份:");
            scanf("%d",&year);
            if(isLeapYear(year)==1)
                printf("%d年是润年\n",year);
            else
                printf("%d年不是润年\n",year);
        }
        else if(op==2){
            printf("请输入年月,以空格分开(例如1993 11):");
            scanf("%d %d",&year,&month);
            printf("该月一共%d天\n",getDayOfMonth(year,month));
        }
        else if(op==3){
            printf("请输入年月日,以空格分开(例如2015 12 20):");
            scanf("%d %d %d",&year,&month,&day);
            printf("这是%d年中的第%d天\n",year,getDayOdYearFormData(year,month,day));
        }
        else{
            printf("退出啦!\n");
            system("pause");
            break;
        }
        system("pause");
    }
    return 0;
}

int isLeapYear(int year){
    if(year%400==0 || year%100!=0 && year%4==0)
        return 1;
    return 0;
}

int getDayOfMonth(int year,int month){
    int monthOfDay[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    if(month!=2)
        return monthOfDay[month];
    return monthOfDay[month]+isLeapYear(year);
}

int getDayOdYearFormData(int year,int month,int day){
    int i,ans=0;
    ans+=day;
    for(i=1;i<month;i++)
        ans+=getDayOfMonth(year,i);
    return ans;
}

6、

#include<stdio.h>
int main(){
    int i,j;
    for(i=0;i<5;i++){
        for(j=0;j<4-i;j++)
            printf(" ");
        for(j=0;j<2*i+1;j++)
            printf("*");
        printf("\n");
    }
    return 0;
}

追问

最后一个如果输出n行for循环里什么条件?

追答

#include
int main(){
int i,j,n;
printf("请输入行数:");
scanf("%d",&n);
for(i=0;i<n;i++){
for(j=0;j<n-1-i;j++)
printf(" ");
for(j=0;j<2*i+1;j++)
printf("*");
printf("\n");
}
return 0;
}

温馨提示:答案为网友推荐,仅供参考
相似回答