/*
ID: jackson21
PROG: friday
LANG: C++
*/
#include <iostream>
#include <string>
#include <fstream>

using namespace std;
struct mdate;
bool judge_leap_year(const mdate date);

struct mdate
{
unsigned short year;
unsigned char month;
unsigned char day;
unsigned char week;


};

void increase(mdate& date)
{
date.week = (date.week)%7 + 1;
switch (date.month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
{
// 处理当天数增加时的影响
if ( date.day == 31 )
{
date.day = 1;
if(date.month == 12)
{
date.month = 1;
date.year++;
}
else
date.month++;
}
else
{
date.day++;
}
}
break;
case 4:
case 6:
case 9:
case 11:
{
// 处理每个月30天的情况
if ( date.day == 30 )
{
date.day = 1;
date.month++;
}
else
{
date.day++;
}
}
break;
case 2:
{
// first judge whether it is leap year
if ( date.day < 28 )
{
date.day++;
}
else if ( date.day == 28 )
{
if (!judge_leap_year(date))
{
date.month++;
date.day = 1;
}
else
date.day++;
}
else
{
date.day = 1;
date.month++;
}
}
}
}

// void PrintDate(const mdate date)
// {
// cout << (int)date.year <<"/"<< (int)date.month << "/" << (int)date.day <<" is WEEK " << (int)date.week << endl;
// }

int main()
{
// entry point
// get input number of year
unsigned short counter[8] = {0}; // 1 - 7 stands for Monday to Sunday 
ifstream fin;
ofstream fout;
unsigned short years = 0;
fin.open("friday.in");
fout.open("friday.out");
fin >> years;

mdate original = {1900, 1, 1, 1};
while(original.year <= (1900 + years - 1))
{
increase(original);
if ( original.day == 13 )
{
counter[original.week]++;
}
}

fout << counter[6] << " "<< counter[7] << " "<< counter[1] << " "<< counter[2] << " "
<< counter[3] << " "<< counter[4] << " "<< counter[5] << endl;

return 0;
}

bool judge_leap_year(mdate date)
{
if( date.year % 400 == 0 )
return true;
if( date.year % 4 == 0 )
{
if (date.year % 100 == 0)
return false;
else
return true;
}
else
{
return false;
}
}
 
关于atoi的应用,atoi把char字符串转换成int数值,这里有一个atoi的典型应用,即判断ip地址的合法性,需要把某个区域的char*转换成int判断范围,因此需要使用atoi函数,它的定义如下:int atoi ( const char * str );

unsigned short parse_ip(char* ip)
{
    // judge by length of ip address
    unsigned short len = strlen(ip);
    if (len < 7 || len > 15)
        return 0;

    char tmp[16] = {0};
    unsigned char i = 0;
    unsigned char j = 0;
    unsigned char dot_counter = 0;
    while(ip[j] != 0)
    {
        if (ip[j] >= '0' && ip[j] <= '9')
        {
            // digit
            tmp[i] = ip[j];
            if (strlen(tmp) > 3)
                return 0;  // 出现某个区域数字大于4位
            i++;
            j++;
            continue;
        }
        else if (ip[j] == '.')
        {
            // dot
if (i == 0)
return 0;
            dot_counter++;
unsigned short ai = atoi(tmp);
            if ( ai > 255 || ai < 0 )
                return 0;  // 某个区域数字不符合约束
            i = 0;
memset(tmp, 0, sizeof(tmp));
            j++;
            continue;
        }
        else
            return 0;      // 出现非法符号
    }

    if ( dot_counter != 3 )
        return 0;
if (atoi(tmp) > 255 || atoi(tmp) < 0)
return 0;
    return len;
}
 
大学的时候,看过一个电影《独自等待》,自认为拍得还是相当的具有幽默感,或许是出自一个外国导演之手,明显感觉到和一些主旋律电影,商业电影,文艺电影有很大的差别,其中,当陈文在最后阶段,开始抛弃科幻悬疑小说,转向一些更加实际的东西时,或许表达了导演想传达给我们一种看问题的角度,要脚踏实地,切勿总是仰望星空。“献给从你身边悄悄溜走的那个人...独自等待...”,想告诉我们要珍惜仅有的缘分,要勇于面对自己对于很多事情的真实感受,不要让别人或者外界的事物,妨碍自己对这个世界的真实感受,独自等待,也是一种真实的感受。
经常会不定期写一些东西,尽管大多都是自己真实的感受,但是...里面没有爱情的东西,没有自己关于爱情的感受,也许是想让貌似繁忙的生活掩盖爱情的感受,更可能的是...对于爱情,已经没有了什么感受。晚上和老姐吃饭的时候,我说应该写写自己关于情感问题的感受,已经进入了24岁的第一天,要勇于寻求真实的感受,要正式的谈一次恋爱,于是就有了这篇文章吧。
开始回忆一下自己的感情经历,应该能更好的正视自己对于爱情的态度。大学的时候,倒是碰到过几次可以发展的机会,但是...种种原因吧,没有开花结果,也只是成为了一段段往事吧,伤感到谈不上,或许是记忆力不太好,这些事情的细节都记不起来了,只记得些许人物。
大一的时候,高中的一个哥们经常带着一个小姑娘来东校区找我待着,当时也是闲来无事,就陪他们吃吃饭什么的,别的倒是也没做过什么。后来某次,哥们说要给我介绍,也许是想体验一把这种感觉吧,就干脆的答应了,结果我就打电话和人家说了,结果...那位小姑娘喜欢的是我那位哥们....这让我情何以堪...后来我和哥们认真的谈了一次,并善意的批评了哥们,以后不要这么搞了,不过对于哥们的心情,我还是能猜到几分的...事后分析了一下,还是太...年轻啊,情商不高,一般人都能看出的问题,我却看不出来...唉,看来在爱情方面,真是个白痴啊...
大二上学期社团工作的时候,碰到一个学妹,给人的感觉很清新自然,貌似认识很久的老友。后来,就不断的找各种交流的机会,并逐步进入主题,后来被学妹义正言辞的拒绝了!!记得最后一次学妹打电话说找到男朋友了,当时的第一感觉是大脑短路了,接着祝福了一下,然后...我记得好像就拿着书包去图书馆上自习了。
上自习回来的晚上,去找媳妇蹭了一顿泡面。媳妇只是一个外号,是我们班一个女同学,由于自己人前总是嘻嘻哈哈,爱开玩笑,所以总管人家叫媳妇,据说就因为管人家叫媳妇,害得人家小姑娘迟迟没找到男朋友,在这里给“媳妇”道歉了,哈哈哈...
大二到大四的时候,开始了一场算是比较正式的恋爱吧,女朋友是高中的朋友。尽管两人的学校在两个不同的城市,但我认为距离从来都不是阻碍一些事物的障碍,至少不是主要因素。平时只是电话/短信什么的交流一下吧。但是,最后还是自己主动放弃了,因为感觉压力太大,一种莫名的压力...或许只有自己能感受到,却难以说出来的感受。
应该就这些吧,有时候闲下来的时候,会回顾回顾这些事情,分析分析到底哪里做的不到位的,问题出现在哪里?实在想不出来,只能怪自己还是太年轻啊~
记得曾经某次好像说过,到了25要正式开始找女朋友吧,现在已经是步入25的人生区间,应该开始追逐自己想要的东西吧。有些时候,人真的很难做,因为周围人的经验,周围人的议论会使得我们不像我们自己,左右我们的思考,屏蔽我们对于某些事物的真实感受,但是我们又拿别人的所谓的名言真理来安慰自己一颗已经被欺骗的内心,这样的人生...只能说是自讨压抑吧,严重了就会抑郁吧...在也不能这样活,要不断问问自己的内心,我的真实感受是什么?我想要达到怎样的状态?“Do what you love, and f*ck the rest”,经典彪悍的电影台词,说出了我用中文说不出的力度,就是做”真正“的自己,无论是亲情,友情,事业还是爱情。
大学的时候,某次和师傅聊起了爱情的问题,师傅的阅历比我多很多,不是一个数量级的。师傅说曾经喜欢过一个女孩子,后来感觉自己配不上她,于是就相当的不自信,很是煎熬。我问师傅配不上是指?师傅说感觉自己不能给她想要的幸福。师傅的一席话,触动了自己内心深处的某根敏感神经,因为在爱情方面,自己也是相当的不自信。我自认为自己是一个在除了爱情方面,别的方面都很自信的人,这可能和我大学以前很少和周围的女同学交流的结果吧。某次在看《喜剧之王》的时候,男主角问女主角(酒吧陪酒工作)可不可以不去工作,女主角的”不去工作,你养我?“让男主角无奈的笑了,此时...跳出电影之外,我似乎看到了一个赤裸裸的曾经的自己,不知到是什么牵绊了自己对于爱情的勇气,难道是对于情感的不自信?还是对于自身的否定?现在的我回不到曾经的自己,已经隐约忘记了当初那一轮明月。
到了25,人生的24年光阴都已经耗尽,应该开始活出真的自己。记得刚哥的QQ签名说的好:花有重开日,人无再少年。花有重开日,但是今年的花却也不是那些年的那些花儿;人无在少年,珍惜自己的青春,追随心灵的指南针,一路向北航行。
今天开始,打算找个女朋友,正式的谈谈恋爱什么的,也是不错的选择...欢迎各位朋友诚挚推荐,随时可扰...
 
内存管理函数:memcpy() memmove() memchr() memcmp() memset() strncpy()
void* memcpy(void* destination, const void* source, size_t num);
****The function does not check for any terminating null character in source - it always copies exactly num bytes.

/* memcpy example */
#include <stdio.h>
#include <string.h>

int main()
{
 char str1[] = "sample string";
 char str2[40];
 char str3[40];
 memcpy(str2, str1, strlen(str1) + 1);
 memcpy(str3, "copy successful", 16);
 printf("str1: %s\nstr2: %s\nstr3: %s\n", str1, str2, str3);
 return 0;
}

/* memmove() funtion */
Moves one buffer to another. Secure version are available, memmove_s(), wmemmove_s()
void* memmove(
 void* dest,
 const void* str,
 size_t count);
/* memchr() function */
Finds characters in a buffer.
void* memchr(
 const void* buf,
 int c,
 size_t count 
); // C only
void* memchr(
 void* buf,
 int c,
 size_t count
); // C++ only

/* memcmp() function */
Compare characters in two buffers.
int memcmp(
 const void* buf1,
 const void* buf2,
 size_t count
);

/* memset */
Sets buffers to a specified character.
void* memset(
 void* dest,
 int c,
 size_t
);

/* strncpy() function */
Copy characters of one string to another.
char* strncpy(
 char* strDest,
 const char* strSource,
 size_t count
);

 
This is your new blog post. Click here and start typing, or drag in elements from the top bar.
 
Welcome to here $5.49
 
 
 
 
如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型。之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来。 

  举个例子来说明一吧,为了让大家更明白一点,比如一个铅笔盒中有一支笔,但在没有打开之前你并不知道它是什么笔,可能是铅笔也可能是钢笔,这里有两种可能,那么你就可以定义一个枚举类型来表示它!

enum box{pencil,pen};//这里你就定义了一个枚举类型的变量叫box,这个枚举变量内含有两个元素也称枚举元素在这里是pencil和pen,分别表示铅笔和钢笔。

  这里要说一下,如果你想定义两个具有同样特性枚举类型的变量那么你可以用如下的两种方式进行定义!

enum box{pencil,pen};  
  
enum box box2;//或者简写成box box2;

  再有一种就是在声明的时候同时定义。

enum {pencil,pen}box,box2; //在声明的同时进行定义!

  枚举变量中的枚举元素系统是按照常量来处理的,故叫枚举常量,他们是不能进行普通的算术赋值的,(pencil=1;)这样的写发是错误的,但是你可以在声明的时候进行赋值操作!

enum box{pencil=1,pen=2};

  但是这里要特别注意的一点是,如果你不进行元素赋值操作那么元素将会被系统自动从0开始自动递增的进行赋值操作,说到自动赋值,如果你只定义了第一个那么系统将对下一个元素进行前一个元素的值加1操作,例如


  前面说了那么多,下面给出一个完整的例子大家可以通过以下的代码的学习进行更完整的学习!

#include <iostream>  
using namespace std;  
  
void main(void)  
{  
    enum egg {a,b,c};  
    enum egg test; //在这里你可以简写成egg test;  
  
    test = c; //对枚举变量test进行赋予元素操作,这里之所以叫赋元素操作不叫赋值操作就是为了让大家明白枚举变量是不能直接赋予算数值的,例如(test=1;)这样的操作都是不被编译器所接受的,正确的方式是先进行强制类型转换例如(test = (enum egg) 0;)!  
  
    if (test==c)  
    {  
        cout <<"枚举变量判断:test枚举对应的枚举元素是c" << endl;  
    }  
  
    if (test==2)  
    {  
        cout <<"枚举变量判断:test枚举元素的值是2" << endl;  
    }  
  
    cout << a << "|" << b << "|" << test <<endl;  
  
    test = (enum egg) 0; //强制类型转换  
    cout << "枚举变量test值改变为:" << test <<endl;  
    cin.get();  
}

  看到这里要最后说一个问题,就是枚举变量中的枚举元素(或者叫枚举常量)在特殊情况下是会被自动提升为算术类型的!

#include <iostream>  
using namespace std;  
  
void main(void)  
{  
    enum test {a,b};  
    int c=1+b; //自动提升为算术类型  
    cout << c <<endl;  
    cin.get();  
}