第三章:数据结构决定程序

1.第1题解答

程序是线性分段函数,可用二分法定位对应的分段函数。

2.第4题解答

#include<iostream>
#include<string>
#include<vector>
using namespace std;
int month[13] = {
0,    31,    28,    31,    30,    31,    30,    31,    31,    30,    31,    30,    31
//    1    2    3    4    5    6    7    8    9    10    11    12
};

class D{
public:
    int year,mon,day;// 1900 <= year, 1 <= mon <= 12,
                    // 1 <= day <= 31
    D(){}
    D(int y, int m, int d):
        year(y),mon(m),day(d){}

    int yearday(void){//返回这一天是这一年的第几天
        int sum = day;
        for( int i = 1; i < mon; i++ )
            sum += month[i];
        if( isrun() && mon > 2 )
            sum ++;
        return sum;
    }
    bool isrun( void ){//是否是闰年
        return (year%4==0&&year%100!=0)||(year%400==0);
    }
};

int dist( D d1, D d2 ){//两个日期相差的天数
    int sum = -(d1.yearday());
    for( ; d1.year < d2.year ; d1.year++ )
        sum += d1.isrun()?366:365;
    return sum + d2.yearday();
}

int xingqiji( D d ){//某一天是星期几
    D temp(1900,1,1);
    return dist( temp, d )%7+1;
}

int print(int year, int mon ){//输出某月日历
    D d(year, mon, 1 );
    int week = xingqiji(d);
    int sum = month[ mon ];
    for( int i = 1; i < week; i++ )
        cout << "    ";
    for( int i = 1; i <= sum; i++){
        cout << i << "    ";
        if( week == 7 ){
            week = 1;
            cout << endl;
        }
        else week++;
    }
    cout << endl;
}

int main(void){
    D a(2015,3,5);
    cout << xingqiji(a) << endl;
    print(2015,3);
    return 0;
}

3.第8题解答

(待补充...)

时间: 2024-12-15 04:43:16

第三章:数据结构决定程序的相关文章

第三章 数据决定程序结构

本章主要讲解一个合适的数据结构对一个程序的重要性.一个好的数据类型能够节省开发时间也能够节省内存的消耗. 文末总结一下四点: 1.使用数组重新编写重复代码.在现在的变成中主要用到的是list.map之类的数据结构来代替数组. 2.封装复杂结构.抽象bean. 3.尽可能使用高级工具.超文本.名字-值对.电子表格.数据库.编程语言等都是特定问题领域中的强大的工具.由于本书出版的年份较早,这里提到的基本都是日常开发需要用到的.比较新的工具redis在现在工程中刚接触到.也是基于键-值对的形式存储数据

第三章 创建应用程序和activity

Android应用程序的组成部分 1.activity 应用程序的表示层,activity使用fragment和视图来布局和显示信息,以及响应用户动作. 2.service 应用程序中不可见的工作者 3.content provider 一个可共享的持久数据存储器 4.intent 一个强大的应用程序间的消息传递机制 5.Broadcast receiver intent的监听器 6.widget 通常添加到设备主屏幕的可视化应用程序组件,用户可以把这些组件添加到他们的主屏幕上 7.notifi

第三章 机器的程序级表示(中)

数据传送指令: MOV指令:将数据从源位置复制到目的位置,不做任何变化:MOV指令由四条指令组成:movb.movw.movl.movq:它们的区别在于它们操作的数据大小不同,分别为1.2.4.8字节: 压入和弹出栈数据: 遵循"后进先出"原则,通过push操作将数据压入栈中,通过pop操作删除数据:弹出的值,永远是最近被压入而且仍然在栈中的值.其中,栈顶元素的地址是所有栈中元素地址最低的.将一个四字值压入到栈中,首先要将栈指针减8,然后将值写入到新的栈顶指针.因此,指令pushq %

第三章:流程控制语句

第三章:流程控制语句 程序结构 顺序结构 分支结构 if结构if....else结构if...else if....else if...else结构switch结构 循环结构 while循环do....while循环for循环 分支结构 if结构 if结构语法: if(布尔表达式){ //语句;} 执行过程:如果布尔表达式为true执行其下语句,布尔表达式为false时不执行其下语句.{}可以省略,如果省略将执行第一个语句块.为了程序的可读性推荐不要省略{} if...else结构 语法:if(

20165233 Java第二、三章学习总结

2017-2018-2 <Java程序设计>第二周学习总结 教材学习内容总结 第二.三章 ch2 标识符与关键字 基本数据类型: 逻辑类型:boolean 整数类型:int.byte.short.long(注意:long型常量用后缀L来表示:且Java中没有无符号声明) 字符类型:char 浮点类型:float.double(float常量后面必须有后缀f或F ) 类型转换运算 输入.输出数据 数组 ch3 运算符与表达式 if条件分支语句 switch开关语句 循环语句(包括for语句.wh

2014年软考程序员-常考知识点复习笔记【第三章】

51CTO学院,在软考备考季特别整理了"2014年软考程序员-常考知识点复习笔记[汇总篇]",帮助各位学院顺利过关!更多软件水平考试辅导及试题,请关注51CTO学院-软考分类吧! 查看汇总:2014年软考程序员-常考知识点复习笔记[汇总篇]  2.线性表 (1) 性表的链式存储方式及以下几种常用链表的特点和运算:单链表.循环链表,双向链表,双向循环链表. (2)单链表的归并算法.循环链表的归并算法.双向链表及双向循环链表的插入和删除算法等都是较为常见的考查方式. (3)单链表中设置头指

第三章—Windows程序

这一章我都不知道该如何写了,呵呵~~ 毕竟,Win32是一个非常深奥的系统,目前还容不得我这种 小辈在这儿说三道四,不过,我既然是要写给那些入门阶段的朋友们看的,又不是写给那些搞程序设计老鸟看的,所以,我也犯不着怕被人背后指着骂 本章的名字就叫<Windows程序>而不是<Windows程序设计>所以,我只是讲一些关于Windows程序运作的原理: Windows 为什么叫Windows,相信所有用过的朋友都可以明白,那桌面上一个一个的窗口,就是它名字的由来.也就是这一个又一个窗口

Python编程入门-第三章 编写程序 -学习笔记

第三章 编写程序 1.编辑源程序.运行程序 可通过IDLE中File>New File新建一个文本以编辑源程序,编辑完成可通过Run>Run Module(或者F5快捷键)来运行程序.Python源文件都以.py格式存储. 2.从命令行运行程序 除了上述利用IDLE的集成功能运行程序的方式外,当然也可以通过命令行运行程序,命令格式为:python ‘源文件名称.py’. 3.编译源代码 当运行py格式文件时,Python会自动创建相应的.pyc文件,该文件包含编译后的代码即目标代码,目标代码基

第三章程序的机器级表示 学习报告

第三章 程序的机器级表示 3.1 历史观点 Intel处理器系列俗称x86,开始时是第一代单芯片.16位微处理器之一. 每个后继处理器的设计都是后向兼容的——较早版本上编译的代码可以在较新的处理器上运行. X86 寻址方式经历三代: 1  DOS时代的平坦模式,不区分用户空间和内核空间,很不安全 2  8086的分段模式 3  IA32的带保护模式的平坦模式 3.2 程序编码 gcc -01 -o p p1.c -01 表示使用第一级优化.优化的级别与编译时间和最终产生代码的形式都有关系,一般认

读书笔记:程序员的自我修养-----第三章(目标文件)

一 .目标文件格式 1. PE(Portabel Executable) 2. ELF (Executable Linkable Format) : 可重定位.可执行.共享目标文件.核心转储文件 思考: 弱符号和弱引用   VS   回调函数 __attrbute__ ((weakref)) void foo( ); int main() { if( foo ) foo(); } 可以被用户的强符号覆盖: 读书笔记:程序员的自我修养-----第三章(目标文件)