【C/PTA —— 15.结构体2(课外实践)】

C/PTA —— 15.结构体2(课外实践)

  • 7-1 一帮一
  • 7-2 考试座位号
  • 7-3 新键表输出
  • 7-4 可怕的素质
  • 7-5 找出同龄者
  • 7-6 排队
  • 7-7 军训

7-1 一帮一

在这里插入图片描述

#include<stdio.h>
#include<string.h>struct student
{int a;char name[20];
};struct student1
{int b;char name1[20];
};int main()
{struct student  s1[50];struct student1 s2[50];struct student1 s3[50];int i, n, j = 0, t = 0, c, d;scanf("%d", &n);for (i = 0; i < n; i++){scanf("%d %s", &s1[i].a, s1[i].name);}for (i = 0; i < n; i++){if (s1[i].a == 1){s2[j].b = i;strcpy(s2[j].name1, s1[i].name);j++;}if (s1[i].a == 0){s3[t].b = i;strcpy(s3[t].name1, s1[i].name);t++;}}c = n / 2 - 1, d = n / 2 - 1;j = 0, t = 0;for (i = 0; i < n / 2; i++){if (s3[j].b < s2[t].b){printf("%s %s\n", s3[j].name1, s2[c].name1);j++;c--;}else{printf("%s %s\n", s2[t].name1, s3[d].name1);t++;d--;}}return 0;
}

7-2 考试座位号

在这里插入图片描述

#include<stdio.h>
struct student
{char num[17];int s;int k;
};int main()
{int n = 0;scanf("%d", &n);struct student stu[1000]={0};for (int i = 0; i < n; i++){scanf("%s %d %d", stu[i].num, &stu[i].s, &stu[i].k);}int m = 0,ret;     scanf("%d", &m);for (int i = 0; i < m; i++){scanf("%d", &ret);int j=0;for (j = 0; j < n; j++){if (ret == stu[j].s){printf("%s %d\n", stu[j].num, stu[j].k);}}}return 0;
}

7-3 新键表输出

在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>// 定义链表节点结构体
typedef struct ListNode {int val;struct ListNode* next;
} ListNode;// 定义头节点指针
ListNode* createList() {ListNode* head = NULL;int num;while (1) {scanf("%d", &num);if (num == -1) {break;}ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));newNode->val = num;newNode->next = NULL;if (head == NULL) {head = newNode;} else {ListNode* cur = head;while (cur->next != NULL) {cur = cur->next;}cur->next = newNode;}}return head;
}// 遍历链表,将奇数值节点插入新链表
ListNode* createNewList(ListNode* head) {ListNode* newHead = NULL;ListNode* cur = head;while (cur != NULL) {if (cur->val % 2 != 0) {ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));newNode->val = cur->val;newNode->next = NULL;if (newHead == NULL) {newHead = newNode;} else {ListNode* temp = newHead;while (temp->next != NULL) {temp = temp->next;}temp->next = newNode;}}cur = cur->next;}return newHead;
}// 打印链表
void printList(ListNode* head) {ListNode* cur = head;printf("%d", cur->val);cur = cur->next;while (cur != NULL) {printf(" %d", cur->val);cur = cur->next;}printf("\n");
}int main() {// 创建链表ListNode* head = createList();// 创建新链表ListNode* newHead = createNewList(head);// 打印新链表printList(newHead);return 0;
}

7-4 可怕的素质

在这里插入图片描述

#include <stdio.h>
#include<stdlib.h>
typedef struct student student;
struct student{int ret;struct student *next;
};
student *insert(int n);
void prin(student*,int n);
int main(){int n;student *stu1;scanf("%d", &n);stu1=insert(n);prin(stu1, n);return 0;
}
void prin(student*stu1,int n){student *p = stu1->next;while(p!=NULL){if(p->next!=NULL)printf("%d ", p->ret);elseprintf("%d", p->ret);p = p->next;}
}
student *insert(int n){student *head;head = (struct student*) malloc(sizeof(student));head->next = NULL;student *p = head, *q;int pos = 0;for (int i = 1; i <= n;i++){scanf("%d", &pos);q = (struct student *)malloc(sizeof(student));q->ret = i;q->next = NULL;if(i==1){head->next = q;}else if(pos==0){q->next = head->next;head->next = q;}else if(pos!=0){p = head->next;while(p->ret!=pos){p = p->next;}q->next = p->next;p->next = q;}}return head;
}

7-5 找出同龄者

在这里插入图片描述

#include<stdio.h>
typedef struct student
{char name[10];int age;
}student;
int main()
{int n = 0;student stu[100];scanf("%d", &n);for (int i = 0; i < n; i++){scanf("%s %d", stu[i].name, &stu[i].age);}int m = 0;scanf("%d", &m);int j = 0;for (int i = 0; i < n; i++){if (stu[i].age != m){printf("%s", stu[i].name);j = i;break;}}for (int i = j + 1; i < n; i++){if (stu[i].age != m){printf(" %s", stu[i].name);}}return 0;
}

7-6 排队

在这里插入图片描述

#include<stdio.h>
#include<stdlib.h>
typedef struct student student;
//还是双链表好用
struct student{student *prior;student *next;int ri, bi, fi,ret;double height;student *arret;
};
student* create(int n){student *head, *p, *q;head = (student*)malloc(sizeof(student));head->prior = NULL;head->next = NULL;head->arret = NULL;for (int i = 1; i <= n;i++){q = (student*)malloc(sizeof(student));scanf("%lf", &q->height);q->ret = i;if(i==1){head->next = q;head->arret = q;q->arret = NULL;q->prior = head;q->next = NULL;}else {p->next = q;p->arret = q;q->arret = NULL;q->prior = p;q->next = NULL;}p = q;}return head;
}
void swap(student *p1,student *p2){student *p1f, *p1b, *p2f, *p2b;p1f = p1->prior;p1b = p1->next;p2f = p2->prior;p2b = p2->next;p1f->next = p1b;p1b->prior = p1f;p1b->next = p2f;p2f->prior = p1b;p2f->next = p2b;if(p2b!=NULL)p2b->prior = p2f;
}
int main(){int n;scanf("%d", &n);student *stu1;stu1=create(n);student *p = stu1->next;for (int i = 1; i < n;i++){p = stu1->next;for (int j = 1; j < n - i + 1;j++){if(p->height<p->next->height){swap(p,p->next);}else p = p->next;}}p = stu1->next;for (int i = 1; i <= n;i++){if(i==1){p->fi = 0;p->bi = p->next->ret;}else if(i==n){p->bi = 0;p->fi = p->prior->ret;}else {p->fi = p->prior->ret;p->bi = p->next->ret;}p->ri = i;p = p->next;}p = stu1->arret;for (int i = 1; i <= n;i++){printf("%d %d %d\n", p->ri, p->fi, p->bi);p = p->arret;}return 0;
}

7-7 军训

在这里插入图片描述

#include<stdio.h>
#include<stdlib.h>
typedef struct queue queue;
struct queue{int rank;queue *prior;queue *next;int size;
};
void print(queue *queue1){queue *p = queue1->next;while(p!=NULL){if(p->next!=NULL)printf("%d ", p->rank);elseprintf("%d\n", p->rank);p = p->next;}
}
queue *delete_LB(queue *queue1){queue *k = queue1;queue1->prior->next = queue1->next;if(queue1->next!=NULL)queue1->next->prior = queue1->prior;queue1 = queue1->prior;free(k);return queue1;
}
queue *create(int n){queue *head;queue *p, *q;head = (queue*)malloc(sizeof(queue));head->prior = NULL;head->next = NULL;for (int i = 1; i <= n;i++){q = (queue *)malloc(sizeof(queue));q->rank = i;if(i==1){head->next = q;q->prior = head;q->next = NULL;}else {p->next = q;q->prior = p;q->next = NULL;}p = q;}return head;
}
int main(){int n;scanf("%d", &n);queue document[105];queue *a;for (int i = 1; i <= n;i++){int count;scanf("%d", &count);a = create(count);a->size = count;queue *p;while(a->size>3){p = a->next;for (int j = 1; j <= count; j++){if (j % 2 == 0)//这里无需判断是否size>3,因为无论是否满足,都必须在进行的一轮内将所有2的报数删除;{p=delete_LB(p);a->size--;}p = p->next;}count = a->size;p = a->next;if(a->size>3)//这里加上size>3的判断才能保证n=40的情况下37不会被删除,否则还会进行一次j=3时的删除操作;特殊情况(即处理完上一轮2的报数后size恰好为3,但是此时没有加入判断的话循环会继续运行,会多删除1项){for (int j = 1; j <= count; j++){if (j % 3 == 0) {p = delete_LB(p);a->size--;}p = p->next;}}count = a->size;}document[i] = *a;}for (int i = 1; i <= n;i++){print(&document[i]);}return 0;
}

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

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

相关文章

前端-杂记

1 子域请求时候会默认带上父域下的Coolkie 2 document.cookie 设置cookie只能设置当前域和父域&#xff0c;且path只能是当前页或者/ 比如当前页面地址为 http://localhost:3000/about 我们设置 document.cookie "demo11"; 设置 document.cookie "demo22; …

项目实战之RabbitMQ死信队列应用

&#x1f9d1;‍&#x1f4bb;作者名称&#xff1a;DaenCode &#x1f3a4;作者简介&#xff1a;啥技术都喜欢捣鼓捣鼓&#xff0c;喜欢分享技术、经验、生活。 &#x1f60e;人生感悟&#xff1a;尝尽人生百味&#xff0c;方知世间冷暖。 文章目录 &#x1f31f;架构图&#x…

Linux---网络时间服务器

本章主要介绍网络时间服务器。 使用chrony配置时间服务器配置chrony客户端向服务器同步时间 时间同步的必要性 一些服务对时间要求非常严格&#xff0c;例如&#xff0c;下图所示的由三台服务器搭建的ceph集群。 这三台服务器的时间必须保持一致&#xff0c;如果不一致&am…

Linux——操作系统与进程的基础概念

操作系统与进程的基础概念 本章思维导图&#xff1a; 注&#xff1a;思维导图对应的.xmind和.png文件都已同步导入至资源 1. 操作系统&#xff08;OS&#xff09; 操作系统的基本概念&#xff1a; 操作系统(operator system)简称OS&#xff0c;是一个管理软硬件资源的软件 1.…

Maven基础知识

Maven是一款用于管理和构建Java项目的工具 Maven的作用&#xff1a; 依赖管理&#xff1a;方便快捷的管理项目依赖的jar包&#xff0c;避免版本冲突问题统一项目结构&#xff1a;提供标准统一的项目结构项目构建&#xff1a;标准跨平台的自动化项目构建方式 maven创建的工程…

Linux下的I2C驱动框架以及代码实现

参考资料&#xff1a; 1、Linux IIC 驱动分析 — 框架分析 - 知乎 (zhihu.com) 2、《Linux驱动开发指南》第十一章 3、《正点原子 I.MX6U嵌入式Linux驱动开发指南 V1.6》 4、《Linux设备驱动开发详解》 代码版本&#xff1a;Linux4.1.15 阅读本文需要先有一定的I2C基础以及Linu…

【UE5】瞬移+马赛克过渡效果

效果 步骤 1. 新建一个工程&#xff0c;创建一个Basic关卡 2. 添加第三人称游戏资源到内容浏览器 3. 新建一个材质&#xff0c;这里命名为“M_Pixel” 打开“M_Pixel”&#xff0c;设置材质域为“后期处理” 在材质图表中添加如下节点 此时效果如下&#xff0c;已经有马赛克的…

视频处理关键知识

1 引言 视频技术发展到现在已经有100多年的历史&#xff0c;虽然比照相技术历史时间短&#xff0c;但在过去很长一段时间之内都是最重要的媒体。由于互联网在新世纪的崛起&#xff0c;使得传统的媒体技术有了更好的发展平台&#xff0c;应运而生了新的多媒体技术。而多媒体技术…

【教程】逻辑回归怎么做多分类

目录 一、逻辑回归模型介绍 1.1 逻辑回归模型简介 1.2 逻辑回归二分类模型 1.3 逻辑回归多分类模型 二、如何实现逻辑回归二分类 2.1 逻辑回归二分类例子 2.2 逻辑回归二分类实现代码 三、如何实现一个逻辑回归多分类 3.1 逻辑回归多分类问题 3.1 逻辑回归多分类的代…

Leetcode—198.打家劫舍【中等】

2023每日刷题&#xff08;五十二&#xff09; Leetcode—198.打家劫舍 算法思想 具体思路 首先&#xff0c;我们从上面的题目描述中抽象出题意。 ● 从一个非负整数数组中找到一个子序列&#xff0c;并且该子序列的和最大 ● 子序列中每个数的位置不能够相邻。举例来讲&…

Leetcode—1466.重新规划路线【中等】

2023每日刷题&#xff08;五十二&#xff09; Leetcode—1466.重新规划路线 算法思想 实现代码 class Solution { public:int minReorder(int n, vector<vector<int>>& connections) {vector<pair<int, int>> g[n];for(auto e: connections) {in…

JS的变量提升ES6基础

JS的变量提升&ES6基础 变量var关键字var声明作用域实例一实例二多个变量 变量提升 let关键字暂时性死区全局声明for循环中使用let const关键字 变量 ECMAScript变量时松散类型的&#xff0c;意思是变量可以用于保存任何类型的数据。 声明变量&#xff1a;var 、const、let …

阶梯电价1_分支结构 C语言xdoj27

题目&#xff1a;阶梯电价计费 类别&#xff1a;流程控制 时间限制&#xff1a;2S 内存限制&#xff1a;10000Kb 问题描述&#xff1a; 电价分三个档次&#xff0c;[0,110]度电&#xff0c;每度电0.5元&#xff1b;(110,210]度电&#xff0c;超出110部分每度电0.55元&…

git-vscode

git-vscode ctrlshiftp 创建分支 create branch 直接切到新的分支了 切换分支 直接点左下角自己选择 vscode中配置仓库 https://blog.csdn.net/zora_55/article/details/129709251 推送tag tag作用就是在 Git 中&#xff0c;标记存储库历史记录中特定提交的一种方式。t…

【Linux】无法使用 screenfetch 查看系统信息,报错 command not found: screenfetch

问题描述 screenfetch是一个命令行工具&#xff0c;用于在终端显示系统的硬件和软件信息。它会收集各种系统和环境的信息&#xff0c;并以彩色 ASCII 艺术的形式在终端中展示出来。 当你在终端中运行screenfetch命令时&#xff0c;它会检测你的操作系统、主机名、内核版本、C…

IntelliJ IDEA 2023.3发布,更新AI助手,运行相当流畅,再也不卡了

这两天Jetbrains来了一波大的更新&#xff0c;推出了2023.3正式版&#xff0c;均做了不少优化&#xff0c;最重要的是大家期待已久的Ai Assistant插件本次更新也正式推出&#xff0c;助力大家提高Coding效率。但是很遗憾&#xff0c;目前我们无法使用&#xff0c;因为该插件底层…

[架构之路-256]:目标系统 - 设计方法 - 软件工程 - 软件设计 - 架构设计 - 软件系统不同层次的复用与软件系统向越来越复杂的方向聚合

目录 前言&#xff1a; 一、CPU寄存器级的复用&#xff1a;CPU寄存器 二、指令级复用&#xff1a;二进制指令 三、过程级复用&#xff1a;汇编语言 四、函数级复用&#xff1a;C语言 五、对象级复用&#xff1a;C, Java, Python 六、组件级复用 七、服务级复用 八、微…

计算机视觉-03-使用U-Net实现肾脏CT分割(包含数据和代码)

文章目录 0. 数据获取1. 介绍1.1 简介1.2 任务介绍1.3 数据集介绍1.3.1 介绍1.3.2 数据预处理建议 1.4 代码实现参考1.5 训练过程1.5.1 参数设置1.5.2 可视化1.5.3 结果分析 0. 数据获取 关注公众号&#xff1a;『AI学习星球』 回复&#xff1a;肾脏CT分割 即可获取数据下载。…

高精度时钟芯片SD2405

概要 SD2405是一款非常优秀的RTC解决方案&#xff0c;为了能让用户在Arduino上有一款方便易用的时钟模块。该模块是一款内置晶振&#xff0c;支持IIC串行接口的高精度时钟模块&#xff1b;内置一次性工业级电池&#xff0c;可保证外部掉电的情况下&#xff0c;可以继续工作5~8…

实例分割 Mask-RCNN

参考文章 使用LabelMe标注目标检测数据集并转换为COCO2017格式_labelme转coco-CSDN博客 数据集选择 voc 这次不选择voc&#xff0c;因为文件组织太难了 voc2012文件夹组织 COCO COCO介绍 MC COCO2017年主要包含以下四个任务&#xff1a;目标检测与分割、图像描述、人体关…