c语言 大一?

今天在知乎上看到这样一个问题:为什么现在部分985高校还是给大一上C语言课:

这个题主是某985CS专业学生,发现学校居然给大一教C语言程序设计,而不是现在最流行的JAVA或者Python,不由得产生了疑问。

评论区非常精彩,不少答主认为:C语言真的没什么卵用了,学校可能是教学方法太落后了,才会继续教C语言。

不得不承认不少大学计算机专业的教学方法的确有点落后,但大一学C语言还真没什么问题。

关于这个问题,小北也写了篇文章,大家可以看看:你已经是个成熟的985大学了,请不要在大一教 C 语言!(

虽然现在计算机专业毕业之后用C语言的是小概率,但学习C语言好处还真的非常多。

1.培养计算机体系基础知识

好的大学、好的计算机专业的教学重点不是语言栈而是计算机体系基础知识。

但用C语言来诠释数据结构、操作系统、计算机网络、编译原理、等核心知识最直观、最简单。

同时C语言的语法在这些语言中基本是最简单的,几天就能学会,相当于掌握这个工具之后再开展其他课程,相当于用最快的速度掌握课程前置知识点的学习。

计算机专业的朋友一定要注意前置知识点,比如网易云课堂的学习路线就标注了课程和知识点的相关性:

这点非常重要,C语言中没有大量的语法修饰,C语言中的语句大部分情况下能和汇编的语句一一对应。

比如if对应jxx系列、while对应jnz语句,这种一一对应能让我们更加理解计算机是怎么运行的。

对这块感兴趣的同学可以买一本《CSAPP》,这本书完全按照C语言和汇编的对应关系来让你了解计算机工作原理,以及学习汇编语言。

同时C语言很多函数都是直接和操作系统打交道的,跟Java、Python完全不一样,这些高级语言的解释器、JVM之类,隐藏了大量硬件细节。

说到底,科班出身的人一定要对计算机底层原理有深厚的功底,在这个基础之上,Java、Python应该是可以自学的选项。

C语言接近硬件的特性能帮我们构建对计算机体系的底层认知,而这种认知很大程度决定了将来我们能否成为高级工程师甚至技术专家。

基于以上两点原因,C语言绝不是一个可选项而是必修项,洋哥有不少非科班读者问:如何提升编码能力,我都会先问一个问题:学过C语言吗?没有的话先学习下。

接下来给大家推荐几本C语言经典书籍吧,其实旧文推过,再推荐一次:

强力推荐的一本C语言入门书籍,全书626页,可以让你在C语言的世界里畅游很久,关键文笔还非常幽默风趣让人心情愉悦。

一般来说,中文翻译都会失真不少,但这本书的翻译非常到位,几乎没有丢失背景信息和隐藏信息。

这本书的特点是在指针上花了大功夫,指针绝对是C语言的精髓,理解了就等同于攻克了最难的部分。

除了头尾两章,指针贯穿全书,并用了大量通俗易懂的例子来讲解,正是指针使得C语言如此之强大,所以要学习C语言的精髓,就是要精通指针。

这本书就是一个小册子,但很有让人读下去的欲望,倒不是因为页数太少,而是书中所说的每一个需要注意的地方,作为一名程序员都可能遇到。

作者叙述起来也是旁征博引,举的例子短小精悍却一针见血。此书作为一本常备读物非常赞,没事可以经常翻翻加深印象。

这是一本C语言进阶书籍,学完前两本,并有一些实践经验之后,再来攻克比较合适。

这本书会让你对C语言的使用有深入了解,同时还介绍了一些C++的知识。

这本书需要一些前置知识包括编译原理(简单了解即可),Unix/Linux的基础知识:命令和工具等等。

以上四本书学精学透,C语言基本就问题不大了,另外强调一点,学习语言除了看书之外一定要多实践多编码,可以用C语言做一些好玩的程序,比如最简单的万年历,复杂点的贪吃蛇之类的。

最后强调一点:每一个想在计算机行业长期发展的同学,无论科班还是非科班,请务必把C语言基础弄夯实,万丈高楼平地起,C语言就是必须的地基。

今天就写这么多了,我们下期见~

}

%p只不过对%x进行了下规范化而已
%p的存在意义不会只有这么点吧?
是否还有深层的本质意义
只有告诉我是或者否就行了
能解释下更好,可能我也看不懂

}

昆明理工大学大一C语言大作业题目


综合性实践排序求平均值(包括将数拆散求最大最小值)。函数ReadDat()随机产生100个存放到数组aa中00个jsSort()函数的功能是:进行降序排列。最后调用函数WriteDat()函数函数ReadDat()00个四位数存入数组a中,函数jsValue()功能是:求出千位数上的数加百位数等于十位数上的数加个位数上的数的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,例如:=5+3,则该数满足条件计算平均值pjz1,且个数cnt=cnt+1。<>2+9,则该数不满足条件计算平均值pjz2.最后调用写函数writeDat()输出结果函数读函数ReadDat()个四位数把个四位数存入数组a中请编制一函数jsValue(),其功能是:求出所有这些四位数是素数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序,最后调用写函数writeDat()输出结果。例如:5591是素数,则该数满足条件存入数组b中,且个数cnt=cnt+1。9812是非素数,则该数不满足条件忽略。请编制程序,读取200个整数至数组xx中,不计数组xx中值最大和最小的数(若有重复值,则都不计),再求出最大数max及最大数的个数cnt1、最小数min及最小数的个数cnt2和所剩下00-cnt1-cnt2个数的算平均值pj (保留2位小数。输出结果max,cnt1,min,cnt2,pj文件中有200个正整数,且每个数均在1000至9999之间。函数ReadDat()读取这200个数存放到数组aa中。请编制函数jsSort(),其函数的功能是:要求按每个数的后三位的大小进行降序排列,然后取出满足此条件的前10个数依次存入数组b中,如果后三位的数值相等,则按原先的数值进行升序排列。最后调用函数WriteDat()把结果bb输出到文件out.dat中。例:处理前 9012在文件in.dat中有200组数据,每组有3个数,每个数均是三位数。函数ReadDat()读取这200组数据存放到结构数组aa中,请编制函数jsSort(),其函数的功能是:要求在200组数据中找出条件为每组中的第二个数大于第一个数加第三个数的之和,其中满足条件的个数作为函数jsSort() 的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数据按照每组数据的第二个数加第三个之和的大小进行降序排列(第二个数加第三个数的和均不相等),排序后的结果仍重新存入结构数组bb中,最后调用函数WriteDat()把结果bb输出到文件out.dat中。请编制程序,取200个整数至数组xx中,求出奇数的个数cnt1和偶数的个数cnt2以及数xx中下标为奇数的元素值的算术平均值pj(保留2位小数)。结果cnt1,cnt2,pj输出 8.已知在文件in.dat中存有若干个(个数<200)四位数字的正整数,函数readdat()读取这若干个正整数并存入数组xx中。请编制函数calvalue(),其功能要求:1)求出这文件中共有多少个正整数totnum;2)求出这些数中的各位数字之和是偶数的数的个数totcnt,以及满足此条件的这些数的算术平均值totpjz,最后调用函数writedat()把所求的结果输出已知在文件in.dat中存有若干个(个数<200)四位数字的正整数,函数readdat()读取这若干个正整数并存入数组xx中。请编制函数calvalue(),其功能要求:1)、求出这文件中共有多少个正整数totnum;2)、求出这些数中的各位数字之和是奇数的数的个数totcnt,以及满足此条件的这些数的算术平均值totpjz,最后调用函数writedat()把所求的结果输出函数 xx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入数组xx传回。最后调用函数writeDat()读取10组数据,分别得出结果且把结果输出例如:若输入17,5,则应输出:19,23,29,31,37。下列程序的功能是:找出所有100以内(含100)满足I,I+4,I+10都是素数的整数I(I+10也在100以内)的个数cnt以及这些I之和sum。请编写函数countValue()实现程序要求,最后调用函数writeDat()把结果cnt和sum输出到文件out.dat中。下列程序的功能是:选取出100以上1000以内所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数(如293)。计算并输出上述这些素数的个数CNT以及这些素数值的和S

}

我要回帖

更多关于 c语言教程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信