重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第20讲 位运算讲、位段、枚举变量、大型程序开发

第20讲 位运算 位段 枚举变量 大型程序开发
第20讲 位运算 位段 枚举变量 大型程序开发

例1:读程序功能? include void maino 位运算符,转换 成二进制再运算 <> short a b prnr("请肯输入一个十六进步x:n) scanf( %",&a) b=(a&0xFF0O)>38 rinf("result=% x"bY. 思考题:如何编写 个函数,求出一 int nth bi( int x int n)∥/求x的第n位 return( x &(int)pow(2, n))>>n
2 例1:读程序功能? #include void main() { short a,b; printf("请输入一个十六进制数:\n"); scanf("%x",&a); b=(a & 0xFF00)>>8; printf("result=%x\n",b); } 输出一个整型数据的高8位 ▪位运算符,转换 成二进制再运算 ▪& | > •思考题:如何编写 一个函数,求出一 个整数的任意一位。 int nth_bit(int x,int n)//求x的第n位 { return ( x & (int)pow(2,n) )>>n; }

位段 当为变量a分配内存空 间时,按后边指定的二 struct birthday 进制位数分配。即a共 获得5+4+13= 24bits/8=3 bytes空间, unsigned int day: 5 比不指定具体位数少用 了3个字节的空间,这 unsigned int month: 4 种方法可以有效地节省 内存。 unsigned int year: 13
3 位段 struct birthday { unsigned int day:5; unsigned int month:4; unsigned int year:13; }a; •当为变量a分配内存空 间时,按后边指定的二 进制位数分配。即a共 获得5+4+13= 24bits/8=3bytes空间, 比不指定具体位数少用 了3个字节的空间,这 种方法可以有效地节省 内存

例3:袋中有红、白、蓝三种颜色的 球,有放回地取出时,结果都是? include *define COLORNUM 3 char * col[COLORNUM]=["red","write","blue"3: void mainO int i,j, k enum COLOR color printf"result: \n) for(i=0;<=2;i++)/从0到2穷举 forj=0<=2j*+)从0到2穷举 for(k=0k<=2k++)/从0到2穷举 printf( %s\t%s\t%s\t -Ⅶr",co[叮co[j],col[k) printf yod\thd\t%d\n", i.j. k):
4 例3:袋中有红、白、蓝三种颜色的 球,有放回地取出时,结果都是? #include #define COLORNUM 3 char *col[COLORNUM]={"red","write","blue"}; void main() { int i,j,k; enum COLOR color; printf("result:\n"); for(i=0;i<=2;i++) //从0到2穷举 for(j=0;j<=2;j++) //从0到2穷举 for(k=0;k<=2;k++) //从0到2穷举 { printf("%s\t%s\t%s\t---\t",col[i],col[j],col[k]); printf("%d\t%d\t%d\n",i,j,k); } }

定义枚举类型 enum Color 方法二 同时指定这种类型的变量可 include 以取得的值,其中的每一个 *define COLORNUM 3 值其实就是一个符号常量, 如果不指定他们的值,默认 enum Color[red write, blue: 是0,1,2。。。 pedef enum Color COLOR; char co[COLORNUM]=["red",wt定义枚举类型的变量 void maino 对枚举变量进行穷举 COLOR i,j, k 好处:直观 printf"result: n"i for(i=red;i<=blue;i++)/从red到bue穷举 for(j=red:j<=blue:j*+)∥从red到bue穷举 for(k=red:k<=blue:k++)∥/从red到bue穷举 printf %s\t%s\t%s\t---\t",co[], co[jl., col[k]): printf %\t %d\t'%d\n",i,jk):
5 方法二 #include #define COLORNUM 3 enum Color{red,write,blue}; typedef enum Color COLOR; char *col[COLORNUM]={"red","write","blue"}; void main() { COLOR i,j,k; printf("result:\n"); for(i=red;i<=blue;i++) //从red到blue穷举 for(j=red;j<=blue;j++) //从red到blue穷举 for(k=red;k<=blue;k++) //从red到blue穷举 { printf("%s\t%s\t%s\t---\t",col[i],col[j],col[k]); printf("%d\t%d\t%d\n",i,j,k); } } •定义枚举类型enum Color •同时指定这种类型的变量可 以取得的值,其中的每一个 值其实就是一个符号常量, 如果不指定他们的值,默认 是0,1,2。。。 •定义枚举类型的变量 •对枚举变量进行穷举 •好处:直观

定义枚举类型erum 定义的枚举常量往往可没有指明时y二般不 include<s↑doh 只是为了直接使用后边定义 *define COLORNUM 3 的符号常量 enum [red, write blue): char" col[COLORNUM]=["red",wt:定义整型变量 void maino 直接用枚举常量 int i,i k: printf("result: \n"): for(i=red;i<=blue;|++)/从red到bue穷举 forj=red:j<=blue:j*+)∥从red到blue穷举 for(k=red:k<=blue:k+-)//从red到be穷举 }prin(%d%N+0:1。cook printf( yos\t%s\tyoslt---\t
6 定义的枚举常量往往可直接使用 #include #define COLORNUM 3 enum {red,write,blue}; char *col[COLORNUM]={"red","write","blue"}; void main() { int i,j,k; printf("result:\n"); for(i=red;i<=blue;i++) //从red到blue穷举 for(j=red;j<=blue;j++) //从red到blue穷举 for(k=red;k<=blue;k++) //从red到blue穷举 { printf("%s\t%s\t%s\t---\t",col[i],col[j],col[k]); printf("%d\t%d\t%d\n",i,j,k); } } •定义枚举类型enum •没有指明Color 时,一般不 使用这个类型来定义变量, 只是为了直接使用后边定义 的符号常量 •定义整型变量 •直接用枚举常量

多文件程序 程序文件模块 为什么?当程序较大时,可以把程序分别保存为 几个c文件,或者每个程序员编写一部分函数, 这些函数保存在一个c文件,最后再构成完整的 程序。 其中的每一个c文件称为程序文件模块。 整个程序只允许有一个man0函数 组成结构:函数一>文件一程序 大程序一若干程序文件模块 各程序文件模块分别编译,再连接
7 多文件程序 ▪ 程序文件模块 ▪ 为什么?当程序较大时,可以把程序分别保存为 几个.c文件,或者每个程序员编写一部分函数, 这些函数保存在一个.c文件,最后再构成完整的 程序。 ▪ 其中的每一个.c文件称为程序文件模块。 ▪ 整个程序只允许有一个main()函数 ▪ 组成结构:函数->文件->程序 ▪ 大程序-若干程序文件模块 ▪ 各程序文件模块分别编译,再连接

方法一:包含自己编写的c文件 问题:如何把若干程序文件模块连接成 个完整的可执行程序? 文件包含
8 ▪ 问题:如何把若干程序文件模块连接成一 个完整的可执行程序? ▪ 文件包含 方法一:包含自己编写的.c文件

例如:5个函数力编译连接后包含的内容件上, 要求通过文件 double vol_ball( 来 double vol cylinde 文件模块名:pro! double vol cone()F模块名:prog2c # include“prog{…… able vol ball( int main(void) i int sel while( 1) scanf("d", int main(void) able vol cylinde cal (sel); int sel while(1) able vol cone( void cal(int sel) scanf("%d", &sel); ●●e cal(sel ) void cal(int sel)
9 例如:5个函数分别存储在2个.C文件上, 要求通过文件包含把它们联结起来。 文件模块名:prog1.c #include “prog2.c” int main(void) { int sel ; while( 1 ){ scanf("%d",&sel); cal (sel ) ; } } void cal(int sel) { …… } 文件模块名:prog2.c double vol_ball( ) { …… } double vol_cylind( ) { …… } double vol_cone( ) { …… } 编译连接后包含的内容 double vol_ball( ) { …… } double vol_cylind( ) { …… } double vol_cone( ) { …… } int main(void) { int sel ; while(1){ scanf("%d",&sel); cal (sel ); } } void cal(int sel) { …… }

方法二 新建一个项目文件 打开所有的c文件,分别编译 再连接 10
10 方法二 ▪ 新建一个项目文件 ▪ 打开所有的.c文件,分别编译 ▪ 再连接
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第1讲 简介与hello world.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第18讲 文件.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第17讲 共用体&链表.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第16讲 动态内存分配&结构体.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第15讲 二维数组与指针.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第14讲 二维数组、二维数组做函数参数.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第13讲 指针与一维数组.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)习题7.ppt
- 重庆邮电大学:《C语言程序设计》课程作业讲评-goldbahe猜想.doc
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第11讲 数组与指针.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第10讲 一维数组与字符数组.ppt
- 中国民航大学电子信息工程学院:《MATLAB程序设计与应用》课程教学资源(PPT课件讲稿)第七章 符号计算.ppt
- 中国民航大学电子信息工程学院:《MATLAB程序设计与应用》课程教学资源(PPT课件讲稿)第六章 数值计算_matlab8.ppt
- 中国民航大学电子信息工程学院:《MATLAB程序设计与应用》课程教学资源(PPT课件讲稿)第五章 M文件(主讲:卢丹).ppt
- 中国民航大学电子信息工程学院:《MATLAB程序设计与应用》课程教学资源(PPT课件讲稿)第四章 数据和函数的可视化.ppt
- 中国民航大学电子信息工程学院:《MATLAB程序设计与应用》课程教学资源(PPT课件讲稿)第三章 字符串数组、元胞数组和构架数组.ppt
- 中国民航大学电子信息工程学院:《MATLAB程序设计与应用》课程教学资源(PPT课件讲稿)第二章 数值数组及其运算(2/2).ppt
- 中国民航大学电子信息工程学院:《MATLAB程序设计与应用》课程教学资源(PPT课件讲稿)第二章 数值数组及其运算(1/2).ppt
- 中国民航大学电子信息工程学院:《MATLAB程序设计与应用》课程教学资源(PPT课件讲稿)第一章 MATLAB基础准备及入门(2/2).ppt
- 中国民航大学电子信息工程学院:《MATLAB程序设计与应用》课程教学资源(PPT课件讲稿)第一章 MATLAB基础准备及入门(1/2).ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第2讲 简单C程序设计.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第3讲 多函数程序设计.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第4讲 作用域和选择结构程序设计.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第5讲 多分支和循环.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第6讲 循环和综合程序设计.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第7讲 综合程序设计.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第8讲 模块化程序设计.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第9讲 存储类型 宏定义 数组.ppt
- 重庆邮电大学:《C语言程序设计》课程授课计划一.doc
- 重庆邮电大学:《C语言程序设计》课程授课计划二.doc
- 湖南农业大学:《计算机组成原理教案》第二章 数据格式(蒋邵平).ppt
- 湖南农业大学:《计算机组成原理教案》第六章 总线的基本概念(蒋邵平).ppt
- 湖南农业大学:《计算机组成原理教案》第七章 显示器(蒋邵平).ppt
- 湖南农业大学:《计算机组成原理教案》第三章 存储系统(蒋邵平).ppt
- 湖南农业大学:《计算机组成原理教案》第五章 中央处理器(蒋邵平).ppt
- 湖南农业大学:《计算机组成原理教案》第一章 计算机系统概论(蒋邵平).ppt
- 北京理工大学:《Java导论与Java开发环境》课程教学资源(学生作业)面向对象文档.doc
- 北京理工大学:《Java导论与Java开发环境》课程教学资源(PPT课件讲稿)第一讲 Java导论与Java开发环境(主讲:金旭亮).ppt
- 北京理工大学:《Java导论与Java开发环境》课程教学资源(PPT课件讲稿)第三讲 Java语法基础.ppt
- 北京理工大学:《Java导论与Java开发环境》课程教学资源(PPT课件讲稿)第二讲 Java应用程序与Applet.ppt