【头歌C语言程序与设计】结构体共用体枚举类型

news2024/11/29 0:45:42

目录

写在前面

正文

第1关:结构体

第2关:共用体

第3关:枚举类型

写在最后


写在前面

本文代码是我自己所作,本人水平有限,可能部分代码看着不够简练,运行效率不高,但都能运行成功。另外,如果想了解更多,请订阅专栏头歌C语言程序与设计icon-default.png?t=M85Bhttps://blog.csdn.net/m0_73222051/category_12106390.html


正文

第1关:结构体

本关任务:统计生日相同的学生。现在给出每个学生的学号生日,请你找出所有生日相同的学生。

右侧编辑器中有一个函数Count,请在此函数中读取数据统计结果。

输入数据,有多行,第一行是一个整数n0<=n<50),接下来有n条学生的信息。每一条学生的信息都按照此格式给出:<学号> <生日月份> <生日日期>,其中学号是5位的字符串

输出数据,输出生日相同的学生的学号,输出要求如下

  • 对每组生日相同的学生,输出一行。

  • 其中前两个数字表示月和日,后面跟着所有在当天出生的学生的学号,数字、学号之间都用一个空格分隔,简单起见,最后一个学号后面也有一个空格。

  • 对所有的输出,要求按日期从前到后的顺序输出。

  • 对生日相同的学号,按输入的顺序输出。

预期输入:

5

00001 1 10

00002 2 24

00003 1 10

00004 12 21

00005 12 21

预期输出:

1 10 00001 00003

12 21 00004 00005

#include <iostream>
using namespace std;
#include<string.h>
/**********   Begin   **********/
struct stuinfo //储存输入学生的信息
{
    char id[6];
    int year;
    int month;
}stu[50];  //给50的空间是因为0<=n<50
 
struct birs //储存输出学生的信息
{
    int nums;
    int year;
    int month;
    char ids[50][6];
}bir[50]={0};
void Count()
{
    int n,i,j,k=0;
    scanf("%d",&n);
    //输入n个学生信息
    for(i=0;i<n;i++)
        scanf("%s%d%d",stu[i].id,&stu[i].year,&stu[i].month);
    //处理
    for(i=0;i<n;i++)
    {
        for(j=0;j<k;j++)
        {
            if(bir[j].year == stu[i].year && bir[j].month == stu[i].month)
                break;
        }
        if(j==k)
        {
            bir[k].month = stu[i].month;
            bir[k].year = stu[i].year;
            strcpy(bir[k].ids[0],stu[i].id);
            bir[k].nums = 1;
            k++;
        }
        else
        {
            strcpy(bir[j].ids[bir[j].nums],stu[i].id);
            bir[j].nums++;
        }
    }
    //输出
    for(i=0;i<k;i++)
    {
        if(bir[i].nums > 1)
        {
            printf("%d %d ",bir[i].year,bir[i].month);
            for(j=0;j<bir[i].nums;j++)
                printf("%s ",bir[i].ids[j]);
            printf("\n");
        }
    }
}
/**********   End   **********/

第2关:共用体

!!!你只需设计一个数据类型!!!

本关任务:设计一个门牌号数据类型RoomID,它需要包含以下几个成员变量:

  • build:字符类型,代表门牌号中的楼栋号部分。

  • floor:字符类型,代表门牌号中的楼层号部分。

  • room:字符类型,代表门牌号中的房间号部分。

  • id:字符串类型,代表整个门牌号。

要求修改id时,对应的buildfloorroom也会随之修改。同理,修改buildfloorroomid也会随之修改。

输入:每组输入有多行。第一行的第一个数据是初始的门牌号,第二个数据是接下来的**命令条数n**。接下来n行是命令。命令总共三种:bfr,分别进行修改楼栋号,楼层号,房间号的动作。

输出:系统会分别输出初始门牌号的各个部分,而执行了一条命令后,会输出完整的门牌号(即id成员的值)。

测试输入:

A31 2

b B

f 5

预期输出:

楼栋:A 楼层:3 房间:1

B31

B51

#include <iostream>
using namespace std;
/**********   Begin   **********/

union RoomID
{
   struct
   {
      char build;
      char floor;
      char  room;
   };
   char id[4];
};
/**********   End   **********/

第3关:枚举类型

本关任务:计算工作一周的工资。现在给出工厂的员工小明的上班记录以及工厂的每小时工资,请你求出他工作所能得到的报酬。

工资计算标准:在周一至周五,按实际工作小时计算。而在周六工作时间按实际工作小时的1.5倍计算,周日工作时间按实际工作小时2.0倍计算。

数据输入:第一行的第一个数是每小时的工资(**浮点类型float**),第二个数是小明的上班次数n。下面n行则是小明的上班记录,每一行的格式是<星期> <工作时间>,其中<星期>取值为1-7,代表星期一到星期日,<工作时间>为一个整数,代表小明这次上班的时长。

测试输入:

12.5 4

1 10

5 8

6 12

7 12

预期输出:

750

#include <iostream>
using namespace std;
/**********   Begin   **********/
enum WeekDay
{
    Mon = 1, Tues, Wed, Thurs, Fri, Sat, Sun
}week;

void Sum()
{
	float money;
	int day,sum,time;
 
	scanf("%f%d",&money,&day);
 
	for(int i = 0;i<day;i++){
		scanf("%d%d",&week,&time);
 
		switch(week)
        {
			case Mon:
			case Tues:
			case Wed:
			case Thurs:
			case Fri:
				sum+=money*time;
				break;
			case Sat:
				sum+=1.5*money*time;
				break;
			case Sun:
				sum+=2*money*time;
				break;
		}
 
	}
	printf("%d",sum);
}
/**********   End   **********/

写在最后

👍🏻点赞,你的认可是我创作的动力!

⭐收藏,你的青睐是我努力的方向!

✏️评论,你的意见是我进步的财富!

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

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

相关文章

C++ 智能指针

目录 为什么需要智能指针&#xff1f; RAII 智能指针的原理 C智能指针的历史 智能指针 auto_ptr unique_ptr shared_ptr shared_ptr 引用计数解决智能指针拷贝问题 shared_ptr 循环引用问题 智能指针删除器 weak_ptr 为什么需要智能指针&#xff1f; 1. 我们在很多…

基于 SSM 的 CRM 客户管理系统

1&#xff1a;通过点击【登录】按钮&#xff0c;获取登录的接口地址 2&#xff1a;在UserLoginController类中&#xff0c;增加登录接口 3&#xff1a;首先判断用户名是否存在&#xff0c;其次判断匹配是否匹配 4&#xff1a;处理session问题 代码如下&#xff1a; UserLo…

java计算机毕业设计ssm智能会议室管理系统0v396(附源码、数据库)

java计算机毕业设计ssm智能会议室管理系统0v396&#xff08;附源码、数据库&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xf…

TAPD新增需求自动通知飞书

【实现效果&#xff1a;】TAPD新增需求/缺陷&#xff0c;可以自动通知飞书机器人并通知相关人员&#xff0c;让相关人员可以及时关注到新增需求/缺陷并及时处理。 【流程配置】 第一步&#xff1a;打开腾讯云HiFlow模版中心&#xff0c;搜索打开“TAPD需求/项目更新实时通知飞…

C# !(null包容)运算符的使用

总目录 文章目录总目录前言一、!(null包容&#xff09;运算符是什么&#xff1f;二、!(null包容&#xff09;运算符如何使用&#xff1f;1.使用2.扩展-预处理器指令启用或关闭null检查总结前言 本文主要讲解&#xff01;&#xff08;null包容&#xff09;运算符的使用&#xf…

艾美捷科研专用西妥昔单抗Cetuximab相关介绍

西妥昔单抗&#xff08;Cetuximab&#xff09;&#xff0c;商品名尔必得舒&#xff08;Erbitux&#xff09;&#xff0c;是美商英克隆公司和美商百时美施贵宝的专-利药。西妥昔单抗是一种对抗表皮生长因子受体&#xff08;EGFR&#xff09;的单克隆抗体&#xff0c;经美国食品药…

MySQL表的增删查改(下)

作者&#xff1a;~小明学编程 文章专栏&#xff1a;MySQL 格言&#xff1a;目之所及皆为回忆&#xff0c;心之所想皆为过往 今天给大家分享的是增删查改中的一些比较核心的东西同时也是难点&#xff0c;希望能给大家带来一些帮助吧。 目录 数据库的约束 NULL约束 Unique的…

数据结构C语言版 —— 顺序表增删改查实现

文章目录顺序表1. 线性表2. 顺序表3. 顺序表基本概念4. 顺序表实现顺序表初始化顺序表的扩容顺序表的插入顺序表的删除顺序表的查找顺序表的修改顺序表的销毁5. 顺序表总结顺序表 1. 线性表 线性表&#xff1a;线性表是由n个具有相同特性的数据元素组成的序列。线性表是一种在…

【DevOps】总结下容器方式构建Grafana-reporter生成PDF格式报告

目录 Grafana-reporter1、编写Dockerfile2、构建镜像3、运行Grafana-reporter4、在Grafana配置Link即文章:【DevOps】Prometheus+Grafana:生成pdf报表总结下Grafana-reporter镜像打包过程 最终pdf实现效果类似: Grafana-reporter 简介:“A simple http service that gen…

[附源码]Python计算机毕业设计仿咸鱼二手物品交易系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

TCP/IP 网络原理【TCP篇】

&#x1f389;&#x1f389;&#x1f389;写在前面&#xff1a; 博主主页&#xff1a;&#x1f339;&#x1f339;&#x1f339;戳一戳&#xff0c;欢迎大佬指点&#xff01; 目标梦想&#xff1a;进大厂&#xff0c;立志成为一个牛掰的Java程序猿&#xff0c;虽然现在还是一个…

joinquant量化是什么?是主流的量化平台吗?

joinquant量化是什么&#xff1f;我们做量化投资的时候&#xff0c;目前比较流行的平台&#xff0c;我推荐的是这三个&#xff0c;一个是Ricequant&#xff0c;另外一个是JoinQuant&#xff0c;还有一个QUANTOPIAN&#xff0c;国内实际上就是优矿。这几个现在比较流行&#xff…

git分支管理

分支管理&#xff08;拙见&#xff09; 1&#xff0c;首先master分支是最高级别分支。不可编辑 2&#xff0c;创建一个release分支&#xff0c;从master上拉取&#xff0c;用于上线分支 3&#xff0c;创建dev开发分支&#xff0c;从relase分支拉取&#xff0c;如果有开发环境…

裸辞美团花两月吃透这 Java 岗 798 道真题解析,定级阿里 P7

2023 的面试即将到来&#xff0c;大家准备的怎么样了呢&#xff1f;你有没有正在为此而发愁呢&#xff1f;那么一起来看看小编整理的这富含的 15 个互联网大厂 Java 高级工程师核心面试问题整理吧&#xff01;已助我在 2023 年的金三银四跳槽季中拿到阿里 P7. 内容包括&#x…

Stm32旧版库函数9——ADC读取电压值

#include <stm32f10x_lib.h> #include "adc.h" unsigned char i0; u16 ad[3]{0,0,0}; //初始化ADC //这里我们仅以规则通道为例 void Adc_init(void) { //先初始化…

Unity - Baking System - 烘焙失效的问题

文章目录环境问题解决方法环境 unity : 2020.2.5f1, 2020.3.37f1 pipeline : BRP 问题 我之前有去搜索过场景烘焙失效的问题&#xff0c;都是 unity 发包后和 unity Editor 下运行不同&#xff1a;发包后丢失 烘焙效果&#xff0c;一般都是说&#xff1a;shader 中的 Lightma…

【Hive】分隔符 『 单字节分隔符 | 多字节分隔符』

文章目录1. 概述2. 单字节分隔符方法&#xff1a;使用delimited关键字3. 其它复杂情况方式一&#xff1a;写MR程序进行字符替换转为单字节分隔符问题&#xff08;不推荐&#xff09;方式二&#xff1a;自定义InputFormat转为单字节分隔符问题&#xff08;不推荐&#xff09;方式…

矩阵

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 车车的爱之矩阵是一个行数为 n&#xff0c;列数为 m 的矩阵并满足以下条件: 111. 矩阵元素 xij​ 为整数并满足 0<∣xij​∣⩽114514。 222. 对于在矩阵边界的元素&#xff0c;即 iii 为 1 或…

[附源码]Node.js计算机毕业设计非处方药的查询与推荐系统Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

Flutter - ScrollController 滚动监听及控制

1 ScrollController jumpTo(double offset)、animateTo(double offset,…)&#xff1a;这两个方法用于跳转到指定的位置&#xff0c;它们不同之处在于&#xff0c;后者在跳转时会执行一个动画&#xff0c;而前者不会。 实例 点击按钮返回顶部 ,且按钮在list滑动一定距离后才…