C语言常用操作符


在这里插入图片描述

一,算数运算符(这里只重点写“/”和“%”)

1.“/”除法操作符

如果两个操作数都是整数,执行整数除法,如果两个数有一个是小数执行浮点数除法(double类型),执行浮点数除法。(两种除法除数都不能为0)

#include<stdio.h>
//操作符

// "/"除法 除号两端都是整数则执行的时整数除法    如果两端有一个是小数则执行浮点数除法          除数都不能为0
int main() {
	int r = 7 / 2;
	printf("%d\n", r);//3
	double n = 7 / 2;
	printf("%lf", n);//3.000000  必须有一个数是小数,用double接收打印才会是浮点数
	double d = 7.0 / 2;
	printf("%lf", d);//3.500000
	return 0;
}

2.“%”取余操作符

% 操作符的两个操作数必须为整数。返回的是整除之后的余数。

int main() {
	int r = 17 % 8;
	printf("%d\n", r);//1
	int d = 123 % 10;
	printf("%d\n", d);//3
	int s = 123 / 10;
	printf("%d\n", s);//12
	int n = 123 / 10 % 10;
	printf("%d\n", n);//2
		int y = 123 / 100;
		printf("%d", y);//1


	return 0;
}

二、移位操作符

移动的是整数在内存中的补码,只有整数才能位移,位移量只能是正数,
整数在内存中是以补码的形式储存的,计算也是通过补码,但我们在计算的时候是要用原码的。

二进制的正\负数是由码开头的0\1表示的
正数的原、反、补码都是一样的
如:

负数的反码是把原码的1换成0,0换成1,补码=反码+1(注意开头一位是符号位不变)
如:在这里插入图片描述

1.“>>”右移操作符

右移操作符在C语言中是“算数移动”——右边丢弃,左边补符号位
在这里插入图片描述

2.“<<”左移操作符

左边丢弃右边补0
在这里插入图片描述

注:对于移位运算符,不要移动负数位,这个是标准未定义的。

三、位操作符

(操作的也是二进制补码(整数))

1.“&” 按位异

对应补码,有0为0,两个同时为1才为1
a=3 补码:0000000000000011
b=-5 补码:111111111111111011
a&b 补码:0000000000000011 ==>3

应用:编写一个代码,求一个整数储存在内存中的1的个数
在这里插入图片描述

2."|"按位或

有1为1,同为0才为0
a=3 补码:0000000000000011
b=-5 补码:111111111111111011
a|b 补码:111111111111111011 (负数的补码)==>(反码):111111111111111010–>(原码): 1000000000000101
所以a|b=-5

应用:把13的二进制中的低5位改为1
在这里插入图片描述

3."^"按位异或

相同为0相异为1
a=3 补码:0000000000000011
b=-5 补码:111111111111111011
a^b 补码:111111111111111000–>反码:111111111111110111–>原码:1000000000001000
所以a^b=-8

"^“”的应用:,要求不能建立第三个变量来实现交换两个整数

在这里插入图片描述

四.赋值及复合赋值操作符号

1.赋值操作符"="

2.复合赋值操作符

+=
-= *= /= %= >>= <<= &= |= ^=

五、单目操作符介绍(只有一个操作数)

! 逻辑非
在这里插入图片描述
+正值
-负值

&取地址
*解引用操作符(间接访问操作符)

int main() {
	int a = 10;
	//pa是指针变量
	int* pa = &a;//取地址操作符,取出a的地址

	*pa = 20;//*pa 为解引用操作符(间接访问操作符)-单目操作符-通过中存放的地址,指到相应的空间内容

}

sizeof 求操作数类型的长度(以字节为单位)
如:

int main() {
	int a = 0;
	printf("%d\n", sizeof(int));//4   int 类型4个字节
	printf("%d\n", sizeof(a));//4
	printf("%d\n", sizeof a);//4
	int arr[10] = { 0 };
	printf("%d\n", sizeof(int [10]));//40   int [10]类型40个字节
	printf("%d\n", sizeof(arr));//40

	return 0;
}
void test1(int arr[]) {//int*
	printf("%d\n", sizeof(arr));//4  因为是在x86状态

}
void test2(char ch[]) {//char*
	printf("%d\n", sizeof(ch));//4

}
int main() {
	int arr[10] = { 0 };
	char ch[10] = { 0 };
	printf("%d\n", sizeof(arr));//40
	printf("%d\n", sizeof(ch));//10
	test1(arr);//传过去的是arr[0]的地址
	test2(ch);//传过去的是arr[0]的地址
	return 0;
}

~ 按位取反(按照补码二进制取反)
a=0
~a
补码:00000000000000000
取反:1111111111111111111(负数的补码)—>反码:1111111111111111110–>原码:10000000000000001

=-1
在这里插入图片描述

应用:把000000000000000011101的第5位的1换成0

在这里插入图片描述

拓展:我们有这样的输入判断语句

在这里插入图片描述

++ – 加加 减减

后置++(先使用再++把值赋给原来的数)

int main() {
	int a = 3;
	int b = a++;   //后置++。先使用 后++
	//b=a;a=a+1
	printf("a=%d b=%d",a, b);//a=4 b=3
	return 0;
}

前之++,先++,再使用

int main() {
	int a = 3;
	int b = ++a;   //先++。再使用
	//a=a+1;b=a;
	printf("a=%d b=%d", a, b);//a=4 b=4
	return 0;
}

"–"同理。

(类型) 强制转换类型

int main() {
	int a = (int)3.14;//把3.14强制转换成int类型,编译器就不会报错
	printf("%d", a);//3

	return 0;
}

六、条件操作符

只能应用到合适的类型上(不能比较自己定义的一些东西)比如自己定义的字符串

=
<
<=
!= 用于测试相等
== 用于测试”相等“

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
目 录 第1章 C语言 8 1.1 什么是局部程序块(local block)? 8 1.2 可以把变量保存在局部程序块中吗? 9 1.3 什么时候用一条switch语句比用多条if语句更好? 9 1.4 switch语句必须包含default分支吗? 10 1.5 switch语句的最后一个分支可以不要break语句吗? 11 1.6 除了在for语句中之外,在哪些情况下还要使用逗号运算符? 11 1.7 怎样才能知道循环是否提前结束了? 13 1.8 goto,longjmp()和setjmp()之间有什么区别? 13 1.9 什么是左值(lvaule)? 15 1.10 数组(array)可以是左值吗? 15 1.11 什么是右值(rvaule)? 16 1.12 运算符的优先级总能保证是“自左至右”或“自右至左”的顺序吗? 17 1.13 ++var和var++有什么区别? 17 1.14 取模运算符(modulus operator)“%”的作用是什么? 17 第2章 变量和数据存储 18 2.1. 变量存储在内存(memory)中的什么地方? 18 2.2. 变量必须初始化吗? 19 2.3. 什么是页抖动(pagethrashing)? 19 2.4. 什么是const指针? 20 2.5. 什么时候应该使用register修饰符?它真的有用吗? 21 2.6. 什么时候应该使用volatile修饰符? 21 2.7. 一个变量可以同时被说明为const和volatile吗? 22 2.8. 什么时候应该使用const修饰符? 23 2.9. 浮点数比较(floating-point comparisons)的可靠性如何? 23 2.10. 怎样判断一个数字型变量可以容纳的最大值? 24 2.11. 对不同类型的变量进行算术运算会有问题吗? 25 2.12. 什么是运算符升级(operatorpromotion)? 25 2.13. 什么时候应该使用类型强制转换(typecast)? 26 2.14. 什么时候不应该使用类型强制转换(typecast)? 27 2.15. 可以在头文件中说明或定义变量吗? 27 2.16. 说明一个变量和定义一个变量有什么区别? 27 2.17. 可以在头文件中说明static变量吗? 28 2.18. 用const说明常量有什么好处? 28 第3章 排序与查找 28 排序 28 查找 29 排序或查找性能? 30 3.1. 哪一种排序方法最方便? 32 3.2. 哪一种排序方法最快? 33 3.3. 对外存(磁盘或磁带)中而不是内存中的数据进行排序称为外部排序。 39 3.4. 1哪一种查找方法最方便? 44 3.5. 1哪一种查找方法最快? 46 3.6. 1什么是哈希查找? 51 3.7. 1怎样对链表进行排序? 53 3.8. 1怎样查找链表中的数据? 53 第4章 数据文件 59 4.1. 当errno为一个非零值时,是否有错误发生? 59 4.2. 什么是流(stream)? 59 4.3. 怎样重定向一个标准流? 60 4.4. 怎样恢复一个重定向了的标准流? 60 4.5. stdout能被强制打印到非屏幕设备上吗? 61 4.6. 文本模式(textmode)和二进制模式(binarymode)有什么区别? 61 4.7. 怎样判断是使用流函数还是使用低级函数? 62 4.8. 怎样列出某个目录下的文件? 62 4.9. 怎样列出一个文件的日期和时间? 63 4.10. 怎样对某个目录下的文件名进行排序? 66 4.11. 怎样判断一个文件的属性? 67 4.12. 怎样查看PATH环境变量? 69 4.13. 怎样打开一个同时能被其它程序修改的文件? 69 4.14. 怎样确保只有你的程序能存取一个文件? 71 4.15. 怎样防止其它程序修改你正在修改的那部分文件内容? 71 4.16. 怎样一次打开20个以上的文件? 72 4.17. 怎样避开"Abort,Retry,Fail”消息? 72 4.18. 怎样读写以逗号分界的本? 74 第5章 编译预处理 76 5.1. 什么是宏(macro)?怎样使用宏? 76 5.2. 预处理程序(preprocessor)有什么作用? 77 5.3. 怎样避免多次包含同一个头文件? 79 5.4. 可以用#include指令包含类型名不是".h"的文件吗? 80 5.5. 用#define指令说明常量有什么好处? 80 5.6. 用enum关键字说明常量有什么好处? 81 5.7. 与用#define指令说明常量相比,用enum关键字说明常量有什么好处? 81 5.8. 如何使部分程序在
1 愉快的开始-HELLO WORLD 14 1.1 INCLUDE头文件包含 14 1.2 MAIN函数 14 1.3 注释 14 1.4 {}括号,程序题和代码块 14 1.5 声明 14 1.6 C语言自定义名字的要求 15 1.7 PRINTF函数 15 1.8 RETURN语句 15 1.9 SYSTEM系统调用 15 1.9.1 System返回值在windows和unix下的不同, 15 1.9.2 POSIX 15 1.10 C语言编译过程,GCC参数简介 16 1.10.1 C语言编译过程 16 1.10.2 -E预编译 16 1.10.3 -S汇编 16 1.10.4 -c编译 16 1.10.5 链接 16 1.11 操作系统结构 17 1.11.1 用户模式 17 1.11.2 内核模式 17 1.12 64位,32位系统区别 18 1.12.1 CPU内部结构与寄存器 18 1.12.2 RISC与CISC CPU构架 18 1.12.3 SPARC,x86与ARM 18 1.13 汇编语言 18 1.13.1 I386汇编简介 18 1.13.2 VS反汇编 19 1.14 IDE工具 19 1.14.1 QT常用快捷键 19 1.14.2 VS常用快捷键 19 1.14.3 VS断点,调试 19 2 C语言中的数据类型 19 2.1 常量 19 2.1.1 #define 19 2.1.2 const 19 2.2 字符串常量 20 2.3 二进制数、位、字节与字 20 2.4 八进制 20 2.5 十六进制 20 2.6 原码 21 2.7 反码 21 2.8 补码 21 2.9 SIZEOF关键字 22 2.10 INT类型 22 2.10.1 int常量,变量 22 2.10.2 printf输出int值 23 2.10.3 printf输出八进制和十六进制 23 2.10.4 short,long,long long,unsigned int 23 2.10.5 整数溢出 23 2.10.6 大端对齐与小端对齐 23 2.11 CHAR类型 24 2.11.1 char常量,变量 24 2.11.2 printf输出char 24 2.11.3 不可打印char转义符 24 2.11.4 char和unsigned char 25 2.12 浮点FLOAT,DOUBLE,LONG DOUBLE类型 25 2.12.1 浮点常量,变量 25 2.12.2 printf输出浮点数 25 2.13 类型限定 25 2.13.1 const 25 2.13.2 volatile 26 2.13.3 register 26 3 字符串格式化输出和输入 26 3.1 字符串在计算机内部的存储方式 26 3.2 PRINTF函数,PUTCHAR函数 27 3.3 SCANF函数与GETCHAR函数 28 4 运算符表达式和语句 29 4.1 基本运算符 29 4.1.1 = 29 4.1.2 + 29 4.1.3 – 29 4.1.4 * 29 4.1.5 / 29 4.1.6 % 29 4.1.7 += 29 4.1.8 -= 29 4.1.9 *= 29 4.1.10 /= 30 4.1.11 %= 30 4.1.12 ++ 30 4.1.13 -- 30 4.1.14 逗号运算符 30 4.1.15 运算符优先级 30 4.2 复合语句 31 4.3 空语句 31 4.4 类型转化 31 5 条件分支语句 31 5.1 关系运算符 31 5.1.1 < 31 5.1.2 <= 31 5.1.3 > 32 5.1.4 >= 32 5.1.5 == 32 5.1.6 != 32 5.2 关系运算符优先级 32 5.3 逻辑运算符 32 5.3.1 && 32 5.3.2 || 32 5.3.3 ! 33 5.4 IF 33 5.5 IF ELSE 34 5.6 IF ELSE IF 34 5.7 SWITCH与BREAK,DEFAULT 35 5.8 条件运算符? 36 5.9 GOTO语句与标号 36 6 循环语句 36 6.1 WHILE 36 6.2 CONTINUE 37 6.3 BREAK 37 6.4 DO WHILE 37 6.5 FOR 37 6.6 循环嵌套 37 7 数组 38 7.1 一维数组定义与使用 38 7.2 数组在内存的存储方式 38 7.3 一维数组初始化 38 7.4 二维数组定义与使用 39 7.5 二维数组初始化 39 8 字符串与字符数组 39 8.1 字符数组定义 39 8.2 字符数组初始化 39 8.3 字符数组使用 40 8.4 随机数产生函数RAND与SRAND 40 8.5 用SCANF输入字符串 40 8.6 字符串的结束标志 41 8.7 字符串处理函数 41 8.7.1 gets 41 8.7.2 fgets函数 41 8.7.3 puts函数 42 8.7.4 fputs函数 42 8.7.5 strlen,字符串长度 42 8.7.6 strcat,字符串追加 42 8.7.7 strncat,字符串有限追加 43 8.7.8 strcmp,字符串比较 43 8.7.9 strncmp,字符串有限比较 43 8.7.10 strcpy字符串拷贝 43 8.7.11 strncpy字符串有限拷贝 43 8.7.12 sprintf,格式化字符串 43 8.7.13 Sscanf函数 44 8.7.14 strchr查找字符 44 8.7.15 strstr查找子串 44 8.7.16 strtok分割字符串 44 8.7.17 atoi转化为int 45 8.7.18 atof转化为float 45 8.7.19 atol转化为long 45 9 函数 45 9.1 函数的原型和调用 45 9.2 函数的形参与实参 45 9.3 函数的返回类型与返回值 46 9.4 MAIN函数与EXIT函数与函数的RETURN语句 46 9.5 多个源代码文件程序的编译 47 9.5.1 头文件的使用 47 9.5.2 #include与#define的意义 47 9.5.3 #ifndef与#endif 47 9.6 函数的递归 48 9.6.1 递归的过程分析 48 9.6.2 递归的优点 52 9.6.3 递归的缺点 52 1 指针 52 1.1 指针 52 1.1.1 指针的概念 52 1.1.2 指针变量的定义 52 1.1.3 &取地址运算符 52 1.1.4 无类型指针 52 1.1.5 NULL 53 1.1.6 空指针与野指针 53 1.1.7 指针的兼容性 53 1.1.8 指向常量的指针与指针常量 54 1.1.9 指针与数组的关系 54 1.1.10 指针运算 54 1.1.11 通过指针使用数组元素 55 1.1.12 指针数组 55 1.1.13 指向指针的指针(二级指针) 55 1.1.14 指向二维数组的指针 57 1.1.15 指针变量做为函数的参数 57 1.1.16 一维数组名作为函数参数 57 1.1.17 二维数组名作为函数参数 58 1.1.18 const关键字保护数组内容 58 1.1.19 指针做为函数的返回值 58 1.1.20 指向函数的指针 59 1.1.21 把指向函数的指针做为函数的参数 60 1.1.22 memset,memcpy,memmove函数 61 1.1.23 指针小结 63 2 字符指针与字符串 64 2.1 指针和字符串 64 2.2 通过指针访问字符串数组 64 2.3 函数的参数为CHAR * 64 2.4 指针数组做为MAIN函数的形参 65 3 内存管理 65 3.1 作用域 65 3.1.1 auto自动变量 65 3.1.2 register寄存器变量 65 3.1.3 代码块作用域的静态变量 66 3.1.4 代码块作用域外的静态变量 66 3.1.5 全局变量 66 3.1.6 外部变量与extern关键字 66 3.1.7 全局函数和静态函数 66 3.2 内存四区 66 3.2.1 代码区 67 3.2.2 静态区 67 3.2.3 栈区 67 3.2.4 栈溢出 68 3.2.5 堆区 68 3.3 堆的分配和释放 70 3.3.1 malloc 70 3.3.2 free 70 3.3.3 calloc: 70 3.3.4 realloc 71 4 结构体,联合体,枚举与TYPEDEF 71 4.1 结构体 71 4.1.1 定义结构体struct和初始化 71 4.1.2 访问结构体成员 71 4.1.3 结构体的内存对齐模式 72 4.1.4 指定结构体元素的位字段 72 4.1.5 结构数组 72 4.1.6 嵌套结构 73 4.1.7 结构体的赋值 73 4.1.8 指向结构体的指针 73 4.1.9 指向结构体数组的指针 73 4.1.10 结构中的数组成员和指针成员 73 4.1.11 在堆中创建的结构体 74 4.1.12 将结构作为函数参数 74 4.1.13 结构,还是指向结构的指针 74 4.2 联合体 75 4.3 枚举类型 75 4.3.1 枚举定义 75 4.3.2 默认值 76 4.4 TYPEDEF 76 4.5 通过TYPEDEF定义函数指针 76 5 文件操作 77 5.1 FOPEN 77 5.2 二进制和文本模式的区别 77 5.3 FCLOSE 78 5.4 GETC和PUTC函数 78 5.5 EOF与FEOF函数文件结尾 78 5.6 FPRINTF,FSCANF,FGETS,FPUTS函数 78 5.7 STAT函数 78 5.8 FREAD和FWRITE函数 79 5.9 FREAD与FEOF 79 5.10 通过FWRITE将结构保存到二进制文件中 79 5.11 FSEEK函数 80 5.12 FTELL函数 80 5.13 FFLUSH函数 80 5.14 REMOVE函数 81 5.15 RENAME函数 81 6 基础数据结构与算法 82 6.1 什么是数据结构 82 6.2 什么是算法 82 6.3 排序 83 6.3.1 冒泡排序 83 6.3.2 选择排序 83 6.4 查找 83 6.4.1 顺序查找 83 6.4.2 二分查找 83 6.5 链表 84 6.5.1 单向链表定义 84 6.5.2 单向链表数据结构定义 85 6.5.3 单向链表的实现 85
关于C语言一些简单的实例,里面有些思想值得借鉴 1 一个价值“三天”的BUG  2 灵活使用递增(递减)操作符  3 算术运算符计算器  4 逻辑运算符计算器 5 IP地址解析  6 用if…else语句解决奖金发放问题  7 用for循环模拟自由落体  8 用while语句求n!  9 模拟银行常用打印程序  10 使用一维数组统计选票  11 使用二维数组统计学生成绩  12 简单的计算器  13 时钟程序  14 华氏温度和摄氏温度的相互转换  15 SimpleDebug函数应用  16 常用的几种排序方法  17 广度优先搜索及深度优先搜索  18 实现基本的串操作  19 计算各点到源点的最短距离  20 储油问题  21 中奖彩球问题  22 0-1背包问题  24 二叉树算法集  25 模拟LRU页面置换算法  26 大整数阶乘新思路  27 银行事件驱动模拟程序  28 模拟迷宫探路  29 实现高随机度随机序列  30 停车场管理系统 31 菜单实现 32 窗口制作  33 模拟屏幕保护程序  34 文件读写基本操作  35 格式化读写文件  36 成块读写操作  37 随机读写文件  38 文件的加密和解密  39 实现两个文件的连接  40 实现两个文件信息的合并  41 文件信息统计  42 文件分割   43 同时显示两个文件的内容  44 模拟Linux环境下的vi编辑器  45 文件操作综合应用——银行账户管理  46 实用内存清理程序  47 如何检测Sniffer   48 加密DOS批处理程序  49 使用栈实现密码设置  50 远程缓冲区溢出漏洞利用程序  51 简易漏洞扫描器  52 文件病毒检测程序  53 监测内存泄露与溢出  54 实现traceroute命令  55 实现ping程序功能  56 获取Linux本机IP地址  57 实现扩展内存的访问  58 随机加密程序  59 MD5加密程序  60 RSA加密   61 制作表格  62 用画线函数作出的图案  63 多样的椭圆  64 多变的立方体 65 简易时钟  66 跳动的小球  67 用柱状图表示学生成绩各分数段比率  68 EGA/VGA屏幕存储  69 按钮制作  70 三维视图制作  71 红旗图案制作  72 火焰动画制作  73 模拟水纹扩散  74 彩色的Photo Frame   75 火箭发射演示  76 恢复内存文本 77 挽救磁盘数据 78 建立和隐藏多个PRI DOS分区 79 简单的DOS下的中断服务程序 80 文件名分析程序  81 鼠标中断处理  82 实现磁盘数据的整体加密  83 揭开CMOS密码  84 获取网卡信息  85 创建自己的设备  86 设置应用程序启动密码  87 获取系统配置信息  88 硬件检测  89 管道通信  90 程序自杀技术实现  91 连续击键游戏  92 掷骰子游戏  93 弹力球  94 俄罗斯方块  95 24点扑克牌游戏  96 贪吃蛇  97 潜水艇大战  98 机器人大战  99 图形模式下的搬运工  100 十全十美游戏  101 强大的通信录  102 模拟Windows下UltraEdit程序  103 轻松实现个人理财  104 竞技比赛打分系统  105 火车订票系统 
第1章概述 1.1单片机的结构与应用 1.1.1单片机的定义、分类与内部组成 1.1.2单片机应用系统的结构及其工作过程 1.1.3单片机的应用 1.2单片机基础知识 1.2.1数制与数制间的转换 1.2.2单片机中数的表示方法及常用数制的对应关系 1.2.3逻辑数据的表示 1.2.4单片机中常用的基本术语 1.3单片机入门的有效方法与途径 1.4学习单片机的基本条件 1.4.1软件条件 1.4.2硬件条件 习题与实验 第2章单片机开发软件及开发过程 2.1仿真软件Proteus的使用 2.1.1Proteus的主要功能特点 2.1.2实例1:功能感受——Pmteus仿真单片机播放《渴望》主题曲 2.1.3Proteus软件的界面与操作介绍 2.1.4实例2:Proteus仿真设计快速入门 2.2KeilC51的使用 2.2.1单片机最小系统 2.2.2实例3:用Kei1C51编写点亮一个发光二极管的程序 2.3程序烧录器及烧录软件的使用 习题与实验 第3章逐步认识单片机基本结构 3.1实例4:用单片机控制一个灯闪烁 3.1.1实现方法 3.1.2程序设计 3.1.3用Proteus软件仿真 3.1.4延时程序分析 3.2实例5:将P1口状态送入P0口、P2口和P3口 3.2.1实现方法 3.2.2程序设计 3.2.3用Proteus软件仿真 3.2.4用实验板试验 3.2.5I/O口功能介绍 3.2.6I/O口的结构分析 3.3实例6:使用P3口流水点亮8位1ED 3.3.1实现方法 3.3.2程序设计 3.3.3用Proteus软件仿真 3.3.4用实验板试验 3.4实例7:通过对P3口地址的操作流水点亮8位1ED 3.4.1实现方法 3.4.2程序设计 3.4.3用Proteus软件仿真 3.4.4用实验板试验 3.5MCS-51单片机存储器的基本结构 3.5.1程序存储器 3.5.2数据存储器 3.6单片机的复位电路 习题与实验 第4章单片机C语言开发基础 4.1C语言源程序的结构特点 4.2标志符与关键字 4.3C语言的数据类型与运算符 4.3.1数据类型 4.3.2运算符 4.3.3实例8:用不同数据类型的数据控制1ED的闪烁 4.3.4实例9:用P0口、P1口分别显示加法和减法运算结果 4.3.5实例10:用P0口、P1口显示乘法运算结果 4.3.6实例11:用P1口、P0口显示除法运算结果 4.3.7实例12:用自增运算控制P0口8位1ED的闪烁花样 4.3.8实例13:用P0口显示逻辑“与”运算结果 4.3.9实例14:用P0口显示条件运算结果 4.3.10实例15:用P0口显示按位“异或”运算结果 4.3.11实例16:用P0口显示左移运算结果 4.3.12实例17:“万能逻辑电路”实验 4.3.13实例18:用右移运算流水点亮P1口8位1ED 4.4C语言的语句 4.4.1概述 4.4.2控制语句 4.4.3实例19:用if语句控制P0口8位LED的点亮状态 4.4.4实例20:用swtich语句控制PO口8位LED的点亮状态 4.4.5实例21:用for语句设计鸣笛报警程序 4.4.6实例22:用while语句控制PO口8位LED闪烁花样 4.4.7实例23:用dOwhile语句控制PO口8位LED流水点亮 4.5C语言的数组 4.5.1数组的定义和引用 4.5.2实例24:用字符型数组控制PO口8位LED流水点亮 4.5.3实例25:用PO口显示字符串常量 4.6C语言的指针 4.6.1指针的定义与引用 4.6.2实例26:用PO口显示指针运算结果 4.6.3实例27:用指针数组控制PO口8位LED流水点亮 4.6.4实例28:用数组的指针控制PO口8位LED流水点亮 4.7C语言的函数 4.7.1函数的定义与调用 4.7.2实例29:用PO口、P1口显示整型函数返回值 4.7.3实例30:用有参函数控制PO口8位LED流水速度 4.7.4实例3l:用数组作函数参数控制PO口8位LED流水点亮 4.7.5实例32:用指针作函数参数控制PO口8位LED流水点亮 4.7.6实例33:用函数型指针控制PO口8位LED流水点亮 4.7.7实例34:用指针数组作为函数的参数显示多个字符串 4.7.8实例35:字符软件ctype.h中的isalpha()函数应用举例 4.7.9实例36:内部函数库文件intrins.h中的_cml_()函数应用举例 4.7.10实例37:标准函数库文件stdlib.h中的rand()函数应用举例 4.7.1l实例38:字符串函数库文件string.h中的strcmp()函数应用举例 4.8C语言的编译预处理 4.8.1常用预处理命令介绍 4.8.2实例39:宏定义应用举例 4.8.3实例40:文件包含应用举例 4.8.4实例41:条件编译应用举例 习题与实验 第5章单片机的定时器/计数器 5.1定时器,计数器的基本概念 5.2定时器/计数器的结构及工作原理 5.2.1定时器/计数器的结构 5.2.2定时器,计数器的工作原理 5.3定时器,计数器的控制 5.3.1定时器/计数器的方式控制寄存器(TMOD) 5.3.2定时器/计数器控制寄存器(TCON) 5.3.3定时器/计数器的4种工作方式 5.3.4定时器/计数器中定时/计数初值的计算 5.4定时器/计数器应用举例 5.4.1实例42:用定时器T0查询方式控制P2口8位LED闪烁 5.4.2实例43:用定时器T1查询方式控制单片机发出1kHz音频 5.4.3实例44:用计数器TO查询的方式计数,结果送P1口显示 习题与实验 第6章单片机的中断系统 6.1中断系统的基本概念 6.2中断系统的结构及控制 6.2.1中断系统的结构 6.2.2中断系统的控制 6.3中断系统应用举例 6.3.1实例45:用定时器TO的方式1控制LED闪烁 6.3.2实例46:用定时器TO的方式1实现长时间定时 6.3.3实例47:用定时器T1的方式1控制两个LED以不同周期闪烁 6.3.4实例48.用计数器T1的中断方式控制发出1kHz音频 6.3.5实例49:用定时器TO的方式O控制播放《好人一生平安》 6.3.6实例50.用计数器TO的方式2对外部脉冲计数 6.3.7实例51:用定时器TO的门控制位测量外部正脉冲宽度 6.3.8实例52:用外中断INT0测量负跳变信号累计数 6.3.9实例53-用外中断控制INT0控制P1口LED亮灭状态 6.3.10实例54:用外中断INT0中断测量外部负脉冲宽度 习题与实验 第7章串行通信技术 7.1串行通信的基本概念 7.2串行通信口的结构 7.3串行通信口的控制 7.3.1串行控制寄存器SCON 7.3.2电源控制寄存器PCON 7.3.3四种工作方式与波特率的设置 7.4串行通信口应用举例 7.4.1实例55.将方式0用于扩展并行输出控制流水灯 7.4.2实例56.基于方式1的单工通信 7.4.3实例57:基于方式3的单工通信 7.4.4实例58:单片机向计算机发送数据 7.4.5实例59:单片机接收计算机送出的数据 习题与实验 第8章接口技术 第9章新型串行接口芯片应用介绍 第10章常用功能器件应用举例 第11章高级综合应用技术
这是一个简单的C语言除法运算器代码,它可以实现加、减、乘、除四种基本运算。代码中定义了一个函数指针数组p,用于存储四种运算的函数地址。根据用户输入的选项,程序会调用相应的函数进行计算并输出结果。以下是代码的详细解释: 1. void menu():打印菜单函数,用于显示程序的功能选项。 2. int jia(int x, int y):加法实现函数,用于计算两个数的和并返回结果。 3. int jian(int x, int y):减法实现函数,用于计算两个数的差并返回结果。 4. int cheng(int x, int y):乘法实现函数,用于计算两个数的积并返回结果。 5. int chu(int x, int y):除法实现函数,用于计算两个数的商并返回结果。 6. int main():主函数,用于控制程序的流程。在主函数中,定义了变量a、b、num和ret,其中num用于存储用户输入的选项,ret用于存储计算结果。同时,定义了一个函数指针数组p,用于存储四种运算的函数地址。在while循环中,程序会先调用menu()函数打印菜单,然后等待用户输入选项。如果用户输入的选项是1、2、3或4,则程序会提示用户输入两个数,并调用相应的函数进行计算并输出结果。如果用户输入的选项是0,则程序会退出循环并结束程序。如果用户输入的选项不是0、1、2、3或4,则程序会提示用户输入有误。最后,程序会调用system("pause")函数暂停程序的执行,以便用户查看输出结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值