【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);
        else
            printf("%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);
        else
            printf("%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;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JavaWeb-HTTP协议

1. 什么是HTTP协议 HTTP超文本传输协(Hyper Text transfer protocol)&#xff0c;是一种用于用于分布式、协作式和超媒体信息系统的应用层协议。它于1990年提出&#xff0c;经过十几年的使用与发展&#xff0c;得到不断地完善和扩展。HTTP 是为 Web 浏览器与 Web 服务器之间的…

新生儿出生缺陷筛查的关键注意事项

引言&#xff1a; 新生儿的出生缺陷是一个复杂而广泛的问题&#xff0c;及早的筛查和诊断对于预防和管理这些缺陷至关重要。出生缺陷可能涉及各个系统&#xff0c;包括心脏、神经、遗传等&#xff0c;因此及时而全面的筛查对新生儿的健康至关重要。本文将深入探讨新生儿出生缺…

Matlab 点云对称性检测

文章目录 一、简介二、实现代码三、实现效果参考文献一、简介 这是一个很有趣的功能,它的思路其实与ICP算法的思路有些相似: 首先,它会初始化两个旋转角度,即绕x轴旋转与绕y轴旋转,初始的过程是将点对称(镜像)过去,计算与匹配点之间的距离误差,误差最小者为最优初始值…

抖店店铺没流量?商品销售量低?原因在于这几个!

我是电商珠珠 近期&#xff0c;很多人来跟我反馈&#xff0c;说自己的店铺没有流量和曝光&#xff0c;更别提出单了。 其实&#xff0c;想要自己的店铺月销百万&#xff0c;每天要做的工作有很多&#xff0c;比如分析市场、选品上架、优化、对接达人等&#xff0c;想要自己的…

JAVA后端自学技能实操合集

JAVA后端自学技能实操 内容将会持续更新中,有需要添加什么内容可以再评论区留言,大家一起学习FastDFS使用docker安装FastDFS(linux)集成到springboot项目中 内容将会持续更新中,有需要添加什么内容可以再评论区留言,大家一起学习 FastDFS 组名&#xff1a;文件上传后所在的 st…

网站建设app开发小程序制作|企业软件定制

网站建设app开发小程序制作|企业软件定制 网站建设和软件开发是现代社会非常重要的领域&#xff0c;它们对于企业、机构和个人来说都具有非常大的意义。随着移动互联网的快速发展&#xff0c;小程序制作也逐渐成为一种非常受欢迎的方式。 在过去&#xff0c;建立一个网站需要具…

Andorid sudio 换行方法

1.遇到的问题&#xff0c;二维码内容要换行 String text "成绩&#xff1a;1000 \n姓名&#xff1a;张三 \n姓名&#xff1a;张三 \n姓名&#xff1a;张三 \n姓名&#xff1a;张三 \n姓名&#xff1a;张三 \n姓名&#xff1a;张三 \n姓名&#xff1a;张三 \n姓名&#xff…

JVM 类的加载器的基本特征和作用

Java全能学习面试指南&#xff1a;https://javaxiaobear.cn 1、作用 类加载器是 JVM 执行类加载机制的前提 ClassLoader的作用&#xff1a; ClassLoader是Java的核心组件&#xff0c;所有的Class都是由ClassLoader进行加载的&#xff0c;ClassLoader负责通过各种方式将Class信…

5V 全桥驱动芯片,1.3A 持续驱动输出电流,PWM(IN1/IN2)的输入模式,适用于摄像机等产品上,可替代LG9110S

GC9110 是一款低压 5V 全桥驱动芯片&#xff0c; 为摄像机、消费类产品、玩具和其他低压或 者电池供电的运动控制类应用提供了集成的 电机驱动解决方案。 GC9110 能提供高达 1.3A 的持续输出电 流。可以工作在 1.2~6V 的电源电压上。 GC9110 具有 PWM&#xff08;IN/IN&#xf…

1 接口测试介绍

在软件测试工作中&#xff0c;接口测试是必不可少的。接口测试一般是发生在单元测试之后&#xff0c;系统测试之前。当开发人员输出API文档后&#xff0c;测试人员就可以开始编写接口测试用例了。接口测试可以让测试人员更早的介入&#xff0c;不需要等待前后端联调完成才开始测…

学习IO的第五天

作业 &#xff1a;使用两个线程完成文件的拷贝写入&#xff0c;分线程1写入前半段&#xff0c;分线程2写入后半段&#xff0c;主线程用来回收资源 #include <head.h>void *sork(void *arg); void *sork2(void *arg);int file_copy(int start,int len) //拷贝的函数 {i…

摄像头为什么需要积分球进行校准?

摄像头均匀光源校准可以提高图像质量、消除误差因素、实现标准化测量、保证测量结果的可靠性&#xff0c;并提高生产效率。因此&#xff0c;对于需要高精度、高清晰度图像的领域&#xff0c;摄像头均匀光源校准是非常必要的。 一、为什么摄像头需要均匀光源校准&#xff1f; 提…

Javascript 函数介绍

Javascript 函数介绍 很多教程书一上来就讲解一堆语法&#xff0c;例如函数定义、函数调用什么。等读者看完了函数这一章都没搞懂什么是函数。 在讲解什么叫函数之前&#xff0c;我们先看下面一段代码&#xff1a; <!DOCTYPE html> <html xmlns"http://www.w3.…

在线工具分享SQL转ElasticSearchDSL语句

&#x1f60a; 作者&#xff1a; 瓶盖子io &#x1f496; 主页&#xff1a; 瓶盖子io-CSDN博客

腾讯云CentOS8 jenkins war安装jenkins步骤文档

腾讯云CentOS8 jenkins war安装jenkins步骤文档 一、安装jdk 1.1 上传jdk-11.0.20_linux-x64_bin.tar.gz 1.2 解压jdk安装包文件 tar -zxvf jdk*.tar.gz 1.3 在/usr/local 目录下创建java目录 cd /usr/local mkdir java 1.4 切到java目录&#xff0c;把jdk解压文件改名为jd…

智能优化算法应用:基于原子轨道搜索算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于原子轨道搜索算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于原子轨道搜索算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.原子轨道搜索算法4.实验参数设定5.算…

Python函数默认参数设置

在某些情况下&#xff0c;程序需要在定义函数时为一个或多个形参指定默认值&#xff0c;这样在调用函数时就可以省略为该形参传入参数值&#xff0c;而是直接使用该形参的默认值。 为形参指定默认值的语法格式如下&#xff1a; 形参名 默认值 从上面的语法格式可以看出&…

记录 | linux手动清理 buff/cache

linux下手动清理 buff/cache 切换到 root 权限 # 这个drop_caches文件可以设置的值分别为1、2、3 echo 1 > /proc/sys/vm/drop_caches # 表示清除pagecache echo 2 > /proc/sys/vm/drop_caches # 表示清除回收slab分配器中的对象&#xff08;包括目录项缓存和inode缓…

vuepress-----13、分割config

13、分割config config.js const headConfig require(./config/headConfig); const pluginsConfig require(./config/pluginsConfig); const themeConfig require(./config/themeConfig)module.exports {title: "小邵子",description: 小邵子的个人笔记,head: he…

LocalDateTime加一年取有效期23:59:59

&#x1f60a; 作者&#xff1a; 瓶盖子io &#x1f496; 主页&#xff1a; 瓶盖子io-CSDN博客 打印控制台: 2023-12-08T11:59:13.739 当前系统时间