本科郑州大学应用化学系,研究生福州大学物理化学,后从事营地教育两年,现在跨专业考研至计算机。
写这个文章记录的初衷是希望通过这样的方式来监督自己每日学习一定量的编程保持练习,虽然初试的成绩还未出。但只要有一线希望自然应该是百倍努力来准备复试,希望自己不会对任何结果后悔,而只有努力才不会后悔。
今日学习总结:今日编完了日历代码,整个日历跑通的那一刻真的非常开心,那种开心是一种发自内心的开心,感觉按照自己的思维逻辑写出来的代码竟然也能跑了,我这个学计算机学了一年的人终于也可以写出一个具有一定实用意义的日历了,那种我终于入门的感觉,那种我终于编了一个100+行的完整程序的感觉,那种自己终于变成了想象中的那些可以对着黑色屏幕编出代码的人的感觉,因为我一直觉得那样写代码的人好酷,一写就是几千几万行代码,太tm帅了吧。
越发的感觉到了写代码的逻辑性,只要逻辑对了,基本上就没问题。这种及其强的逻辑性给我一种非常扎实和踏实的感觉。
自己也终于可以写一个了,虽然模仿了别人的思路,可是代码是我自己实现的,虽然被伙计找了几个bug但整体还可以,后续会修改好。
这也是我第一个“程序”,开心激动!
今日代码惊喜:今天特别设置了一个彩蛋,感觉有点浪漫哈哈哈哈,送给我的日历监督者,没有这位伙计的监督和deadline,我可能再过一个月也不会写出日历来。感谢。(请原谅我的过多的goto语句,我真的觉得现阶段比较菜的时候好用)
?今日代码码量:如下
今日疑惑记录:形参与实参的关系,位置,实现还是不熟悉。数组还是不熟悉。
明日学习展望:好好学习!兑现诺言!
日历代码放在这里,有需要可以自取。实现了1900年后的每个月的日历的呈现。
#include <stdio.h>
int ping[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int run[12]={31,29,31,30,31,30,31,31,30,31,30,31}; //闰年(run)、平年(ping)每月的天数
int year,month,day;
//void printframe() //输出日历分隔线
//void printtitle(int x_month) //输出日历头部
//int leap(int x_year) //闰年与平年的判定
//int thesum(int x_year,int x_month) //输出距离1900年到输入的年份和月份的天数
//void printcontent() //输出日历所在月份内容
void printframe() //输出日历分隔线
{
printf("************************************************************************\n");
}
void printtitle(int x_month) //输出日历头部
{
char weekday[7][7]={
"星期一",
"星期二",
"星期三",
"星期四",
"星期五",
"星期六",
"星期日",
};
printf(" ♂爱の %d 月日历 \n",x_month);
printframe();
for(int i=0;i<7;i++)
printf("%10s",weekday[i]);
}
int leap(int x_year) //闰年与平年的判定
{
int a,b,c;
a=x_year%4;
b=x_year%100;
c=x_year%400;
if(a==0&&b!=0) //能被4整除,但不能被100整除,比如1900年就不是闰年。此为小闰
return 1;
else if(a==0&&b==0&&c==0) //能被4,100,400都整除,此为大闰
return 1;
else
return 0; //利用返回值来返回闰年还是平年,闰年为1,平年为0
}
int thesum(int x_year,int x_month) //输出距离1900年到输入的年份和月份的天数
{
int sum=0;
int m,y;
for(y=1900;y<x_year;y++)
{
if(leap(y)==1) //如果返回值是1说明是闰年则总天数+366,如果返回值是0则+365
sum=sum+366;
else
sum=sum+365;
}
for(m=0;m<x_month-1;m++) //月份如果是闰年则输出闰年每月天数,平年同理。且加的最后月份的天数为前一个月,比如输入为3月,则只加1、2月天数
{
if(leap(y)==1)
sum=sum+run[m];
else
sum=sum+ping[m];
}
return sum;
}
void printcontent() //输出日历所在月份内容
{
int qiuhe;
int printspace;
int printday;
qiuhe=thesum(year,month);
printspace=qiuhe%7;
for(int i=0;i<printspace;i++)
printf(" "); //打印每个月前面的空格
printday=7-printspace;
if(leap(year)==1)
{
for(int j=1;j<=run[month-1];j++)
{
if((j-printday)==0||(j-printday)%7==0) //换行
printf("%10d\n",j);
else
printf("%10d",j);
}
}
else
{
for(int k=1;k<=ping[month-1];k++)
{
if((k-printday)==0||(k-printday)%7==0)
printf("%10d\n",k);
else
printf("%10d",k);
}
}
}
main()
{
char p,w;
k:printf("Please input year:xxxx\n");
printf("Please input month:xx\n");
printf("Please input day:xx\n");
scanf("%d%d%d",&year,&month,&day);
printtitle(month);
printf("\n");
printcontent();
printf("\n");
printframe();
printf("\n\n");
t:printf("if you want to do more research, please input 1, if you want to do some interesting question, please input 2\n");
printf("Input 3 to stop this program\n");
scanf("%d",&w);
if(w==1)
goto k;
else if(w==2)
{
g:printf("鸟的名字是什么?1:情圣李加陈;2:博士后辰哥;3:迷人的小雀雀;4:李佳辰\n");
scanf("%d",&p);
if(p==4)
{
printf("*****************************");
printf("\n\n\n\n你是傻逼\n\n\n\n");
printf("*****************************\n");
goto t;
}
else
goto g;
}
else
printf("程序结束,感谢使用\n");
}
|