C语言问题,想找人帮我解释这个程序

来源:百度知道 编辑:UC知道 时间:2024/06/06 07:58:01
#include"stdio.h"
long int f(int year, int month) {/*f(年,月)=年-1,如月<3;否则,f(年,月)=年*/

if(month<3)
return year-1;
else
return year;
}

long int g(int month) {/*g(月)=月+13,如月<3;否则,g(月)=月+1*/

if(month<3)
return month+13;
else
return month+1;
}

long int n(int year, int month, int day) {

return 1461L*f(year, month)/4+153L*g(month)/5+day;/*N=1461*f(年、月)/4+153*g(月)/5+日*/
}

int w(int year, int month, int day) {

return(int)((n(year, month, day)%7-621049L%7+7)%7);/*w=(N-621049)%7(0<=w<7)*/
}

int date[12][6][7];
int day_tbl[ ][12]={{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}};/*闰年和非闰年每个月的天数*/

void main() {

int sw, leap, i, j, k, wd, day;
int year;
char title[]="SUN

首先你要了解每个命令的意思

像int是定义一个整形的量,long int是定义一个长整形,char是定义一个字符的量,int date[12][6][7]是定义一个整形date的三维数组。

if(条件1)
……
else
……
这个语句是判断语句,当(if)条件1成立时执行……,否则(else)就执行之后的……

for(条件1;条件2;条件3)
这个语句是循环语句,当条件1为真,条件2为真,那么执行条件3,如果条件不符合,继续对条件进行判断,一直循环下去。

scanf("格式", &变量);
这是一个输入命令,"格式"就是你要输入值的类型,%d为整形,&赋值量就是指你把你输入的这个量赋予给变量。

printf("格式");
这是一个打印命令,"格式"就是你要打印值的类型和打印的内容。

你上面有用到的函数,命令都做了解释,只要想代数一样把解释代进去你就明白这段程序的意思了。

希望我的回答能对你有所帮助。

其实你的算法大致没问题,只是输出那里你可以不用搞得这么复杂,你只要每个月都分开来做,就不会出现输出对不齐的问题了