有c语言和c++先学哪个好学的好的帮我改下我这代码?

在 C 语言中写出学生信息管理系统的代码可能需要使用一些基本的数据结构和算法,比如链表、数组、排序等。下面是一个简单的学生信息管理系统的代码示例,可以帮助您理解如何在 C 语言中实现这种系统:``` #include <stdio.h> #include <stdlib.h> #include <string.h>#define MAX_STUDENTS 1000// 定义学生信息结构体 typedef struct { int id; char name[50]; int age; float score; } Student;// 定义学生信息管理系统结构体 typedef struct { Student students[MAX_STUDENTS]; int size; } StudentInfoSystem;// 初始化学生信息管理系统 void init(StudentInfoSystem* system) { system->size = 0; }// 添加学生信息 void add(StudentInfoSystem* system, Student student) { system->students[system->size] = student; system->size++; }// 删除学生信息 void delete(StudentInfoSystem* system, int id) { for (int i = 0; i < system->size; i++) { if (system->students[i].id == id) { for (int j = i; j < system->size - 1; j++) { system->students[j] = system->students[j + 1]; } system->size--; break; } } }// 更新学生信息 void update(StudentInfoSystem* system, Student student) { for (int i = 0; i < system->size; i++) { if (system->students[i].id == student.id) { system->students[i] = student; break; } } }// 查询学生信息 Student* query(StudentInfoSystem* system, int id) { for (int i = 0; i < system->size; i++) { if (system->students[i].id == id) { return &system->students[i]; } }
我在今日头条上开了一个专栏,专栏名字是“你可以这样学习C语言”,欢迎阅读:C语言算是一门比较难学的编程语言,好多小伙伴都有学习C语言的困惑。我在网上也看到了好多学习C语言的建议,于是我在想我也可以把我自己学习C语言的经验写出来与各位分享啊!于是就在今日头条上开了这么一个专栏,希望我的学习经验能够给更多学习C语言的朋友一些启发。这个专栏我计划是更新8节,不过更到第四节的时候我感觉要超过8节了。我的专栏目前已经更新的章节和对应的说明如下:一、C语言学习是要分阶段滴学习C语言时一个系统的过程,不仅仅是学个语法就够了。我想了想学习C语言的阶段大概可以分为如下几个:计算机基础知识的学习C语言语法的学习C程序编程练习计算机其他学科的学习工作业务的学习上述也许只是学习C语言整个过程中的一部分,供参考。这一章节文章在我的专栏地址是:C语言学习是要分阶段滴二、你造吗?学习C语言,情商很重要讲真,学习C语言有时候智商并不是主要因素,而情商,是的,情商往往会发挥重要作用,你还别真不信。如果你还是在校生,那么我来给你分析分析校园里那些影响你学习C语言情商的因素。这一章节在我的专栏地址是:你造吗?学习C语言,情商很重要三、学习C语言不妨试试这些技巧学习C语言要善于使用一些技巧,这会使得你学习起来事半功倍。3.1 发明自己的术语这是一个学习C语言的小技巧:发明自己的术语。比如看下图中的这段C程序代码,这是把C语言中的二维数组与指针结合在一起的例子。#include <stdio.h>int main(void){int array[3][2] = { {11, 12}, {21, 22}, {31, 32} };int (*pArray)[2] = NULL, index1 = 0, index2 = 0;pArray = array;for(index1 = 0; index1 < 3; index1++){printf("The %dth line\n", index1 + 1);for(index2 = 0; index2 < 2; index2++){printf("%d ", *(*(pArray + index1) + index2) );}printf("\n");}return 0;}其中有这么一条语句:*(*(pArray + index1) + index2)它做了两次指针移动和两次解引用,也就是这个语句包含了四个操作,这也是许多小伙伴看到这里会犯晕的原因,不太理解每一次移动和解引用的含义。关于C语言指针,我后面会专门再写一个专栏,用我自己总结的"两己三他"的概念来剖析指针,有兴趣的小伙伴可以关注我啦!当初我在学习这条语句时也晕过,后来自己理解透了之后就自己发明了“行指针”和“列指针”的概念,在做题以及编码时用这两个概念就比较轻松了。我的这篇头条专栏文章:学习C语言不妨试试这些技巧——发明自己的术语就来与你分享我是如何悟悟到“行指针”和“列指针”的概念的。我的这篇文章希望能告诉你,你也可以把自己对C语言某个知识点的理解总结为一个术语、一个概念,以此来帮助你做题、考试和编码。而且这个术语这个概念只有你自己能理解,别人是搞不懂的,也算是你的一个有力的竞争点吧。3.2 联想相关学科这是个学习C语言的小技巧:联想其他学科。不知你注意到没有,在C语言中有一些概念在其他学科也有出现,最典型的例子就是C语言的函数概念。C语言有函数概念,数学中也有函数概念,它们之间是有某种相似性的。如果你中学时数学函数学的好,那么你再学习C语言函数概念时你会发现好多东西都是已经学过的。这部分章节文章如下:学习C语言不妨试试这些技巧——联想相关学科希望这篇文章能够给正在学习C语言的小伙伴们一些启发:利用之前在其他学科学过的知识点来学习C语言也许会减轻你的一些负担。除了函数外,C语言中的基本数据类型在数学中也有相关描述、数组概念在数据结构中也有相关描述、内存操作在操作系统中也有描述等。3.3 巧做笔记和模仿例题再来说说学习C语言的技巧:巧做笔记和模仿例题。学习C语言免不了要做笔记。你面前放本书开始做笔记了,看到重点会画一根下划线,或者旁边简单注释下。如果是看的电子书,建议选择那种提供注释工具的阅读器。比如提供线、圈、框等注释工具的。另外,学习C语言时一定要学会模仿书上的例题。刚开始可以看看书中的例题代码,做到理解它们。过几天回来就要凭借自己的理解自己写出书中例题代码了,如果在某个地方卡壳了咋办?思路,思路很重要。这个技巧链接如下:学习C语言不妨试试这些技巧——巧做笔记和模仿例题及时记录下自己的想法3.4 我画,我画,我画画当学到 C语言中比较烧脑的知识点或者代码时,脑子基本已经纠缠在一起了,别坐那儿空想了,赶紧拿出纸和笔在纸上画一画,理清里面的关系。这一招儿有时候真的特别好用。比如学到函数参数是“数据值传递”和“数据地址传递”的时候,有的小伙伴总是搞不清传递数据值和传递数据地址的区别,就可以在纸上画画。举一个值传递和址传递的例子,这是让很多小伙伴们头晕的一个概念。 C程序代码如下:这是一个涉及到值传递和址传递的C程序代码。如果你搞不清值传递和址传递的区别,完全可以拿出纸笔画一画你就会清楚了。这个技巧文章链接如下:学习C语言不妨试试这些技巧——我画,我画,我画画四、该练练C程序代码了经过一段C语言的学习,是不是该写代码了? 学习C语言的最终目的是写代码。没有谁是自娱自乐地去学习C语言吧。不过用C语言写代码也是有一个循序渐进的过程,不可能一上来就写出像Unix那样恢宏的系统。总体上C语言编程可以分为基础和进阶阶段。这部分的建议点击专栏链接进入阅读:学习C语言该敲代码了——记住先基础再进阶你觉得C语言编程难很正常,毕竟C语言是一门比较抽象的编程语言,刚开始编程总是有点难的,不过哪个大牛不是从菜鸟做起的呢?来吧,相信你自己,考试、考研、笔试、面试都不是问题。五、学习C语言的终极目的不管你学习C语言是为了考试、考研还是为了面试找工作,最终的目的只有一个:靠着它找一份工作混口饭吃!如果你仅仅是为了通过考试那是另外的话题了!一旦走上工作岗位,你要学习的就不仅仅是C语言本身了,你还要深入学习计算机领域相关、工作业务相关等,有时候工作业务会比技术本身更重要。这部分建议请点击我的专栏链接进入阅读:学习C语言最终目的——在工作中解决问题洋洋洒洒写了这么多,小伙伴们知道了学习 C语言到应用 C语言是一个多么长久的过程,是一个在学习各方面编程知识过程中不断与自己浮躁的心理斗争的过程,是一个无数个泡面陪伴的过程,是一个满头乌黑亮丽的头发到“地中海”的过程,最终有一天成为大家口中的那个“大神”!
萧箫 发自 凹非寺量子位
公众号 QbitAI比Codex还会写C语言的AI代码生成模型,现在开源了!这段时间,用AI写代码可以说是大火,其中最著名的要属OpenAI的Codex和DeepMind的AlphaCode。△基于Codex的Copilot然而,这两个AI模型,全都没有开源:其中AlphaCode只给出了一些测试样例,而Codex只开放了API。为此,来自CMU的几个研究人员,用GPT-2搞出了一个名叫PolyCoder的AI代码生成模型,而且还是开源的。据研究人员表示,虽然PolyCoder最大只有27亿参数(相比Codex有120亿参数),但它用C语言写出来的代码,比Codex的效果还要好。这里面究竟有什么秘诀?用12种编程语言代码集训练首先来看训练用的数据集,这也是PolyCoder的最大特点之一。此前,包括Codex、CodeParrot等AI代码生成模型,主要都是基于Python语言的代码来训练。例如Codex的评估数据集之一HumanEval,评估的也是生成Python代码的效果。相比之下,PolyCoder采用了多种编程语言代码集来训练,一共有12种:C、C#、C++、Go、Java、JavaScript、PHP、Python、Ruby、Rust、Scala和TypeScript。其中,C语言的代码量是最多的,达到了221GB;而Python代码的数据量比Codex和CodeParrot用得都要少。这里PolyCoder用的是GitHub上的公开代码,主要选取的是各种编程语言中比较受欢迎的库,每个库至少有50 Stars。据研究人员表示,每种编程语言库的Stars总数加起来不超过25k,以避免模型生成的代码效果太过于倾斜最流行的编程语言(通常编程语言越流行,库的Stars就越多)。通过提取库中的文件、经过简单处理(包括消除重复代码)后,一共筛选出大约254GB的数据用于训练。然后是预训练的方法。语言模型的预训练方法通常有三种。第一种是自左向右的语言模型,根据上文预测下文,比较适用于代码生成等;第二种是掩蔽语言模型,基于上下文预测屏蔽片段,比较适合代码分类等;第三种是编解码器模型,比较适用于代码注释等任务。这里PolyCoder主要采用的是第一种预训练方法。相比于同样采用GPT-2训练的CodeParrot和Codex,PolyCoder在超参数设置上也稍微有一些差异:PolyCoder一共提供了三种不同的模型,分别有27亿参数、4亿参数和1.6亿参数,研究人员可以根据自身需求和不同的训练能力来选取合适的模型。那么,最终训练出来的AI模型,代码生成效果如何?C语言写得尤其好,但Python不行研究人员将PolyCoder与已有的AI代码生成模型进行了对比。由于AlphaCode不好比较(接口没开放),所以研究人员主要分析了下面这些模型,包括GPT-Neo、CodeParrot和Codex等。其中蓝色的是开源的,橙色的是没开源的:从参数量来看,PolyCoder并不是最顶尖的,最大的27亿参数模型也只有Codex的四分之一不到。研究人员先是用语言模型评估常用的困惑度对一系列模型进行了比较。困惑度(Perplexity),用于衡量语言模型(LM)的好坏。困惑度越低,语言模型面对代码感到困惑的程度就越低,模型生成效果越好。从图中来看,PolyCoder在C语言中意外取得了最好的效果(困惑度最低)。用大量C语言训练PolyCoder的结果说明,即使模型整体原理不变(基于GPT-2),单纯改变训练用的代码集,也能训练出擅长不同语言风格的AI代码生成模型。可惜的是,从其他语言来看,生成的效果就完全没办法和Codex相比了:例如,在主要用于评估Python代码的HumanEval上,PolyCoder的能力远不如Codex好:据论文分析,这可能是Python代码数据量、模型参数量不足等原因导致的。此外,作者们也提到,做出PolyCoder的目的主要还是为了开源一个AI代码生成模型,让更多人参与研究和使用。目前代码已经开源,无论是直接拿来用,还是试着在它的基础上开发新模型都可以。感兴趣的小伙伴可以上手一试了~作者介绍一作许方正(Frank Xu),目前在CMU读博,研究方向是NLP、信息抽取等,发表过多篇顶会论文,包括ICLR、ACL和EMNLP等。本硕毕业于上海交通大学,师从朱其立教授。Uri Alon,在CMU进行博士后工作,研究方向是编程语言处理(PLP)、NLP和深度学习。Graham Neubig,CMU助理教授,研究方向是NLP、机器翻译和基于机器学习的自然语言理解。Vincent J. Hellendoorn,CMU计算机助理教授,主要研究方向是软件工程和机器学习,致力于利用智能方法帮助软件开发人员减少代码调试、程序优化等繁琐工作的时间。不知道作者们是否已经在用这个AI撸代码了(手动狗头)项目地址:https://github.com/VHellendoorn/Code-LMs论文地址:https://arxiv.org/abs/2202.13169— 完 —原标题:《会写代码的AI开源了!C语言写得比Codex还要好,掌握12种编程语言丨CMU》阅读原文

我要回帖

更多关于 c语言和c++先学哪个好 的文章