牛客网刷题记录 || 结构体和类

发布于:2023-01-20 ⋅ 阅读:(333) ⋅ 点赞:(0)

这是牛客网刷题记录专栏第五篇博文,先给大家简单介绍一下牛客网,牛客网是一个集笔面试系统、题库、课程教育、社群交流、招聘内推于一体的优质网站牛客网题库中包含几万道题目,注重通过边学边练的模式揽获编程人员的喜爱
在这里插入图片描述

牛客网干净整洁的界面,人性化的布局,高质量的题库题解,丰富的大厂面试题,让我想把它分享给大家,推荐大家来牛客网刷题,链接我就放在这了有需要自取👉点击开始刷题

小Tips:注册完之后,不用填信息直接点X,开启刷题之旅~


结构体和类

🔥1.KiKi定义电子日历类

在这里插入图片描述

👌描述

KiKi学习了面向对象技术,学会了通过封装属性(变量)和行为(函数)定义类,现在他要设计一个电子日历类TDate。
它有3个私有数据成员:Month,Day,Year和若干个公有成员函数,要求:
(1)带有默认形参值的构造函数,默认值为0, 0, 0;
(2)输出日期函数,用“日/月/年”格式输出日期;
(3)设置日期函数,从键盘输入年、月、日

输入描述:
一行,三个整数,用空格分隔,分别表示年、月、日

输出描述:
一行,用“日/月/年”格式输出日期

示例1:

输入:2019 12 30
输出:30/12/2019

👌代码

在这里插入图片描述

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;

int main()
{
		int day,month,year;
		cin>>year>>month>>day;
		printf("%d/%d/%d",day,month,year);
	    return 0;
	}

👌题解

一个简单的创建类


🔥2.牛牛的书

在这里插入图片描述

👌描述

牛牛正在买书,每本书都有名字和价格,牛牛想把书按照价格升序排序

输入描述:
第一行输入一个正整数 n ,表示书的数量。
后续每行都输入一个字符串 str 和一个正整数 p 表示书价格

输出描述:
把书名按照价格升序输出

示例1:

输入:3
TheNowcoder 100
Abook 20
BBook 300
输出:
Abook
TheNowcoder
BBook

👌代码

#include <stdio.h>

typedef struct Book{
    char name[100];
    int price;
}BOOK;
int cmp_by_price(const void*e1,const void*e2)
{
    return ((BOOK *)e1)->price-((BOOK *)e2)->price;
}
int main()
{
    int n = 0;
    scanf("%d",&n);
    BOOK arr[n];
    for (int i = 0;i < n;i++)
    {
        scanf("%s %d",&arr[i].name,&arr[i].price);
    }
    int sz = sizeof(arr)/sizeof(arr[0]);
    qsort(arr,sz,sizeof(arr[0]),cmp_by_price);//快排
    for(int i = 0;i < n;i++)
    {
        printf("%s\n",arr[i].name);
    }
    return 0;
}

在这里插入图片描述

👌题解

先创建一个结构体struct:Book,属性有名字和价格,方法cmp_by_price作用的用在下面快速排序中用来比较两个元素的大小,用for循环进行简单的输入输出就ok了,注意对应题目的输入输出


🔥3.牛牛的平面向量

在这里插入图片描述

👌描述

牛牛有 n 个平面向量 (x1,y1) ,牛牛把这几个向量相加并输出这个向量的值

输入描述:
第一行输入一个正整数 n
后续 n 行每行输入两个正整数分别是 x 和 y

输出描述:
输出所有的向量相加的结

示例1:

输入:
3
1 2
2 1
3 3
输出:
6 6

👌代码

#include <stdio.h> 

typedef struct
{ 
    int x1;
    int y1;
}vector;

int main(){
    int n;
    scanf("%d",&n);
    vector a[n];
    vector sum;
    for(int i=0;i<n;i++){
        scanf("%d%d",&a[i].x1,&a[i].y1);
        sum.x1+=a[i].x1;
        sum.y1+=a[i].y1;
    } 
    printf("%d %d",sum.x1,sum.y1);
    return 0; 
}

👌题解

结构体struct很方便的存取数据

在这里插入图片描述


🔥4.牛牛的时钟

在这里插入图片描述

👌描述

牛牛在午夜12点(0点0分0秒)正在思考,在 t 秒之后是什么时间。他思考了 n 次这个问题

输入描述:
第一行输入一个正整数 n。
第二行输入 n 个正整数 t ,表示 t 秒之后

输出描述:
输出 n 行,每行输出 t 秒之后的时间

示例1:

输入:
4
60 61 1 2
输出:
0 1 0
0 2 1
0 2 2
0 2 4

👌代码

#include<stdio.h>
int main()
{
    int n, a,b=0;
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        scanf("%d",&a);
        b=a+b;
        printf("%d %d %d\n",b/3600,(b%3600)/60,b%60);
    }
    return 0;
}

👌题解

b=a+b是求每次思考后的总时间


结构体很人性化~

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到