网络安全编程基础--使用结构体数组完成信息录入

2023-05-16

实验1:C语言基础实验

目录

实验1:C语言基础实验

实验步骤分析:

     1、定义结构体:

     2、信息录入

     3、信息修改

     4、信息展示

     5、主函数编写

结果展示:

源代码:


实验设备:   

目标系统:windows

软件工具:VS2022/vc6/dev

实验要求:

  1. 使用结构体数组完成中国四大名著的信息录入,包括:书名,作者,出版社,价格,页码等;
  2. 程序需使用到#define和typedef定义相关内容;
  3. 程序能完成名著的信息修改和展示。

实验步骤分析:

  1. 定义结构体

使用结构体定义相关内容。定义一个名为BOOK的结构体,结构体中定义相关结构成员变量,其中分别表示:Name--书名、Author--作者、Press--出版社、Value--价格、Page--页码。结构体变量book定义为全局数组。

    2、信息录入

编写Entry函数,利用形参变量将相关数据(四大名著的书名,作者,出版社,价格,页码)传到结构体数组中,

     3、信息修改

   编写Modify函数实现信息修改,以输入的i表示需要修改的书的相关内容对应的序号,其中分别表示0-退出 1-书名 2-作者 3-出版社 4-价格 5-页码,利用switch case来实现对应的内容修改,指出修改书籍中的哪一项信息。因为修改后的新信息为char *型,所以在修改price、page时还用到了atoi()函数,将字符数化为整型数。

4、信息展示

编写Show函数实现信息展示,用for循环遍历来展示之前录入在结构体数组中的内容。

5、主函数编写

调用Entry函数,将四大名著的相关信息调入进去,(char*)强制转换,不然编译会出现警告,printf打印相关提示信息。同时调用Show函数实现信息的展示。0,1,2,3表示书本在数组中的位置,即数组下标。

使用while(true),可以实现一直修改书籍信息,除非输入0选项退出,调用Show()函数实现每次修改完的信息展示。

结果展示:

源代码:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#define MAX 4                   //使用宏定义将MAX的值定义为4

typedef struct BOOK{            //定义一个名为BOOK结构体

        char Name[40];              //书名

        char Author[40];            //作者

        char Press[40];             //出版社

        int  Value;                 //价格

        int  Page;                  //页码

}S;                            //结构体别名S

S book[MAX];                   //定义一个全局book数组   

//信息录入

void Entry(int i,char* name,char* author,char* press,int value,int page)

{

        strcpy(book[i].Name,name);

        strcpy(book[i].Author,author);

        strcpy(book[i].Press,press);

        book[i].Value = value;

        book[i].Page = page;

}

//修改书的信息

void Modify(int i)

{

        char str[40];

        int n = 0;

        printf("\n请选择要修改的相关信息对应的序号(0-退出 1-书名 2-作者 3-出版社 4-价格 5-页码 ):\n");

        scanf("%d",&n);

        if(n == 0) return;

        else if(n == 1||n ==2||n == 3||n == 4||n == 5){

                 printf("输入新的信息:");

                 scanf("%s",str);

                 switch(n){

                         case 1:strcpy(book[i].Name,str);break;

                         case 2:strcpy(book[i].Author,str);break;

                         case 3:strcpy(book[i].Press,str);break;

                         case 4:book[i].Value = atoi(str);break;

                         case 5:book[i].Page = atoi(str);break;

                         default:printf("输入错误!");break;

                 }

        }

}

//信息展示

void Show()

{

        for(int i = 0;i < MAX;i++){

                 printf("%8s %8s ",book[i].Name,book[i].Author);

                 printf("%12s %2d %2d\n",book[i].Press,book[i].Value,book[i].Page);        

        }

}             

int main()

{

    //调用Entry函数录入相关信息

        Entry(0,(char*)"西游记",(char*)"吴承恩",(char*)"人民出版社",100,83892);

        Entry(1,(char*)"水浒传",(char*)"施耐庵",(char*)"光明出版社",101,373892);

        Entry(2,(char*)"红楼梦",(char*)"曹雪芹",(char*)"清华出版社",102,262003);

        Entry(3,(char*)"三国演义",(char*)"罗贯中",(char*)"湖南出版社",103,93003);

        printf("当前信息显示:\n");

        printf("  书名     作者     出版社     价格 页码\n");

        Show();

        int n = 0;

        while(1){

                 printf("请选择修改的书籍序号(0-退出 1-西游记 2-水浒传 3-红楼梦 4-三国演义):\n");

                 scanf("%d",&n);

                 if(n == 0) break;

                 else if(n == 1||n == 2||n == 3||n == 4){

                         Modify(n-1);

                         Show();

                 }

                 else printf("输入错误!");    

        }

        return 0;

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

网络安全编程基础--使用结构体数组完成信息录入 的相关文章

  • STM32串口通信 (采用链表接收不定长数据帧)

    STM32串口通信 链表接收不定长数据帧 数据帧说明不太恰当的比方 数据缓冲链表结构效果展示工程文件 数据帧说明 STM32数据寄存器为USARTx gt DR寄存器 可以看到DR寄存器只有 8 0 位可以使用 xff0c 第8位用于奇偶校
  • A*寻路算法

    目录 1 动画演示2 游戏中的自动寻路A 算法3 A 寻路算法原理4 调试代码分析代码5 代码 1 动画演示 2 游戏中的自动寻路A 算法 随着3D游戏的日趋流行 在复杂的3D游戏环境中如何能使非玩家控制角色准确实现自动寻路功能成为了3D游
  • 2022数学建模国赛B题和C题高质量论文代码数据

    目录 B题论文 5 1 问题一的建模与求解 5 1 1 使用极坐标求解具体位置 C题论文 1 1 研究背景 1 2 问题的提 5 1 问题一的建模与求解 5 1 1 数据的预处理 B题论文 5 1 问题一的建模与求解 5 1 1 使用极坐标
  • stm32小白学习之寄存器名称

    IDR输入只读寄存器 xff0c ODR输出可读可写寄存器 BSRR xff08 置位寄存器 xff09 与BRR xff08 复位寄存器 xff09 CRL xff08 端口配置低位寄存器 xff09 与CRH xff08 端口配置高位寄
  • 使用Vite创建Vue3+TS项目并整合Element Plus框架等一条龙服务

    记录一下使用Vite创建Vue3 43 TS项目以及整合Element Plus框架 xff0c 还有Less Pinia Vue router monaco editor等插件或组件 一 使用Vite创建Vue3 43 TS项目 第一步
  • Qt学习 第37节:QString

    在阅读QString文档时 xff0c 出了一个词 implicit sharing copy on write xff0c 不是很懂 xff0c 下面链接解释的表明白 QT的隐式共享 Implicit Sharing 道路与梦想 CSDN
  • 下载Postman并且汉化使用

    下载Postman并且汉化使用 一 下载postman postman有不同的版本 xff0c 如果要汉化就要下载的版本与汉化包一致 下载地址 xff1a postman官网下载地址 xff1a https www postman com
  • 【Vue】postman汉化教程 保姆级教程 包教会

    下载链接 xff1a Win64 Win32 历史版本下载 请把下面链接的 34 版本号 34 替换为指定的版本号 xff0c 例如 xff1a 8 8 0 版本链接Windows32位https dl pstmn io download
  • 操作系统实验——进程与线程

    目录 1 使用GCC xff08 1 xff09 参数 xff08 2 xff09 自定义头文件 xff08 3 xff09 makefile脚本 xff08 4 xff09 gdb调试 2 进程 xff08 1 xff09 新建进程 xf
  • 串口应用(USART)

    串行口应用 1 USART介绍 通用同步异步收发器 USART 提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的 外部设备之间进行全双工数据交换 USART利用分数波特率发生器提供宽范围的波特率选择 它支持同步单向通信和半双工单线
  • cpp-httplib 避免阻塞主线程, c++封装httplib,httplib面向对象开发

    目录 说明 前言原生的httplib会阻塞你的主线程解决httplib阻塞主线程的问题BashController 面向对象风格使用httplib自定义controller MyController h文件自定义controller Tes
  • 数据结构——结构体的5种定义方式及对比

    以下仅为定义结构体的方式 xff0c 具体使用在后续的文章中介绍 span class token macro property span class token directive hash span span class token d
  • 【C++】STL应用(详解)

    一 泛型程序与STL1 泛型程序设计的基本概念2 STL简介 二 迭代器1 输入流迭代器2 输出流迭代器 三 STL应用1 撰写自己的算法和函数 xff0c 结合容器和迭代器解决序列变换 xff08 如取反 平方 立方 xff09 xff0
  • 模块学习(二)——MPU6050

    去年电赛备赛期间 xff0c 学的STM32标准库 xff0c 那一整个繁琐直接给我劝退了 xff0c 当时学习MPU6050时就非常痛苦 xff0c 代码也看不懂 xff0c 无非抄来抄去 xff0c 然后就是编译 xff0c 改错 xf
  • 【嵌入式面试题】常见的面试题梳理一

    注 xff1a 看面试题时 xff0c 主要应该以学习为主 xff0c 面试题有些基本上是我们编程时会遇上的问题 xff0c 通过学习面试题会提升我们的编程意识和解决一些日常我们编程所遇到的问题 xff0c 看完这篇面试题后 xff0c 希
  • 使用Python+openpyxl实现导出自定义样式的Excel文件

    之前项目中的导出Excel文件操作都是在前端完成的 xff0c 项目是由vue 43 vite构建的 xff0c 效果还不错的 xff0c 所需依赖包如下所示 npm i xlsx 64 0 18 5 npm i xlsx style vi
  • 【嵌入式面试题】常见面试题梳理二

    注 xff1a 看面试题时 xff0c 主要应该以学习为主 xff0c 面试题有些基本上是我们编程时会遇上的问题 xff0c 通过学习面试题会提升我们的编程意识和解决一些日常我们编程所遇到的问题 xff0c 看完这篇面试题后 xff0c 希
  • 【嵌入式面试题】常见面试题梳理三

    注 xff1a 看面试题时 xff0c 主要应该以学习为主 xff0c 面试题有些基本上是我们编程时会遇上的问题 xff0c 通过学习面试题会提升我们的编程意识和解决一些日常我们编程所遇到的问题 xff0c 看完这篇面试题后 xff0c 希
  • 【嵌入式面试题】常见面试题梳理四

    注 xff1a 看面试题时 xff0c 主要应该以学习为主 xff0c 面试题有些基本上是我们编程时会遇上的问题 xff0c 通过学习面试题会提升我们的编程意识和解决一些日常我们编程所遇到的问题 xff0c 看完这篇面试题后 xff0c 希
  • 【嵌入式面试题】常见面试题梳理五

    注 xff1a 看面试题时 xff0c 主要应该以学习为主 xff0c 面试题有些基本上是我们编程时会遇上的问题 xff0c 通过学习面试题会提升我们的编程意识和解决一些日常我们编程所遇到的问题 xff0c 看完这篇面试题后 xff0c 希

随机推荐