C语言之循环程序(7)
不知不觉已经写了一个星期学习日志。原来在抱怨之中也挺好玩。
今天学习的是循环程序。开始觉得应该是挺麻烦的,但原来也一般般。
while语句和do-while语句的区别就是前一个是先进行e,然后看条件如何再决定循环与否,是否执行S;而do-while语句则是先执行S,然后再执行e,同样是看此后的条件决定是否循环。所以说白了就是do-while要在之前先执行一个程序。
然后就是for语句,也是循环语句。相比while和do-while要方便,所以也是最常用的。最神奇的是3个语句其实可以表示同样的东西,比如那个例题“计算1+3+5+…+(2i-1), 其中i=1,2,3,…,100。”在同样计算这道题,显然for就比用前面两个要方便。
然后就是多重循环。其实就是几个循环语句的套叠,不过一定要遵守一个规则就是不能交叉,其他的,就喜欢怎么就怎么。一共有9个选择都是合法的,也就是无论是他们两两互叠还是自己叠自己都是合法的。
接下来就是介绍中途退出的命令。一个是break, 一个是continue, 前者是完全退出整个循环,而后一个只是退出正在进行的循环。其实在前面说分支switch的时候已经见过break了,而且那时说习惯在switch的case里写break是个好的编程习惯,这样可以便于维护和修改。
接下来就是不明不白的goto语句,到处都说用它要有节制,滥用就会出现恶果,程序没有了完整性。所以到底怎么用它还是应该斟酌的。
这些东西反倒不是令人怎么麻烦,麻烦的是为什么要采取这样的算法。尽管觉得自己的数学不是十分臭,但遇到如此的数学问题的确是发现自己力不从心的。比如说“求2至32767之间的全部素数。”它的解释它的程序是这样的“所谓素数就是只能被1和它自身整除的数。所以断定一个数是不是素数,是用从2直至该数之间的所有数来试除,看其是否能被整除……但实际上不需要进行这么多次的试除,而只需除到该数的平方根为止。” “除到平方根”这怎么想啊?也许这就是高明的程序和一般的程序的差别。它用了捷径,而我就傻傻地只懂直走。
然后就是经典的“百鸡问题”的例题。
“假设公鸡每只5元,母鸡每只3元,小鸡三只1元,现有100元,要求买100只鸡,公鸡、母鸡、小鸡各多少只?”
然后它的程序是:
#include
main()
{
int x, y, z;
for (x=0; x<20; x++)
for (y=0; y<33; y++)
{
z=100-x-y;
if ((z%3==0)&&(5*x+3*y+z/3==100))
printf("cock=%d\t hen=%d\t chicken=%d\n", x, y, z);
}
}
要在x<20和y<33之下在用条件来把z作为突破口,我只能……的确它的思维是和自己做的数学是有多少一点出入的。
今天结束了第三章,明天又是一个新的开始了。
不知道你现在是不是已经可以让你的C程序’跑’起来了.看你前面的文章似乎对此还很迷惑似的.
恩,这样吧,你先下载一个C的集成编辑环境(恩,也就是让你可以写程序和编译运行程序的程序.真拗口.)
地址:
http://www.hudu.net/UploadSoft//develope/devcpp4990setup.exe
(以上是一个windows环境的集成开发软件,你应该是用windows而不是mac的吧.)
安装以后,运行那个程序.正确敲进去你的源码以后,选择运行[R]->编译[C].然后,进入命令行模式.(就是原来的Dos,如果是2000或XP在开始菜单运行处敲cmd就行.)进入你保存源文件的目录,编译好的可执行文件也在那儿.敲可执行文件的文件名就可以运行了.
当然,Dos环境下还有一个集成开发环境叫Turbo C的.不过,我估计你对DOS界面的程序多半不适应,还是算了吧.而且,TC没有中文界面.
C还是要自己多写写,上机试试.
我不是学计算机的,不过这些也懂点…上面写的东西,希望对你有帮助.
xrspook 对 denmark 的回复: 2005-02-26 00:14:50
非常感谢!!!!!!!!!!!使我有点茅塞顿开的感觉,我还在疑惑到底在那里运行C语言呢,实在太感激了。那个东西好像是C++的软件,和C有什么关系呢?
C++是C的一个超集,所以那个软件同样可以处理C的.只要你把文件后缀名写为C就可以了.比如:test.c
xrspook 对 denmark 的回复: 2005-02-26 12:13:53
明白了!