【算法笔记题解】《算法笔记知识点记录》第二章——快速入门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;
}


相关文章
|
4月前
|
机器学习/深度学习 JSON 算法
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
本文详细介绍了使用YOLOv5-Seg模型进行图像分割的完整流程,包括图像分割的基础知识、YOLOv5-Seg模型的特点、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。通过实例代码,指导读者从自定义数据集开始,直至模型的测试验证,适合深度学习领域的研究者和开发者参考。
1493 3
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
|
4月前
|
机器学习/深度学习 弹性计算 自然语言处理
前端大模型应用笔记(二):最新llama3.2小参数版本1B的古董机测试 - 支持128K上下文,表现优异,和移动端更配
llama3.1支持128K上下文,6万字+输入,适用于多种场景。模型能力超出预期,但处理中文时需加中英翻译。测试显示,其英文支持较好,中文则需改进。llama3.2 1B参数量小,适合移动端和资源受限环境,可在阿里云2vCPU和4G ECS上运行。
218 1
|
4月前
|
算法 API 计算机视觉
人脸识别笔记(一):通过yuface调包(参数量54K更快更小更准的算法) 来实现人脸识别
本文介绍了YuNet系列人脸检测算法的优化和使用,包括YuNet-s和YuNet-n,以及通过yuface库和onnx在不同场景下实现人脸检测的方法。
138 1
|
4月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
109 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
4月前
|
机器学习/深度学习 并行计算 数据可视化
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
这篇文章介绍了如何使用PaddleClas框架完成多标签分类任务,包括数据准备、环境搭建、模型训练、预测、评估等完整流程。
256 0
|
4月前
|
机器学习/深度学习 JSON 算法
语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)
本文介绍了DeepLab V3在语义分割中的应用,包括数据集准备、模型训练、测试和评估,提供了代码和资源链接。
703 0
语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)
|
4月前
|
机器学习/深度学习 数据采集 算法
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
这篇博客文章介绍了如何使用包含多个网络和多种训练策略的框架来完成多目标分类任务,涵盖了从数据准备到训练、测试和部署的完整流程,并提供了相关代码和配置文件。
105 0
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
|
4月前
|
测试技术 数据安全/隐私保护 Python
自动化测试项目实战笔记(四):测试用户登录(账号密码错误,成功,出现弹框等情况)
本文介绍了使用Selenium进行自动化测试时如何测试用户登录的不同情况,包括账号密码错误、登录成功以及处理登录时出现的弹框,并提供了相应的Python代码实现。
195 0
自动化测试项目实战笔记(四):测试用户登录(账号密码错误,成功,出现弹框等情况)
|
2天前
|
算法 数据安全/隐私保护 计算机视觉
基于FPGA的图像双线性插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
本项目展示了256×256图像通过双线性插值放大至512×512的效果,无水印展示。使用Matlab 2022a和Vivado 2019.2开发,提供完整代码及详细中文注释、操作视频。核心程序实现图像缩放,并在Matlab中验证效果。双线性插值算法通过FPGA高效实现图像缩放,确保质量。
|
1月前
|
算法 数据安全/隐私保护 计算机视觉
基于Retinex算法的图像去雾matlab仿真
本项目展示了基于Retinex算法的图像去雾技术。完整程序运行效果无水印,使用Matlab2022a开发。核心代码包含详细中文注释和操作步骤视频。Retinex理论由Edwin Land提出,旨在分离图像的光照和反射分量,增强图像对比度、颜色和细节,尤其在雾天条件下表现优异,有效解决图像去雾问题。