PTA结构体经典编程题

news2025/1/22 15:50:10

目录

第一题:计算平均成绩

第二题:平面向量加法

第三题:查找书籍

第四题:通讯录排序

第五题:计算职工工资


 

 

第一题:计算平均成绩

ead5ae0dde7d4200a3393a12e5ad7378.png思路:看到一个学生的基本信息,所以定义一个结构体变量,然后呢,不知道人数的多少,这里用vector设立一个动态数组,接着遍历所有的学生,输入信息。将学生的成绩累加起来,接着求解平均值。然后判断遍历输出即可

#include <iostream>
#include <iomanip>
#include <vector>
using namespace std;

struct Student {
    string id;
    string name;
    int score;
};

int main() {
    int N;
    cin >> N;

    vector<Student> students(N);
    double sum = 0.0;

    for (int i = 0; i < N; i++) {
        cin >> students[i].id >> students[i].name >> students[i].score;
        sum += students[i].score;
    }

    double average = sum / N;
    printf("%.2lf\n", average);

    for (int i = 0; i < N; i++) {
        if (students[i].score < average) {
            cout << students[i].name << " " << students[i].id << endl;
        }
    }

    return 0;
}

第二题:平面向量加法

ed9e356af8874b7085f67af1e08e5a51.png思路:

简单定义见结构体变量,最后if(fabs(v.x)<0.05) 的判断是为了解决浮点数精度问题。在实际计算中,由于浮点数的表示方式和计算精度的限制,可能会导致一些微小的误差。因此,当两个浮点数本应为零但实际上非常接近零时,为了避免输出 -0.0 这样不符合要求的格式,可以通过判断绝对值小于一个很小的阈值(比如 0.05)来将其修正为零。

#include<stdio.h>
#include<math.h>
struct ping {
	double x;
	double y;
};
int main(){
	struct ping v,v1,v2;
	scanf("%lf%lf%lf%lf",&v1.x,&v1.y,&v2.x,&v2.y);
	v.x=v1.x+v2.x;
	v.y=v1.y+v2.y;
	if(fabs(v.x)<0.05) v.x=fabs(v.x);
	if(fabs(v.y)<0.05) v.y=fabs(v.y);
	printf("(%.1f, %.1f)",v.x,v.y);
    return 0;
}

第三题:查找书籍

查找书籍

348c3aa54aa946de942fa61af98deb27.png思路:这个题的细节还是蛮多的。整体思路很简单,定义结构体变量,然后输入每本书的书名和价格,但是,要注意在输入书的价格的时候,cin不读取最后的\n,这里必须要把\n给处理掉,这里在c++可以用cin.ignore,如果在c可以用getchar,如果不处理,那么\n一直在缓冲区,那么下一次\n就会被geiline给读取,影响结果。接着由于不知道最低价格多少,我们就令第一本书为最低价,然后遍历判断即可,最后输出书名的时候也要注意格式,如用printf输出string类型的时候,必须在变量名后加.c_str(),否则不能输出。

 

#include <iostream>
#include <vector>
#include <string>

using namespace std;

struct Book {
    string name;
    double price;
};

int main() {
    int n;
    cin >> n;
    cin.ignore();  // 忽略第一个换行符

    vector<Book> books(n);
    for (int i = 0; i < n; i++) {
        getline(cin, books[i].name);
        cin >> books[i].price;
        cin.ignore();  // 忽略每个价格后面的换行符
    }

    double maxPrice = books[0].price;
    double minPrice = books[0].price;
    string maxBook = books[0].name;
    string minBook = books[0].name;

    for (int i = 1; i < n; i++) {
        if (books[i].price > maxPrice) {
            maxPrice = books[i].price;
            maxBook = books[i].name;
        }
        if (books[i].price < minPrice) {
            minPrice = books[i].price;
            minBook = books[i].name;
        }
    }

    printf("%.2lf, %s\n", maxPrice, maxBook.c_str());
    printf("%.2lf, %s", minPrice, minBook.c_str());

    return 0;
}

第四题:通讯录排序

d18ac6f4f9fb4d769cf2375807bf2bb9.png

思路:

这个题的关键是,要判断年龄的大小,这里我们不要想复杂,直接通过日期数的大小来判断,数越小,年龄越大。然后就是根据年龄大小来排序

#include<bits/stdc++.h>
using namespace std;
struct friends {
	string name;
	int birthday;
	string phone;
};
bool comparebirthday(friends friend1, friends friend2);
int main()
{
	int n;
	cin >> n;
	vector<friends>list(n);
	for (int i = 0; i < n; i++)
	{
		cin >> list[i].name;
		cin >> list[i].birthday;
		cin >> list[i].phone;
	}
	//sort
	sort(list.begin(), list.end(), comparebirthday);
	//shuchu
	for (int i = 0; i < n; i++)
	{
		cout<< list[i].name << ' ' << list[i].birthday << " " << list[i].phone << endl;
	}
	return 0;
}
bool comparebirthday(friends friend1, friends friend2)
{
	return friend1.birthday < friend2.birthday;
}

第五题:计算职工工资

f4fb415333494f1890d49a08673811a9.png思路:按步就班,先定义后输入然后输出,注意格式即可,

#include<bits/stdc++.h>
using namespace std;
struct salry
{
	string name;
	float gz1;
	float gz2;
	float zc;
};
int main()
{
	int n;
	cin >> n;
	vector<salry>worker(n);
	for (int i = 0; i < n; i++)
	{
		cin >> worker[i].name >> worker[i].gz1 >> worker[i].gz2 >> worker[i].zc;
	}
	vector<float>sj(n);
	for (int i = 0; i < n; i++)
	{
		sj[i] = worker[i].gz1 + worker[i].gz2 - worker[i].zc;
	}
	for (int i = 0; i < n; i++)
	{
		printf("%s %.2lf\n", worker[i].name.c_str(), sj[i]);
	}

	return 0;
}

 

 

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

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

相关文章

力扣每日一题day24[150. 逆波兰表达式求值]

给你一个字符串数组 tokens &#xff0c;表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意&#xff1a; 有效的算符为 、-、* 和 / 。每个操作数&#xff08;运算对象&#xff09;都可以是一个整数或者另一个表达式。两个…

Unity中Shader指令优化

文章目录 前言解析一下不同运算、条件、函数所需的指令数1、常数基本运算2、变量基本运算3、条件语句、循环 和 函数 前言 上一篇文章中&#xff0c;我们解析了Shader解析后的代码。我们在这篇文章中来看怎么实现Shader指令优化 Unity中Shader指令优化&#xff08;编译后指令…

FL Studio2024水果编曲软件21.2.0中文版本下载更新

FL Studio2024是功能强大的音乐制作解决方案&#xff0c;使用旨在为用户提供一个友好完整的音乐创建环境&#xff0c;让您能够轻松创建、管理、编辑、混合具有专业品质的音乐&#xff0c;一切的一切都集中在一个软件中&#xff0c;只要您想&#xff0c;只要您需要&#xff0c;它…

汇编学习记录

前言 这篇文章是自己在专升本录取~本科开学前学习记录&#xff0c;破解软件的学习在2022年4月 - 2022年5月&#xff0c;汇编学习时间大约为2022年7月 - 2022年9月&#xff0c;我将往期上传的博文整理为一篇文章&#xff0c;作为归纳总结。 以后若继续学习相关领域&#xff0c;此…

vue3项目脚手架如何使用swiper, ‘vue-awesome-swiper‘报错解决(简单示例)

目录 前言 使用方法 效果图 1.下载swiper 2. 写入需要的页面 3.在对应页面引入组件 4.推荐页完整代码 前言 Vue3和Vue2在使用swiper时是有差别的&#xff0c;Vue3引入swiper需要注意Vu3的版本和swiper的版本&#xff0c;如果不匹配通常会报错 如下&#xff1a;当引用版本过…

Presto基础学习--学习笔记

1&#xff0c;Presto背景 2011年&#xff0c;FaceBook的数据仓库存储在少量大型hadoop/hdfs集群&#xff0c;在这之前&#xff0c;FaceBook的科学家和分析师一直靠hive进行数据分析&#xff0c;但hive使用MR作为底层计算框架&#xff0c;是专为批处理设计的&#xff0c;但是随…

Spingboot 之spring-boot-starter-parent与spring-boot-dependencies区分

在创建spring boot工程时&#xff0c;spring-boot-starter-parent 和 spring-boot-dependencies是二选一的关系&#xff0c;在pom中引入其中一个就可以了。 那么什么时候用spring-boot-starter-parent 和 spring-boot-dependencies呢&#xff1f;从字面名称上看&#xff0c;如…

从零开始,探索Spring框架的魅力与实践

Spring 1&#xff0c;介绍1.1 为什么要学?1.2 学什么? 2&#xff0c;Spring相关概念2.1 初识Spring2.1.1 Spring家族2.1.2 了解Spring发展史 2.2 Spring系统架构2.2.1 系统架构图2.2.2 spring主要内容 2.3 Spring核心概念2.3.1 目前项目中的问题2.3.2 IOC、IOC容器、Bean、DI…

美容院管理系统服务预约会员小程序效果如何

美容院在美业场景中需求度较高&#xff0c;尤其女性爱美悦己消费逐年增加&#xff0c;如清洁焕肤、祛皱抗衰、激光脱毛等美容项目都有不少需求者。 互联网深入美业行业多年&#xff0c;传统线下经营模式已经很难满足当今客户消费流程&#xff0c;如品牌寻找、服务预约、到店、…

基于PHP的在线日语学习平台

有需要请加文章底部Q哦 可远程调试 PHP在线日语学习平台 一 介绍 此日语学习平台基于原生PHP开发&#xff0c;数据库mysql。系统角色分为用户和管理员。(附带参考设计文档) 技术栈&#xff1a;phpmysqlphpstudyvscode 二 功能 学生 1 注册/登录/注销 2 个人中心 3 查看课程…

完美解决:wget命令下载时遇到“错误 308:Permanent Redirect。”

目录 1 问题 2 解决方法 1 问题 使用wget命令下载时候遇到&#xff1a; --2023-12-02 20:36:08-- http://mirrors.jenkins.io/war-stable/latest/jenkins.war 正在解析主机 mirrors.jenkins.io (mirrors.jenkins.io)... 20.7.178.24, 2603:1030:408:5::15a 正在连接 mirror…

引用计数 Rc 数据类型

RUST提供了一个名为Rc<T>的类型来支持多重所有权&#xff0c;Rc是Reference counting的缩写。Rc<T>类型实例会在内部维护一个用于记录值引用次数的计数器&#xff0c;从而确定这个值是否仍在使用。如果一个值的引用次数为零&#xff0c;就意味着这个值可以被安全清…

深度学习记录--初识向量化

什么是向量化&#xff1f; 之前计算logistic回归损失函数时&#xff0c;在代码实现时&#xff0c;讨论了for循环&#xff1a;过多的for循环会拖慢计算的速度(尤其当数据量很大时) 因此&#xff0c;为了加快计算&#xff0c;向量化是一种手段 运用python的numpy库&#xff0c…

java学习part26线程安全

136-多线程-同步代码块解决两种线程创建方式的线程安全问题_哔哩哔哩_bilibili 1.安全问题 关键在于某些数据操作 2.解决 2.1同步代码块 相当于给数据操作加了互斥锁 2.1.1在实现runnable接口的方式下 锁对象要求必须是唯一的&#xff0c;因为可以看成是谁占了这个对象&…

软件工程期末复习(1)

学习资料 软件工程知识点总结_嘤桃子的博客-CSDN博客 软件工程学习笔记_软件工程导论第六版张海藩pdf-CSDN博客 【软件工程】软件工程期末试卷习题课讲解&#xff01;&#xff01;_哔哩哔哩_bilibili 【拯救者】软件工程速成(期末考研复试软考)均适用. 支持4K_哔哩哔哩_bil…

树基本概念+前中后序遍历二叉树

&#x1f308;一、树的基本概念 ☀️1.树的定义&#xff1a;树是一种非线性结构&#xff0c;看起来像一棵倒挂的树&#xff0c;根朝上&#xff0c;而叶朝下。 ☀️2.相关术语 1.根节点&#xff1a;图中的A&#xff0c;无前驱结点 2.叶节点&#xff08;终端节点&#xff09;&a…

场效应管mosfet和IGBT晶体管的区别

一、概念 在结构上&#xff0c;MOSFET和IGBT看起来非常相似&#xff0c;实则不同。IGBT由发射极、集电极和栅极端子组成&#xff0c;而MOSFET由源极、漏极和栅极端子组成。IGBT的结构中有PN结&#xff0c;MOSFET没有任何PN结。 在应用中&#xff0c;IGBT和MOSFET都可以用作静…

Zookeeper 安装与部署

Zookeeper官网 目录 1 配置文件参数解读2 Zookeeper 单点安装3 Zookeeper 分布式安装 1 配置文件参数解读 Zookeeper 中的配置文件 zoo.cfg 中参数含义解读如下&#xff1a; &#xff08;1&#xff09;tickTime 2000&#xff1a;通信心跳数&#xff0c;Zookeeper 服务器与客户…

【bat】批处理脚本大全

目录 1.概述 2.变量 3.运算符 3.2.重定向运算符 3.3.多命名运算符 3.4.管道运算符 4.命令 4.1.基本命令 4.2.参数传递 4.3.查看脚本内容 4.4.注释 4.5.日期和时间 4.6.启动脚本 4.7.调用其他bat 4.8.任务管理 4.8.1.任务列表查看 4.8.2.任务终止 4.9.文件夹 …

V8引擎类型转换(VIP课程)

这一章是源于一道面试题 完成以下条件并且输出console if(a 1 && a 2 && a 3) {console.log(true) }好家伙 乍一看一个变量怎么可能等于三个值&#xff1f;带着疑问我们去深入了解 类型系统 在JavaScript中类型系统不同于别的语言&#xff0c;例如JavaSc…