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

2023-12-05 08:52
文章标签 实践 14 结构 pta 课外

本文主要是介绍【C/PTA —— 14.结构体1(课外实践)】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

C/PTA —— 14.结构体1(课外实践)

  • 一.函数题
    • 6-1 选队长
    • 6-2 按等级统计学生成绩
    • 6-3 学生成绩比高低
    • 6-4 综合成绩
    • 6-5 利用“选择排序算法“对结构体数组进行排序
    • 6-6 结构体的最值
    • 6-7 复数相乘运算
  • 二.编程题
    • 7-5 一帮一
    • 7-6 考试座位号

一.函数题

6-1 选队长

在这里插入图片描述

void showCaptain(TeamMember team[], int n)
{TeamMember max;max = team[0];for (int i = 1; i < n; i++){if (max.ability < team[i].ability)max = team[i];}printf("%d %s %s %s %.2lf", max.id, max.lastname,max.firstname, max.sex, max.ability);
}

6-2 按等级统计学生成绩

在这里插入图片描述

int set_grade(struct student* p, int n)
{int count = 0;for (int i = 0; i < n; i++){if (p[i].score >= 85 && p[i].score <= 100)p[i].grade = 'A';if (p[i].score >= 70 && p[i].score <= 84)p[i].grade = 'B';if (p[i].score >= 60 && p[i].score <= 69)p[i].grade = 'C';if (p[i].score >= 0 && p[i].score <= 59){p[i].grade = 'D';count++;}     }return count;
}

6-3 学生成绩比高低

在这里插入图片描述

int compareScore(const struct Student* s1, const struct Student* s2)
{if ((s1->C + s1->English) > (s2->C + s2->English))return 1;if ((s1->C + s1->English) < (s2->C + s2->English))return -1;if ((s1->C + s1->English) == (s2->C + s2->English)){if (s1->C > s2->C)return 1;if (s1->C < s2->C)return -1;if (s1->C == s2->C)return 0;}
}

6-4 综合成绩

在这里插入图片描述

double getAverage(Applicant* a)
{double sum = 0.0;sum = a->computational * 1.0 * 0.4 + a->humanistic * 1.0 * 0.5 + a->logical * 1.0 * 0.3 + a->presentation * 1.0 * 0.6 + a->scientific * 1.0 * 0.8;return sum;
}

6-5 利用“选择排序算法“对结构体数组进行排序

在这里插入图片描述

int min_idx = p1->score;
for (p2 = p1 + 1; p2 < pData + n; p2++)
{if (p2->score > min_idx){min_idx = p2->score;p = p2;}
}
if (min_idx != p1->score)
{num = p1->num;score = p1->score;p1->num = p->num;p1->score = p->score;p->num = num;p->score = score;
}

6-6 结构体的最值

在这里插入图片描述

ST* MaxST(ST d[], int n, int k)
{ST* max = NULL;for (int i = 0; i < n; i++){if (d[i].gender == k && (max == NULL || max->scored < d[i].scored)){max = &d[i];}}return max;
}

6-7 复数相乘运算

在这里插入图片描述

PLEX multi(PLEX a, PLEX b)
{PLEX product;product.re = a.re * b.re - a.im * b.im;product.im = a.re * b.im + a.im * b.re;return product;
}

二.编程题

7-5 一帮一

在这里插入图片描述

#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-6 考试座位号

在这里插入图片描述

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

这篇关于【C/PTA —— 14.结构体1(课外实践)】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/456923

相关文章

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

MySQL分库分表的实践示例

《MySQL分库分表的实践示例》MySQL分库分表适用于数据量大或并发压力高的场景,核心技术包括水平/垂直分片和分库,需应对分布式事务、跨库查询等挑战,通过中间件和解决方案实现,最佳实践为合理策略、备... 目录一、分库分表的触发条件1.1 数据量阈值1.2 并发压力二、分库分表的核心技术模块2.1 水平分

SpringBoot通过main方法启动web项目实践

《SpringBoot通过main方法启动web项目实践》SpringBoot通过SpringApplication.run()启动Web项目,自动推断应用类型,加载初始化器与监听器,配置Spring... 目录1. 启动入口:SpringApplication.run()2. SpringApplicat

Java整合Protocol Buffers实现高效数据序列化实践

《Java整合ProtocolBuffers实现高效数据序列化实践》ProtocolBuffers是Google开发的一种语言中立、平台中立、可扩展的结构化数据序列化机制,类似于XML但更小、更快... 目录一、Protocol Buffers简介1.1 什么是Protocol Buffers1.2 Pro

Java集合中的链表与结构详解

《Java集合中的链表与结构详解》链表是一种物理存储结构上非连续的存储结构,数据元素的逻辑顺序的通过链表中的引用链接次序实现,文章对比ArrayList与LinkedList的结构差异,详细讲解了链表... 目录一、链表概念与结构二、当向单链表的实现2.1 准备工作2.2 初始化链表2.3 打印数据、链表长