c语言编程建议和技巧,C语言程序设计学习技巧-程序员宅基地

技术标签: c语言编程建议和技巧  

C语言程序设计学习技巧

【C语言程序设计上机练习技巧】

1.学习编程的秘诀是:编程,编程,再编程!

要多上机、进系统练习,不能停留在所谓的复印答案上。不看书是绝对不行的,但光看不练也不行,练习能加深对理论知识的理解。多编几次程序、多几次上机调试,很东西自然而然就懂了、自然而然就记住了。C语言之所以挂科率高,主要的原因还是“平时不学、没有理解和掌握、仅考前1~2周突击死记硬背”——现在考察的是能力,能力的形成需要较长时间的实践磨练,而不是短期的死记硬背或突击。

考前的复习准备肯定有帮助,但基础还在平时,某些同学考试及格了,不能只看到其考前的复习准备而忽略其平时的努力。请平时一定要加强练习,循序渐进,由易到难,不要等到临考前去背所谓的答案——已有的事实和往届学长惨痛的教训一次次证明:死记硬背答案花的时间更多、很痛苦、极难幸运地及格,除了后悔、给后来者提供教训外,对自己的人生没有任何意义。为什么平时不花点时间去掌握知识并收获、体验成功的喜悦、让青春更有价值、让未来充满机遇和希望呢?

即使需要背(理解记忆),也应是程序的主要步骤、主要算法。

2.编程时,建议先用伪代码(注释语句)写出主要步骤(算法),然后再写程序。

先不要考虑用C语言怎么实现,应先考虑人工完成应怎么做、想清楚人工完成的每一个细节,然后结合计算机能按你规定步骤自动执行、高速、高精度的特点,设计出相应的算法(主要步骤)。算法可以用流程图表示,也可以用伪代码(注释语句)表示,应写(画)出每一步骤要完成的工作。设计算法时应自顶向下、逐步求精,先整体再局部,先宏观再细节,这样才思路清析。

C语言难学只是一个表面现象,难不在C语言本身,若是同样的编程要求,换做VB、Fortran、Java也一样的难。在软件设计中,先要做总体设计,再是详细设计(设计算法,与具体语言基本无关),然后才是使用一种语言来编码,真正难的是总体设计和基本与语言种类无关的详细算法;算法做好后,并非一定要使用C语言实现,在社会分工中,编码(可以用C语言)是技术含量、工资较低的活,通常由蓝领工人完成。

如果主要步骤(算法)写不出来,则程序的正确设计注定是不可能的——经常出现的情况是写了一大段程序,但自己都不知道这些程序和变量的作用、是怎样运行的。

3.注意练习系统给出的提示(评分备注)。

评分备注主要分4类,说明了评分的详细情况,应仔细阅读并采取相应的措施。

(1)报告编译链接错误,如下的备注信息指明了程序第27行存在的问题:

.c(27) : error C2220: warning treated as error - no object file generated

.c(27) : warning C4101: 'k' : unreferenced local variable

(2)失分情况,在哪些方面失分:

失分[10],未实现:输出了x的值,格式符合要求,与示例一致

失分[20],未实现:x>0时计算正确

失分[20],未实现:x=0时计算正确

失分[20],未实现:x<0时计算正确

失分[30],未实现:当函数值超过int型数据表示的范围时计算正确

(3)违反编程规范的情况。编程规范与算法、设计是否正确无关,按要求修正即可,其目的是让考生养成相应的习惯和意识,最后上升为一种素质:

第27行: 应当使用Tab缩进,而不是使用空格

第27行: 'if'缩进错误

第27行: 在操作符'!='前后应有空格

第7行: 变量(h)命名太简单

(4)程序修改了禁止修改的部分或不符合编程要求,例如:

本程序已有内容禁止修改但却被考生修改或考生添加代码部分之行数、行长超限,评分终止。建议使用系统提供的专用检查程序(单击此处下载)进行检查。

4.利用在线帮助,不需要、不该背(记忆)的东西坚决不背!

当你对某个关键字、函数的用法不清楚或不知其在哪一个头文件中定义时,可以将光标移至该关键字、函数上,按“F1”键(TC为Ctrl+F1),VC6即可显示出相关的说明(若相关的说明项较多,则应选择与Visual C++ Programmer Guide——VC++程序员指南相关的,如图1所示)。

由此:

(1)每个程序应包含哪些头文件,不需要背。编程时可先不写头文件,则编译时会报警告信息,例如说某函数未定义等,则通过在线帮助查出其所在的头文件再复制即可。

(2)系统库函数的用法、参数的顺序及意义不用背。例如fread和fscanf有多个参数,fread的文件指针参数在最后而fscanf则在最前;再如scanf和printf中的格式控制、数据类型控制、转义符等在在线帮助中均有。特别要说明的是,在VC6的在线帮助中,绝大部分语句、函数都有例子,复制下来改一改就可能完成了新的任务。

(3)当某个函数名或保留关键字记不清楚拼写时,可使用自动完成或在在线帮助中使用索引协助查找。

5.勤用复制、粘贴。

自行逐字输入太慢且容易出错,复制、粘贴又快、又准,何乐而不为呢?

(1)程序提供了编程素材的,一定要复制、粘贴。搞错了可能影响得分甚至得0分,尽管设计正确,但记住是计算机自动阅卷,要按要求做。

(2)调试程序时,若输入数据较多,则应复制、粘贴。注意,题目中给出的测试数据中可能隐藏有全角的空格或多余的空格,直接复制、粘贴可能会有问题,建议此时应先复制到记事本中,进行编辑处理,然后再复制、粘贴。

(3)在线帮助中有例子或参考代码,则应复制、粘贴后再修改,既准确,又能节约不少宝贵的时间。

(4)编写好一个程序后再编写另一程序时,建议将编好程序的框架复制到新程序中再修改,可节约一些时间。

6.计算中心提供全天候的免费开放机房并有助教为您答疑解惑,服务不好可以投诉,详情请单击此处查看。

7.计算中心网站提供有C语言程序设计的教学录像,请在本网站中使用搜索功能查找。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_36212560/article/details/117165651

智能推荐

代码管理之结合repo和git搭建代码服务器_repo和git 配合使用-程序员宅基地

文章浏览阅读2.2k次。在管理android项目的时候,如果使用一个git仓库来管理整个android的源码的话,感觉总是不爽,所以谷歌引入了repo,说白了,repo其实就是一个python写的脚本,用于管理多个git仓库的代码,使得我们可以同时下载多个git仓库的代码,而这些git仓库的代码可以组成我们最终想要的整个大的工程的全部代码。总结一句话,repo是用来管理多个git仓库的工具。那么如何搭建repo工_repo和git 配合使用

python QT 图片缩放,移动_qtdesigner中怎么让图片随着控件缩放而变化-程序员宅基地

文章浏览阅读5.4k次,点赞28次,收藏93次。利用python的QT库搭建图片显示界面,实现图片的拖拽、以鼠标中心缩放等功能。_qtdesigner中怎么让图片随着控件缩放而变化

Powerdesigner逆向工程从现有数据库生成PDM _powerdesigner 从数据库反向生成pdm-程序员宅基地

文章浏览阅读432次。在数据建模过程中,我们建立概念数据模型,通过正向工程生成物理数据模型,生成数据库建库脚本,最后将物理数据模型生成关系数据库,现在反过来,通过逆向工程将关系数据库,生成物理数据模型。 优点: 在丢失数据模型或者数据库模型同现有的数据库不一致,可以通过该方法生成使用中数据库的模型 缺点: 还原回的模型中,可能会没有中文注释,没有表外键对应关系(字段还有,索引关系没了) 前提: _powerdesigner 从数据库反向生成pdm

你应该知道的RPC原理_grpc 选举-程序员宅基地

文章浏览阅读424次。-- 学习rpc,找到一篇rpc的入门,感觉是讲的非常好,唯一遗憾就是没服务治理这一块内容,转载学习下!在学校期间大家都写过不少程序,比如写个hello world服务类,然后本地调用下,如下所示。这些程序的特点是服务消费方和服务提供方是本地调用关系。  而一旦踏入公司尤其是大型互联网公司就会发现,公司的系统都由成千上万大大小小的服务组成,各服务部署在不同的机器上,由不同的团队负责_grpc 选举

C++ 11继承控制关键字:override(虚函数重载)和final(阻止继承、虚函数重载)_c++11 限制子类的子类不重写虚函数-程序员宅基地

文章浏览阅读1.1w次,点赞8次,收藏18次。C++ 11添加了两个继承控制关键字:override和final。override确保在派生类中声明的重载函数跟基类的虚函数有相同的签名。final阻止类的进一步派生和虚函数的进一步重载。接下来让我们看看这些监督者如何消除你在类层次结构的设计和实施中的bug吧。虚函数重载一个派生类可以重载在基类中声明的成员函数,这是面向对象设计的基础。然而像重载一个函数这么简单的操作也会_c++11 限制子类的子类不重写虚函数

《5G网络协议与客户感知》读书笔记 | 业务请求信令序列_5g initialuemessage-程序员宅基地

文章浏览阅读1.7k次,点赞2次,收藏4次。UE触发的业务请求的信令活动序列1.UE=>(R)AN#RRC,RRC/Service Request 当UE想要重新激活PDU会话时,由UE提供要激活的PDU会话的列表。当业务请求是针对与非3GPP接入关联的PDU会话的寻呼或NAS通知的响应时,由UE提供允许的PDU会话列表,并且识别可以传送给3GPP接入的PDU会话。在NG-RAN的情况下,接入网络的参数包括Selected PLMN ID和建立原因。建立原因提供了请求建立RRC连接的原因。UE将封装在RRC消息中的A..._5g initialuemessage

随便推点

南阳理工OJ_题目91 阶乘之和_南阳理工oj91-程序员宅基地

文章浏览阅读629次。//用n从9的阶乘开始向前减 #include using namespace std;int main(){ int T; int a[] = {1, 2, 6, 24, 120, 720, 5040, 40320, 362880}; cin >> T; while(T--) { int n; cin >> n;_南阳理工oj91

B2B,B2C,C2C,C2B,B2G_c2b网站代表-程序员宅基地

文章浏览阅读2.8w次,点赞4次,收藏7次。B2B、C2C、B2C B2B:B2B(Business To Business)是指一个市场的领域的一种,是企业对企业之间的营销关系。电子商务是现代B2B marketing的一种具体主要的表现形式。它将企业内部网,通过B2B网站与客户紧密结合起来,通过网络的快速反应,为客户提供更好的服务,从而促进企业的业务发展。 B2B模型 简介 目前基于互联网的B2B_c2b网站代表

物联网概论(IoT)_Chp5 物联网通信 Zigbee/蓝牙/UWB/WLAN/WiMax_公用电信网可以划分为哪三部分?-程序员宅基地

文章浏览阅读6.5k次。Chp5 物联网通信公用电信网可划分为三个部分,即长途网(长途局以上的部分)、中继网(长途局与市话端局之间、市话端局与市话端局之间的部分)和接入网(端局与用户之间的部分)。目前国际上倾向于将长途网和中继网合在一起称为核心网,相对于核心网的部分就是接入网。在物联网中,接入网技术是物联网通信的关键技术,接入网和核心网共同构成了物联网通信的体系架构。依通信覆盖范围的不同,无线网络从小到大依次为无线个域网(WPAN)、无线局域网(WLAN)、无线城域网(WMAN)和无线广域网(WWAN)。无线接入技术能实现真_公用电信网可以划分为哪三部分?

oracle下载后怎么安装不了,Oracle 19c安装出了问题,怎么也解决不了,求大神帮忙...-程序员宅基地

文章浏览阅读725次。[ 2020-09-16 10:51:04.892 CST ] [WARNING] [DBT-11209] 当前的可用内存低于创建数据库所需的可用内存 (3,231MB)。[ 2020-09-16 10:51:07.055 CST ] [WARNING] [DBT-09251] 没有为数据库选择监听程序配置。EM DB Express URL 将无法访问。[ 2020-09-16 10:51:25..._oracle安装19c [ins-35179] 当前的可用内存低于创建数据库所需的可用内存 (3,238m

S5PV210开发 -- 通过 SD 卡烧写_fs210 sd卡-程序员宅基地

文章浏览阅读3.7k次,点赞3次,收藏16次。如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/78329328上文 烧写/启动模式 提到使用 SD 卡启动。那么接下来看看怎么做。一、首先备份一开始购买的开发板是 Android 系统的,将拨码开关调到 SD 启动模式下。按POWER按钮,备份一份在SecureCRT 下查看的启动信息。U-Boot..._fs210 sd卡

组合游戏系列2: 井字棋Leetcode系列题解和Minimax最佳策略实现_井字棋博弈树题目-程序员宅基地

文章浏览阅读2.5k次。继上一篇介绍了Minimax 和Alpha Beta 剪枝算法之后,本篇选择了Leetcode中的井字棋游戏题目,积累相关代码后实现井字棋游戏并扩展到五子棋和N子棋(战略井字棋),随后用Minimax和Alpha Beta剪枝算法解得小规模下N子棋的游戏结局,并分析其状态数量和每一步的最佳策略。后续篇章中,我们基于本篇代码完成一个N子棋的OpenAI Gym 图形环境,可用于人机对战或机器对战,并最终实现棋盘规模稍大的五子棋或者N子棋中的蒙特卡洛树搜索(MCTS)算法。第一篇: Leetcode中的M_井字棋博弈树题目

推荐文章

热门文章

相关标签