计算机硕士专业基础—C语言 赵海英 http://t.qq.com/flytianshan2012 http://c.koolearn.com/subject/zyk/jsj.jsp
方法:以C语言为主线,以考研综合课程为点,进行 穿针引线。 目的:两个 (1)掌握基础知识是考研专业是否取得高分一个关键。 (2)转型:非计算机专业——>计算机专业 方法:以C语言为主线,以考研综合课程为点,进行 穿针引线。
C语言与考研课程关系★★ C语言是数据结构的前导课 C语言是操作系统的工具和应用 C语言是计算机组成原理的辅助工具和表示形式
C语言授课内容★★ 共十章,结合考研例题,紧密结合,考前先准备。 例题/习题的精选考试应用 讲授要求:以有助于专业综合课程考试,表现在: (1)读题 (2)解题 (3)规范答题
授课目标: 考研基础范围+考研题型+规范答题+思考方法 以求“高分”为目标 零基础,前期充分准备 框架+执行过程+基本标志
C语言的组成结构 int count=1; main() { } void fun1() { int tmp1; } void fun2() int tmp1,tmp2,count; count=1; tmp1=count; tmp1++; count=tmp1; tmp2=count; tmp2=tmp2+2; count=tmp2; } int count=1; void fun1() { int tmp1; tmp1=count; tmp1++; count=tmp1; } void fun2() { int tmp2; tmp2=count; tmp2=tmp2+2; count=tmp2; main() { /*int count=1;*/ fun1(); fun2(); }
C语言的组成结构 main() 执行过程: 复合框架 主子调用(三个要点) 执行过程: 结构(三句话) int count=1; { int tmp1,tmp2,count; count=1; tmp1=count; tmp1++; count=tmp1; tmp2=count; tmp2=tmp2+2; count=tmp2; } 执行过程: 结构(三句话) int count=1; void fun() { int tmp1; tmp1=count; tmp1++; count=tmp1; } void fun2() { int tmp2; tmp2=count; tmp2=tmp2+2; count=tmp2; main() { /*int count=1;*/ fun1(); fun2(); } 执行过程: 复合框架 主子调用(三个要点)
C语言的组成结构 形式的标志: 执行的标志: 运算的标志 ++ -- = struct node { }; datatype data; () { } “ ” ‘ ’ \ \0 L % # 0x ; struct union enum 执行的标志: %s %c * & [ ] 运算的标志 ++ -- = struct node { datatype data; struct node *next; };
章节 标题 内容 适用课程 例题/习题 第一章 基础知识 数制及转换 计算机字长 内存与地址 计算机组成 计算机网络 操作系统 考研真题 第二章 C语言组成 C数据组成、数据及数据类型 数据结构 C语言考研 第三章 顺序结构程序设计 框架 语句 输入、输出 第四章 选择结构程序设计 if---else switch(){…}
章节 标题 内容 适用课程 例题/习题 第五章 循环结构程序设计 3种结构 双循环 break continue 数据结构 操作系统 计算机组成 考研真题 C语言考研 第六章 数组 一维数组 二维数组 字符串 第七章 函数与预编译 定义/调用/原型 分析过程 传值
章节 标题 内容 适用课程 例题/习题 第八章 指针 列指针 行指针 函数指针等 数据结构 链表 C语言考研 第九章 结构体 sturct类型 typedef 构造-定义-使用 计算机组成 考研真题 第十章 位运算/文件 打开/关闭 读写 指针定位/测试
数制及转换 以二进制为例 (单位、内存、ASCII、编码、地址等考点) (1)定义 (2)二进制与十进制的转换 (3)二进制应用 内存与地址
2012-15.某计算机存储器按字节编址,采用小端方式存放数据。假定编译器规定int和short型长度分别为32位和16位,并且数据按边界对齐存储。某C语言程序段如下: struct{ int a; char b; short c; } record; record.a=273; 若record变量的首地址为0xC008,则地址0xC008中内容及re-cord.c的地址分别为
2012-15.某计算机存储器按字节编址,采用小端方式存放数据。假定编译器规定int和short型长度分别为32位和16位,并且数据按边界对齐存储。某C语言程序段如下: struct{ int a; char b; short c; } record; record.a=273; 若record变量的首地址为0xC008,则地址0xC008中内容及re-cord.c的地址分别为 这是一道计算机组成的考研题
其首地址 为320(十 进制数 )。 请回答 下列问 题,要 求说明 理由 或给出 计算过 程。 2010-44. (12 分) 某计算 机的主 存地址 空间大小为 256M B,按 字节编 址。指令 Cache 和数 据 Cache 分离 ,均有 8个 Cache 行,每 个 Cache 行大 小为 64B,数 据 Cache 采用 直接映 射方式 。现有 两个功 能相同 的程 序 A 和 B,其伪代码 如下所 示: 假定 int 类型 数据用 32位补 码表 示,程 序编译 时 i, j,s u m 均分 配在寄 存器中 ,数 组 a 按 行优先 方式存 放, 其首地址 为320(十 进制数 )。 请回答 下列问 题,要 求说明 理由 或给出 计算过 程。 (1) 若不考 虑用 于 cache 一致性 维护和 替换算 法的控 制位, 则数 据 Cache 的总容 量为多 少? (2) 数组元 素 a[0][31]和 a [1][1]各自所 在的主 存块对 应的 Cache 行 号分别 是多少 ( Cache 行号从 0开 始)? (3) 程序 A 和 B 的 数据访 问命中 率各 是多少 ?哪个 程序的 执行时 间更短 ? 程序 A: int a[256][256] „„ int sum_array1() { int i, j, sum=0; for(i=0; i<256; i++) for(j=0; j<256; j++) sum += a[i][j]; return sum; } 程序 B: int a[256][256] „„ int sum_array2() { int i, j, sum=0; for(j=0; j<256; j++) for(i=0; i<256; i++) sum += a[i][j]; return sum; }
2010-44. (12 分) 某计算 机的主 存地址 空间大小为 256M B,按 字节编 址。指令 Cache 和数 据 Cache 分离 ,均有 8个 Cache 行,每 个 Cache 行大 小为 64B,数 据 Cache 采用 直接映 射方式 。现有 两个功 能相同 的程 序 A 和 B,其伪代码 如下所 示: 程序 A: int a[256][256] „„ int sum_array1() { int i, j, sum=0; for(i=0; i<256; i++) for(j=0; j<256; j++) sum += a[i][j]; return sum; } 程序 B: int sum_array2() return sum; 假定 int 类型 数据用 32位补 码表 示,程 序编译 时 i, j,s u m 均分 配在寄 存器中 ,数 组 a 按 行优先 方式存 放, 其首地址 为320(十 进制数 )。 请回答 下列问 题,要 求说明 理由 或给出 计算过 程。 (1) 若不考 虑用 于 cache 一致性 维护和 替换算 法的控 制位, 则数 据 Cache 的总容 量为多 少? (2) 数组元 素 a[0][31]和 a [1][1]各自所 在的主 存块对 应的 Cache 行 号分别 是多少 ( Cache 行号从 0开 始)? (3) 程序 A 和 B 的 数据访 问命中 率各 是多少 ?哪个 程序的 执行时 间更短 ?
C语言的线性表的链式存储结构 (动态创建、访问、插入、删除) 举例:输出一个链表中最大结点(数据域) 标志 结构体使用规则 链表遍历三要点 数据域 与指针域要分清 C语言的访问方式:四类 链表访问的特点
C语言的作用★★——软件设计师 ————2011上半年软件设计师下午试题 void sort(int n,int a[],int b[]) { int c[R],i; for(i=0;i< (1) ;i++) { c[i]=0; } for(i=0;i<n;i++) { c[a[i]]= (2) ; for(i=1;i<R;i++){ c[i]= (3) ; b[c[a[i]]-1]= (4) ; c[a[i]]=c[a[i]] -1;
C语言的作用★★——程序面试宝典 #include<stdio.h> main() { int b=3; Int arr[]={6,7,8,9,10}; Int *ptr=arr; *(ptr++)+=123; Printf(“%d,%d\n”,*ptr,*(++ptr)); } A、8 8 B、130 8 C、7 7 D、7 8
分析问题的能力: int fun(int t) { int f1,f2,f3; f1=0; f2=1; f3=f1+f2; while(f3<=t) { f1=f2; f2=f3; } return f3; 解决问题的能力: 求大于t的最小斐波纳契数列(Fibonacci Sequence)的数据
C语言小技巧: 1、C语言两类变量 内容值 地址值 2、指针变量的定义 类型名 *指针变量名; 3、指针变量的使用 定义且初始化后才能使用
祝同学梦想成真! 谢谢 谢谢! 有问题要咨询噢!