终于越来越有趣了,没有了烦琐的定义,似乎什么都简单了起来,比前几天好理解了许多。看着一大堆的东西终于开始有点马上有反应的样子。
首先是输出输入格式。printf或者scanf("输入格式", 输入项表 ),挺好理解的。所谓格式就是%d, %f, %c, %x, %s, 然后外加说明它们所表示的字符。不过发现例题里面好像有一点问题。其中有一句“……printf("x=%d y=%d z=%d \n", x, y, z);……”然后它的解释居然是“x=10y= 15z=25” ,这不是应该表示为x=10, y=15, z=25的吗?我以为是我的错误,但看清楚,的确在%d和y,z之间是有很大的空格的,而且输出项表里面也说明了是x, y, z三个项的输出,为什么会解释为它们之间有产生了关系呢?这里明显和它前一页的解释有截然相反的效果。而看类似的scanf()的输入格式的解释之中就有明确的说明“如果有多个输入项,从键盘上输入的各个数据之间可以用空格、TAB键或者回车键作为分隔符。”那么由此看来无端上面的例题把x, y, z扯上关系是不对的。
然后就是输出函数putchar()和输入函数getchar()又是好像是一对的东西。但看来两个东西和进制格式和ASCII码是有紧密联系的,但为什么这本书从来就不提到底ASCII码到底是什么东西呢?只是在书后面的附录出现了常用的字符的ASCII码。
然后就是顺序程序设计,基本上是一帆风顺。其中的步骤都是显然易见的,但为什么把字母从小写变成大写的程序其中一步是“c2=c1-32”就是把c2(小写字母)的代码减去32就是大写字母呢?字母表显然是只有26个,但为什么要来个32个呢?原来一切又是可恶的ASCII码,的确在ASCII码当中,小写字母和大写字母相差刚好32个,因为其中存在“[ \ ] ^ _ ` ”这6个符号,这不是耍我吗?如果不是不久之后看到,看来又会成为我长时间的疑问了。
在顺序编程里面有个十分实在的秘诀“自顶向下,逐步求精”看来这也是设计方法的精髓吧。
分支结构就更好玩了。一堆的if-else, if, else, else if就似乎搞定了所有的情况。当然还有一个叫做开关分支的东西。switch-case,最后的分支开关就是
switch (e)
{
case c1:
S1;
break;
…
case cn:
Sn;
break;
default:
Sn+1
break;
}
很好玩嘛!符合这个就这个,要不就下一个,如果一个结束就用一个break跳出程序,和前面的if与else的神奇配合有异曲同工之妙。不过它到底和if和else的配合又有什么不同呢?好像两者在某种情况下是可以互用的。
在条件分支程序设计举例里面遇到了关于计算闰年的例题。闰年原来是“能被4整除而不能被100整除,或能被400整除。”就是如果即使2000年能被4和一百整除,但由于它也能被400整除,所以它也是闰年,怎么我好像以前就没有听说过闰年计算里面会有100和400的定义呢?看这本书无端端让我增长了这些知识。就是说1100,1300,1400,1500都不是闰年,神奇的400事件400年才发生一次,2000年就是一次,而概率有75%的正常不闰年我却没有遇到过,与我最近的2100年不闰年到现在也有95年,不知我有没有机会看到。快到那时的时候肯定世界会大型宣传闰年的真正定义,为什么那次8年才一个闰年。改变很多人心目中能被4整除的年就是闰年的错误定义。
说道闰年又让我想起了JEA,1968-02-29,可怜的闰年出生,到现在才过了9个真正的生日。于是fans们中的一员曾经说,“难怪我们心目中的JEA那么年轻,原来2005年他才9岁,不过岁月还是不会饶人的……”(以上为我的翻译) 的确,闰年出生的人在理论上岂不是很年轻,足足比普通人年轻3倍(数值上),哈哈,果然有趣。在这个层面上讲那些可怜的02-29出生的人,也不是太可怜:)
明天没有以外的话(但可能有以外,因为是元宵,可能要一天出外,没时间学习)就开始学习循环程序了,这个应该是个硬骨头,因为我到现在连它的N-S图表示的意思还不能很快地作出反应。
今天也特意去查C++和C的关系了,还是不清晰,一时说C++和C完全是分离不同的东西,但从
说明它们当中多少有一点联系。
同时也开始明白了一点关于计算机等级考试的东西。详情请看http://cpp.ysu.edu.cn/dengjikaoshi/djks.htm
看过一级考试的试题,除了一般的Windows和Office知识以外多少还是要有一点其他计算机的常识的,比如说进制之间的转换和最基本的ASCII码认识。
看来没有报考今年4月的等级考试还是正确的,老练一点的好。