【算法笔记题解】《算法笔记知识点记录》第二章——快速入门4[结构体、输入输出、复杂度和黑盒测试](1)

简介: 【算法笔记题解】《算法笔记知识点记录》第二章——快速入门4[结构体、输入输出、复杂度和黑盒测试](1)

全文目录

 🍕2.8小节——C/C++快速入门->结构体(struct)

                      问题 A: C语言11.1

                      问题 B: C语言11.2

                      问题 C: C语言11.4

                      问题 D: C语言11.7

                      问题 E: C语言11.8

 🥚2.10小节——C/C++快速入门->黑盒测试

                      问题 A: A+B 输入输出练习I

                      问题 B: A+B 输入输出练习II

                      问题 C: A+B 输入输出练习III

                      问题 D: A+B 输入输出练习IV

                      问题 E: A+B 输入输出练习V

                      问题 F: A+B 输入输出练习VI

                      问题 G: A+B 输入输出练习VII

                      问题 H: A+B 输入输出练习VIII

 📑写在最后

🍕2.8小节——C/C++快速入门->结构体(struct)

地址合集:2.8小节——C/C++快速入门->结构体(struct)


问题 A: C语言11.1

题目描述


完成一个对候选人得票的统计程序。假设有3个候选人,名字分别为Li,Zhang和Fun。使用结构体存储每一个候选人的名字和得票数。记录每一张选票的得票人名,输出每个候选人最终的得票数。结构体可以定义成如下的格式:

struct person {

char name[20];

int count;

}leader[3] = {“Li”, 0, “Zhang”, 0, “Fun”, 0};


输入


第一行有一个整数n,表示以下有n张选票信息将会输入。保证n不大于100。

以后的n行中,每一行包含一个人名,为选票的得票人。保证每一个人名都是Li,Zhang和Fun中的某一个。


输出


有三行,分别为Li,Zhang和Fun每人的得票数。格式为首先输出人名,其后输出一个冒号,最后输出候选人的得票数。

请注意行尾输出换行。


样例输入


10

Li

Li

Fun

Zhang

Zhang

Fun

Li

Fun

Zhang

Li


样例输出


Li:4

Zhang:3

Fun:3


解题思路


每次读入进行比较,如果相等就加count就好了。注意字符串的比较需要strcmp()。


#include<cstdio>
#include<cstring>
struct person {
char name[20];
int count;
}leader[3] = {"Li", 0, "Zhang", 0, "Fun", 0};
int main(){
    int n;
    char temp[10];
    scanf("%d",&n);
    while(n--){
        scanf("%s",temp);
        for(int i = 0;i < 3;i++)
            if(strcmp(leader[i].name,temp) == 0)
                leader[i].count++;
    }
    for(int i = 0;i < 3;i++)    printf("%s:%d\n",leader[i].name,leader[i].count);
    return 0;
}


问题 B: C语言11.2

题目描述


定义一个结构体student,存储学生的学号、名字、性别和年龄,读入每个学生的所有信息,保存在结构体中,并输出。结构体student的定义如下:

struct student {

int num;

char name[20];

char sex;

int age;

};

本题要求使用指向结构体数组的指针进行输入和输出。


输入


第一行有一个整数n,表示以下有n个学生的信息将会输入。保证n不大于20。

以后的n行中,每一行包含对应学生的学号、名字、性别和年龄,用空格隔开。保证每一个人名都不包含空格且长度不超过15,性别用M和F两个字符来表示。

输出


有n行,每行输出一个学生的学号、名字、性别和年龄,用空格隔开。

请注意行尾输出换行。

样例输入


3

10101 LiLin M 18

10102 ZhangFun M 19

10104 WangMin F 20

样例输出


10101 LiLin M 18

10102 ZhangFun M 19

10104 WangMin F 20


解题思路


很有意思,初始化的时候不能直接temp[n],必须要temp[15]才行0.0


#include<cstdio>
#include<cstring>
struct student {
    int num;
    char name[20];
    char sex;
    int age;
};
void scan(student *a){
    scanf("%d %s %c %d",&a->num,a->name,&a->sex,&a->age);
}
void print(student *a){
    printf("%d %s %c %d\n",a->num,a->name,a->sex,a->age);
}
int main(){
    int n;
    student temp[15];
    scanf("%d",&n);
    for(int i = 0;i < n;i++){
        scan(&temp[i]);
    }
    for(int i = 0;i < n;i++){
        print(temp + i);
    }
    return 0;
}


问题 C: C语言11.4

题目描述


设有若干个人员的数据,其中包含学生和教师。学生的数据中包括:号码、姓名、性别、职业、班级。教师的数据包括:号码、姓名、性别、职业、职务。可以看出,学生和教师所包含的数据是不同的。现在要求把这些数据放在同一个表格中储存,使用结构体中的共用体实现。结构体定义如下:

struct {

int num;

char name[10];

char sex;

char job;

union {

int class;

char position[10];

}category;

};

在以上的结构体中,如果job项为s(学生),则第5项为class(班级);如果job项是t(教师),则第5项为position(职务)。

输入几个人员的数据,将其保存在以上包含共用体的结构体数组中,并输出。


输入


第一行有一个整数n,表示以下n行分别表示n个人员的数据。保证n不超过100。

之后的n行,每行有5项用空格隔开的内容。前4项分别为人员的号码(整数)、姓名(长度不超过9的无空格字符串)、性别(字符,m或f)和职业(字符,s或t)。如果第4项是s,则第5项为一个整数,表示班级;如果第4项是t,则第5项为一个长度不超过9的无空格字符串,表示职务。

输出


共有n行,与输入格式相同,输出读入的所有内容。

请注意行尾输出换行


样例输入


2

101 Li f s 501

102 Wang m t prof


样例输出


101 Li f s 501

102 Wang m t prof


解题思路


真坑。。。真滴坑。。。class是个关键字,所以不能直接使用需要改名。 然后结构体要有名字。共用体的使用没说 就这道题直接看看吧。


#include<cstdio>
#include<cstring>
struct member{
    int num;
    char name[10];
    char sex;
    char job;
    union {
        int asd;
        char position[10];
    }category;
};
void scan(member *a){
    scanf("%d %s %c %c",&a->num,a->name,&a->sex,&a->job);
    if(a->job == 's')   scanf("%d",&a->category.asd);
    else    scanf("%s",a->category.position);
}
void print(member *a){
    printf("%d %s %c %c ",a->num,a->name,a->sex,a->job);
    if(a->job == 's')   printf("%d\n",a->category.asd);
    else    printf("%s\n",a->category.position);
}
int main(){
    int n;
    member temp[100];
    scanf("%d",&n);
    for(int i = 0;i < n;i++){
        scan(temp + i);
    }
    for(int i = 0;i < n;i++){
        print(temp + i);
    }
    return 0;
}


相关文章
|
3月前
|
机器学习/深度学习 存储 算法
强化学习算法基准测试:6种算法在多智能体环境中的表现实测
本文系统研究了多智能体强化学习的算法性能与评估框架,选用井字棋和连珠四子作为基准环境,对比分析Q-learning、蒙特卡洛、Sarsa等表格方法在对抗场景中的表现。实验表明,表格方法在小规模状态空间(如井字棋)中可有效学习策略,但在大规模状态空间(如连珠四子)中因泛化能力不足而失效,揭示了向函数逼近技术演进的必要性。研究构建了标准化评估流程,明确了不同算法的适用边界,为理解强化学习的可扩展性问题提供了实证支持与理论参考。
134 0
强化学习算法基准测试:6种算法在多智能体环境中的表现实测
|
4月前
|
自然语言处理 算法 数据可视化
文本聚类效果差?5种主流算法性能测试帮你找到最佳方案
本文探讨了自然语言处理中句子嵌入的聚类技术,使用Billingsmoore数据集(925个英语句子)进行实验。通过生成句子嵌入向量并可视化分析,对比了K-Means、DBSCAN、HDBSCAN、凝聚型层次聚类和谱聚类等算法的表现。结果表明,K-Means适合已知聚类数量的场景,DBSCAN和HDBSCAN适用于未知聚类数量且存在异常值的情况,而谱聚类在句子嵌入领域表现不佳。最终建议根据数据特征和计算资源选择合适的算法以实现高质量聚类。
178 0
文本聚类效果差?5种主流算法性能测试帮你找到最佳方案
|
8月前
|
算法 数据安全/隐私保护 计算机视觉
基于FPGA的图像双线性插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
本项目展示了256×256图像通过双线性插值放大至512×512的效果,无水印展示。使用Matlab 2022a和Vivado 2019.2开发,提供完整代码及详细中文注释、操作视频。核心程序实现图像缩放,并在Matlab中验证效果。双线性插值算法通过FPGA高效实现图像缩放,确保质量。
|
8月前
|
存储 数据可视化 测试技术
一个测试工程师的实战笔记:我是如何在Postman和Apipost之间做出选择的?
优秀的API测试工具应该具备: 分层设计:既有可视化操作,也开放代码层深度定制 场景感知:自动识别加密需求推荐处理方案 协议包容:不强迫开发者为了不同协议切换工具 数据主权:允许自主选择数据存储位置
206 7
|
10月前
|
缓存 算法 搜索推荐
Java中的算法优化与复杂度分析
在Java开发中,理解和优化算法的时间复杂度和空间复杂度是提升程序性能的关键。通过合理选择数据结构、避免重复计算、应用分治法等策略,可以显著提高算法效率。在实际开发中,应该根据具体需求和场景,选择合适的优化方法,从而编写出高效、可靠的代码。
168 6
|
11月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
274 1
|
12月前
|
机器学习/深度学习 弹性计算 自然语言处理
前端大模型应用笔记(二):最新llama3.2小参数版本1B的古董机测试 - 支持128K上下文,表现优异,和移动端更配
llama3.1支持128K上下文,6万字+输入,适用于多种场景。模型能力超出预期,但处理中文时需加中英翻译。测试显示,其英文支持较好,中文则需改进。llama3.2 1B参数量小,适合移动端和资源受限环境,可在阿里云2vCPU和4G ECS上运行。
522 1
|
12月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
264 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
12月前
|
机器学习/深度学习 并行计算 数据可视化
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
这篇文章介绍了如何使用PaddleClas框架完成多标签分类任务,包括数据准备、环境搭建、模型训练、预测、评估等完整流程。
823 0
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
|
12月前
|
机器学习/深度学习 JSON 算法
语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)
本文介绍了DeepLab V3在语义分割中的应用,包括数据集准备、模型训练、测试和评估,提供了代码和资源链接。
2401 0
语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)

热门文章

最新文章