C语言作业

六、编写程序,从外界输入一个公元年份,输出该年的年历表。
(源程序名:LJOB5.C 演示程序:CALENDAR.EXE)
设计思路:
首先依据输入的年份,从公元元年开始计算出该年之前已经历的天数(注意对平年及闰年的处理),将已经历的天数加1后再整除7取余数,就是当年第一天的星期数,若余数是0则为星期日;然后从当年1月1日开始按每星期占一行的形式输出当月的日期,直至十二月为止。要求:闰年判断、显示输出由自定义函数实现。
运行情况参考:
Input year:2006↙
**Jan.**
Sun Mon Tue Wed Thu Fri Sat
----------------------------------------
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
----------------------------------------

**May**
Sun Mon Tue Wed Thu Fri Sat
----------------------------------------
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
----------------------------------------

是课程设计吧
连分都没有,呵呵
不晓得谁会那么好心啊

* welcome to use the WanNianLi system!
Copyright @ 2005 KongXinCai All rights reserved!:):):)*/

#include<stdio.h>
#include<stdlib.h>

char* month_str[]={"January","February","March","April","May","June","July","August","September","October","November","December"};
char* week[]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};

int IsLeapYear(int year) /*find out the year is leap year or not*/
{
if((year%4==0&&year%100!=0)||(year%400==0))
return 1;
else
return 0;

}
int month_day(int year,int month)
{
int mon_day[]={31,28,31,30,31,30,31,31,30,31,30,31};
if(IsLeapYear(year)&&month==2)
return 29;
else
return(mon_day[month-1]);

}
int DaySearch(int year,int month,int day) /*search what day this day is*/
{
int c=0;
float s;
int m;
for(m=1;m<month;m++)
c=c+month_day(year,m);
c=c+day;
s=year-1+(float)(year-1)/4+(float)(year-1)/100+(float)(year-1)/400-40+c;
return ((int)s%7);
}

int PrintAllYear(int year)/*print the all year*/
{
int temp;
int i,j;
printf("\n\n%d Calander\n",year);
for(i=1;i<=12;i++)
{
printf("\n\n%s(%d)\n",month_str[i-1],i);
printf("0 1 2 3 4 5 6 \n");
printf("S M T W T F S \n\n");
temp=DaySearch(year,i,1);
for(j=1;j<=month_day(year,i)+temp;j++)
{
if(j-temp<=0)
printf(" ");
else if(j-temp<10)
printf("%d ",j-temp);
else
printf("%d ",j-temp);

if(j%7==0)
printf("\n");
}
}
return 0;
}

int main()
{
int option,da;
char ch;
int year,month,day;
printf("Copyright @ 2005 TianQian All rights reserved!:):):)");
printf("\n\nWelcome to use the WanNianLi system!\n");

while(1)
{
printf("\nPlease select the service you need:\n");
printf("\n1 Search what day the day is");
printf("\n2 Search whether the year is leap year or not");
printf("\n3 Print the calander of the whole year");
printf("\n4 Exit\n");
scanf("%d",&option);

switch(option)
{
case 1:
while(1)
{
printf("\nPlease input the year,month and day(XXXX,XX,XX):");
scanf("%d,%d,%d,%c",&year,&month,&day);
da=DaySearch(year,month,day);
printf("\n%d-%d-%d is %s,do you want to continue?(Y/N)",year,month,day,week[da]);
fflush(stdin);
scanf("%c",&ch);
if(ch=='N'||ch=='n')
break;
}
break;
case 2:
while(1)
{
printf("\nPlease input the year which needs searched?(XXXX)");
scanf("%d",&year);
if(IsLeapYear(year))
printf("\n%d is Leap year,do you want to continue?(Y/N)",year);
else
printf("\n%d is not Leap year,do you want to continue(Y/N)?",year);
fflush(stdin);
scanf("%c",&ch);
if(ch=='N'||ch=='n')
break;
}
break;
case 3:
while(1)
{
printf("\nPlease input the year which needs printed(XXXX)");
scanf("%d",&year);
PrintAllYear(year);
printf("\nDo you want to continue to print(Y/N)?");
fflush(stdin);
scanf("%c",&ch);
if(ch=='N'||ch=='n')
break;
}
break;
case 4:
fflush(stdin);
printf("Are you sure?(Y/N)");
scanf("%c",&ch);
if(ch=='Y'||ch=='y')
exit(0);
break;
default:
printf("\nError:Sorry,there is no this service now!\n");
break;
}

}

return 0;
}
回答者:人渡摆 - 秀才 三级 6-14 16:56

参考资料:百度知道,别人的回答

温馨提示:内容为网友见解,仅供参考
第1个回答  2006-06-14
是作业?课程设计吧?
第2个回答  2006-06-13
就是,0分谁愿意回答啊,着得住

C语言编程作业
为完成C语言编程作业,需解决以下两个问题:问题一:从键盘输入三个整型数a、b和c,输出它们求和运算的结果,即a+3b+5c的值。要求求和运算通过调用函数实现。解决方案如下:主函数main()的代码段,用于输入整数并调用求和函数sum()输出结果:输入整数a、b、c调用sum()函数计算a+3b+5c输出结果等待用户...

C语言编程作业,求解答
作业1:result(int)= c (char) * i (int) + f (float) \/ d (double) -(f + i);第一步:f+i, 一个float和int相加,按精度高的float进行计算,结果为float result = char * int + float\/double - float;第二步:char * int, 他们都是整数相加为int result =int + float\/double...

初学者学习C语言需要做作业吗?
做作业是必须得,只有自己去编出程序,这样才能更好的理解和运用c,推荐你谭浩强-《c程序设计(第三版)》。《c程序设计(第三版)》对于初学c是一本很好的教材,每章后面都有习题(习题也很好)。

C语言实验作业 选择结构switch case&if else
在C语言实验中,选择结构switch case与if else是程序流程控制的重要组成部分。实验目标包括掌握分支结构、理解关系运算和逻辑表达式,以及熟练运用if和switch语句及其嵌套。在实验内容部分,学生被要求完善教材中的三角形面积计算和自变量处理问题,如检查三角形合法性、输入错误的修正和代码格式统一。在switch语句...

C语言(CG平台作业):寻找完数
C语言探索:寻找神秘的完数领域问题的奇妙之旅<\/ 想象一下,我们正在寻找一个数学领域的秘密宝藏——完数。这些神奇的数字,如同隐藏在数字丛林中的宝石,它们的每个因子之和恰恰等于它们自身,让人惊叹不已。现在,你将操控两个不超过9999的正整数m和n,通过键盘输入,揭示这段完数旅程。如果m大于n,...

大一新生,C语言作业,计算程序的代码。
int main(){ long int num;int indiv,ten,hundred,thousand,ten_thousand,place;printf("intput a interger(0~99999):");scanf("%ld",&num);if(num>9999) place=5;else if(num>999) place=4;else if(num>99) place=3;else if(num>9) place=2;else place=1;printf("位数=%d\\n",...

C语言作业 请编写,统计3行4列二维数组中有多少个正数,多少个负数,多少...
void main(){ int a[3][4]; \/\/数组要先赋值才能进行比较 int i,j;int count_a; \/\/统计正数的个数 int count_b; \/\/统计负数的个数 int count_c \/\/统计零的个数 for(i=0;i<4;i++)for(j=0;j<5;j++)(if(a[i][j]>0)count_a++;else if(a[i][j]<0)count...

C语言版-数据结构-期末课程设计-大作业(学生成绩管理系统)附源码+实验...
在期末课程设计中,我完成了大作业——一个学生成绩管理系统,该系统涉及详细的设计和实现过程。首先,系统核心功能围绕学生信息管理,包括姓名、班级和学号,以及成绩查询、录入、修改和删除等操作。结构上,我使用了顺序表数据结构,构建了包含插入、查找、删除和排序等模块的系统。设计内容包括定义一个名为...

c语言大作业,要至少一百行,用include<stdio.h>开头。跪求!
\/\/线性表链式表示时的基本操作#include#includetypedefstructnode{intdata;structnode*next;}linklist;linklist*creatlist(intn){intx,k;linklist*head,*r,*p;p=(linklist*)malloc(sizeof(linklist));head=p;p->next=NULL;r=p;for(k=1;kdata=x;p->next=NULL;r->next=p;r=p;}return...

c语言的作业,求救,怎么做啊???
int main(){ int a[4],b[4];int k=1,j=1,x,y,t;scanf("%d%d",&x,&y);while(x!=0){ a[k++]=x%10;\/\/把x的各个位提取出来 x\/=10;} while(y!=0){ b[j++]=y%10;\/\/把y的各个提取出来 y\/=10;} t=a[2];a[2]=b[2];\/\/十位交换 b[2]=t;for(int i=3;i>...

相似回答