Transcript Document

计算机硕士专业基础—C语言
赵海英
http://t.qq.com/flytianshan2012
http://c.koolearn.com/subject/zyk/jsj.jsp
目的:两个
(1)掌握基础知识是考研专业是否取得高分一个关键。
(2)转型:非计算机专业——>计算机专业
方法:以C语言为主线,以考研综合课程为点,进行
穿针引线。
 C语言与考研课程关系★★
C语言是数据结构的前导课
C语言是操作系统的工具和应用
C语言是计算机组成原理的辅助工具和表示形式
C语言是计算机网络中二进制计算的保证
 C语言授课内容★★
共十章,结合考研例题,紧密结合,考前先准备。
例题/习题的精选考试应用
讲授要求:以有助于专业综合课程考试,表现在:
(1)读题 (2)解题 (3)规范答题
授课目标:
考研基础范围+考研题型+规范答题+思考方法
以求“高分”为目标
零基础,前期充分准备
框架+执行过程+基本标志
C语言的组成结构
main()
{
int tmp1,tmp2,count;
int count=1;
main()
void fun1()
{ int tmp1;
{
tmp1=count;
count=tmp1;
tmp2=count;
fun2();
count=tmp1;
}
}
void fun2()
{ int tmp2;
tmp2=count;
tmp2=tmp2+2;
count=tmp2;
tmp2=tmp2+2;
count=tmp2;
}
fun1();
tmp1++;
count=1;
tmp1=count;
tmp1++;
/*int count=1;*/
}
C语言的组成结构
main()
{
int tmp1,tmp2,count;
int count=1;
void fun()
{ int tmp1;
tmp1=count;
count=tmp1;
tmp2=count;
tmp2=tmp2+2;
count=tmp2;
}
执行过程:
结构(三句话)
{
/*int count=1;*/
fun1();
tmp1++;
count=1;
tmp1=count;
tmp1++;
main()
fun2();
count=tmp1;
}
void fun2()
{ int tmp2;
tmp2=count;
tmp2=tmp2+2;
count=tmp2;
}
}
执行过程:
复合框架
主子调用(三个要点)
C语言的组成结构
形式的标志:
()
执行的标志:
运算的标志
%s
++
{ }
“”
%c
=
‘ ’
\
*
\0
L
--
&
struct node
{
datatype data;
%
#
0
0x
;
struct union enum
struct node *next;
[]
};
章节
标题
内容
适用课程 例题/习题
第一章
基础知识
数制及转换
计算机字长
内存与地址
第二章
C语言组成
C数据组成、 数据结构
数据及数据 计算机组成
类型
操作系统
计算机组成
计算机网络
操作系统
第三章
顺序结构程序设计 框架
语句
输入、输出
C语言考研
第四章
选择结构程序设计 if---else
数据结构
switch(){…
}
考研真题
考研真题
C语言考研
C语言考研
C语言考研
章节
标题
内容
第五章
循环结构程序
设计
3种结构
双循环
break
continue
数据结构
操作系统
计算机组成
考研真题
C语言考研
第六章
数组
一维数组
二维数组
字符串
数据结构
操作系统
计算机组成
考研真题
C语言考研
数据结构
操作系统
考研真题
C语言考研
第七章
函数与预编译 定义/调用/
原型
分析过程
传值
适用课程 例题/习题
章节
标题
第八章
指针
第九章
第十章
内容
适用课程 例题/习题
列指针
行指针
函数指针等
数据结构
链表
C语言考研
结构体
sturct类型
typedef
构造-定义-使用
数据结构
计算机组成
考研真题
C语言考研
位运算/文件
打开/关闭
读写
指针定位/测试
数据结构
C语言考研
 数制及转换
 以二进制为例
(单位、内存、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中内容及record.c的地址分别为
这是一道计算机组成的考研题
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 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;
}
假定 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 的 数据访 问命中 率各 是多少 ?哪个 程序的 执行时 间更短 ?
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 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;
}
假定 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语言的作用★★——软件设计师
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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) ;
}
for(i=0;i<n;i++) {
b[c[a[i]]-1]= (4) ;
c[a[i]]=c[a[i]] -1;
}
}
————2011上半年软件设计师下午试题
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;
f3=f1+f2;
}
return f3;
}
解决问题的能力:
求大于t的最小斐波纳契数列(Fibonacci
Sequence)的数据
C语言小技巧:
1、C语言两类变量
内容值
地址值
2、指针变量的定义
类型名 *指针变量名;
3、指针变量的使用
定义且初始化后才能使用