【优快云编程挑战赛(第六期)】参赛有感

优快云编程竞赛报名地址:https://edu.youkuaiyun.com/contest/detail/16

前言/背景

因为是第二次参加了,一回生二回熟,上星期有点事错过了第五期,因此第六期还是比较期待的。

大赛简介

这是由csdn官方举办的编程比赛,和力扣单双周比赛差不多,由于是官方举办所以成绩好会有实物奖品,很不戳。

参赛流程

点击报名地址参赛即可,操作简单,欢迎大家都来试试

参赛经历

在参加第四期的时候没有进入前三十,还是想搏一搏争取进入前三十拿个实体礼物。

解题思路

说说本期四个题目(本人java出身所以都是java实现):

第一题:严查枪火

题目: X国最近开始严管枪火。 像是“ak”,“m4a1”,“skr”。都是明令禁止的。 现在小Q查获了一批违禁物品其中部分是枪支。小Q想知道自己需要按照私藏枪火来关押多少人。 (只有以上三种枪被视为违法)
送分题,一个switch过滤这三个字符串即可,easy题都没这么easy。。。。

第二题:鬼画符门

题目: 鬼画符门,每年都会统计自己宗门鬼画符消耗的数量,往年一直是大师兄管理, 但是这次鬼艺接手了, 你能帮鬼艺写一个程序统计每年消耗数量最多的鬼画符吗?
送分题+1,数组转流然后分组求和,很简单的写法,有手就行。。。

第三题:收件邮箱

题目: 已知字符串str,str表示邮箱的不标准格式。 其中”.”会被记录成”dot”,”@”记录成”at”。 写一个程序将str转化成可用的邮箱格式。(可用格式中字符串中除了开头结尾所有”dot”,都会被转换,”at”只会被转化一次,开头结尾的不转化)
送分题+2,字符串直接replace/replaceFirst即可,记得着重处理首尾字符串,没脑子的题。。。

第四题:最长递增的区间长度

题目: 给一个无序数组,求最长递增的区间长度。如:[5,2,3,8,1,9] 最长区间 2,3,8 长度为 3
送分题+3,双指针遍历数组,设置两个个临时变量用来记录当前递增区间长度和最大递增区间长度,遇见元素递减时候两个变量对比取最大。。。easy程度的题。。。。

经验心得

  1. 本次考试全是送分题,满分比例极高,展示不出水平,全靠手速,最快的兄弟6分钟答完,无法判断是否是切换账号刷题,略微有失公平,差点意思。
  2. IDE一如既往的难用,一如既往的差劲。。。别限制非得用网页ide了,太耽误事了。。。
  3. 吐槽下奖品,奖品csdn读书的会员,我是觉得奥,既然csdn读书都单独开了个会员机制,就争取做好它成不。事实上,读书会员只能在pc端查看是否获取到,手机端没有页面查看,而且,手机端是和下载资源在一起的,没有pc端的书架机制。这就意味着,pc端看好的书加入书架后,手机端无法查看书架,只能通过搜索资源的方式获取书籍。这对于习惯手机看书的用户体验太差了。本身csdn在读书这方面入场就晚还不做好这块,感觉很难将业务继续推进下去。建议官方以后换个奖品吧,哪怕换成下载的C币都比这个强啊。

资料分享

多刷力扣有助于提升算法水平。

### C语言结构体初始化方法 在C语言中,结构体是一种复合数据类型,可以用来存储不同类型的数据。为了正确使用结构体,必须对其进行初始化。以下是常见的几种初始化方法及其示例。 #### 1. **顺序初始化** 按照成员定义的顺序依次赋初值给各个成员。如果只需要初始化部分成员,则未初始化的部分会保持默认值(通常是0或空字符)。需要注意的是,一旦某个成员被跳过,后续成员也不能再初始化[^3]。 ```c struct Test { int a; int b; char c; double d; }; // 定义并初始化结构体变量test1 struct Test test1 = {1, 2}; // 此处a=1,b=2,c和d取默认值(通常为0) ``` #### 2. **指定成员初始化** 从C99标准起支持通过指定成员名的方式进行初始化。这种方式更加灵活,允许任意次序初始化,并且可以选择性忽略某些成员[^4]。 ```c struct Test { int a; int b; char c; double d; }; // 使用指定成员方式初始化结构体变量test2 struct Test test2 = {.b = 3, .c = 'X', .d = 78.5}; // 这里a未显式设置,默认为0 ``` #### 3. **动态内存分配后的初始化** 当利用`malloc()`或其他动态分配函数创建结构体实例时,需手动完成其内部各字段的设定工作。此时无法直接采用大括号列表形式来实现整体初始化,而应逐一访问每个域来进行具体数值赋予操作。 ```c #include <stdlib.h> struct Student { char c; int score; char* name; }; void initializeStudent(struct Student *stu){ stu->c = 'A'; stu->score = 95; stu->name = "Tom"; } int main(){ struct Student *pStu = (struct Student *) malloc(sizeof(struct Student)); if(pStu != NULL){ initializeStudent(pStu); printf("c = %c, score = %d, name = %s\n", pStu->c, pStu->score, pStu->name); free(pStu); } } ``` 上述代码展示了如何先申请一块堆空间用于存放一个新的学生记录对象,之后调用辅助函数对其属性加以配置最后打印出来验证效果同时记得释放资源防止泄露问题发生。 ### 总结 综上所述,在实际开发过程中可以根据需求选用不同的初始化策略以满足特定场景下的应用要求。无论是静态声明还是运行期间构建出来的实体都可以找到合适的办法去处理它们各自的初始状态调整事宜[^1][^2].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

摆烂的小趴菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值