本帖最后由 王德亮 于 2015-1-2 16:19 编辑
- 第1题,可以对比整数的排序过程
- 1.一个比较字符串大小的函数,
- 2.类似temp = a, a = b, b= temp 这样的两个字符串的交换
- 3. 排序的算法,比如冒泡,快速等
- 第2题
- #include <stdio.h>
- int leap(int year,int *flag); // 是否闰年
- int getDaysFromMonth(int month,int *flag); // 根据月份获得对应天数
- int howManyDays(int year,int month, int day); // 计算与2006-1-1日的天数差距
- int main()
- {
- int year,month,day;
- printf("请输入年月日:");
- // 从键盘得到年月日
- scanf("%d,%d,%d",&year,&month,&day);
- int _distanceDays = howManyDays(year,month,day);
- if (_distanceDays % 2 == 0)
- {
- printf("今天遇到位帅哥\n");
- }
- if (_distanceDays % 3 == 0)
- {
- printf("今天遇到位美女\n");
- }
- return 0;
- }
- // 判断闰年
- int leap(int year,int *flag)
- {
- // 是闰年
- if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
- {
- *flag = 1;
- return 366;
- }
- else
- {
- *flag = 0;
- return 365;
- }
- }
- // 获得月份对应的天数
- int getDaysFromMonth(int month,int *flag)
- {
- int daysContainer[2][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 // 闰年月份对应的天数
- }
- };
- // 平年*flag = 0 所以是daysContainer[0] 闰年则是daysContainer[1] 月份需要 -1 对应数组下标
- return daysContainer[*flag][month - 1];
- }
- // 计算离2006-1-1的时间差
- int howManyDays(int year,int month, int day)
- {
- int distanceDays; // 距离2006-1-1的天数
- int *flag = (int *)(malloc(sizeof(int *)));
- int i,j;
- for (i = 2006; i < year; i++)
- {
- distanceDays += leap(i,flag); // 与2006相差多少年
- }
- for (j = 1; j < month ; j++)
- {
- distanceDays += getDaysFromMonth(j,flag); // 年份相同的情况下,相差多少天
- }
- distanceDays += day; // 年份月份相同的情况下,相差多少天 2006-1-1也算一天
- free(flag);
- return distanceDays;
- }
复制代码
|