欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

用C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單版9*9掃雷小游戲

 更新時(shí)間:2021年03月24日 09:51:38   作者:Micro_Miracle  
這篇文章主要介紹了用C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單版9*9掃雷小游戲,本文通過(guò)實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一.掃雷的規(guī)則

玩家通過(guò)點(diǎn)擊棋盤(pán)上的格子來(lái)探雷,如果此處不是雷,則會(huì)顯示出一個(gè)數(shù)字代表以此格為中心的3×3的區(qū)域的雷數(shù);而如果此處是雷,玩家被炸死,游戲結(jié)束。當(dāng)玩家點(diǎn)擊完所有非雷區(qū)時(shí),玩家勝利。

在這里插入圖片描述
在這里插入圖片描述

二.代碼實(shí)現(xiàn)前的一些問(wèn)題

1.棋盤(pán)尺寸=數(shù)組尺寸?

顯然我們會(huì)用數(shù)組來(lái)模擬棋盤(pán)。首先我們知道,當(dāng)玩家點(diǎn)了非雷區(qū)時(shí),該區(qū)域要反饋附近區(qū)域雷數(shù)的信息,這就意味著程序需要對(duì)以此格為中心的3×3區(qū)域的空間進(jìn)行排查。而這個(gè)過(guò)程存在一個(gè)問(wèn)題:當(dāng)程序?qū)σ云灞P(pán)邊角為中心的區(qū)域進(jìn)行搜查時(shí),會(huì)出現(xiàn)數(shù)組越界的情況。
對(duì)于這個(gè)問(wèn)題,有兩種解決方法:
(1)為搜查邊角寫(xiě)另一種搜查函數(shù)
(2)擴(kuò)大數(shù)組的尺寸

很明顯,用方法(1)解決問(wèn)題會(huì)比較麻煩。所以我選擇方法(2)。方法(2)的實(shí)現(xiàn)非常簡(jiǎn)單。例如有一個(gè)55的棋盤(pán),我們只需要用一個(gè)7*7的數(shù)組模擬它就行了。(實(shí)際多出來(lái)的部分只會(huì)在搜查雷數(shù)的時(shí)候會(huì)用到)

在這里插入圖片描述

同時(shí)方法(2)還有一個(gè)好處:數(shù)組下標(biāo)與棋盤(pán)坐標(biāo)可以一一對(duì)應(yīng),在后續(xù)代碼實(shí)現(xiàn),我們可以避免考慮數(shù)組下標(biāo)與棋盤(pán)坐標(biāo)的校正問(wèn)題。我們都知道,數(shù)組的下標(biāo)從0開(kāi)始,但玩家真正需要訪問(wèn)的是數(shù)組下標(biāo)1-5的部分。

在這里插入圖片描述

2.一個(gè)數(shù)組足矣?

這里我們模擬一個(gè)棋盤(pán)。我們用1代表雷,0代表非雷。

在這里插入圖片描述

根據(jù)當(dāng)玩家點(diǎn)擊二行三列的格子時(shí),這個(gè)格子會(huì)變成2,沒(méi)有問(wèn)題。但當(dāng)玩家點(diǎn)擊二行四列的格子時(shí),這個(gè)會(huì)變成1。這里會(huì)出現(xiàn)歧義。
而且如果只用一個(gè)數(shù)組,我們難以隱藏雷區(qū)信息,所以不妨使用兩個(gè)數(shù)組:一個(gè)用來(lái)模擬雷區(qū),一個(gè)用來(lái)模擬排查出雷的信息(提供給玩家)

在這里插入圖片描述

對(duì)于一個(gè)5×5的棋盤(pán),我們可以創(chuàng)建兩個(gè)char類型數(shù)組:
char mine[7][7]
char show[7][7]

三.代碼實(shí)現(xiàn)

在本程序中,我會(huì)把代碼寫(xiě)在三個(gè)文件中,分別是test.c(測(cè)試游戲),game.c(游戲相關(guān)函數(shù)的定義),game.h(庫(kù)函數(shù)引用、函數(shù)聲明以及#define定義常量)
tips:若代碼塊第一行未標(biāo)明所位于的文件,則按以下規(guī)定分辨:
(1).函數(shù)的使用->test.c
(2).函數(shù)的聲明->game.h
(3).函數(shù)的定義->game.c

0.初步完成頭文件

//game.h
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ROW 9
#define COL 9
#define ROWS ROW+2
#define COLS COL+2

如果想更改行和列,直接在此處修改即可。這只是初始版的頭文件,在后文會(huì)繼續(xù)補(bǔ)充。
Q:為什么有了ROW,還要定義ROWS?
A:在后續(xù)既要用到11×11的數(shù)組,也要用到9×9的數(shù)組,方便后續(xù)使用。

1.游戲的入口-菜單

大致思路:由于菜單至少打印一次,所以在主函數(shù)里用do-while循環(huán)進(jìn)行菜單打印,再用switch語(yǔ)句根據(jù)玩家的選擇進(jìn)行下一步

//test.c
#include "game.h"
void menu()
{
	printf("**********************\n");
	printf("****** 1.play ******\n");
	printf("****** 0.exit ******\n");
	printf("**********************\n");
}

void game()
{

}

int main()
{
	int input = 0;
	do{
		menu();
		printf("請(qǐng)選擇:>");
		scanf("%d", &input);
		switch (input)//根據(jù)玩家選擇進(jìn)行不同操作
		{
		case 1:
			game();
			break;
		case 0:
			printf("退出游戲\n");
			break;
		default:
			printf("輸入錯(cuò)誤,請(qǐng)重新輸入\n");
			break;
			
		}
	} while (input);
	return 0;
}

效果如下:

在這里插入圖片描述

2.棋盤(pán)的初始化

大致思路:創(chuàng)建兩個(gè)char類型的數(shù)組,再使用InitBoard()函數(shù)為其賦值。
這里我們發(fā)現(xiàn)給兩個(gè)數(shù)組初始化的內(nèi)容不同,可以用兩個(gè)函數(shù)來(lái)初始化。

//test.c
...
void game()
{
	char mine[ROWS][COLS];
	char show[ROWS][COLS];
	InitBoard1(mine, ROWS, COLS);
	InitBoard2(show, ROWS, COLS);
}
....
//game.c
#include "game.h"
void InitBoard1(char board[ROWS][COLS], int rows, int cols)
{
	int i = 0;
	int j = 0;
	for (i = 0; i < rows; i++)
	{
		for (j = 0; j < cols; j++)
		{
			board[i][j] = '0';
		}
	}
}
void InitBoard2(char board[ROWS][COLS], int rows, int cols)
{
	int i = 0;
	int j = 0;
	for (i = 0; i < rows; i++)
	{
		for (j = 0; j < cols; j++)
		{
			board[i][j] = '*';
		}
	}
}
//game.h
...
void InitBoard1(char board[ROWS][COLS], int rows, int cols);
void InitBoard2(char board[ROWS][COLS], int rows, int cols);
...

但其實(shí)只需要一個(gè)函數(shù)就能完成對(duì)兩個(gè)數(shù)組賦不同值的操作,我們只需要將數(shù)組需要賦的值作為InitBoard()函數(shù)的參數(shù),就能達(dá)成目的。

InitBoard(mine, ROWS, COLS,'0');
	InitBoard(show, ROWS, COLS,'*');
void InitBoard(char board[ROWS][COLS], int rows, int cols,
char set)
{
	int i = 0;
	int j = 0;
	for (i = 0; i < rows; i++)
	{
		for (j = 0; j < cols; j++)
		{
			board[i][j] = set;
		}
	}
}
void InitBoard(char board[ROWS][COLS], int rows, int cols,char set);

3.展示棋盤(pán)

大致思路,將數(shù)組show的內(nèi)容打印出來(lái)呈現(xiàn)給玩家即可

void game()
{
	char mine[ROWS][COLS];
	char show[ROWS][COLS];
	
	InitBoard(mine, ROWS, COLS,'0');//初始化
	InitBoard(show, ROWS, COLS,'*');//初始化
	
	DisplayBoard(show, ROW, COL);//展示棋盤(pán)
}
void DisplayBoard(char board[ROWS][COLS], int row, int col)
{
	int i = 0;
	int j = 0;
	for (i = 1; i <= row; i++)
	{
		for (j = 1; j <= col; j++)
			printf("%c ", board[i][j]);
		printf("\n");
	}
}
void DisplayBoard(char board[ROWS][COLS], int row, int col);

效果如下:

在這里插入圖片描述

便于提高棋盤(pán)可讀性與美觀性,我們可以在DisplayBoard()函數(shù)里為我們的棋盤(pán)添加行數(shù)、列數(shù)、分隔線。

void DisplayBoard(char board[ROWS][COLS], int row, int col)
{
	printf("------掃雷游戲------\n");
	int i = 0;
	int j = 0;
	for (i = 0; i <= row; i++)
	{
		printf("%d ", i);
	}
	printf("\n");
	for (i = 1; i <= row; i++)
	{
		printf("%d ",i);
		for (j = 1; j <= col; j++)
			printf("%c ", board[i][j]);
		printf("\n");
	}
	printf("------掃雷游戲------\n");
}

效果如下:

在這里插入圖片描述

4.布置雷

大致思路:首先確定雷的個(gè)數(shù)。產(chǎn)生兩個(gè)1-9的隨機(jī)數(shù)x,y作為坐標(biāo),若mine[x][y]的值為'0',則將其改成'1',若mine[x][y]值為'1',則不修改值。將上述操作循環(huán)直至雷的個(gè)數(shù)達(dá)到需求量。在這里我們?cè)贐ombSet()函數(shù)后面使用DisplayBoard()函數(shù),查看一下效果(正式游戲時(shí)需刪除DisplayBoard())。

//game.h
...
#define BOMB_COUNT 10
...
void game()
{
	char mine[ROWS][COLS];
	char show[ROWS][COLS];
	
	InitBoard(mine, ROWS, COLS,'0');//初始化
	InitBoard(show, ROWS, COLS,'*');//初始化
	
	DisplayBoard(show, ROW, COL);//展示棋盤(pán)

	BombSet(mine, ROW, COL, BOMB_COUNT);//布置雷
	DisplayBoard(mine, ROW, COL);//展示棋盤(pán)
}
void BombSet(char board[ROWS][COLS], int row, int col, int count)
{
	while (count)
	{
		int x = rand() % row + 1;//產(chǎn)生1-9的隨機(jī)數(shù)
		int y = rand() % col + 1;
		if (board[x][y] == '0')
		{
			board[x][y] = '1';
			count--;
		}
	}
}
void BombSet(char board[ROWS][COLS], int row, int col, int count);

但是光靠rand()函數(shù)是不能達(dá)到隨機(jī)的效果的,所以我們需要在主函數(shù)中使用srand()函數(shù)保證其隨機(jī)性。

srand((unsigned int)time(NULL));

在這里插入圖片描述

5.掃雷

大致思路:(1).首先我們要根據(jù)玩家輸入的坐標(biāo)來(lái)判斷坐標(biāo)是否合法,其次踩沒(méi)踩雷。如果踩雷,游戲結(jié)束,打印數(shù)組mine(讓玩家“死的瞑目”);沒(méi)踩雷,進(jìn)行下一步。
(2).我們要對(duì)以此坐標(biāo)為中心的3×3區(qū)域進(jìn)行排查,將雷數(shù)(char類型)賦給此坐標(biāo)對(duì)應(yīng)的數(shù)組元素,再打印數(shù)組show,將信息反饋給玩家。
(3).重復(fù)上述步驟。直至當(dāng)非雷區(qū)被排查完時(shí),玩家勝利。

void game
{
...
	SearchBomb(mine, show, ROW, COL);//排雷
}
void SearchBomb(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)
{
	int times = 0;//記錄下子次數(shù)
	while (times+BOMB_COUNT<row*col)//當(dāng)下子次數(shù)+雷數(shù)<棋盤(pán)總格數(shù)時(shí)循環(huán)繼續(xù)
	{
		int x = 0;
		int y = 0;
		printf("請(qǐng)輸入您想排查的坐標(biāo):>");
		scanf("%d%d", &x, &y);
		if (x >= 1 && x <= row && y >= 1 && y <= col)//坐標(biāo)是否合法
		{
			if (mine[x][y] == '1')//判斷是否為雷
			{
				printf("游戲結(jié)束,您被炸死了。\n");
				DisplayBoard(mine, ROW, COL);//打印mine
				break;
			}
			else
			{
				show[x][y] = BombNum(mine, x, y);//獲取雷數(shù)
				DisplayBoard(show, ROW, COL);//打印show
				times++;
			}
		}
		else
			printf("坐標(biāo)非法,請(qǐng)重新輸入!\n");
	}
	if (times + BOMB_COUNT == row*col)//判斷是否勝利
		printf("恭喜您,您成功了!\n");
}
void SearchBomb(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col);
int BombNum(char board[ROWS][COLS], int x, int y)
{
	int i = 0;
	int j = 0;
	int sum = 0;
	for (i = x - 1; i <= x + 1;i++)
	{
		for (j = y - 1; j <= y + 1;j++)
			sum += board[i][j];
	}
	return sum - 9 * '0'+'0';//由于雷是'1',非雷是'0',所以直接相減最后再加'0'使其成為一個(gè)字符
}

BombNum()也可以這樣定義

int BombNum(char board[ROWS][COLS], int x, int y)
{
	return board[x-1][y-1]+board[x-1][y]+board[x-1][y+1]+
	board[x][y-1]+board[x][y+1]+board[x+1][y-1]+board[x+1][y]+
	board[x+1][y+1]-8*'0'+'0';
}
int BombNum(char board[ROWS][COLS], int x, int y);

 

在這里插入圖片描述
在這里插入圖片描述

四.空格展開(kāi)的實(shí)現(xiàn)

如上的設(shè)計(jì)有一個(gè)缺點(diǎn):需要一個(gè)一個(gè)點(diǎn)格子,過(guò)于麻煩。一般的掃雷機(jī)制會(huì)有空格展開(kāi)的機(jī)制:

在這里插入圖片描述

那么在C語(yǔ)言中可以怎樣實(shí)現(xiàn)它呢?此處我想到的是遞歸:如果玩家點(diǎn)擊的格子滿足一定條件,那么程序就會(huì)以它為中心向四面八方繼續(xù)排查,如此遞歸下去,最終就能達(dá)到我們想要的效果。

那么遞歸條件是什么呢?
(1).該格子不是雷。
(2).該格子的附近8格都不是雷。
(3).該格子沒(méi)被排查過(guò)。(防止出現(xiàn)死遞歸)

以下是代碼部分:

void SearchBomb(char mine[ROWS][COLS], char show[ROWS][COLS],
int row, int col)
{
	int times = 0;//記錄排查格子的數(shù)目
	int* p = &times;//獲取times的地址,方便后續(xù)在另一個(gè)函數(shù)對(duì)其進(jìn)行修改
	while (times+BOMB_COUNT<row*col)//循環(huán)條件
	{
		int arr[ROW][COL] = { 0 };//用一個(gè)數(shù)組記錄一個(gè)格子是否被排查過(guò),此處賦值為零,代表都未排查過(guò)   
		int x = 0;
		int y = 0;
		printf("請(qǐng)輸入您想排查的坐標(biāo):>");
		scanf("%d%d", &x, &y);
		if (x >= 1 && x <= 9 && y >= 1 && y <= 9)//坐標(biāo)是否合法
		{
			if (mine[x][y] == '1')//如果是雷
			{
				printf("很遺憾,您被炸死了!\n");
				break;
			}
			else
			{
				Unfold(mine, show, x, y, arr, p);
				DisplayBoard(show, ROW, COL);
			}
		}
		else
			printf("坐標(biāo)非法,請(qǐng)重新輸入!\n");
	}
	if (times + BOMB_COUNT == row*col)//如果非雷區(qū)排查完
		printf("恭喜您,勝利!\n");
}
void Unfold(char mine[ROWS][COLS] ,char show[ROWS][COLS], int x, int y,int arr[ROW][COL],int* pt)
{
	if (arr[x - 1][y - 1] == 0 && x >= 1
	 && x <= 9 && y >= 1 && y <= 9)//判斷此格是否被排查過(guò)以及坐標(biāo)的合法性
	{
		(*pt)++;//排查次數(shù)+1
		arr[x - 1][y - 1] = 1;//代表此格被排查
		if (BombNum(mine, x, y) == '0')//如果附近八格沒(méi)有雷
		{
			show[x][y] = ' ';
			int i = 0;
			int j = 0;
			for (i = x - 1; i <= x + 1; i++)
			{
				for (j = y - 1; j <= y + 1; j++)
				{
						Unfold(mine, show, i, j, arr, pt);//遞歸
				}
			}
		}
		else
		{
			show[x][y] = BombNum(mine, x, y);//有雷則計(jì)算附近雷的數(shù)目,賦值給數(shù)組show對(duì)應(yīng)的元素
		}
	}
}
void Unfold(char mine[ROWS][COLS], char show[ROWS][COLS], int x, int y, int arr[ROW][COL], int* pt);

 

在這里插入圖片描述

五.源碼展示

game.h

#include <stdlib.h>
#include <time.h>
#define ROW 9
#define COL 9
#define ROWS ROW+2
#define COLS COL+2
#define BOMB_COUNT 10

void InitBoard(char board[ROWS][COLS], int rows, int cols, char set);
void DisplayBoard(char board[ROWS][COLS], int row, int col);
void BombSet(char board[ROWS][COLS], int row, int col, int count);
void SearchBomb(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col);
int BombNum(char board[ROWS][COLS], int x, int y);
void Unfold(char mine[ROWS][COLS], char show[ROWS][COLS], int x, int y, int arr[ROW][COL], int* pt);

test.c

#include "game.h"
void menu()
{
	printf("**********************\n");
	printf("****** 1.play ******\n");
	printf("****** 0.exit ******\n");
	printf("**********************\n");
}

void game()
{
	char mine[ROWS][COLS];
	char show[ROWS][COLS];

	InitBoard(mine, ROWS, COLS, '0');//初始化
	InitBoard(show, ROWS, COLS, '*');//初始化

	DisplayBoard(show, ROW, COL);//展示棋盤(pán)

	BombSet(mine, ROW, COL, BOMB_COUNT);//布置雷

	SearchBomb(mine, show, ROW, COL);//排雷
}

int main()
{
	int input = 0;
	do{
		menu();
		printf("請(qǐng)選擇:>");
		scanf("%d", &input);
		switch (input)//根據(jù)玩家選擇進(jìn)行不同操作
		{
		case 1:
			game();
			break;
		case 0:
			printf("退出游戲\n");
			break;
		default:
			printf("輸入錯(cuò)誤,請(qǐng)重新輸入\n");
			break;

		}
	} while (input);
	return 0;
}

game.c

#include "game.h"

void InitBoard(char board[ROWS][COLS], int rows, int cols,
	char set)
{
	int i = 0;
	int j = 0;
	for (i = 0; i < rows; i++)
	{
		for (j = 0; j < cols; j++)
		{
			board[i][j] = set;
		}
	}
}

void DisplayBoard(char board[ROWS][COLS], int row, int col)
{
	printf("------掃雷游戲------\n");
	int i = 0;
	int j = 0;
	for (i = 0; i <= row; i++)
	{
		printf("%d ", i);
	}
	printf("\n");
	for (i = 1; i <= row; i++)
	{
		printf("%d ", i);
		for (j = 1; j <= col; j++)
			printf("%c ", board[i][j]);
		printf("\n");
	}
	printf("------掃雷游戲------\n");
}

void BombSet(char board[ROWS][COLS], int row, int col, int count)
{
	while (count)
	{
		int x = rand() % row + 1;//產(chǎn)生1-9的隨機(jī)數(shù)
		int y = rand() % col + 1;
		if (board[x][y] == '0')//不是雷
		{
			board[x][y] = '1';//布置雷
			count--;
		}
	}
}

void SearchBomb(char mine[ROWS][COLS], char show[ROWS][COLS],
	int row, int col)
{
	int times = 0;//記錄排查格子的數(shù)目
	int* p = &times;//獲取times的地址,方便后續(xù)在另一個(gè)函數(shù)對(duì)其進(jìn)行修改
	while (times + BOMB_COUNT<row*col)//循環(huán)條件
	{
		int arr[ROW][COL] = { 0 };//用一個(gè)數(shù)組記錄一個(gè)格子是否被排查過(guò),此處賦值為零,代表都未排查過(guò)   
		int x = 0;
		int y = 0;
		printf("請(qǐng)輸入您想排查的坐標(biāo):>");
		scanf("%d%d", &x, &y);
		if (x >= 1 && x <= 9 && y >= 1 && y <= 9)//坐標(biāo)是否合法
		{
			if (mine[x][y] == '1')//如果是雷
			{
				printf("很遺憾,您被炸死了!\n");
				break;
			}
			else
			{
				Unfold(mine, show, x, y, arr, p);//展開(kāi)
				DisplayBoard(show, ROW, COL);//給玩家展示棋盤(pán)show
			}
		}
		else
			printf("坐標(biāo)非法,請(qǐng)重新輸入!\n");
	}
	if (times + BOMB_COUNT == row*col)//如果非雷區(qū)排查完
		printf("恭喜您,勝利!\n");
}

int BombNum(char board[ROWS][COLS], int x, int y)
{
	return board[x - 1][y - 1] + board[x - 1][y] + board[x - 1][y + 1] +
		board[x][y - 1] + board[x][y + 1] + board[x + 1][y - 1] + board[x + 1][y] +
		board[x + 1][y + 1] - 8 * '0' + '0';
}

void Unfold(char mine[ROWS][COLS], char show[ROWS][COLS], int x, int y, int arr[ROW][COL], int* pt)
{
	if (arr[x - 1][y - 1] == 0 && x >= 1
		&& x <= 9 && y >= 1 && y <= 9)//判斷此格是否被排查過(guò)以及坐標(biāo)的合法性
	{
		(*pt)++;//排查次數(shù)+1
		arr[x - 1][y - 1] = 1;//代表此格被排查
		if (BombNum(mine, x, y) == '0')//如果附近八格沒(méi)有雷
		{
			show[x][y] = ' ';
			int i = 0;
			int j = 0;
			for (i = x - 1; i <= x + 1; i++)
			{
				for (j = y - 1; j <= y + 1; j++)
				{
					Unfold(mine, show, i, j, arr, pt);//遞歸
				}
			}
		}
		else
		{
			show[x][y] = BombNum(mine, x, y);//有雷則計(jì)算附近雷的數(shù)目,賦值給數(shù)組show對(duì)應(yīng)的元素
		}
	}
}

到此這篇關(guān)于用C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單版9*9掃雷的文章就介紹到這了,更多相關(guān)C語(yǔ)言9*9掃雷小游戲內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++?OpenCV實(shí)現(xiàn)物體尺寸測(cè)量示例詳解

    C++?OpenCV實(shí)現(xiàn)物體尺寸測(cè)量示例詳解

    本文主要介紹了利用OpenCV對(duì)物體的尺寸進(jìn)行測(cè)量,即先定位到待測(cè)物體的位置,然后測(cè)量物體的寬高。感興趣的同學(xué)可以跟隨小編一起學(xué)習(xí)學(xué)習(xí)
    2022-01-01
  • C++實(shí)現(xiàn)LeetCode(108.將有序數(shù)組轉(zhuǎn)為二叉搜索樹(shù))

    C++實(shí)現(xiàn)LeetCode(108.將有序數(shù)組轉(zhuǎn)為二叉搜索樹(shù))

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(108.將有序數(shù)組轉(zhuǎn)為二叉搜索樹(shù)),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 如何利用C++實(shí)現(xiàn)mysql數(shù)據(jù)庫(kù)的連接池詳解

    如何利用C++實(shí)現(xiàn)mysql數(shù)據(jù)庫(kù)的連接池詳解

    為了提高M(jìn)ySQL數(shù)據(jù)庫(kù)的訪問(wèn)的瓶頸,除了在服務(wù)器端增設(shè)緩存服務(wù)器緩存常用的數(shù)據(jù)之外(如redis),還可以增加數(shù)據(jù)庫(kù)連接池,來(lái)提高M(jìn)ySQL Server的訪問(wèn)效率,這篇文章主要給大家介紹了關(guān)于如何利用C++實(shí)現(xiàn)mysql數(shù)據(jù)庫(kù)的連接池的相關(guān)資料,需要的朋友可以參考下
    2021-07-07
  • 詳解C語(yǔ)言中的字符串?dāng)?shù)組

    詳解C語(yǔ)言中的字符串?dāng)?shù)組

    這篇文章主要介紹了C語(yǔ)言中的字符串?dāng)?shù)組,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Opencv透視變換綜合實(shí)例詳解

    Opencv透視變換綜合實(shí)例詳解

    這篇文章主要為大家詳細(xì)介紹了Opencv透視變換綜合實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • 簡(jiǎn)單聊聊C++中線程的原理與實(shí)現(xiàn)

    簡(jiǎn)單聊聊C++中線程的原理與實(shí)現(xiàn)

    C++11?引入了多線程支持,提供了一套基本的線程庫(kù),包括線程、互斥量(mutex)、條件變量(condition_variable)等。這些組件可以幫助你在?C++?程序中實(shí)現(xiàn)并發(fā)和多線程編程,本文就來(lái)和大家簡(jiǎn)單聊聊吧
    2023-03-03
  • c語(yǔ)言實(shí)現(xiàn)整蠱朋友小程序(附源碼)

    c語(yǔ)言實(shí)現(xiàn)整蠱朋友小程序(附源碼)

    這篇文章主要給大家介紹了關(guān)于c語(yǔ)言實(shí)現(xiàn)整蠱朋友小程序的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • C/C++中g(shù)etline函數(shù)案例總結(jié)

    C/C++中g(shù)etline函數(shù)案例總結(jié)

    這篇文章主要介紹了C/C++中g(shù)etline函數(shù)案例總結(jié),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • 怎么通過(guò)C語(yǔ)言自動(dòng)生成MAC地址

    怎么通過(guò)C語(yǔ)言自動(dòng)生成MAC地址

    以下是對(duì)使用C語(yǔ)言自動(dòng)生成MAC地址的實(shí)現(xiàn)代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下
    2013-09-09
  • c++二叉樹(shù)的幾種遍歷算法

    c++二叉樹(shù)的幾種遍歷算法

    c++二叉樹(shù)的幾種遍歷算法,需要的朋友可以參考一下
    2013-02-02

最新評(píng)論