c语言的题目题目,求帮写。不用写的太复杂,最基础的就行?

实验九 数组 一、一维数组

3、调试下列程序,使之具有如下功能:输入10个整数,按每行3个数输出这些整数,最后输出10个整数的平均值。写出调试过程。main(){ int i,n,a[10],av;

//尤其注意最后一次循环 上面给出的程序是完全可以运行的,但是运行结果是完全错误的。调试时请注意变量的初值问题、输出格式问题等。请使用前面实验所掌握的调试工具,判断程序中的错误并改正。在程序运行过程中,可以使用+键终止程序的运行,返回到TC环境。

5、编写程序,任意输入10个整数的数列,先将整数按照从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。分析讨论

通过实验,分析定义与引用数组的区别。二、二维数组

3、操作符&用以求一个变量的地址,这在函数scanf 中已经使用过了。现在要你设计一个程序,返回一个3 * 5 的二维数组各元素的地址,并由此说明二维数组中各元素是按什么顺序存储的。

4、输入4×4的数组,编写程序实现: ⑴ 求出对角线上各元素的和;

⑵ 求出对角线上行、列下标均为偶数的各元素的积; ⑶ 找出对角线上其值最大的元素和它在数组中的位置。

声明:文中观点仅代表个人,其中文字、图片未经本人许可,不得部分或全部转载,违者所造成影响后后果自负!联系本人方式: QQ:

     信是我们写来给别人看得,大家都使用诸如上面的格式, 无论什么人拿到信,均能很快知道, 是谁写的信,写给谁的,主要说的什么。 由此可见,人和人之间沟通的书面文字是有一定书写规范的。
     那么同样的道理,作为人类和计算机之间沟通的书面文字(实质是就是 人向机器发出的命令的集合体——程序), 也要遵循一定的格式,而且 简单的C程序也大致分为3部分:开头、正文和结尾,和信比较如下图 :

举例 : 我想让人和计算机完成写星号的任务,命令的对比如下:

现在让我们将如下图案输出到屏幕上:

计算机执行此程序后屏幕显示如下:

假设系统最初将当前输出位置设定在(1,1),printf将在以(1,1),(2,1),(3,1)(4,1).....的顺序从左到右放置输出内容,直到第一行最右端的(80,1),再从第2行最左端的(1,2)开始显示,(2,2),(3,2),.......,当第2行放满,再放第3行,......如此直到25行全部写满后,上卷屏。

现在明白上面的程序输出的结果是为什么了吧。

如何能输出那个图案呢?

让我们来分析一下,画一个显示了预想图案的屏幕:

用"_"表示空格(键盘上有空格的欧),改写程序如下

当然,printf支持从某行的某位置直接将输出位置变到下一行的行首,称为换行控制。

在需要换行的位置,加'/n',比如:我们刚才的程序用'/n'改变如下:

那么,有没有能让我们指定输出位置到任意的行列呢?比如:现在指定在(5,5)输出一个星号。

有!!!!,gotoxy(5,5);可以定位输出位置到(5,5);

当gotoxy(5,5);将输出位置定在(5,5)后,printf输出一个星号到该位置上。

至于用gotoxy()函数实现我们上面的星号组成的3角形,留给读者思考了。

总结:例1.1的知识点3个:

2。关于屏幕输出的基础知识和printf

一、数据存储和使用变量

在开始讲解以前,先按我的要求完成一个数学题的求解:

你能按要求完成本题目吗?我想你应该能写下:sum=579

好,以上我是让“人”计算并写出结果,

下面如果让机器完成上述问题的解答,我该如何把问题描述给机器呢?我们一句一句对比着来:

将上面对人的描述的第2步做更改如下:

2.任意给定 a和 b, 有sum=a+b 任意给定的意思是给出题目时不指定。那么什么时候给出具体值呢?

举例:有甲和乙两个人,甲把上面的题目让乙做,那么乙解题的详细步骤如下:

     乙了解到此时需要让甲给出a和b的具体整数值,因此乙将一直等待,当甲给出a和b的具体的整数值后,乙继续进行解题,即进入第3步。

现在,我是甲方,计算机是乙方,道理相同,对机器描述的第2步做更改如下:

就可以让计算机在按步骤解题时,到达第2步停下来等待,直到我给出a、b的具体值,才再继续。

让甲、乙、丙 3 个人合作完成求 2 个数中较大者的任务:

甲:提供 2 个整数给乙

乙:等待,直到甲给出 2 个整数 a,b

呼叫丙,并且将 a,b 两数告诉丙

等待,直到丙回复一个整数,

将该整数用 ”max=?” 的格式写在黑板上。

丙:将呼叫者给出的两个整数分别给变量 x 和 y

找出 x,y 中较大的数,将其回复给呼叫者。

丙改称 max 更具体且严格的描述如下:

请参考如下图案输出到屏幕上的讲解:

5 要输出最大值和最小值怎么写?

8 请问有更经典的解法吗? 学习了循环和数组以后,再。。。。。。。。。

微信的推送规则进行了调整

希望大家看完文章多点在看,喜欢的话也点个分享和赞

这样就不会错过EETOP的每一篇推送了

也欢迎在文末留言和我交流

最近我收到很多同学的提问,让我介绍一下FPGA怎么学习、怎么进阶,有什么推荐的材料或者学习资源。

在给我留言和私信的朋友里,有在校的大学生,需要学FPGA做数电实验、参加竞赛、进实验室,或者只求水过这门课就可以。还有很多研究生或者博士生,想要用FPGA来进行算法加速,或者从事和FPGA相关的研究,但是有点不知道如何下手。此外还有很多想转专业的朋友,他们想把FPGA或者数字芯片设计作为未来的职业发展方向。所以我们可以看到,其实每个人的背景、学习的目的和方法、以及学习的时间和资源都不尽相同。

那么,有没有一个共通的学习路线,能够指引我们尽快入门FPGA学习呢?通过这几周的梳理,我发现不管我们的背景或者动机怎样,这个学习路线还是比较清晰的,而且很多内容的学习也是有很多的共通之处的。

在这篇文章里,我会主要介绍入门FPGA的学习路线。如果你刚刚开始学习FPGA,或者想要学习FPGA,那么这篇文章肯定会对你有所帮助。如果你已经学习一段时间了,那么这里介绍的学习路线应该会让你少走一些弯路。如果你是一个FPGA高手,也欢迎在评论里分享你的学习经验,说不定就能帮助很多希望学习这个内容的朋友们。

FPGA入门阶段的学习,知识点其实是最多也最杂的,很多人就是看到这部分要学这么多有的没的,就直接弃坑了。但是这个阶段其实非常重要,因为它会为你今后进阶打下坚实的基础。那么我们就来看看这个阶段到底有哪些内容。

总体来说,我把这个学习路线大致分成了四个部分,分别是: 编程语言、基础知识、开发工具和动手实验 。对于每个部分,我都会介绍和总结一些入门的时候应该掌握的知识点和套路,我也会介绍和推荐一些书籍和学习资料,希望能对你的学习有所帮助。

FPGA入门学习第一部分:硬件编程语言

FPGA的编程语言,是我们必须掌握的内容。和软件开发使用的C、 C++、Java等“高级”语言不同,FPGA开发使用的语言叫硬件描述语言HDL,或者寄存器传输级语言RTL,下文中我们统称RTL。

对于初学者,这里我们先不讨论高层次综合的内容,也就是用C语言或者python编程FPGA。关于高层次综合的内容,可以看我之前的文章《高层次综合:解锁FPGA广泛应用的最后一块拼图》。但是至少从目前各个公司的FPGA岗位的需求来看,RTL的代码能力还是必须的。

主流的硬件描述语言有VHDL和Verilog,还有一个叫SystemVerilog。VHDL和Verilog各有优缺点,比如VHDL的语法更加严谨,Verilog更加灵活,比较像C语言。对比VHDL和Verilog谁好谁坏不是这篇文章的重点,入门的话建议先熟练掌握一个就可以。

从我个人的角度来看,推荐先学习Verilog,特别是如果你有一定的C语言基础,那么应该会比较好上手。等你积累一定开发经验之后,可以考虑再看一下VHDL。因为有可能在实际项目里,一些模块是Verilog写的,另外一些是VHDL写的。所以即使写的不溜,也最好能大概看懂用VHDL写的设计。

不管你学习什么语言, 主要的学习内容都有三大部分,第一是语法,第二是如何用这个语言做电路设计,第三是如何用这个语言做验证

关于Verilog语法的书有无数本,但其实内容都大同小异,所以不用太纠结看哪本书,找一本评价好的就好。比较有名的有《Verilog数字系统设计教程》,或者《Verilog HDL高级数字设计》。但是不管你选哪本书,建议你花时间认真看一遍Verilog语法,不需要死记硬背,但应该对每条语法的基本用法和功能做到心中有数。

Verilog的语法,可以分为可综合(Synthesizable)和不可综合(Non-synthesizable)两部分。可综合就是指这部分语句可以生成对应的硬件电路。如果你的时间有限,一开始我们可以先看可以综合的Verilog语法,这个其实不多,常用的大概只有十来条语句。掌握之后我们再看用来主要用来写仿真和验证的那些不可综合的Verilog语句。

我强烈推荐一个刷题的网站,叫HDLBits。这里面有很多由浅入深的基础性的练习,非常适合初学者学习,强烈建议大家把这里面的题目做一遍。从做题的角度来看,其实学习Verilog和学习Python、C++或者Java等高级语言没什么区别,都需要代码量的积累,以提升熟练度。所以如果你学习的时间特别有限,可以先做这里的题目,遇到知识点之后,再去反查你的Verilog书,这样通过实践来学习。

使用RTL进行逻辑设计,主要有组合电路和时序电路两部分。组合电路里包括各种门电路、多路选择器、算术运算电路比如加法乘法、有符号数无符号数等等。时序电路里包括寄存器、时钟和复位的同步异步、计数器、移位等等,特别是状态机,都应该熟练掌握。这些在HDLbits那个网站里都有很多对应的题目。

RTL的验证,初学者主要掌握怎么搭建测试平台以及编写简单的测试用例就可以。验证这个东西可以很复杂,比如业界广泛使用的UVM、或者之前介绍过的形式化方法等等。我在验证这个领域花了将近三年的时间学习,仍然有很多欠缺的地方。所以对于初学者来说,这些内容在我们入门的时候不需要掌握。在下一篇文章里,我们再详细说说这些进阶的验证方法学。

初学者学习RTL最大的难点,也是最普遍的问题,就是喜欢用软件编程的思维来考虑硬件。其实,软件编程大都是顺序执行的,但是硬件编程大都是并行执行的,这是一个很大的思维方式的转变。这就需要我们在学习的Verilog的时候一定要多想想对应的电路,比如在Verilog里写一个for循环,它综合出来是什么样的电路结构;或者if else与case语句,生成的电路有什么区别等等,都是值得我们思考和总结的知识点。

学习一段时间之后,如果能做到对于一个给定的逻辑功能,我们能想象出来它的电路结构,然后能够用Verilog实现,并且能写一些简单的仿真环境和测试用例,那么就说明RTL语言这部分学的很通透了。

对于Verilog掌握比较熟练的朋友,我比较推荐大家转向SystemVerilog。事实上,很多业界的大公司其实都在使用的SystemVerilog作为主要的开发语言。

SystemVerilog可以看成是Verilog的超集,它向下兼容Verilog,但是加入了很多Verilog不支持、但非常有用的特性,比如自定义类型、结构体联合体,还有接口等等。此外还有一些用于仿真验证的特性,比如业界常用的用来做验证的随机约束和UVM,都是基于SystemVerilog实现的。同时,它也简化了很多Verilog里的一些语法表达,比如你不用纠结一个信号究竟是wire还是reg,在SystemVerilog里可以直接用logic表示,诸如此类的还有很多,我就不一一列举了。

我目前不太推荐初学者0基础自学SystemVerilog,主要原因是我没找到很好的中文入门资料。但是如果你学校或者培训班在教SystemVerilog,那样最好,可以一步到位。我一直在看的一本书叫《SystemVerilog硬件设计及建模》,我是10年前买的,它是非常好的一本工具书。但是请注意,它不是SystemVerilog的教材,所以如果你刚入门,看这本书肯定会懵逼。等你学完Verilog,再看这本书,就很容易转到SystemVerilog了。

还有另外一本书,叫《SystemVerilog验证 – 测试平台编写指南》,这个绿皮书也非常有名,它主要介绍的是电路验证的相关内容,比如面向对象、功能覆盖率、随机化、断言等等,想做验证的同学必看,购买链接我放在文末,但是刚开始入门的同学可以先不用看。

学习编程语言的时候,还有一个很重要的内容就是仿真工具。这里比较常用的是Mentor的Modelsim,还有Synopsis的VCS,又是一个二选一,其实哪个都可以。我用的比较多的是Modelsim。业界使用的其实是Modelsim的高级版Questasim,这个和初学者也关系不大。

此外呢,一般FPGA开发工具会自带一个轻量级的仿真工具,网上也有一些开源的验证工具,比如iverilog,还有一些网页工具,比如EDAplayground。这些大家可以根据自己的实际情况,如果没有Modelsim或者VCS的license,可以考虑使用这些开源工具看看。

FPGA入门学习第二部分:基础知识

说完了编程语言,我们再来看看入门FPGA的第二部分内容:基础知识。这里主要有专业基础课和FPGA相关的专业知识两部分。

专业基础课不多说了,都是大学电子类专业的必修课:电路、数电、计算机体系结构、接口、数字信号处理等等。对于那些想转专业搞数字芯片或者FPGA的朋友,优先看数电,其他的内容应该根据你想从事的专业领域有目的的看。

和FPGA相关的专业知识,包括FPGA芯片的基础结构,以及它的一些基本单元的结构,比如查找表、逻辑单元、逻辑块、DSP、存储器等等。这部分内容,推荐看FPGA官方的文档,当然很多教FPGA的书里也都会有这方面的内容,接下来我们会说。

还有很重要的一部分,就是了解FPGA的开发流程, 主要包含了设计、仿真、综合、映射、布局布线,时序收敛,映像下载和硬件调试等步骤。这里面还有很多小的环节,比如时序和面积的约束、各个阶段的仿真等等。我们至少应该知道,为什么需要这些步骤,每个步骤都完成了什么功能。

FPGA入门学习第三部分:开发工具

FPGA开发工具的使用也是入门FPGA必须要掌握的内容。目前,最主流的FPGA开发软件有两个,就是赛灵思/AMD的Vivado,还有英特尔的Quartus。这里又来一个二选一,大家要根据自身情况去选择,比如你们学校教的是谁家的FPGA,或者你用谁家的开发板,或者你手头有谁家的license之类的。在入门阶段,我建议专注于一个平台,没必要两个都学。一个搞通了另外一个其实换汤不换药。

学习FPGA开发工具的目的主要有3点。 第一,熟悉前面说的FPGA开发流程。比如:怎么创建工程,怎么添加文件,怎么跑一系列编译的流程,怎么加入时序约束,怎么分配管脚,然后怎么把生成的FPGA映像加载到开发板上运行。

第二,就是熟悉一些常用的IP的用法。在FPGA项目中,我们会用到很多不同的IP核,比如PLL、FIFO、存储器等等,这能帮助我们提升设计的效率和性能,避免重复造轮子。所以我们应该学会怎么配置和调用这些常用的IP。此外还有复杂一些的包括软核处理器NIOS,还有一些通信用的IP比如以太网控制器、PCIe、DDR控制器等等。一开始学习的时候一般不需要看,进阶的时候再看也来得及。

第三,就是学习一些常见的硬件调试和时序分析的方法,比如怎么看最大频率,当时序不收敛的时候怎么进行分析和修改设计,怎么用signaltap做一些简单的硬件测试等等。

这部分的学习,建议大家对照教材或者参考书进行,此外,我强烈建议大家配合着开发板进行学习,这就是下面要说的FPGA入门路线的第四点:动手实验。

FPGA入门学习第四部分:动手实验

学习硬件不摸板子,就像纸上谈兵。所以最好结合开发板和参考书的实验例程,从头到尾走几遍前面说的流程。现在市面上这类书也有很多,其实内容也比较类似,比较经典的实验有流水灯、按键、数码管、红绿灯、一些常见总线的通信、一些数据和信号处理的实验等等。

我当年看的是特权同学的书,相信很多同学也看过。我当时没买他的开发板,我用的是学校的板子。现在这些开发板在某宝上有很多,如果你要买的话,我认为不用买太贵的,基本功能有就可以了。绝大部分板子我都没用过,我就不做具体推荐了。如果你看好了哪个板子但是不确定合不合适,可以在下面留言或者私信我。

FPGA入门学习:知识点小结

这篇文章给大家梳理了一下入门FPGA的学习路线和知识点,主要有四点,就是编程语言、开发工具,基础知识和实际的硬件实验操作。如果你掌握了这些,其实就已经为更高阶段的学习打下一个比较坚实的基础了。我把这些知识点总结了一个思维导图,大家可以在我的公众号老石谈芯的后台,回复 fpga入门,获取这个思维导图。

当然这些内容说起来容易,实际还是需要大家花时间下功夫去学习和钻研。事实上不管是学习FPGA,还是学习其他任何东西,从来都是一份耕耘一分收获。除了学习这些专业的内容以外,我们更是在努力变的自律,也在培养和锻炼自己不断学习的能力、面对挑战的勇气,以及在挫折和困难中不断前行的韧劲。我相信付出肯定会有收获,明天的你也肯定会感激自己今天的努力。我祝愿大家能够享受这个学习的过程,我也希望能和大家一起,不断通过努力变成更好的自己。

(注:本文仅代表作者个人观点,与任职单位无关。)

(双11期间75折!)

我要回帖

更多关于 c语言的题目 的文章

 

随机推荐