这是牛客网刷题记录专栏第五篇博文,先给大家简单介绍一下牛客网,牛客网是一个集笔面试系统、题库、课程教育、社群交流、招聘内推于一体的优质网站,牛客网题库中包含几万道题目,注重通过边学边练的模式揽获编程人员的喜爱
牛客网干净整洁的界面,人性化的布局,高质量的题库题解,丰富的大厂面试题,让我想把它分享给大家,推荐大家来牛客网刷题,链接我就放在这了有需要自取点击开始刷题
小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是求每次思考后的总时间
结构体很人性化~
文章评论