同一问题的两个C语言程序比较

2014-11-24 01:23张惠文
考试周刊 2014年82期
关键词:高效性C语言程序

张惠文

摘 要: 高效性是检验程序设计水平的标准之一,本文就同一个问题给出两个略有不同的程序,两个程序均可达到问题的要求,即个两个程序都具备正确性的要求,但从效率角度考虑则有所区别。

关键词: 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.

猜你喜欢
高效性C语言程序
基于Visual Studio Code的C语言程序设计实践教学探索
试论我国未决羁押程序的立法完善
基于C语言的计算机软件编程
浅谈水质检测的高效性发展
“程序猿”的生活什么样
英国与欧盟正式启动“离婚”程序程序
数学课堂教学高效性的再思考
如何实现小组学习的有效性、高效性
高职高专院校C语言程序设计教学改革探索
创卫暗访程序有待改进