提高篇 第16-19课后---项目3-4

【项目3-当年第几天(数组方案)】

当年第几天中定义一个函数,其参数为年、月、日的值,返回这一天为该年的第几天。要求在main函数中输入年月日,然后调用这个函数求值,并在main函数中输出结果。

代码:

/*当年第几天函数版*/
#include <stdio.h>
int days(int y,int m,int d);
int main()
{
    int year,month,day;
    printf("请输入年 月 日:");
    scanf("%d %d %d",&year,&month,&day);
    printf("这一天是该年的第%d天\n",days(year,month,day));
    return 0;
}
int days(int y,int m,int d)
{
    int day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    int f=d,i;
    for(i=1;i<m;i++)
    {
        f+=day[i];
    }
    if((m>2)&&(((y%4==0)&&(y%100!=0))||(y%400==0)))
        f+=1;
    return f;
}
现在我们来改进下程序,判断输入是否非法

代码:

/*当年第几天函数版*/
#include <stdio.h>
int days(int y,int m,int d);
void into();
int year,month,day;
int main()
{

    into();
    printf("这一天是该年的第%d天\n",days(year,month,day));
    return 0;
}
int days(int y,int m,int d)
{
    int day_1[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    int f=d,i;
    for(i=1;i<m;i++)
    {
        f+=day_1[i];
    }
    if((m>2)&&(((y%4==0)&&(y%100!=0))||(y%400==0)))
        f+=1;
    return f;
}
void into()
{
    int fb;
    int day_2[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
    do
    {
        printf("请输入年 月 日:");
        fb=scanf("%d %d %d",&year,&month,&day);
        fflush(stdin);
        if((fb!=3)||(month<1)||(month>12)||day<0||day_2[month]<day)
        {
            printf("输入错误----请重新输入!\n");
            continue;
        }
        if((year%4!=0)||((year%100==0)&&(year%400!=0)))
        {
            if(day>28)
            printf("输入错误----请重新输入!\n");
            continue;
        }
        else
            break;
    }while(1);

}
【项目4-一副扑克牌】

输出扑克牌

代码:

/*输出扑克牌*/
#include <stdio.h>
int main()
{
    int a[13]={1,2,3,4,5,6,7,8,9,10,11,12,13},i,n;
    char b[4]={'H','S','D','C'};
    for(n=0;n<4;n++)
    {
        for(i=0;i<13;i++)
        {
            printf("%c",b[n]);
            if(a[i]==1)
                printf("A");
            else if(a[i]==11)
                printf("J");
            else if(a[i]==12)
                printf("Q");
            else if(a[i]==13)
                printf("K");
            else
                printf("%d",a[i]);
            printf("  ");

        }
        printf("\n");
    }
    return 0;
}
项目5:

这个代码略了     不是很难   数组,循环,比较,输出  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值