APP下载

C语言学习中几个常见典型错误研究

2021-03-27赵世琦

科学与生活 2021年35期
关键词:C语言

赵世琦

摘要:作为一门特别优秀且用途极为广泛的结构化程序语言,C语言是中职电子技术、机电以及中职计算机等多个专业的需要实践与理论相融合的课程。在教学实践的过程中,大多数学生都会认为C语言晦涩难懂,不容易学习。造成不要读写程序的原因多种多样,但是最为显著的因素之一便是并能正确的掌握并理解C语言相关的编程知识与规定。在本文的研究中,我从将赋值预算符号视为等于号、在函数的递归调用之中只了解递不知道归等两个方面的常见错误进行分析,以此来证实学生在实际学习程序以及编写程序中最容易出现的错误与不足,引导学生在未来的工作与学习中,如何正确的结合编程的相关规定完成既定的读写程序。

关键词:C语言;赋值预算;函数嵌套调用;递归调用

前言:C语言在实际应用的过程中,具备着灵活、紧凑、简介以及强可移植性等特征优势,备受编程工作人员的认可与喜欢,并能够在社会发展的进程中得到充分的利用。作为热门专业中的重点学科,无论是教师的讲解还是学生的学习都应该以了解该知识内容基本理论的基础上,对程序设计的基本问题、思想等进行深度的发掘,从而才能够从多角度、多层次完成对问题的分析与思考。本文的研究能够让学生在掌握相关知识的基础上,有效避免出现典型的错误与问题,并在出现问题时及时有效的给予相应的解决对策,对学生C语言能力的综合发展具有理论性意义,对学生不断完善自我强化自我具有指导性意义。

一、将赋值预算符号视为等于号

在以往的数学学习过程中,我已经习惯了将“=”看作为等于号,其含义为等式的两边是相等关系,两边可以是表达式也可以是变量。但是,在接触C语言后,“=”的的含义则变化为赋值运算符号,其主要的作用也成为了将右边表达式的值赋予给左边的变量,其中“=”左侧必然是变量,而右侧则一定是表达式,我们学生如果在学习的过程中,依然将其视为等于号,那么在实际应用的过程中便必然会出现编程错误[1]。例如,为了能够满足用户不断增长的用水量需求,某市新建设了三个水厂分别为甲乙丙。三个水厂每天的供水量总共有11.8万立方米,其中甲是乙的三分之一,甲是丙的二倍还少一万立方米,利用编程实现“计算并输出甲乙丙日供水量的分别数值。”在我们的惯性思维中,大多所写程序如下:

# include<stdio.h>

void main()

{ float x,y,z;

y=3*x;

Z=x+l;

x=11.8-y—z;

printf("%f %f %of",x,y,z);}

依据我们以往的思维惯性,上述的编程是没有问题的,但在实际执行的过程会发现,最终所得结果为429496704.000000-32212528.000000-102374176.000000[2]。

但是这个结果明显不是正确的,其主要得错误原因就在于我们在编程时将“=”视为等于号而非赋值号。但是在程序实际执行的过程中为:因为没有赋予x,y,z的初值,那么x则为随机数值,执行程序时会将随机的x值的三倍赋予给y,又将x+1赋予了z,最后又在编程的运算中将11.8-y-z给予了x,而并不是我们编程过程中所认为的等于号,对方程求解[3]。为了修改程序,应该意识到在整个题目中,只有總水量的数值是确定的,其他的参与都为未知数,具体来说,设置总水量为m,则可以推算x=(m-1)/4.5,具体编程为:

# include<stdio.h>

void main()

{float x,y,z,m=11.8;

x=(m-1)/4.5;

y=3*x;

z=x+1;

printf("%of %f %f”,x,y,z);}

运行程序可以推导出:

2.400000 7.200000 3.4000000,可以看出该种程序的结果为正确的[4]。

二、在函数的递归调用之中只了解递不知道归

所谓的函数嵌套调用主要指的是在被调用函数实际执行的进程中,被调用的函数有调用了其他的函数。被调用函数在被主调用函数调用时,执行的函数时被调函数,被调函数在结束执行的过程中,返还到主调函数,被调函数处将继续对主调函数的后续语句执行。而函数的递归调用则主要指的是某一函数在其函数体内,间接或者是直接的对其自身进行调用,我们在嵌套调用不同的函数过程中,大多数都明确对被调用函数执行之后,需要重新回到调用函数中继续执行相应程序,但是,到了递归调用函数中,便容易出现错误,不知道需要归回到哪一环节中,在本文的研究中,将会利用程序阅读题对此问题进行系统的分析:

t#include<stdio.h>

int change(int n,int q){

if(n<q)

return n;

else

return change(n/q.q)*10+n%q;}

int main()

{int n=100,q=8;

printf(“%d.%d\n”,change(n,q));

return 0;}

该程序的全部执行过程应该是将n赋值为100,q赋值为8,并将二者视为传出去的参数传递到change函数中的两个等待接收的参数q和n,在int change(int n,int q)[5];在这一函数中,如果8<100,则应该执行return change(n/q.q)*10+n%q,当12等于n/q且8=q时,可以将两个等待接收的参数q和n传出去的参数传递给change函数。int change(int n,int q)当函数中,8<12时,可以执行return change(n/q.q)*10+n%q;语句q=8和n/q=1又可以重新作为传出去的参与传递到change中两个等待接收的参数n和q。可以证明,在实际编程工作进行的过程中,我们应该明确的掌握C语言的相关规定与要求,并结合具体的要求对程序进行读写,最终才能够得到正确的答案与结果[6]。

结论:综上所述,C语言是编程工作人员最为常用的工具之一,为了能够让中职院校的学生在步入社会时可以更好的融入团体、为所任职的企业创造效益,应该更好的掌握相关知识,并对常见的典型问题有所把握,从而才能够在实际编程中有效避免,提高工作效率与工作质量,在本文的研究中,结合实际学习的进程与内容,可以总结出将赋值预算符号视为等于号、在函数的递归调用之中只了解递不知道归等两方面问题。望本文的研究能够有效引导学生,使其在学习C语言的进程中得以有效避免相关问题,并能够快速、准确的掌握相关知识点,保障个人综合能力的提升。

参考文献:

[1] 何春元, 李林原, 杜鹏,等. 计算机专业课程思政内涵挖掘-以C++程序设计课程为例[J]. 教育研究, 2021, 4(2):55-56.

[2] 陈亭志. 疫期职业教育课程单元混合式教学设计——输出式学习在C语言课程中的应用[J]. 武汉职业技术学院学报, 2020, 19(4):6.

[3] 方炜炜, 周淑一, 李桂芝,等. 基于OBE的自主学习型C语言程序设计公共课在线开放课程的建设与研究[J]. 高教学刊, 2021(3):4.

[4] 黄婕. 联通主义下高职学生"C语言程序设计"课程在线学习能力的提升策略[J]. 西部素质教育, 2020, 6(3):3.

[5] 李晶. 任务驱动教学法在中职《C语言程序设计》课程教学中的应用[J]. 黑河教育, 2020(1):2.

猜你喜欢

C语言
“新工科”背景下课程思政在《C语言程序设计》课程中的实践
基于C语言的计算机编程技术
“C语言程序设计”课程混合教学探索
浅谈基于C语言的计算机软件编程
基于C语言的计算机软件编程技术探究
中职计算机C语言教学的探讨与研究
中职C语言单片机课堂教学中的趣味性探讨
计算机原理中C语言的应用价值
高职单片机C语言教学三步曲
基于TI C6000系列DSP的C/C++程序优化技术