最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言小項目實戰(zhàn)之通訊錄功能

 更新時間:2025年01月29日 10:23:14   作者:王磊鑫  
這篇文章主要介紹了如何設(shè)計和實現(xiàn)一個簡單的通訊錄管理系統(tǒng),包括聯(lián)系人信息的存儲、增加、刪除、查找、修改和排序等功能,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

功能介紹:

1.聯(lián)系人信息:姓名+年齡+性別+地址+電話

2.通訊錄中可以存放100個人的信息

3.功能:

1>增加聯(lián)系人

2>刪除指定聯(lián)系人

3>查找指定聯(lián)系人的信息

4>修改指定聯(lián)系人的信息

5顯示所有聯(lián)系人的信息

6>排序(名字)

  我們將采用模塊化設(shè)計,分為三個模塊:

1. test.c         ———        測試通訊錄

2. contact.c   ———        通訊錄的聲明

3. contact.h    ———       函數(shù)的聲明

  首先,我們需要一個菜單,以及主函數(shù)選擇功能的部分。

```test.c
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
 void menu()
{
    printf("*******************歡迎來到你的通訊錄*******************\n");
    printf("**********1.添加聯(lián)系人************2.刪除聯(lián)系人**********\n");
    printf("**********3.查找聯(lián)系人************4.修改聯(lián)系人**********\n");
    printf("**********5.顯示聯(lián)系人************6.聯(lián)系人排序**********\n");
    printf("**********0.退出通訊錄*********************************\n");
    printf("*******************歡迎來到你的通訊錄*******************\n");
}
int main()
{
    int input = 0;
    do {
        menu();
        printf("請選擇:>");
        scanf("%d", &input);
 
    switch (input)
    {
    case 1:
        break;
    case 2:
        break;
    case 3:
        break;
    case 4:
        break;
    case 5:
        break;
    case 6:
        break;
    case 0:
        printf("退出通訊錄");
        break;
    default:
        printf("選擇錯誤\n");
        break;
    }
   } while (input);
	return 0;
}
```
  • main函數(shù)中,使用do-while循環(huán)不斷調(diào)用menu函數(shù)顯示菜單,并使用scanf函數(shù)獲取用戶的輸入。然后通過switch語句根據(jù)用戶的輸入執(zhí)行相應(yīng)的操作,如果輸入為0,則輸出 “退出通訊錄” 并結(jié)束程序;如果輸入為其他值,則輸出 “選擇錯誤”。

那么通訊錄中肯定需要人的信息,那么這些人的信息,我們可以把他封裝成一個結(jié)構(gòu)體。我們將這些類型信息放進(jìn)頭文件中,在這里我們將它放進(jìn)已經(jīng)創(chuàng)建好的contact.h中。

```contact.h
//人的信息
typedef struct Peopleinform
{
	char name[40];
	int age;
	char sex[5];
	char addr[20];
	char telephone[20];
}Peopleinform;
```

在這里,我們定義了一個名為Peopleinform的結(jié)構(gòu)體類型,用于存儲人員的信息。我們通過使用typedef關(guān)鍵字,可以為這個結(jié)構(gòu)體類型定義一個別名Peopleinform,這樣在后續(xù)的代碼中就可以直接使用Peopleinform來聲明該類型的變量,而不需要每次都寫完整的struct Peopleinform。

我們繼續(xù)往下寫,接下來我們創(chuàng)建通訊錄,我們可以聲明一個名為data的數(shù)組,數(shù)組的元素類型為Peopleinform結(jié)構(gòu)體,當(dāng)然我們在這里必須添加contact.h頭文件才能使用它。代碼部分如下:

```test.c
#include<stdio.h>
#include"contact.h"
/* --省略void menu部分--*/
int main()
{
    int input = 0;
    //創(chuàng)建通訊錄
    Peopleinform data[100];
    do {
        menu();
        printf("請選擇:>");
        scanf("%d", &input);
    
    /*-- 省略switch部分 --*/
        } while (input);
    return 0;
}
```

 在我們的項目中,自己創(chuàng)建的頭文件通常用雙引號''"包裹起來,這樣我們就可以在.c文件中使用它啦!當(dāng)然,我們?nèi)绻堰@個通訊錄存放人的信息的容量,以及可以顯示的當(dāng)前創(chuàng)建的人的信息封裝起來,變成一個結(jié)構(gòu)體。為了方便之后修改我們增加一個預(yù)處理器指令#define MAX 100

```contact.h
#define MAX 100
typedef struct Contact
{
	Peopleinform data[MAX];//存放人的信息的容量
	int sz;//當(dāng)前存放信息的個數(shù)
}Contact;
```

那么我們?nèi)绻朐谥骱瘮?shù)中使用,只需要創(chuàng)建一個名為conContact類型的對象。這樣就可以使用con來存儲和操作通訊錄相關(guān)的數(shù)據(jù)了。接著我們初始化通訊錄。并在contact.h頭文件中為他聲明。

```test.c
int main()
{
    int input = 0;
    //創(chuàng)建通訊錄
    Contact con;//創(chuàng)建一個名為con的Contact對象
    //初始化通訊錄
    InitContact(&con);
    do {
        menu();
        printf("請選擇:>");
        scanf("%d", &input);
        /*-- 省略switch部分 --*/
    } while (input);
```
```contact.h
void InitContact(Contact *pc);
```

接下來,contact.c文件終于出場了,由于我們在contact.h頭文件聲明過void InitContact(Contact *pc); 接下來,我們就可以在contact.c直接使用它。

我們給這個Contact結(jié)構(gòu)體的函數(shù)初始化一下:

```contact.c
#include"contact.h"
void InitContact(Contact* pc)
{
    pc->sz=0;
   memset(pc->data,0,sizeof(pc->data));
}
```

這里我們選擇使用memset函數(shù)進(jìn)行初始化,

(注:memset函數(shù)是 C 標(biāo)準(zhǔn)庫中的一個函數(shù),定義在<string.h>頭文件中。它的作用是將一段內(nèi)存區(qū)域設(shè)置為指定的值。函數(shù)原型為void *memset(void *s, int c, size_t n),其中s是指向要填充的內(nèi)存塊的指針,c是要設(shè)置的值,n是要填充的字節(jié)數(shù)。) 

緊接著,我們在Switch()語句中,加入我們目前需要的語句,我們現(xiàn)在來寫添加聯(lián)系人模塊。

添加聯(lián)系人模塊

```contact.h
//增加聯(lián)系人
void AddContact(Contact* pc);
```
```contact.c
void AddContact(Contact* pc)
{
	if (pc->sz == MAX)
	{
		printf("通訊錄已滿!無法添加!\n");
		return;
	}
	//增加一個人的信息
	printf("請輸入名字:>");
	scanf("%s", pc->data[pc->sz].name);
	printf("請輸入年齡:>");
	scanf("%s", &pc->data[pc->sz].age);
	printf("請輸入性別:>");
	scanf("%s", pc->data[pc->sz].sex);
	printf("請輸入地址:>");
	scanf("%s", pc->data[pc->sz].addr);
	printf("請輸入電話:>");
	scanf("%s", pc->data[pc->sz].telephone);
	pc->sz++;
}
```

(注:在InitContactAddContact函數(shù)中,pc用于訪問和修改調(diào)用者提供的Contact結(jié)構(gòu)體實例。當(dāng)調(diào)用這些函數(shù)時,傳遞的是Contact結(jié)構(gòu)體變量的地址,函數(shù)內(nèi)部通過這個指針來操作外部傳入的結(jié)構(gòu)體。)

pc-sz++; 的作用 

假設(shè) sz 初始值為 5,執(zhí)行 pc->sz++; 后,sz 的值變?yōu)?nbsp;6 ,表示通訊錄中聯(lián)系人的數(shù)量從 5 個增加到了 6 個。 這對于跟蹤通訊錄中實際存儲的聯(lián)系人數(shù)量非常重要,在后續(xù)的操作,如顯示聯(lián)系人列表、檢查通訊錄是否已滿等功能中,都依賴這個計數(shù)。

顯示聯(lián)系人模塊

顯示聯(lián)系人模塊也是一樣,我們現(xiàn)將函數(shù)聲明放在頭文件當(dāng)中,

void ShowContact(const Contact* pc);

然后我們用一個for循環(huán)遍歷pc->data數(shù)組,其中,pc->data數(shù)組存儲了所有聯(lián)系人的信息,循環(huán)條件i < pc->sz確保只遍歷已存儲聯(lián)系人的部分,pc->sz表示當(dāng)前通訊錄中實際存儲的聯(lián)系人數(shù)量。

```contact.c
void ShowContact(Contact* pc)
{
	int i = 0;
    printf("%s\t%-5s\t%-5s\t%-5s\t%-5s\t\n", "姓名","年齡","性別","地址","電話");
	for (i = 0; i < pc->sz; i++)
	{
		printf("%s\t%d\t%s\t%s\t%s\t",pc->data[i].name,
									  pc->data[i].age,
									  pc->data[i].sex,
									  pc->data[i].addr,
									  pc->data[i].telephone);
	}
}
```

這樣,我們就基本完成了這個顯示聯(lián)系人的設(shè)計啦!那么緊接著,我們?nèi)绻胍獎h除這個指定的聯(lián)系人,該怎么辦呢?和上面一樣,我們先在頭文件中添加一個聲明。

void DelContact(Contact* pc);

接著,我們在contact.c文件中去構(gòu)建這個刪除聯(lián)系人模塊,

刪除聯(lián)系人模塊

void DelContact(Contact* pc)
{
	if (pc->sz ==0)
	{
		printf("無可刪除的聯(lián)系人");
		return;
	}
	//刪除
	//找到要刪除的人
	printf("請輸入要刪除的人的名字:");
	scanf("%s", name);
	int i = 0;
	int del = 0;
	for (i = 0; i<pc->sz; i++)
	{
		if(strcmp(pc->data[i].name,name))==0
		{
			del = i;
			break;
		}
		//刪除
		for (i = 0; i < pc->sz; i++)
		{
			pc->data[i] = pc->data[i + 1];
		}
		pc->sz--;
		printf("刪除成功");
	}
}

當(dāng)我們通訊錄里面沒有聯(lián)系人的時候,我們輸出“無可刪除的聯(lián)系人”。接著,我們使用 for 循環(huán)遍歷聯(lián)系人列表,使用 strcmp 函數(shù)比較每個聯(lián)系人的名字和輸入的名字,如果相等則將該元素的索引存儲在 del 中并跳出循環(huán)。

那么接下來,我們可以發(fā)現(xiàn)的是,無論是刪除模塊、查找模塊和修改模塊中,我們都需要先找到聯(lián)系人,才能進(jìn)行下一步的操作,既然都需要,我們似乎就可以把這個查找部分封裝成一個函數(shù),

// 根據(jù)姓名查找聯(lián)系人在數(shù)組中的位置,如果找到返回對應(yīng)索引,未找到返回 -1
int FINDBY_NAME(const Contact* pc, char name[])
{
	int i = 0;
	for (i = 0; i < pc->sz; i++)
	{
		if (strcmp(pc->data[i].name, name) == 0) // 比較字符串是否相等
		{
			return i; // 找到返回索引
		}
	}
	return -1; // 未找到返回 -1
}

 替換后代碼如下:

// 刪除聯(lián)系人的函數(shù)
void DelContact(Contact* pc)
{
	if (pc->sz == 0)
	{
		printf("沒有聯(lián)系人可刪除\n");
		return;
	}
	// 輸入要刪除的聯(lián)系人姓名
	char name[40] = { 0 };
	printf("請輸入要刪除的聯(lián)系人姓名: ");
	scanf("%s", name);

	int ret = FINDBY_NAME(pc, name);
	if (ret == -1)
	{
		printf("要刪除的聯(lián)系人不存在\n");
		return;
	}

	// 刪除操作,將后面的元素依次往前移
	for (int i = ret; i < pc->sz - 1; i++)
	{
		pc->data[i] = pc->data[i + 1];
	}
	pc->sz--;
	printf("刪除成功\n");
}

我們來看查找聯(lián)系人模塊,

查找聯(lián)系人模塊

void SerContact(const Contact* pc)
{
	char name[NAME_MAX] = { 0 };
	printf("請輸入要查找人的名字:");
		scanf("%s",name);
	int pos = FINDBY_NAME(pc, name);
	if (-1 == pos)
	{
		printf("要查找的人不存在\n");
		return;
	}
	//打印信息
	printf("%s\t%-5s\t%-5s\t%-5s\t%-5s\t\n", "姓名", "年齡", "性別", "地址", "電話");
	printf("%s\t%-5d\t%-5s\t%-5s\t%-5s\t\n", pc->data[pos].name,
		pc->data[pos].age,
		pc->data[pos].sex,
		pc->data[pos].addr,
		pc->data[pos].telephone);
}

 我們查找模塊,首先輸入要查找的聯(lián)系人姓名,調(diào)用 FINDBY_NAME 函數(shù)查找該聯(lián)系人的位置,如果不存在則提示聯(lián)系人不存在并返回。否則,打印該聯(lián)系人的詳細(xì)信息。

緊接著,我們再來看修改聯(lián)系人,

修改聯(lián)系人模塊

//修改聯(lián)系人
void ReviContact(Contact* pc)
{
	char name[NAME_MAX] = { 0 };
	printf("請輸入要修改人的名字:");
		scanf("%s", name);
	int pos = FINDBY_NAME(pc, name);
	if (-1 == pos)
	{
		printf("要修改的人不存在\n");
		return;
	}
	printf("請輸入名字:>");
	scanf("%s", pc->data[pos].name);
	printf("請輸入年齡:>");
	scanf("%d", &pc->data[pos].age);
	printf("請輸入性別:>");
	scanf("%s", pc->data[pos].sex);
	printf("請輸入地址:>");
	scanf("%s", pc->data[pos].addr);
	printf("請輸入電話:>");
	scanf("%s", pc->data[pos].telephone);

	printf("修改完成\n");
}

我們想要修改聯(lián)系人,首先肯定需要找到這個聯(lián)系人,所以我們首先要查找,輸入要修改的聯(lián)系人姓名,調(diào)用FINDBY_NAME函數(shù)可以查找該聯(lián)系人的位置,如果不存在則提示聯(lián)系人不存在并返回。否則,依次輸入新的聯(lián)系人信息。

排序聯(lián)系人模塊

最后一個模塊,就是對這些聯(lián)系人進(jìn)行排序,這里使用使用冒泡排序算法,比較相鄰聯(lián)系人的姓名,如果前一個聯(lián)系人的姓名大于后一個聯(lián)系人的姓名,則交換它們的位置。

// 排序聯(lián)系人(按姓名升序排序)
void SortContact(Contact* pc)
{
	int i, j;
	Peopleinform temp;
	for (i = 0; i < pc->sz - 1; i++)
	{
		for (j = 0; j < pc->sz - i - 1; j++)
		{
			if (strcmp(pc->data[j].name, pc->data[j + 1].name) > 0)
			{
				temp = pc->data[j];
				pc->data[j] = pc->data[j + 1];
				pc->data[j + 1] = temp;
			}
		}
	}
	printf("聯(lián)系人已按姓名排序\n");
}

strcmp 是 C 語言標(biāo)準(zhǔn)庫 <string.h> 中的一個字符串比較函數(shù),用于比較兩個字符串的大小。

函數(shù)原型int strcmp(const char *str1, const char *str2);

在 SortContact 函數(shù)中,strcmp(pc->data[j].name, pc->data[j + 1].name) > 0 表示如果 pc->data[j].name 這個字符串在字典序上大于 pc->data[j + 1].name 這個字符串,就交換這兩個聯(lián)系人的信息,從而實現(xiàn)按姓名排序的功能。

源代碼如下:

```contact.h
#pragma once
#include<stdio.h>
#include<string.h>
#define MAX 100
#define NAME_MAX 40  // 定義 NAME_MAX 的大小
// 個人信息
typedef struct Peopleinform
{
    char name[40];
    int age;
    char sex[5];
    char addr[20];
    char telephone[20];
}Peopleinform;
typedef struct Contact
{
    Peopleinform data[MAX];// 存儲個人信息的數(shù)組
    int sz;// 當(dāng)前存儲信息的數(shù)量
}Contact;

// 初始化通訊錄
void InitContact(Contact* pc);
// 添加聯(lián)系人
void AddContact(Contact* pc);
// 刪除聯(lián)系人
void DelContact(Contact* pc);
// 查找聯(lián)系人
void SerContact(const Contact* pc);
// 修改聯(lián)系人
void ReviContact(Contact* pc);
// 排序聯(lián)系人
void SortContact(Contact* pc);
// 顯示聯(lián)系人
void ShowContact(const Contact* pc);
```
```contact.c
#define _CRT_SECURE_NO_WARNINGS
#include"contact.h"
void InitContact(Contact* pc)
{
	pc->sz = 0;
	memset(pc->data, 0, sizeof(pc->data));
}
void AddContact(Contact* pc)
{
	char name[NAME_MAX] = { 0 };
	if (pc->sz == MAX)
	{
		printf("通訊錄已滿!無法添加!\n");
		return;
	}
	//增加一個人的信息
	printf("請輸入名字:>");
	scanf("%s", pc->data[pc->sz].name);
	printf("請輸入年齡:>");
	scanf("%d", &pc->data[pc->sz].age);
	printf("請輸入性別:>");
	scanf("%s", pc->data[pc->sz].sex);
	printf("請輸入地址:>");
	scanf("%s", pc->data[pc->sz].addr);
	printf("請輸入電話:>");
	scanf("%s", pc->data[pc->sz].telephone);
	pc->sz++;
}

// 根據(jù)姓名查找聯(lián)系人在數(shù)組中的位置,如果找到返回對應(yīng)索引,未找到返回 -1
int FINDBY_NAME(const Contact* pc, char name[])
{
	int i = 0;
	for (i = 0; i < pc->sz; i++)
	{
		if (strcmp(pc->data[i].name, name) == 0) // 比較字符串是否相等
		{
			return i; // 找到返回索引
		}
	}
	return -1; // 未找到返回 -1
}

// 刪除聯(lián)系人的函數(shù)
void DelContact(Contact* pc)
{
	if (pc->sz == 0)
	{
		printf("沒有聯(lián)系人可刪除\n");
		return;
	}
	// 輸入要刪除的聯(lián)系人姓名
	char name[40] = { 0 };
	printf("請輸入要刪除的聯(lián)系人姓名: ");
	scanf("%s", name);

	int ret = FINDBY_NAME(pc, name);
	if (ret == -1)
	{
		printf("要刪除的聯(lián)系人不存在\n");
		return;
	}

	// 刪除操作,將后面的元素依次往前移
	for (int i = ret; i < pc->sz - 1; i++)
	{
		pc->data[i] = pc->data[i + 1];
	}
	pc->sz--;
	printf("刪除成功\n");
}
//查找聯(lián)系人
void SerContact(const Contact* pc)
{
	char name[NAME_MAX] = { 0 };
	printf("請輸入要查找人的名字:");
		scanf("%s",name);
	int pos = FINDBY_NAME(pc, name);
	if (-1 == pos)
	{
		printf("要查找的人不存在\n");
		return;
	}
	//打印信息
	printf("%s\t%-5s\t%-5s\t%-5s\t%-5s\t\n", "姓名", "年齡", "性別", "地址", "電話");
	printf("%s\t%-5d\t%-5s\t%-5s\t%-5s\t\n", pc->data[pos].name,
		pc->data[pos].age,
		pc->data[pos].sex,
		pc->data[pos].addr,
		pc->data[pos].telephone);
}
//修改聯(lián)系人
void ReviContact(Contact* pc)
{
	char name[NAME_MAX] = { 0 };
	printf("請輸入要修改人的名字:");
		scanf("%s", name);
	int pos = FINDBY_NAME(pc, name);
	if (-1 == pos)
	{
		printf("要修改的人不存在\n");
		return;
	}
	printf("請輸入名字:>");
	scanf("%s", pc->data[pos].name);
	printf("請輸入年齡:>");
	scanf("%d", &pc->data[pos].age);
	printf("請輸入性別:>");
	scanf("%s", pc->data[pos].sex);
	printf("請輸入地址:>");
	scanf("%s", pc->data[pos].addr);
	printf("請輸入電話:>");
	scanf("%s", pc->data[pos].telephone);

	printf("修改完成\n");
}
// 排序聯(lián)系人(按姓名升序排序)
void SortContact(Contact* pc)
{
	int i, j;
	Peopleinform temp;
	for (i = 0; i < pc->sz - 1; i++)
	{
		for (j = 0; j < pc->sz - i - 1; j++)
		{
			if (strcmp(pc->data[j].name, pc->data[j + 1].name) > 0)
			{
				temp = pc->data[j];
				pc->data[j] = pc->data[j + 1];
				pc->data[j + 1] = temp;
			}
		}
	}
	printf("聯(lián)系人已按姓名排序\n");
}

// 顯示所有聯(lián)系人信息的函數(shù)
void ShowContact(const Contact* pc)
{
	int i = 0;
	printf("%s\t%-5s\t%-5s\t%-5s\t%-5s\t\n", "姓名", "年齡", "性別", "地址", "電話");
	for (i = 0; i < pc->sz; i++)
	{
		printf("%s\t%d\t%s\t%s\t%s\n", pc->data[i].name,
			pc->data[i].age,
			pc->data[i].sex,
			pc->data[i].addr,
			pc->data[i].telephone);
	}
}
```
```test.c
#define _CRT_SECURE_NO_WARNINGS
#include"contact.h"
 void menu()
{
    printf("*******************歡迎來到你的通訊錄*******************\n");
    printf("**********1.添加聯(lián)系人************2.刪除聯(lián)系人**********\n");
    printf("**********3.查找聯(lián)系人************4.修改聯(lián)系人**********\n");
    printf("**********5.顯示聯(lián)系人************6.聯(lián)系人排序**********\n");
    printf("**********0.退出通訊錄**********************************\n");
    printf("*******************歡迎來到你的通訊錄*******************\n");
}
int main()
{
    int input = 0;
    //創(chuàng)建通訊錄
    Contact con;//創(chuàng)建一個名為con的Contact對象
    //初始化通訊錄
    InitContact(&con);
    do {
        menu();
        printf("請選擇:>");
        if (scanf("%d", &input) != 1) {
            // 處理輸入錯誤的情況,例如提示用戶重新輸入
            printf("輸入錯誤,請重新輸入\n");
            // 清空輸入緩沖區(qū)
            while (getchar() != '\n');
            
            continue;
        }
    
    switch (input)
    {
    case 1:
        AddContact(&con);
        break;
   case 2:
        DelContact(&con);
        break;
   case 3:
        SerContact(&con);
        break;
    case 4:
        ReviContact(&con);
        break;
    case 5:
        ShowContact(&con);
        break;
    case 6:
        SortContact(&con);
    case 0:
        printf("退出通訊錄");
        break;
    default:
        printf("選擇錯誤\n");
        break;
    }
   } while (input!=0);
}
```

總結(jié)

到此這篇關(guān)于C語言小項目實戰(zhàn)之通訊錄功能的文章就介紹到這了,更多相關(guān)C語言通訊錄內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++學(xué)習(xí)之如何進(jìn)行內(nèi)存資源管理

    C++學(xué)習(xí)之如何進(jìn)行內(nèi)存資源管理

    與java、golang等自帶垃圾回收機(jī)制的語言不同,C++并不會自動回收內(nèi)存,這往往會導(dǎo)致內(nèi)存泄漏和內(nèi)存溢出等問題,所以掌握C++中的內(nèi)存管理技巧和工具是非常重要的,本文就來和大家詳細(xì)講講
    2023-05-05
  • 利用Matlab實現(xiàn)時域分析功能的示例詳解

    利用Matlab實現(xiàn)時域分析功能的示例詳解

    利用MATLAB可以方便地進(jìn)行控制系統(tǒng)的時域分析。這篇文章主要通過簡單的示例為大家介紹了Matlab進(jìn)行時域分析的具體操作,需要的可以參考一下
    2023-02-02
  • C語言解決堆棧括號匹配問題示例詳解

    C語言解決堆棧括號匹配問題示例詳解

    這篇文章主要為大家介紹了C語言堆棧括號匹配問題示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2021-11-11
  • C++實現(xiàn)LeetCode(173.二叉搜索樹迭代器)

    C++實現(xiàn)LeetCode(173.二叉搜索樹迭代器)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(173.二叉搜索樹迭代器),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • websocket++簡單使用及實例分析

    websocket++簡單使用及實例分析

    下面小編就為大家?guī)硪黄獁ebsocket++簡單使用及實例分析。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • C++中sprintf()函數(shù)的使用詳解

    C++中sprintf()函數(shù)的使用詳解

    本篇文章是對C++中sprintf()函數(shù)的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • Visual Studio Code 2020安裝教程及CPP環(huán)境配置(教程圖解)

    Visual Studio Code 2020安裝教程及CPP環(huán)境配置(教程圖解)

    這篇文章主要介紹了Visual Studio Code 2020安裝教程、CPP環(huán)境配置,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • C++實現(xiàn)簡單貪吃蛇小游戲

    C++實現(xiàn)簡單貪吃蛇小游戲

    這篇文章主要為大家詳細(xì)介紹了C++實現(xiàn)簡單貪吃蛇小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • C語言實現(xiàn)拼圖游戲

    C語言實現(xiàn)拼圖游戲

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)拼圖游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 使用C++實現(xiàn)鏈表元素的反轉(zhuǎn)

    使用C++實現(xiàn)鏈表元素的反轉(zhuǎn)

    反轉(zhuǎn)鏈表是鏈表操作中一個經(jīng)典的問題,也是面試中常見的考題,本文將從思路到實現(xiàn)一步步地講解如何實現(xiàn)鏈表的反轉(zhuǎn),幫助初學(xué)者理解這一操作,我們將使用C++代碼演示具體實現(xiàn),同時分析時間復(fù)雜度和空間復(fù)雜度,需要的朋友可以參考下
    2025-02-02

最新評論

莆田市| 襄城县| 尚志市| 新乐市| 朝阳县| 图们市| 洛阳市| 鹰潭市| 遵义市| 翁源县| 武义县| 博客| 安康市| 和政县| 威信县| 察雅县| 咸丰县| 东港市| 浪卡子县| 海淀区| 清镇市| 牡丹江市| 大兴区| 田东县| 英山县| 南皮县| 久治县| 芦溪县| 鄂温| 高清| 蒙山县| 扎鲁特旗| 阳东县| 凤山市| 上栗县| 仁寿县| 维西| 武宁县| 湘潭市| 禄劝| 新绛县|