《C語言介面與實現》實驗——位向量(Bit_T)

來源:互聯網
上載者:User

實驗程式是用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");elseprintf("b1 不是 b2的真子集\n");if (Bit_eq(b1, b2))printf("b1 == b2\n");elseprintf("b1 != b2\n");if (Bit_leq(b1, b2))printf("b1 是 b2的子集\n");elseprintf("b1 不是 b2的子集\n");//【集合包含】// 做下列操作時,兩個位向量的長度必須相等!b3 = Bit_new(5);b3 = Bit_union(b1, b2);printf("\n列印:b1+b2\n");Bit_map(b3, Print, NULL);//列印:b1+b2Bit_put(b1, 1, 0);b3 = Bit_inter(b1, b2);printf("\n列印:b1*b2\n");Bit_map(b3, Print, NULL);//列印:b1*b2b3 = Bit_minus(b1, b2);printf("\n列印:b1-b2\n");Bit_map(b3, Print, NULL);//列印:b1-b2b3 = 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---值: 0Bit_set設定後列印位置: 0---值: 1位置: 1---值: 1位置: 2---值: 1位置: 3---值: 1位置: 4---值: 1Bit_put設定後列印位置: 0---值: 1位置: 1---值: 0位置: 2---值: 1位置: 3---值: 1位置: 4---值: 0Bit_get 函數 = 0Bit_length 函數 = 5Bit_count 函數 = 3Bit_not設定後列印位置: 0---值: 0位置: 1---值: 1位置: 2---值: 1位置: 3---值: 1位置: 4---值: 0b1 不是 b2的真子集b1 == b2b1 是 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---值: 0Press any key to continue

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.