王老师 结构体 第一讲

一种数据类型,由多个分量构成,共同描述一个对象.

声明语法:

struct 类型名

{

 分量类型1 分量名1;

 ...

 分量类型n 分量名n;

};

结构型变量定义: struct 结构类型名 变量名;

分配内存: 按结构定义的顺序,分配各个分量,可能有空白区.

示例函数代码:

#include "stdio.h"

/*
* 结构体:日期类型
*/
struct date
{
 int y, m, d;
};

/*
* 结构体:学生
*/
struct student
{
 int id;
 char name[20];
 struct date birthday;
};

/*
* 复数
*/
struct complex
{
 int real;
 int imaginary;
};

complex add(complex a, complex b)
{
 a.imaginary += b.imaginary;
 a.real += b.real;
 return a;
}

complex add(complex * a, complex * b)
{
 a->imaginary += b->imaginary;
 a->real += b->real;
 return *a;
}

void main()
{
 /*
 * 测试一下sizeof函数
 */
 int x = 3;
 printf("%d/n", sizeof(x));
 printf("%d/n", sizeof(x = 4));
 printf("%d/n", x);

 /*
 * 使用struct
 */
 struct complex a, b, c;
 a.real = 1;
 a.imaginary = 2;

 b.real = 1;
 b.imaginary = 3;

 c = add(a, b);
 printf("%d, %d/n", a.real, a.imaginary);
 printf("%d, %d/n", c.real, c.imaginary);
 
 c = add(&a, &b);
 printf("%d, %d/n", a.real, a.imaginary);
 printf("%d, %d/n", c.real, c.imaginary);
}

 

众所周知,王老师非常喜欢买盲盒,他在家里一共收集了 n 个同一系列盲盒玩偶,用一个数字 a i ​ 表示第 i 个玩偶属于这个系列中的第几个玩偶,这个系列有非常多的玩偶,显然王老师并没有收集全所有的玩偶。 现在王老师准备把这 n 个玩偶排成新的一排 b i ​ ,而王老师是个完美主义者,他认为对于第 i 个玩偶来说存在一个所谓的不完美度,指的是 b 1 ​ ∼b i ​ 这些玩偶中缺少的第一个该系列玩偶编号 例如有 3 个玩偶排列完以后编号分别为 0,2,1 对第 1 个玩偶来说,不完美度是 1,因为 0 号玩偶存在,第一个缺少的是 1 号玩偶 对第 2 个玩偶来说,不完美度是 1,因为 0,2 号玩偶存在,第一个缺少的是 1 号玩偶 对第 3 个玩偶来说,不完美度是 3,因为 0,1,2 号玩偶存在,第一个缺少的是 3 号玩偶 对于以上这个玩偶排列方案,总的不完美度为 1+1+3=5 现在石老师想故意气一气王老师,他想知道这 n 个玩偶,怎么排列可以使得不完美度最大? 输入格式 输入第一行包含一个正整数 n,表示有 n 个玩偶 接下来一行包含 n 个整数 a i ​ ,分别表示每个玩偶在系列中的编号(最小为 0) 输出格式 输出一组可以让玩偶不完美度最大的方案,如果有多组方案,请输出字典序最小的那一组方案 样例输入 1 7 1 3 3 4 2 0 9 样例输出 1 0 1 2 3 4 3 9
08-24
王老师是方圆百里内有名的大富哥,他时常会在一款叫"stem"的游戏平台中寻找自己想玩的游戏。 有一天stem平台根据王老师的喜好为王老师生成了一个推荐队列,推荐队列中有n款游戏。王老师在心中为每一款游戏打了一个只有他自己知道的分数。 之后王老师反复浏览了这个推荐队列m次,每次浏览,王老师都会在心中定一个目标分数,然后选定两款分数不低于这个目标分数的游戏,将这两款游戏之间(包括这两款游戏)所有分数大于等于这个目标分数的游戏购买下来,出于对游戏开发者的尊敬,只要条件满足,他就会在不同的浏览中购买同一款游戏。 现在你获得了王老师每次浏览的购买记录,你想知道王老师至少为这些游戏分了几个等级。 输入格式 第一行:两个整数n,m,表示一共有n个游戏,王老师浏览了m次推荐队列,用空格隔开。 接下来m行:每行第一个正整数a i ​ ,表示第i次浏览购买了a i ​ 款游戏。接下来a i ​ 个从小到大的正整数表示购买的游戏编号,两个数字之间用空格隔开 输出格式 输出一个正整数,表示王老师至少给游戏分了多少个等级。 样例输入 1 4 3 2 1 4 1 1 3 1 3 4 样例输出 1 3 样例输入 2 7 6 2 4 7 7 1 2 3 4 5 6 7 1 4 5 1 2 4 6 7 5 1 2 4 6 7 3 4 6 7 样例输出 2 3 提示/说明 样例 1 解释 在这个样例中,1号和4号游戏同一个等级,2,3号游戏分别为两个与1,4号不同的等级,此时满足条件且分出的等级数量最少。 数据规模与约定 测试点编号 m n 1∼2 ≤8 ≤8 3∼7 ≤500 ≤500 8∼10 ≤1000 ≤1000 c++做法
08-31
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值