【项目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:
这个代码略了 不是很难 数组,循环,比较,输出