luming.02无限进步 #我的创作纪念日

简介: luming.02无限进步 #我的创作纪念日

机缘

要说到成为创作者的初衷和机缘的话

       坦白的说,我的初衷并不纯洁,并不是想着单纯的分享经验,交流技术,有部分原因是这玩意看着很炫酷,觉得如果能在某个互联网平台上有很多粉丝,然后还有相关的技术,我觉得这种实在是太酷辣,感觉这是个很拿得出手,很有面子的事情。


       但是随着平常敲代码,学习的过程中,慢慢地就感觉到了那种分享技术和经验然后被别人认可的认同感,就像打游戏打BOSS一样,玩家通过不断的打怪升级,慢慢的提升自己的装备,提升自己的技术和熟练度,最后打败BOSS,这当然是一件非常有成就感的事情,对应到成为创作者的身份,在创作博客的过程中学习,慢慢的提升自己,这就和打BOSS一样,慢慢的就觉得这样的提升自己的过程非常的充实,也能明确的感受到自己自己技术的提升的快乐,于是在这个过程中,就慢慢确定了自己明确的要成为一个创作者


今后的创作分享也不会停止,大多是以一下方面为主


  1. 实战项目中的经验分享
  2. 日常学习过程中的记录
  3. 通过文章进行技术交流

收获

       说起在文章创作的过程中的收获的话,其实最多的还是技术上的收获,从一个懵懂无知的小白变为了稍微知道一点的小白,对计算机这个行业领域的了解也是多了不少,也收获了很多学习方法,同样的也认识了许多志同道合的大佬们,从他们那里也学到了不少,总之,这些收获是无法用数量和物质来言语的,这大多是对个人全方位的提升


要说数据上收获了多少的话,目前大概是下图这样



日常

       慢慢的,写的博客越来越多,分享的代码越来越多,创作的次数越来越频繁,我渐渐意识到,创作已经成为了生活了一部分了,现在大多都是有课上课,没课的话想一想有没有什么创作的点子和灵感,有的话就可以构思怎么去创作怎么去写,如果没有的话可能才会去考虑玩会儿游戏什么的,总的来说就是在有限的精力下,在学校学习之余进行创作


成就

       说到写的最好的代码,我好像还没什么能拿得出手的代码,那这里就放俩个能完整运行的程序吧,一个三子棋,一个通讯录管理系统


三子棋

头文件

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define ROW 3 //定义 行为3
#define COL 3 //定义 列为3
//打印屏幕菜单
void screen();
//初始化
void initialize(char board[ROW][COL], int row, int col);
//打印棋盘
void displayboard(char board[ROW][COL],int row,int col);
//玩家下棋
void palyer_move(char board[ROW][COL], int row, int col);
//电脑下棋
void computer_move(char board[ROW][COL], int row, int col);
//判断输赢
char IsWin(char board[ROW][COL], int row, int col);


函数实现

#define _CRT_SECURE_NO_WARNINGS 1
#include"game.h"
void screen()
{
  printf("--------------------------\n");
  printf("---------1.Play ----------\n");
  printf("--------------------------\n");
  printf("---------2.Esc  ----------\n");
  printf("--------------------------\n");
}
void initialize(char board[ROW][COL], int row, int col)
{
  for (int i = 0; i < row; i++)
  {
    for (int j = 0; j < col; j++)
    {
      board[i][j] = ' ';
    }
  }
}
void displayboard(char board[ROW][COL], int row, int col)
{
  for (int i = 0; i < row; i++)
  {
    for (int j = 0; j < col; j++)
    {
      printf(" %c ", board[i][j]);
      //打印分割列
      if (j < col - 1)
        printf("|");
    }
    //打印分割行
    if (i < row - 1)
      printf("\n---|---|---\n");
  }
  printf("\n");
}
void palyer_move(char board[ROW][COL], int row, int col)
{
  int x = 0;
  int y = 0;
  printf("\n----玩家下棋----\n");
  while (1)
  {
    printf("请输入落子的坐标:");
    scanf("%d %d", &x, &y);
    if (x <= 0 || x > 3 || y <= 0 || y > 3)
    {
      printf("非法输入,请重新输入\n");
    }
    else if (board[x-1][y-1] == ' ')
    {
      board[x-1][y-1] = '*';
      break;
    }
    else
      printf("输入位置被占用,请重新输入\n");
  }
}
void computer_move(char board[ROW][COL], int row, int col)
{
  int x = 0;
  int y = 0;
  printf("\n----电脑下棋----\n");
  while (1)
  {
    int x = rand() % ROW;//使得随机数大小为1--3
    int y = rand() % COL;//使得随机数大小为1--3
    if (board[x][y] == ' ')
    {
      board[x][y] = '#';
      break;
    }
  }
}
static int IsFull(char board[ROW][COL], int row, int col)
{
  int i = 0;
  int j = 0;
  for (i = 0; i < row; i++)
  {
    for (j = 0; j < col; j++)
    {
      if (board[i][j] == ' ')
        return 0;
    }
  }
  return 1;
}
//玩家赢 - '*'
//电脑赢 - '#'
//平局 --- 'Q'
//游戏继续-'C'
char IsWin(char board[ROW][COL], int row, int col)
{
  int i = 0;
  for (i = 0; i < row; i++)
  {
    if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][0] != ' ')
    {
      return board[i][0];
    }
  }
  for (i = 0; i < col; i++)
  {
    if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[0][i] != ' ')
    {
      return board[0][i];
    }
  }
  if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[1][1] != ' ')
  {
    return board[1][1];
  }
  if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[1][1] != ' ')
  {
    return board[1][1];
  }
  //判断平局
  if (IsFull(board, row, col))
  {
    return 'Q';
  }
  return 'C';
}


主函数

#define _CRT_SECURE_NO_WARNINGS 1
#include"game.h"
void game()
{
  //打印棋盘
  void screen();
  char ret = 0;
  char board[ROW][COL] = { 0 };
  initialize(board, ROW, COL);//初始化棋盘
  displayboard(board, ROW, COL);//打印棋盘
  while (1)
  {
    palyer_move(board, ROW, COL);//玩家下棋
    displayboard(board, ROW, COL);//打印棋盘
    //判断输赢
    ret = IsWin(board, ROW, COL);
    if (ret != 'C')
    {
      break;
    }
    computer_move(board, ROW, COL);//电脑下棋
    displayboard(board, ROW, COL);//打印棋盘
    //判断输赢
    ret = IsWin(board, ROW, COL);
    if (ret != 'C')
    {
      break;
    }
  }
  if (ret == '*')
  {
    printf("玩家赢\n");
  }
  else if (ret == '#')
  {
    printf("电脑赢\n");
  }
  else
  {
    printf("平局\n");
  }
}
int main()
{
  srand((unsigned int)time(NULL));
  int input = 0;
  printf("请进行输入确认是否开始游戏\n");
  do
  {
    screen();
    scanf("%d", &input);
    switch (input)
    {
    case 1:
      printf("开始游戏\n");
      printf("三子棋\n");
      game();
      break;
    case 2:
      printf("退出游戏\n");
      break;
    default:
      printf("非法输入,请重新输入\n");
      break;
    }
  } while (input != 2);
  return 0;
}


通讯录管理系统

头文件

#pragma once
#include<stdio.h>
#include<assert.h>
#include<string.h>
#include<stdlib.h>
#define Name_Max 20
#define Tel_Number 12
#define Sex_Max 5
#define Address_Max 30
#define Contact_Max 100
#define Contact_SZ 3
//联系人结构体
typedef struct PeopleInformation
{
  char name[Name_Max];
  char telnumber[Tel_Number];
  int age;
  char sex[Sex_Max];
  char address[Address_Max];
}PeoInfor;
//通讯录结构体
typedef struct Contact
{
  PeoInfor* data;//结构体数组存放联系人结构体
  int size;//记录当前通讯录中有多少个联系人
  int capacity;//记录当前存放的容量
}Contact;
//目录
void menu();
//初始化通讯录
void InitContact(Contact* cp);
//增加联系人
void AddContact(Contact* cp);
//删除联系人
void DelContact(Contact* cp);
//通过姓名进行查找联系人
int FindPeople(Contact* cp, char name[]);
//展示全部通讯录信息
void ShowContact(const Contact* cp);
//查询联系人
void SeachPeople(Contact* cp);
//修改联系人信息
void ModifyContact(Contact* cp);
//jia扩容
void CheckContact(Contact* cp);
//销毁通讯录
void DestoryContact(Contact* cp);
//生成文件,保存通讯录中的数据
void SaveContact(Contact* cp);
//读取文件信息到通讯录
void LoadContact(Contact* cp);



函数实现

#define _CRT_SECURE_NO_WARNINGS 1
#include "Contact.h"
void menu()
{
  printf("\n");
  printf("-----------------------------\n");
  printf("---   1.添加联系人      -----\n");
  printf("---   2.删除联系人      -----\n");
  printf("---   3.查找联系人      -----\n");
  printf("---   4.修改联系人信息  -----\n");
  printf("---   5.显示全部信息    -----\n");
  printf("---   0.退出通讯录      -----\n");
  printf("-----------------------------\n");
}
//读取文件信息到通讯录
void LoadContact(Contact* cp)
{
  //打开文件
  FILE* pf = fopen("contact.txt", "rb");
  if (pf == NULL)
  {
    perror("LoadContact");
    return;
  }
  //读取文件
  PeoInfor temp = { 0 };
  while (fread(&temp, sizeof(PeoInfor), 1, pf))
  {
    CheckContact(cp);
    cp->data[cp->size] = temp;
    cp->size++;
  }
}
//初始化通讯录
void InitContact(Contact* cp)
{
  //判断非空
  assert(cp);
  //初步初始化
  cp->size = 0;
  cp->capacity = Contact_SZ;
  cp->data = (PeoInfor*)calloc(cp->capacity, sizeof(PeoInfor));
  if (cp->data == NULL)
  {
    perror("InitContact->calloc");
    return;
  }
  //读取文件信息到通讯录
  LoadContact(cp);
}
//检查扩容
void CheckContact(Contact* cp)
{
  if (cp->size == cp->capacity)
  {
    PeoInfor* ptr = (PeoInfor*)realloc(cp->data, (cp->capacity + 2) * sizeof(PeoInfor));
    if (ptr != NULL)
    {
      cp->data = ptr;
      cp->capacity += 2;
      printf("增容成功\n");
    }
    else
    {
      perror("AddContact->realloc");
      return;
    }
  }
}
//增加联系人
void AddContact(Contact* cp)
{
  //判断非空
  assert(cp);
  //判断满后扩容
  CheckContact(cp);
  printf("请输入要添加的联系人的姓名:\n");
  scanf("%s", cp->data[cp->size].name);
  printf("请输入要添加的联系人的电话号:\n");
  scanf("%s", cp->data[cp->size].telnumber);
  printf("请输入要添加的联系人的年龄:\n");
  scanf("%d", &(cp->data[cp->size].age));
  printf("请输入要添加的联系人的性别:\n");
  scanf("%s", cp->data[cp->size].sex);
  printf("请输入要添加的联系人的住址:\n");
  scanf("%s", cp->data[cp->size].address);
  cp->size++;
  printf("添加成功\n");
}
//通过姓名进行查找联系人
int FindPeople(Contact* cp, char name[])
{
  assert(cp);
  for (int i = 0; i < cp->size; i++)
  {
    if (strcmp(cp->data[i].name, name) == 0)
    {
      return i;
    }
  }
  return -1;
}
//删除联系人
void DelContact(Contact* cp)
{
  assert(cp);
  char name[Name_Max];
  if (cp->size == 0)
  {
    printf("通讯录为空,无需删除\n");
    return;
  }
  printf("请输入选择删除的联系人的姓名:\n");
  scanf("%s", name);
  int ret = FindPeople(cp, name);
  if (ret == -1)
  {
    printf("要删除的联系人不存在\n");
    return;
  }
  for (int i = ret; i < cp->size - 1; i++)
  {
    cp->data[i] = cp->data[i + 1];
  }
  cp->size--;
  printf("删除成功\n");
}
//查询联系人
void SeachPeople(Contact* cp)
{
  assert(cp);
  char name[Name_Max];
  if (cp->size == 0)
  {
    printf("通讯录为空\n");
    return;
  }
  printf("请输入选择查找的联系人的姓名:\n");
  scanf("%s", name);
  int ret = FindPeople(cp, name);
  if (ret == -1)
  {
    printf("要查找的联系人不存在\n");
    return;
  }
  //名字  年龄  性别    电话    地址
  //xxx   xxx    xxx    xxx     xxx
  printf("%-10s%-5s%-5s%-12s%-30s\n", "名字", "年龄", "性别", "电话", "地址");
  //打印个人的信息
  printf("%-10s%-5d%-5s%-12s%-30s\n", cp->data[ret].name, cp->data[ret].age, cp->data[ret].sex, cp->data[ret].telnumber, cp->data[ret].address);
}
//展示全部通讯录信息
void ShowContact(const Contact* cp)
{
  assert(cp);
  if (cp->size == 0)
  {
    printf("通讯录为空\n");
    return;
  }
  //名字  年龄  性别    电话    地址
  //xxx   xxx    xxx    xxx     xxx
  printf("%-10s%-5s%-5s%-12s%-30s\n", "名字", "年龄", "性别", "电话", "地址");
  for (int i = 0; i < cp->size; i++)
  {
    //打印每个人的信息
    printf("%-10s%-5d%-5s%-12s%-30s\n", cp->data[i].name, cp->data[i].age, cp->data[i].sex, cp->data[i].telnumber, cp->data[i].address);
  }
}
//修改联系人信息
void ModifyContact(Contact* cp)
{
  assert(cp);
  char name[Name_Max];
  if (cp->size == 0)
  {
    printf("通讯录为空\n");
    return;
  }
  printf("请输入选择修改的联系人的姓名:\n");
  scanf("%s", name);
  int ret = FindPeople(cp, name);
  if (ret == -1)
  {
    printf("要修改的联系人信息不存在\n");
    return;
  }
  printf("请输入要修改的联系人的姓名:\n");
  scanf("%s", cp->data[ret].name);
  printf("请输入要修改的联系人的电话号:\n");
  scanf("%s", cp->data[ret].telnumber);
  printf("请输入要修改的联系人的年龄:\n");
  scanf("%d", &(cp->data[ret].age));
  printf("请输入要修改的联系人的性别:\n");
  scanf("%s", cp->data[ret].sex);
  printf("请输入要修改的联系人的住址:\n");
  scanf("%s", cp->data[ret].address);
  printf("修改成功\n");
}
//销毁通讯录
void DestoryContact(Contact* cp)
{
  free(cp->data);
  cp->data = NULL;
  cp->size = 0;
  cp->capacity = 0;
}
//生成文件,保存通讯录中的数据
void SaveContact(Contact* cp)
{
  //打开文件
  FILE* pf = fopen("contact.txt", "wb");
  if (pf == NULL)
  {
    perror("SaveContact");
    return;
  }
  //写文件
  for (int i = 0; i < cp->size; i++)
  {
    fwrite(cp->data + i, sizeof(PeoInfor), 1, pf);
  }
  //关闭文件
  fclose(pf);
  pf = NULL;
}

主函数

#define _CRT_SECURE_NO_WARNINGS 1
#include "Contact.h"
//枚举,增加程序的可读性
enum options
{
  EXIT,
  ADD,
  DEL,
  SEACH,
  MODIFY,
  SHOW
};
int main()
{
  int input = 0;
  //创建通讯录
  Contact con;
  //初始化通讯录
  InitContact(&con);
  do
  {
    menu();
    printf("请输入你的选择: ");
    scanf("%d", &input);
    switch (input)
    {
      //增加联系人信息
    case ADD:
      AddContact(&con);
      break;
      //删除联系人信息
    case DEL:
      DelContact(&con);
      break;
      //查找某个联系人的信息
    case SEACH:
      SeachPeople(&con);
      break;
      //修改某个联系人的信息
    case MODIFY:
      ModifyContact(&con);
      break;
      //展示通讯录内的每一个联系人的信息
    case SHOW:
      ShowContact(&con);
      break;
      //退出通讯录管理系统
    case EXIT:
      SaveContact(&con);
      DestoryContact(&con);
      printf("通讯录已退出\n");
      break;
      //预防非法输入
    default:
      printf("输入错误,请重新输入\n");
      break;
    }
  } while (input);
  return 0;
}


憧憬

创作规划的话,希望今年之内能够拿下博客之心,然后3个月之内能够再发布30篇文章


职业生涯规划当然是希望能进大厂,然后拿到一份体面的工作和工资,希望自己的收获能对得起自己的付出,希望自己无限进步



目录
相关文章
|
3月前
|
开发工具
我的创作纪念日【第三年】
这篇文章是一位博主分享自己写博客三年的经验和收获,包括记录学习知识、分享项目BUG解决经验、以及通过博客提升个人技能和职业发展的过程。
|
6月前
|
大数据
我的创作纪念日
我的创作纪念日
43 0
我的创作纪念日(C++修仙练气期总结)
我的创作纪念日(C++修仙练气期总结)
我的创作纪念日(第256天)
我的创作纪念日(第256天)
60 0
|
人工智能 数据库
热爱英式早餐和烤鸭,点了杯酒保都没听过的酒…细数ChatGPT控制我生活的24小时
热爱英式早餐和烤鸭,点了杯酒保都没听过的酒…细数ChatGPT控制我生活的24小时
216 0
|
云计算
我的创作纪念日——无名之辈的崛起之路
我的创作纪念日——无名之辈的崛起之路
150 0
我的创作纪念日——无名之辈的崛起之路
我的一周年创作纪念日
我的一周年创作纪念日
142 0
我的一周年创作纪念日
|
前端开发 程序员 开发者
十年老友记 | @风逐蓝天:编程是一种表达和创作的方式
十年老友记 | @风逐蓝天:编程是一种表达和创作的方式
132 0
|
运维 大数据 中间件
推荐指数五星丨错过直播!不能再错过的百场技术直播全回顾
云栖社区2017年共举办300余场在线直播,内容涵盖多个技术领域,开发者们可谓是过足了瘾。考虑到大家忙忙碌碌的工作生活,亦或服务给越来越多的“健忘症”群,社区为大家准备了属于2017的餐后甜点,来来来,所有直播这里都有。
17505 0