张惠文
摘 要: 高效性是检验程序设计水平的标准之一,本文就同一个问题给出两个略有不同的程序,两个程序均可达到问题的要求,即个两个程序都具备正确性的要求,但从效率角度考虑则有所区别。
关键词: C语言 程序 高效性
C语言是在国内外广泛使用的一种计算机语言,其功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高、可移植性好,既具有高级语言的优点,又具有低级语言的许多特点,因此能准确掌握并使用C语言可以为养成良好的编程习惯及编写高效率的程序打下良好基础[1-2]。本文主要采用C语言编写同一问题的两个程序,指出两个程序在特定情况下执行效率的不同。
1.问题的提出
数组是C语言中常用的存储同类型数据的数据结构,用来解决较为复杂的编程问题,通常将类型相同的数据单元组织在一起,这样处理相较于为每个变量分配独立的存储单元更有效率。本文即采用数组存储数据,编程实现如下问题:将一个数组中的元素逆序存放。如:假设数组中原来存有1,2,3,4,5,6,7,8,9,10,程序可以实现将该数组中的元素顺序逆转为10,9,8,7,6,5,4,3,2,1。
2.程序
针对上述问题给出以下两个程序。
程序1:
#defineN10
#include
intmain()
{inti,t,a[N];
printf("%s%d%s/n","输入",N,"个数组元素:");
for(i=0;i scanf("%d",&a[i]); printf("数组元素的原始顺序:/n"); for(i=0;i printf("%d",a[i]); printf("/n"); for(i=0;i {t=a[i];a[i]=a[N-1-i];a[N-1-i]=t;} printf("逆序操作后的顺序:/n"); for(i=0;i printf("%d",a[i]); printf("/n"); return0; } 程序2: #defineN10 #include intmain() {inti,t,a[N]; printf("%s%d%s/n","输入",N,"个数组元素:"); for(i=0;i scanf("%d",&a[i]); printf("数组元素的原始顺序:/n"); for(i=0;i printf("%d",a[i]); printf("/n"); for(i=0;i<(N-1)/2;i++) {t=a[i];a[i]=a[N-1-i];a[N-1-i]=t;} printf("逆序操作后的顺序:/n"); for(i=0;i printf("%d",a[i]); printf("/n"); return0; } 以上两个程序的设计思想是依次进行首尾对称位置的数据交换,直到完成所有数据逆转,见图1。需要注意的是,交换时只需对一半的元素进行操作,否则结果会还原为原先的顺序。 图1 程序设计思想示意图 程序1与程序2分别在VC6.0环境下运行,结果相同,运行截图见图2。 图2 程序运行截图 3.程序比较 仔细比较两个程序,发现两个程序仅在第12行有区别,程序1为for(i=0;i 图3 程序1设计思想示意图 圖4 程序2设计思想示意图 4.结语 C语言是一种使用灵活的计算机语言,使用不当或考虑欠周全,都会导致意想不到的结果;同时,由于其功能丰富、表达能力强,又能达到其他计算机语言所达不到的效果,这正是C语言至今仍被多数计算机专业人员常常使用的原因[3-4]。本文通过对同一问题的两个不同程序的比较,提出在熟练掌握C语言、正确编写C程序的基础上,尽可能进一步提高程序的效率。 参考文献: [1]薛玉莹.论《C语言程序设计》课程的学习.计算机光盘软件与应用[J].2013.8:188-189. [2]谭浩强.C程序设计(第三版)[M].北京:清华大学出版社,2005. [3]孔垂柳,田地.基于程序设计思想的C语言教学方案[J].吉林大学学报(信息科学版),2005,23(S0):5-6. [4]陶静.C语言教学方法探讨[J].东南大学学报(哲学社会科学版),2006,8(增刊):193-194.