实验程序是用vc6编译,一定注意文件扩展名为c,不是cpp,下载前面几个测试程序(链表、表、原子中有下载链接)中直接将下面源程序覆盖1.c的内容即可!
强烈建议在这些函数上设上断点,按F11跟进去把源码走一遍!
源程序如下:
#include <stdio.h>
#include <string.h>
#include "include/bit.h"
#pragma comment(lib, "libcii.lib")
//打印函数
void Print(int n, int bit, void *cl)
{
printf("位置: %d---值: %d\n", n, bit);
}
void main()
{
//注意:C语言一定要将这些变量声明放在函数的头部
Bit_T b1, b2, b3;
int i = 0;
int val = 0;
//创建【5】位的bit位(位数取得这么少,是为了打印方便观察!)
// ≤32位时,分配1个int(32位)4字节;
// 32-64位时,分配2个int(32位)4字节;
// ..................................;
b1 = Bit_new(5);
//清除后打印
printf("\nBit_clear清除后打印\n");
Bit_clear(b1, 0, 4);
Bit_map(b1, Print, NULL);
//设置后打印
printf("\nBit_set设置后打印\n");
Bit_set(b1, 0, 4);
Bit_map(b1, Print, NULL);
//设置后打印
printf("\nBit_put设置后打印\n");
Bit_put(b1, 1, 0);
Bit_put(b1, 4, 0);
Bit_map(b1, Print, NULL);
printf("\nBit_get 函数 = %d\n", Bit_get(b1, 1));
printf("\nBit_length 函数 = %d\n", Bit_length(b1));
printf("\nBit_count 函数 = %d\n", Bit_count(b1));
//将b1的bit位清零后再“取反”,打印
printf("\nBit_not设置后打印\n");
Bit_clear(b1, 0, 4);
Bit_not(b1, 1, 3);
Bit_map(b1, Print, NULL);
//【集合包含】
// 做下列操作时,两个位向量的长度必须相等!
b2 = Bit_new(5);
Bit_clear(b2, 0, 4);
Bit_not(b2, 1, 3);
if (Bit_lt(b1, b2))
printf("b1 是 b2的真子集\n");
else
printf("b1 不是 b2的真子集\n");
if (Bit_eq(b1, b2))
printf("b1 == b2\n");
else
printf("b1 != b2\n");
if (Bit_leq(b1, b2))
printf("b1 是 b2的子集\n");
else
printf("b1 不是 b2的子集\n");
//【集合包含】
// 做下列操作时,两个位向量的长度必须相等!
b3 = Bit_new(5);
b3 = Bit_union(b1, b2);
printf("\n打印:b1+b2\n");
Bit_map(b3, Print, NULL); //打印:b1+b2
Bit_put(b1, 1, 0);
b3 = Bit_inter(b1, b2);
printf("\n打印:b1*b2\n");
Bit_map(b3, Print, NULL); //打印:b1*b2
b3 = Bit_minus(b1, b2);
printf("\n打印:b1-b2\n");
Bit_map(b3, Print, NULL); //打印:b1-b2
b3 = Bit_diff(b1, b2);
printf("\n打印:b1/b2(异或)\n");
Bit_map(b3, Print, NULL); //打印:b1/b2
}
输出:
Bit_clear清除后打印
位置: 0---值: 0
位置: 1---值: 0
位置: 2---值: 0
位置: 3---值: 0
位置: 4---值: 0
Bit_set设置后打印
位置: 0---值: 1
位置: 1---值: 1
位置: 2---值: 1
位置: 3---值: 1
位置: 4---值: 1
Bit_put设置后打印
位置: 0---值: 1
位置: 1---值: 0
位置: 2---值: 1
位置: 3---值: 1
位置: 4---值: 0
Bit_get 函数 = 0
Bit_length 函数 = 5
Bit_count 函数 = 3
Bit_not设置后打印
位置: 0---值: 0
位置: 1---值: 1
位置: 2---值: 1
位置: 3---值: 1
位置: 4---值: 0
b1 不是 b2的真子集
b1 == b2
b1 是 b2的子集
打印:b1+b2
位置: 0---值: 0
位置: 1---值: 1
位置: 2---值: 1
位置: 3---值: 1
位置: 4---值: 0
打印:b1*b2
位置: 0---值: 0
位置: 1---值: 0
位置: 2---值: 1
位置: 3---值: 1
位置: 4---值: 0
打印:b1-b2
位置: 0---值: 0
位置: 1---值: 0
位置: 2---值: 0
位置: 3---值: 0
位置: 4---值: 0
打印:b1/b2(异或)
位置: 0---值: 0
位置: 1---值: 1
位置: 2---值: 0
位置: 3---值: 0
位置: 4---值: 0
Press any key to continue