Chinaunix首页 | 论坛 | 博客
  • 博客访问: 104598096
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: C/C++

2008-04-17 22:46:04

来源:hur.cn

p;                  array[i]=array[i+gap];

                             array[i+gap]=temp;

                          flag=1;

                      }

        }while(flag);

}while(gap=gap/2);

}

void main()

{

int array[]={1,2,32,43,64,7654,321,42,23,97,56,32,78,45,32},i;

shell_sort(array,15);

for(i=0;i<15;i++)

        printf("%10d",array[i]);

}

对于后面两个程序与前面用for语句排序来比较,whiledo-while语句运行起来比较快,并且没有for语句那样的毛病,运行量大的时候可能会出错。比如说,从1循环到10000那么大的时候,冒泡法与选择法就有可能会出错了,希尔排序只减少了一部分的运行量,但并不是很完善,快速排序法完全脱离for语句的使用,对于运行量大的循环是没有问题的了,但只能够用来排序,不能够找出最值,若要找最值来的话,只好选择选择法。

其次,我们在学习数组的时候,还要考虑数组的输出和输入,但这都与循环语句for打交道,通常情况下,是几维数组就用几个for循环语句。但我们在不确定数组的范围是多少时,我们可以先用宏定义来定义数组的范围,然后再由用户确定。但一定要先定义才能使用,因为c语言中,大部分的变量,都遵守着先定义后使用的原则(对于语句则是先声明后使用)。数组在存储字符串的时候,又涉及到专门的语句使用,如gets(),puts()输入输出语句,还有赋值时,就不能用等号赋值了,而用到strcpy()语句等等(将来在c++中或许可以考虑使用运算符重载)。总之,数组的使用,可以与指针的结合(但指针并不是万能的,有利也有弊,用得不好,有可能导致系统瘫痪),那样运用起来会更加简便,特别是在字符串那一部分,需要用到二维数祖时,利用指针可以先取下字符串的首地址,然后就可以访问整个字符串了,这样可以解决函数返回值一个值的问题。

另外,如果我们有兴趣的话,可以接触一些图形的编辑。但图形编辑是离不开我们所学的基本内容。不过在学之前,我们得先做点准备。c语言图形编辑程序是在dos的环境之下运行的,但一般未经设置的编辑器是不能调用graphics.h的头文件的,我们可以按照以下途径设置:打开编辑器(c语言编辑不能用vc来编辑图形),选择途径:options\\Linker\\Libraries……然后在Graphics library上打上“x”即可!这是TC的一种设置办法,但对于其他的编辑器也是差不多的。在开始编辑图形时,要进行图形的初始化,也要对他进行一些设置,比如说,我们在D盘的根目录下装了一个TC,那么我们在初始化时设置为:initgraph

&gdriver,&gmode,”d:\\tc\\bgi”;这样就可以利用图形编辑了。有一个经验就是在编辑图形的时候,我们会经常用到一个输入函数getch(),头文件是conio.h,它是一个非缓冲式字符输入的操作,不显示输入的内容。在c语言的编辑中,它提供了很多的图形编辑工具,都在头文件graphics.h里面,如果要编辑的话都可以找出来查看学习。

最后,我觉得在编译的时候,很重要的一个查看函数头文件的帮助方法,就是Ctrl+F1,使我们在忘记的时候,及时查看。方法虽然简单,但很实用!

阅读(537) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~