数据结构 / day02作业

1.

有若干个学校人员的信息,包括学生和教师。 其中学生的数据包括:姓名、性别、职业s/S、分数。 教师的数据包括:姓名、性别、职业t/T、职务。 1,定义指针指向堆区内存 2.循环输入 3.计算老师的个数 4.计算学生的平均值 5.循环输出 6·释放堆区空间

#include <string.h>
#include <stdlib.h>
#include <stdio.h>typedef union diff
{int score;char pos[20];}diff_t;typedef struct person
{char name[20];char gender;char job;diff_t score_or_pos;} person_t;                                                                                   person_t *req_mem(int n);
void input(int n, person_t *parr);
int count(char job, int n, person_t *parr);
void output(int n, person_t *parr);
person_t *free_mem(person_t *parr);
float avg(int n, person_t *parr);int main(int argc, const char *argv[])
{int n=3;//定义指针向堆区的内存person_t *parr=req_mem(n);/*//testperson_t arr_p[]={"zhang", 'f', 's', 98,"li", 'f', 't', "class teacher","wang", 'm', 't', "schoolmaster","zhao", 'f', 's', 97}*///输入input(n, parr);//计算老师个数int teachers = count('t', n, parr);putchar(10);printf("teacher count=%d\n", teachers);int students = count('s', n, parr);putchar(10);printf("students count=%d\n", students);//计算学生的平均值putchar(10);float  av=avg(n, parr);printf("students avg score=%.2lf\n", av);//输出putchar(10);output(n, parr);//释放堆区空间parr=free_mem(parr);return 0;
}person_t *req_mem(int n)
{person_t *p=(person_t*)malloc(sizeof(person_t)*n);if(NULL==p){printf("error");return NULL;}return p;}void input(int n, person_t *parr)                                                                                        
{for(int i=0; i<n; i++){printf("please input %d name:", i+1);scanf("%s", (parr+i)->name);printf("please input  %d gender:", i+1);scanf(" %c", &(parr+i)->gender);printf("please input %d job:", i+1);scanf(" %c", &(parr+i)->job);if('s'==((parr+i)->job) || 'S'==(parr+i)->job){printf("please input %d score:", i+1);scanf("%d", &(parr+i)->score_or_pos.score);}else if('t'==((parr+i)->job) || 'T'==(parr+i)->job){printf("please input %d position:", i+1);scanf("%s", (parr+i)->score_or_pos.pos);}}}int count(char job, int n, person_t *parr)
{int count_s=0;int count_t=0;for(int i=0; i<n; i++){char cj=(parr+i)->job;if(cj=='t'||cj=='T'){count_t++;}else if(cj=='s'||cj=='S'){count_s++;}}if (job=='t'||job=='T'){return count_t;}else if('s'==job||'T'==job){return count_s;}return -1;}      float avg(int n, person_t *parr)
{int sum=0;int count=0;for(int i=0; i<n; i++)                                                                                           {char cj = (parr+i)->job;if('s'==cj||'S'==cj){sum+=(parr+i)->score_or_pos.score;count++;}}if(count>0){return (float)sum*1.0/count;}else{return 0;}}void output(int n, person_t *parr)
{for(int i=0; i<n; i++){printf("No. %d person info:\n", i+1);printf("name=%s, gender=%c, job=%c, ", (parr+i)->name, (parr+i)->gender, (parr+i)->job );char cj=(parr+i)->job;if('s'==cj||'S'==cj){printf("score=%d\n", (parr+i)->score_or_pos.score);}else if('t'==cj||'T'==cj){printf("position=%s\n", (parr+i)->score_or_pos.pos);}putchar(10);}putchar(10);
}person_t *free_mem(person_t *parr)
{if(NULL==parr){return NULL;}free(parr);parr=NULL;return parr;}     
please input 1 name:w
please input  1 gender:f
please input 1 job:s
please input 1 score:90
please input 2 name:a
please input  2 gender:f
please input 2 job:s
please input 2 score:92
please input 3 name:n
please input  3 gender:f
please input 3 job:t
please input 3 position:class teacherteacher count=1students count=2students avg score=91.00No. 1 person info:
name=w, gender=f, job=s, score=90No. 2 person info:
name=a, gender=f, job=s, score=92No. 3 person info:
name=n, gender=f, job=t, position=class

2.

以下结构体使用sizeof 计算大小的结果(默认4字节对齐)

struct s1
{char ch;int a;double b;char c1;};

 

s1-->20
0x00ch
0x01 
0x02 
0x03 
0x04a
0x05 
0x06 
0x07 
0x08b
0x09 
0x0A 
0x0B 
0x0C 
0x0D 
0x0E 
0x0F 
0x20c1
0x21 
0x22 
0x23 

 写一个简单的宏, 交换A, B两数的值(假设两个变量都是char 或int类型)

struct s2
{char ch;int a;double b;};

s2-->16
0x00ch
0x01 
0x02 
0x03 
0x04a
0x05 
0x06 
0x07 
0x08b
0x09 
0x0A 
0x0B 
0x0C 
0x0D 
0x0E 
0x0F 

struct s3
{char i;struct{char c;};char a;char b;char d;char e;char f;};

s3->12
0x00i
0x01 
0x02 
0x03 
0x04c
0x05a
0x06b
0x07d
0x08e
0x09f
0x0A 
0x0B 

3.

写一个简单的宏,交换两数的值(假设两个变量都是char或int类型)

#include <string.h>
#include <stdlib.h>
#include <stdio.h>#define EXCHANGE a=a+b; b=a-b; a=a-b;                                 int main(int argc, const char *argv[])
{int a=2;int b=3;printf("before exchange: a=%d, b=%d\n", a, b );EXCHANGE;printf("afterbefore exchange: a=%d, b=%d\n", a, b );return 0;
}

4.

关键字static有什么含义

1.static修饰全局变量未初始化,默认结果为0

2.static修饰的局部,延长生命周期至本文件有效,但不是作用域

3.static修饰函数, 不可以跨文件调用,static修饰的函数生命周期在本文件有效

4.static修饰指针, static修饰的指针不要指向auto类型的变量地址

5.

思维导图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/182841.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

不同类型的开源许可证

不同类型的开源许可证 什么是开源许可证 最简单的解释是&#xff0c;开源许可证是计算机软件和其他产品的许可证&#xff0c;允许在定义的条款和条件下使用、修改或共享源代码、蓝图或设计。开源并不意味着该软件可以根据需要使用、复制、修改和分发。根据开源许可证的类型&a…

【unity实战】基于权重的随机事件(附项目源码)

文章目录 前言开始一、简单的使用二、完善各种事件1. 完善生成金币事件2. 完善生成敌人事件敌人3. 完善生成药水事件 最终效果参考源码完结 前言 随机功能和UnityEvent前面其实我们都已经做过了&#xff0c;但是随机UnityEvent事件要怎么使用呢&#xff1f;这里就来举一个例子…

由于找不到steam_api64.dll如何修复?steam_api64.dll丢失多种解决方法

steam_api64.dll文件介绍 steam_api64.dll是Steam平台的一个关键组件&#xff0c;主要用于支持Steam客户端和相关游戏的应用程序。这个文件缺失或损坏会导致Steam及相关游戏无法正常运行。它位于Steam安装目录的bin子文件夹中。 steam_api64.dll丢失的原因 系统误删&#xf…

爬虫代理技术与构建本地代理池的实践

爬虫中代理的使用&#xff1a; 什么是代理 代理服务器 代理服务器的作用 就是用来转发请求和响应 在爬虫中为何需要使用代理&#xff1f; 隐藏真实IP地址&#xff1a;当进行爬取时&#xff0c;爬虫程序会发送大量的请求到目标网站。如果每个请求都使用相同的IP地址&#xff…

修复 MyBatis 中空值引起的 SQL 语法错误

修复 MyBatis 中空值引起的 SQL 语法错误 背景 最近在查看别人的项目代码时&#xff0c;遇到了一个问题&#xff1a;数据库中的数据为空。在调试过程中&#xff0c;发现问题出现在调用 MyBatis 中的方法&#xff1a;listByIds(Collection<? extends Serializable> idL…

.net core 封装一个统一的返回结果

public class ApiResponse<T> { public bool Success { get; set; } public T? Data { get; set; } public string? Message { get; set; } public ApiResponse(bool success, T? data, string errorMessage "") { …

矩阵快速幂及应用实战[C/C++]

矩阵快速幂 矩阵快速幂可以用来优化递推问题&#xff0c;如状态机DP&#xff0c;需要一丢丢线性代数里面矩阵的概念&#xff0c;只需要知道简单的矩阵乘法&#xff0c;结合我们普通的二分快速幂就能很快的掌握矩阵快速幂。 问题引入 三步问题。有个小孩正在上楼梯&#xff0c;楼…

一文学会Aiohttp

一、什么是aiohttp库 aiohttp库官网&#xff1a;https://docs.aiohttp.org/en/stable/ aiohttp是一个Python的HTTP客户端/服务器框架&#xff0c;它基于asyncio库实现异步编程模型&#xff0c;可以支持高性能和高并发的HTTP通信。aiohttp用于编写异步的Web服务器、Web应用程序…

【Vulnhub 靶场】【Coffee Addicts: 1】【简单-中等】【20210520】

1、环境介绍 靶场介绍&#xff1a;https://www.vulnhub.com/entry/coffee-addicts-1,699/ 靶场下载&#xff1a;https://download.vulnhub.com/coffeeaddicts/coffeeaddicts.ova 靶场难度&#xff1a;简单 - 中等 发布日期&#xff1a;2021年5月20日 文件大小&#xff1a;1.3 …

【数值计算方法(黄明游)】常微分方程初值问题的数值积分法:欧拉方法(向后Euler)【理论到程序】

文章目录 一、数值积分法1. 一般步骤2. 数值方法 二、欧拉方法&#xff08;Euler Method&#xff09;1. 向前欧拉法&#xff08;前向欧拉法&#xff09;2. 向后欧拉法&#xff08;后向欧拉法&#xff09;a. 基本理论b. 算法实现 常微分方程初值问题的数值积分法是一种通过数值方…

webpack如何处理文件、图片

webpack5之前是通过&#xff0c;file-loader、raw-loader、url-loader处理文件 webpack5是通过使用资源模块类型&#xff08;asset module type&#xff09;处理文件 资源模块类型(asset module type)&#xff0c;通过添加 4 种新的模块类型&#xff0c;来替换所有这些 loade…

Linux常用命令——rm 命令

文章目录 Linux系统中的rm命令是一个非常强大且危险的工具&#xff0c;用于删除文件和目录。由于其具有不可逆的特性&#xff0c;了解其参数和正确使用非常重要。 1. 基本用法 rm命令的基本格式是rm [选项] 文件或目录。不带任何选项时&#xff0c;rm命令仅删除文件。 示例&a…

python读取excel自动化生成sql建表语句和java实体类字段

1、首先准备一个excel文件&#xff1a; idtypenameidint学号namestring姓名ageint年龄sexstring性别weightdecimal(20,4)体重scoredecimal(20,4)分数 2、直接生成java字段和注释&#xff1a; import pandas as pddf pd.read_excel(test.xlsx, sheet_nameSheet1)for i in ran…

java 对象大小计算

说明&#xff1a; 对于64位机&#xff1a;一个对象由三部分组成 对象头(object header) mark word &#xff1a;64bitkclass pointer &#xff1a;32bit(默认使用指针压缩)&#xff0c;如果取消指针压缩( XX:-UseCompressedOops)&#xff0c;则占用64bit数组长度&#xff1a;数…

Zynq-Linux移植学习笔记之67- 国产ZYNQ上通过GPIO模拟MDC/MDIO协议

1、背景介绍 模块上有9个PHY&#xff0c;其中两个PHY通过ZYNQ PS端的MDIO总线连接&#xff0c;其余7个PHY单独通过GPIO进行控制&#xff0c;需要实现GPIO模拟MDC/MDIO协议。 2、vivado工程设计 vivado工程内为每个PHY建立两个GPIO IP核&#xff0c;分别用来代表MDC和MDIO&…

基于BP神经网络的手写体数字识别matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 filename dir(images\*.bmp); %图像文件格式 load BP.matfilename dir(test\*.bmp); …

PyQt基础_009_ 按钮类控件QSlider

基本功能 import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import *class SliderDemo(QWidget):def __init__(self, parentNone):super(SliderDemo, self).__init__(parent)self.setWindowTitle("QSlider 例子") self.resize…

Google play开发者账号付款资料暂停的原因及解决方案

相信大多数Google play开发者都收到过这封邮件 邮件内容的大致意思是“由于可疑的活动&#xff0c;我们暂停了你的付款资料。” “要恢复您的帐户&#xff0c;请转到您的帐户并执行所要求的操作。” 这是触发了谷歌的付款风控机制&#xff0c;根据开发者们的反馈&#xff0c;账…

滴滴打车崩了!全过程

滴滴发布致歉10元补偿券&#xff0c;文末可领取 。 事情发生于 2023年11月27日晚~28日中午&#xff0c;滴滴打车服务出现大面积故障&#xff0c;登上微博热搜。 许多用户在使用滴滴出行时遇到了无法叫车、订单异常等问题&#xff0c;导致大量用户滞留在外&#xff0c;出行受阻…

2023年11月编程语言排行榜——你的编程语言上榜了吗?

编程语言的流行度是一个热门的话题&#xff0c;不同的机构和平台有不同的评判标准和排名方法。本文将以 TIOBE 编程社区指数为例&#xff0c;介绍 2023 年 11 月的编程语言趋势榜单&#xff0c;分析各种编程语言的表现和原因&#xff0c;以及对未来的展望。 TIOBE 编程社区指数…