c语言程序一些常见的不足,C语言常见错误分析及解决方法-程序员宅基地

技术标签: c语言程序一些常见的不足  

C.C语言的应用很广泛,越来越多的程序员希望能够学好C由于C语言的编译系统对语法的检查不如其他语言那么严格,因此C语.下面将C语言中初学者最常见的错误分析如下;

1 语句书写错误

由于大部分学生都是初次接触程序设计语言,缺乏程序设计的实践,对C语言语句又比较陌生,因此在编写程序时经常出现丢三落四、画蛇添足的情况.语句书写错误主要有:

(1)语句结束未加分号或多加分号.C语言规定,分号作为语句的终止符,是语句中不可缺少的一部分.初学者经常忽略这个分号,如:

main(); structdate

{intyear;

intmouth;

intday;}{inta=1;……

以上两段程序在编译时都会出错.第一段程序在定义结构体变量时,没有添加终止结构定义的“;”,

第二段程序在函数定义中第一行的函数名后应该没有“;”.可见每一条语句的后边都要加分号,函数名后边不加分号.因此初学者要特别注意分号的使用.

(2){},[],(),′′,″″不配对.解决这个问题最好的方法是在写这些符号的时候先成对书写,然后再在中间添加语句.

(3)不该有空格的位置加了空格.例如,在关系运算符<=,>=,==,!=中,两个符号之间不允许有空格.

对于以上错误,初学者要相当小心,C语言程序虽然书写格式自由,但这些细节不能忽视.那么解决语句类错误的方法是增强感性认识,加深理解,在思维方式上形成固定的语句模式.初学者要多读程序,阅读程序是学习C语言入门最快、最简洁的方法.特别是对于一些没有学过计算机语言的初学者,应该先阅读教材,学习它们的编程格式、编程风格,多看一些优秀代码,拓展自己的思维能力,开阔眼界.2 定义、初始化、引用方式错误

此类错误涉及的是C语言的语法部分.语法是C语言的基础,只有掌握了语法,才能够编写程序.因此要求初学者熟悉C语言的每一个语法,并能根据这些语法来编程.那么C语言中常见的语法错误主要有:

211 使用未经过定义的变量

例如:

a,b;main()

{a=1;b=5;

收稿日期:2017—12—10

作者简介:朱一峰(1983-),男,辽宁朝阳市人,助教,主要从事计算机教学研究.

1994-2017 China Academic Journal Electronic Publishing House. All rights reserved. http://www.ahsrst.cn

朱一峰

}

a=1;B=5;

printf(″%d\n″,a+b);

} 41printf(″%d+%d=%d\n″,a,b,a+b); 又如:main() {inta,b;

以上两段程序在编译时都会出错.C语言要求对程序中用到的每一个变量都必须预先定义,并且严格区分大、小写英文字母.C语言程序习惯上使用小写英文字母,大写英文字母通常作为常量的宏定义和其他特殊的用途.

212 数组的定义与引用方式不正确

C语言规定,数组定义的形式采用“数组名+[常量表达式]式,不能出现变量或非整型值.(3(; (1)inta[j];

(2)intx=10,b[x];(4)213 3pt=&a;int3pt,a;

pt前面的“3”是一个指针声明符,表示是一个整形指针变量,在第二条语句中pt前面的“3”是指针运算符,也称为“间接引用运算符”,作用于指针变量,3pt表示指针变量pt所指向的存储空间,相当于变量a.另外,在使用指针前一定要对其进行初始化,否则系统在执行程序时会给出如下的信息:run-timeerrorR6001———nullpointerassigment或者引起更严重的错误使系统崩溃.214 定义函数时出现的错误

如:

);{printf(″insidesum\n″ (1)intfun(inta,intb)

{intresult;

result=a+b;

}

(2)intsum(void)intsum1(void));{printf(″insidesum1\n″}}

在C语言中,函数有返回值时要有返回值语句,第一段程序缺少“return;”语句;一个函数的定义不能从属于另外一个函数,因此函数不能嵌套定义,第二段程序应将函数sum1定义在函数sum之外.

解决语法类问题的最好办法是课上认真听讲、积极思考,课下多实践,具体做好以下几点.(1)养成良好的编程习惯.C语言的学习过程就是反复实践的过程,实践环节是非常重要的.要编出好的程序,就要通过上机操作来验证程序的正确性.多上机、勤上机不但可以提高个人反映速度、锻炼心理素质、增强心理承受能力,而且通过执行程序,初学者会发现程序中的错误,从而了解所学知识的不足,同时也能学会根据编译时系统提示的错误信息来改正程序中的错误.(2)学习C语言必须注意代码运行的细节.教材上的例子代码一定要自己动手上机运行一遍,编译、执行结果完全和教材上说的一致才算是学完一个例题,如果与教材不符,就要仔细查找出错原因.除了教材上现有的例子外,自己还要尽可能地“设计”一些程序,以便验证自己的想法是否正确.(3)初学者不要忽视课后习题,应该独立完成所有课后习题,然后参照习题答案中给出的代码,查看自己程序代码的不足,再修改自己的程序.大多初学者不重视习题的做法是错误的,因为作者通常会在习题中给出一些重要的编程思想,而不是简单的检验已学知识.3 混淆错误

《C语言常见错误分析及解决方法》全文内容当前网页未完全显示,剩余内容请访问下一页查看。

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

智能推荐

数据源初始化错误:ClassNotFoundException: com.alibaba.druid.pool.DruidDataSourceFactory的解决_caused by java.lang.classnotfoundexception: com.al-程序员宅基地

文章浏览阅读5.4k次,点赞3次,收藏3次。Exceptionsendingcontextinitializedeventtolistenerinstanceofclassorg.springframework.web.context.ContextLoaderListenerorg.springframework.beans.factory.BeanCreationException:Errorcreating..._caused by java.lang.classnotfoundexception: com.alibaba.druid.pool.druiddata

vxWorks/BootROM Imageq启动顺序详解 分类: vx...-程序员宅基地

文章浏览阅读399次。vxWorks/BootROM Imageq启动顺序详解VxWorks image 分为在ROM中运行和在RAM中运行两种,两者启动顺序的区别在于sysInit()函数的调用,该函数在RAM运行的VxWorks中初始化RAM。1.ROM中运行的VxWorks : VxWorks在ROM中运行,即写入ROM中的VxWorks是非压缩的,..._vxworks bootm 启动imga 指令

jboss规则引擎KIE Drools 6.3.0 Final 教程(1)-程序员宅基地

文章浏览阅读76次。前言眼下世面上中文的KIE DROOLS Workbench(JBOSS BRMS)的教程差点儿没有,有的也仅仅有灵灵碎碎的使用机器来翻译的(翻的不知所云)或者是基于老版本号的JBOSS Guvnor即5.x的一些教程,并且这些教程都是”缺胳膊少腿“的。刚開始学习的人看后不知道它究竟在干吗?能干吗?能够解决自己系统中什么问题。所以笔者自己写了几个样例,把整个最新的英文版的KIE DROOLS ..._drools-distribution-

Android MVP框架搭建与使用(含源码)-程序员宅基地

文章浏览阅读746次,点赞24次,收藏23次。其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。下图是我进阶学习所积累的历年腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节祝大家都能得到自己心仪工作。《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!> tag。_android mvp框架搭建

差分进化算法(Differential Evolution)-程序员宅基地

文章浏览阅读4.1w次,点赞43次,收藏239次。一、差分进化算法的由来差分进化算法(Differential Evolution,DE)于1997年由Rainer Storn和Kenneth Price在遗传算法等进化思想的基础上提出的,本质是一种多目标(连续变量)优化算法(MOEAs),用于求解多维空间中整体最优解。差分进化思想来源即是早期提出的遗传算法(GeneticAlgorithm,GA),模拟遗传学中的杂交(crossover..._差分进化算法

羊皮卷的故事-第七章-程序员宅基地

文章浏览阅读48次。海菲骑着驴子,由东门进了大马士革城。他沿着一条叫做斯特奇的大街骑着,心中充满了疑虑和惶恐。赶集者的喧哗吵嚷声,都无法驱除他心中的恐惧。以前跟着主人的商队,浩浩荡荡地来到这里时多风光呀,如今自己孓然一人,无依无靠,前途未卜。街上兜售生意的小贩,声音一个比一个大。他骑着驴,看着鸽子笼般的店面。他经过满地摆着的摊位时,琳琅满目的铜器、银器、马具、织品、木工制品,让他看不过来,每走一步,都会有小贩上前伸出..._羊皮卷第七章内容

随便推点

网站使用mysql_使用网站的mysql-程序员宅基地

文章浏览阅读92次。{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航,为用户的数据库应用系统进行性能和风险评估,参与配合进行数据压测演练,提供数据库优化方面专业建议,在业务高峰期与用户共同保障数据库系统平..._mysql对于网站

YOLOv7训练自己的数据集(超详细)-程序员宅基地

文章浏览阅读6.4w次,点赞74次,收藏808次。YOLOv7训练自己的数据集(超详细)_yolov7训练自己的数据集

gateway 内存溢出问题_java - Spring Cloud Gateway内存泄漏 - 堆栈内存溢出-程序员宅基地

文章浏览阅读2.6k次。生产中的Spring云网关发现了内存泄漏,导致系统停机。内存使用量不断增加,直到内存耗尽导致以下异常:2019-05-21 09:18:24.793 WARN The connection observed an errorio.netty.handler.codec.DecoderException: javax.net.ssl.SSLException: Tag mismatch!at io...._the connection observed an error, the request cannot be retried as the heade

Java流程控制语句-循环结构-程序员宅基地

文章浏览阅读978次,点赞15次,收藏30次。它是Java5后新增的for语句的特殊简化版本,并不能完全替代for语句,但所有foreach语句都可以改写为for语句。foreach语句在遍历数组等时为程序员提供了很大的方便。终极手撕架构师的学习笔记:分布式+微服务+开源框架+性能优化《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!**

找不到idr_menu1_最好每句都加注释//{{NO_DEPENDENCIES}}// Microsoft Developer Studio generated include file.// Us...-程序员宅基地

文章浏览阅读116次。最好每句都加注释//{{NO_DEPENDENCIES}}// Microsoft Developer Studio generated include file.// Used by MINE.RC//#define IDI_ICON 101#define IDR_MENU1 104#define IDR_MENU2 105#define IDR_MENU3 108#define ID_MENU..._idr_menu1无法找到

rgb矩阵Android程序,RGB矩阵切换器的应用-程序员宅基地

文章浏览阅读199次。大型RGB矩阵切换器一般作为全台或多个机房的调度中心,输入信号源多,可能有多种型号和线径的电缆,如果将各种电缆都直接接到矩阵上,安装会很不方便,也不利于维护和信号的调换。为此,外来信号可经视、音频转接板接入系统。大型RGB矩阵切换器在监控领域的应用逐渐清晰。为消除外来信号与矩阵所在机房之间的电位差,一般应选择带共模抑制的视频分配器作为矩阵输入端的分配设备。另外,输入信号转接板也要采用悬浮转接由于矩..._rgb 矩阵排列软件