博文
[置顶] 发回复和留言的注意(2007-9-18 1:03:00)
本人人懒,最近也少写文章,很少管理自己的Blog,
但不等于你们就可以在Blog随便发表不雅言论。
当然,如果你认为匿名发表是可以不负任何责任,可以用这种方法骂人的话,
我也没时间管,你愿意的话你随便,随便在这里表现你丑恶的一面。
阅读全文(3937) | 评论:19 | 复制链接
论坛文章:基础算法、技巧、调试概要(2008-1-13 23:43:00)
// ************************************************************ //
// 本文源自飞燕之家在线测评论坛http://yzfy.org/,转载清注明出处 //
// ************************************************************ //
基础算法题目精简集合
题目相对来说简要了一些,算是有代表性了,各方面都有题目
偶不希望像别的帖子那样像为了凑数般弄够100题,相反这里不过二三十。
前六章均为算法基础入门必会解答的题目,也就是若当中有任何一题,
您无法给出正确解答,就不算有算法基础(带星的题目例外),
并且这里不提供基础题解答,若你实在需要,请自行查资料或者找人帮你。
下文假定阅读者具有良好的小学数学基础,
以及懂得使用C/C++/Pascal语言当中的任何一种,尽管你会其它的语言也行,
但算法描述方面以及代码效率还是推荐以上三种。
如果以下算法基础的题目您学习了很久也无法正确解决的话,
那么本人不建议你继续学习编程(基础题不用STL库独立解答出才算是会)。
第一章。循环控制
1.输入一个奇数n,输出对角线长为n的实心或者空心的菱形图案
如当n=5时,有:
*
***
*****
***
*
详细可参阅http://yzfy.org/bbs/viewthread.php?tid=35
2.输入一个奇数n,构造并输出一个n阶等和幻方,
即每一行每一列和两对角线上的n个数的和相等
如当n=5时,有(构造方法请自行搜索或者观察下表):
03 16 09 22 15
20 08 21 14 02
07 25 13 01 19
24 12 05 18 06
11 04 17 10 23
3.输入一个1e9以内的整数n和k(2<=k<=36),输出相应的k进制数。
相关题目请参阅http://yzfy.org/bbs/viewthread.php?tid=474
4.输入一个整数n(2<=n<=1e9),判断它是不是质数,
时间复杂度必须为O(n^0.5),不得为O(n)
质数就是2,以及其它有且只有两个约数的整数,
如3,5,7,11,13,17,19,23,29,31,......(以上为前10个奇质数)
5.字符串模式匹配。输入两个字符串a,b,判断b是否在a中出现,
如有,请输出第一次出现的位置。
参考题目http://yzfy.org/bbs/viewthread.php?tid=8
第二章。简单穷举搜索
1.输入两个数a,b(1 <= a,b <= 1e5),统计a,b之间一共有多少个质数
相关题目请参阅http://yzfy.org/bbs/viewthread.php?tid=392
若要通过链接里那个题目还需要优化,单纯做出本题并不难。
2.查找1000以内的所有水仙花数,如153 = 1^3 + 5^3 + 3^3 = 1 + 125 + 27
各位上的数字的三次方的和等于自己本身
3.输入一个数n(1<=n<=1e4),然后再输入n个不同的整数,再输入一个整数k,
判断k是否在那n个整数上出现过。
第三章。迭代、递推和递归
1.斐波那契数列和:输入整数n,求1/1+2/1+3/2+5/3+8/5+.....
一直到第n项的结果。
参考题目http://yzfy.org/bbs/viewthread.php?tid=138
2.★经典Hanoi塔问题,详见http://yzfy.org/bbs/viewthread.php?tid=296
第四章。简单计算几何
1.简单碰撞检测,详见http://yzfy.org/bbs/viewthread.php?tid=543
此乃游戏程序制作必须掌握的内容
第五章。排列组合
1.★有重复全排列,详见http://yzfy.org/bbs/viewthread.php?tid=498
第六章。贪心与分治
1.简单贪心算法题目,详见http://yzfy.org/bbs/viewthread.php?tid=275
及http://yzfy.org/bbs/viewthread.php?tid=338 (此题小心陷阱)
及难一点的★http://yzfy.org/bbs/viewthread.php?tid=325
2.输入一个数n(1<=n<=1e6),然后再输入n个有序整数(从小到大或者从大到小),
再输入一个整数k,判断k是否在那n个整数上出现过。
3.★输入三个整数a,n,k(1<= a,n <=1e9且1<=k<=1e4),求a^n mod k,
即a的n次方的结果被k除的余数。
参考题目http://yzfy.org/bbs/viewthread.php?tid=19
4.★快速排序
**以下章节为简单进阶,但实际应用得也不少,特别是记忆化搜索**
第七章。简单记忆化搜索(回溯,DFS,BFS,DP)
1.迷宫寻路。输入一个迷宫地图,找出入口到出口的路线,路线保证唯一。
如以下地图(第一行输入指示地图大小,0表示墙,1表示路):
7 7
0000000
1111010
0001010
0101110
0101010
0111011
0000000
本题可扩展到RPG游戏的自动寻路问题,当然难度也相应地增加,
难度是不光要算出最短路(或近似解),并且要以尽可能快的速度算出来。
类似题目http://yzfy.org/bbs/viewthread.php?tid=283
2.连连看游戏消除判定。任意两个图案相同的方块,
当它们之间可以用最多三段的拆线无障碍连通的时候便可消除。
3.最大可连通区域。如有名的PUYOPUYO游戏消除时,
当现出四个或以上相同颜色的PUYO相连时,便可消去,
参考题目http://yzfy.org/bbs/viewthread.php?tid=297
4.3n+1问题(简单DP),见http://yzfy.org/bbs/viewthread.php?tid=115
5.经典题目“回文”(经典DP),见http://yzfy.org/bbs/viewthread.php?tid=105
其实质是最长公共子序列(LCS)问题的变形。
论坛的改错题MDLE的判定就是此算法(LCS)的运用。
第八章。数值计算
1.大整数间的加减乘,以及大整数除以一小整数(32位int范围内称小整数)
题目参见(大整数乘法)http://yzfy.org/bbs/viewthread.php?tid=123
大整数除以小整数http://yzfy.org/bbs/viewthread.php?tid=385
// ************************************************************ //
// 本文源自飞燕之家在线测评论坛http://yzfy.org/,转载清注明出处 //
// ************************************************************ //
算法技巧小集合(C语言描述)
1.例题ct3_1: 个人所得税计算★
(源自 http://yzfy.org/bbs/viewthread.php?tid=269 )
题目描述:
个人所得税计算方法:假设起征点为k元,
超过k到k+500这部分税率为0.05
超过k+500到k+2000这部分税率为0.1
超过k+2000到k+5000这部分税率为0.15
超过k+5000到k+20000这部分税率为0.2
超过k+20000到k+40000这部分税率为0.25
超过k+40000到k+60000这部分税率为0.3
超过k+60000到k+80000这部分税率为0.35
超过k+80000到k+100000这部分税率为0.4
超过k+100000的部分的税率为0.45
输入:
多组测试数据,每组一行,一行有两个整数n和k
n是收入,0<= k,n <= 2e9
当输入0 0的时候结束
输出:
输出要交的税的数额,保留2位小数
样例输入:
800 800
1000 800
2000 1000
0 0
样例输出:
0.00
10.00
75.00
题目看似很复杂,因为数据分段明显不少,并且看似没有关联。
从原题目的链接帖子的第一页里,你可以看到很多人写了N多if嵌套,
程序逻辑显得极其混乱,并且非常容易出错,
只要看他们提交的结果都不对就知道了。
如果是你,你会怎么写这一题的解答代码呢?
不妨在看后面解答之前先细心想想,等你想尽办法以后,
再看看以下的解答,也许那种恍然大悟的感觉会非常好哦!
以下先帖一段经典if嵌套的方法并且能通过的C代码:
#include <stdio.h>
int main(void)
{
int k,n;
while (scanf("%d%d",&n,&k),!(n==0&&k==0))//数据输入
{
double tax = 0.0;
if( n-k <= 0 ); //使用分段函数方式计算
else if ( n-k-500 < 0 )
tax = (n-k)*0.05;
else if( n-k-2000 < 0 )
tax = 500*0.05 + (n-k-500)*0.1;
else if ( n-k-5000 < 0)
tax = 500*0.05 + (2000-500)*0.1 + (-2000+n-k)*0.15;
else if ( n-k-20000 < 0)
tax = 500*0.05 + (2000-500)*0.1 + (5000-2000)*0.15
+(n-k-5000)*0.2;
else if ( n-k-40000 < 0)
tax = 500*0.05 + (2000-500)*0.1 + (5000-2000)*0.15
+(20000-5000)*0.2 +(k-n-20000)*0.25;
else if ( n-k-60000 < 0)
tax = 500*0.05 + (2000-500)*0.1 + (5000-2000)*0.15
+(20000-5000)*0.2+(40000-20000)*0.25+(n-k-40000)*0.3;
else if ( n-k-80000 < 0)
tax = 500*0.05 + (2000-500)*0.1 + (5000-2000)*0.15
+(20000-5000)*0.2+(40000-20000)*0.25+(60000-40000)*0.3
+(n-k-60000)*0.35;
else if ( n-k-100000 < 0)
tax = 500*0.05 + (2000-500)*0.1 + (5000-2000)*0.15
+(20000-5000)*0.2+(40000-20000)*0.25+(60000-40000)*0.3
+(80000-60000)*0.35+(n-k-80000)*0.4;
else
tax = 500*0.05 + (2000-500)*0.1 + (5000-2000)*0.15
+(20000-5000)*0.2+(40000-20000)*0.25+(60000-40000)*0.3
+(80000-60000)*0.35+(100000-80000)*0.4+(n-k-100000)*0.45;
printf("%.2lf\n",tax); //输出计算结果
}
return 0;
}
首先要声明,帖此代码并不是给大家取笑,而事实上,面对这个题目,
很多初学者的确就是使用类似以上代码的变形(帖子里还有比这个更长的),
但偶认为他(她)们也的确思考过,只是实在觉得没有办法化简了。
偶也曾经见过有人写一个解24点游戏的程序,24点游戏就是给你四个数,
通过加入四则运算符和括号,使得表达式的值为24。
这个解24点游戏的程序需要全排列和运算符和括号穷举,对于初学者的确不容易。
那个人也挺“聪明”的,他知道四个数的排列不过24种,
三个符号的排列不过4^3=64种,括号不过5种,最多也不过24*64*5=7680种,
当中一些重复的,去掉后大约二三千种,于是他一种写一个if,
最后代码写了六七千行,也的确顺利地解决了。
这种方法也不失为一种算法,或者可以称为源代码级别穷举算法吧。
偶看到那个程序的代码的时候,不得不Orz程序作者的毅力。
但是,我们为什么要学算法?这个题目就回答了这个问题的一个方面:
好的算法可以让你的代码更清晰明了,更简短优美,
还有在代码有问题的时候也能够更容易发现错误的地方。
现在不讲那个24点,转回这个题目。你现在想到好办法了没有?
我们来简单一点,先考虑收n<=5000元,k=0的情况,有如下信息:
超过k到k+500这部分税率为0.05
超过k+500到k+2000这部分税率为0.1
超过k+2000到k+5000这部分税率为0.15
其实我们完全可以不要按照字面的逻辑来进行程序的分界,
我们可以把它们打乱。比如,
k+500到k+2000这部分,相当于征收两次税,且均为0.05
k+2000到k+5000这部分,相当于征收三次税,且均为0.05
那么原题目等价地换为:
超过k这部分需征收一次,税率为0.05
超过k+500这部分需再次征收,税率为0.05
超过k+2000这部分需再次征收,税率为0.05
结果全部均变为0.05,很合理地,我们想到循环,重复地做同一个东西。
于是,你现在再想想,还需要不需要写那么多的if语句呢?
并且if写得越多、写得越复杂就算容易错。我们需要一段简短漂亮的代码。
相信说到这里,您也差不多甚至已经想到解决办法了。
如果你已经想到了,那恭喜你!!!
以下为标准解答程序(下文简称“标程”),请细心阅读:
// http://yzfy.org/bbs/viewthread.php?tid=274
#include <stdio.h>
int main()
{
int n,k,t;
unsigned nBase[]={0,500,2000,5000,20000,
40000,60000,80000,100000,-1};
while(scanf("%d%d", &n, &k), n>0||k>0) //数据输入
{
double sum = 0;
for(n-=k,t=0; (unsigned)n>nBase[t]; ++t)
{
sum += n - nBase[t];
}
printf("%.2lf\n", sum/20.0); //输出计算结果
}
return 0;
}
而事实上,你可能会问,是不是那个税率等间距递增才能使用这种方法。
那偶告诉你,其实不等间距递增也没有问题的,甚至递增和递减混合也行,
一样可以使用此办法化简得如上仅10行左右代码,并且可扩展性可以很好。
这个就留给读者您自己思考一下吧。
// ************************************************************ //
// 本文源自飞燕之家在线测评论坛http://yzfy.org/,转载清注明出处 //
// ************************************************************ //
代码调试技巧小集合(C语言描述,但C/C++/Pascal通用)
1.输入重定向
有不少人对自己提交到网站里得到的错误的结果而感到莫名其妙。
但有可能由于题目的输入数据巨多,要是手工输入将会非常累。
例如输入的数据可能多达成千上万。其实以下将要介绍的代码技巧,
对于做ACM题目较多的人来说,他(她)们也肯定会知道的。
本文算是在做普及工作吧。
首先,从手工转为自动方式,最显然的就是从文件读入的数据代替手工。
如果在源代码里希望把输入从屏幕输入定向到一个文件,
可以使用freopen函数(C/C++均支持此方法),以下为示例:
#include <stdio.h>
int main(void)
{
freopen("in.txt","r",stdin); //输入从in.txt
int a,b;
while(scanf("%d%d", &a, &b)!=EOF)
{
printf("%d\n", a+b);
}
return 0;
}
这样你可以把题目的输入内容先保存的in.txt文件里,
在程序运行后看看屏幕输出,看是否和题目的样例输出一样。
从这里也可以看出,输入和输出是完全独立的,
您不必把所有输入或输出保存,直到程序全部计算完毕再输出,
这样会很浪费内存,我们也不希望你这样做。
你应当在你能够确定输出内容的时候就马上输出,能少占用内存就少用。
如果你希望本地调试成功的代码不用修改就可以直接提交到OJ系统上,
那你应该加上如下预处理(OJ系统通用标准,不支持这个特性的OJ就不合格):
#ifdef ONLINE_JUDGE //判断是不是OJ系统上编译
#define FINPUT(file) 0 // 如果是,则不重定向到文件
#else
#define FINPUT(file) freopen(file,"r",stdin)
#endif
#include <stdio.h>
int main(void)
{
FINPUT("in.txt"); //如果不是则输入从本地in.txt
int a,b;
while(scanf("%d%d", &a, &b)!=EOF)
{
printf("%d\n", a+b);
}
return 0;
}
如果你懂得命令行下运行一个程序,那么你可以不用修改源代码,
假设你的代码所生成的程序名是temp.exe,在命令行下运行:
temp.exe<in.txt
一样实现了相同的功能。
如果程序输出内容过多,你需要保存下来分析的话,那么还可以使用输出重定向。
如上方法,你也可以定义这样一个宏:
#define FOUTPUT(file) freopen(file,"w",stdout)
如果输入输出均需要重定向,上面的代码可以改写为:
#ifdef ONLINE_JUDGE //判断是不是OJ系统上编译
#define FINPUT(file) 0 // 如果是,则不重定向到文件
#define FOUTPUT(file) 0
#else
#define FINPUT(file) freopen(file,"r",stdin)
#define FOUTPUT(file) freopen(file,"w",stdout)
#endif
#include <stdio.h>
int main(void)
{
FINPUT("in.txt"); //如果不是则输入从本地in.txt
FOUTPUT("out.txt");
int a,b;
while(scanf("%d%d", &a, &b)!=EOF)
{
printf("%d\n", a+b);
}
return 0;
}
在命令行下则可以:
temp.exe <in.txt >out.txt
2.断言和运行时错误捕获
断言对于初学者来说,可能是一个很新鲜的名词。
但这个东西对于软件调试来说有一个非常有用的东西,
不过使用的时候也得小心,不正确的使用甚至会适得其反。
首先,断言就是在逻辑上,你认为一定会得到的结果,
例如你假定内存分配一定成功,那么返回值一定不为NULL,
在你包含了头文件assert.h或者cassert后,就可以使用
assert(exp);
exp是你需要断言的表达式,bool类型,当exp为true的时候,
断言成功,程序继续执行,否则程序强制停止,并且发出警告。
这样你就可以明确得知程序发生了逻辑问题,必须进行修改。
但问题就在于,如果你直接使用assert(exp)这个函数,
那么这个断言不管在什么情况下都会编译进执行文件,
如果提交到OJ上,并且断言在内循环里,就显得这个断言会占用相当的时间。
如果我们不希望发布正式版本的软件或者提交代码时去掉这个断言以提升速度,
我们又可以用宏封装一下:
#ifdef ONLINE_JUDGE //判断是不是OJ系统,非OJ系统调试可另起名字
#define ASSERT_LEVEL 1
#else
#define ASSERT_LEVEL 0
#endif
#if (ASSERT_LEVEL>=1)
#define ASSERT(exp) _assert(#exp, __FILE__, __LINE__)
#else
#define ASSERT(exp) 0
#endif
double foo(int n) //计算阶乘
{
ASSERT(n>=0);
return n*foo(n-1);
}
#include <stdio.h>
int main(void)
{
int n=10;
printf("%d\n", foo(n));
return 0;
}
以上为一个错误递归算阶乘的程序示例,运行一下你就知道断言的威力了。
那个foo函数应当改为:
double foo(int n) //计算阶乘
{
ASSERT(n>=0);
if(n==0)return 1;
return n*foo(n-1);
}
使用断言还有很多技巧和需要注意的东西,这里暂不多说,先自己体会体会吧。
关于运行时错误捕获,很多人马上就想到了C++的try。但事实上,
这种方法不一定能把异常都捕获,但在OJ系统里面,
你任何一个没有进行处理的异常的抛出都会导致RE(注意main函数返回非0也RE),
尽管有些异常不会对运行结果有影响,操作系统也会忽略掉,
于是一般运行的时候用户也无法发现已经出现异常。
同样,VC也是MS的产品,连操作系统都忽略的异常,用它去调试同样也忽略,
你不能依赖VC调试器得到所有异常的信息,
所以你不要以为VC上调试没有出现任何异常信息就以为那真的是正确的代码,
有可能是系统忽略掉,也有可能是你自己的测试用的数据没有触发它。
对于这个问题目前本人也没有较好的解决办法,所以还是建议你,
养成良好的编程习惯,适当的地方就加上断言,以增加异常被捕获的机率,
这样就更容易发现出错的地方。
// ************************************************************ //
// 本文源自飞燕之家在线测评论坛http://yzfy.org/,转载清注明出处 //
// ************************************************************ //
雨中飞燕
2008年1月12日
阅读全文(4258) | 评论:5 | 复制链接
给使用TC的初学者的一篇文章(2007-10-31 16:58:00)
给使用TC的初学者的一篇文章 —— 作者:雨中飞燕
本文源自雨中飞燕之家C/C++学习论坛http://yzfy.org,转载请注明出处。
前言:
“TC过时了”,我说。接着就一堆人问,“为什么过时啊?”,“TC不是很好用吗”,
“教材上也是用这个啊”,“二级考试不也是规定用的TC吗?”。
于是乎我已经无语了。
/----------------------------------------------------------------------/
一。头文件的问题
好了,来看个经典的TC2下在老潭的书的《C语言程序设计(第二版)》,
第4页的一段代码:
main( )
{
printf("This is a C program.\n");
}
好了,当时的TC2的确允许使用printf和scanf可以不加头文件,
也的确允许main()这样的声明。允许是允许了,可是你写成这样对你有好处吗?
打个比方,Basic语言知道吗?这种语言可以不声明变量就使用。
的确同样也是允许了,可是给我的话,我会要求编译器强制检查变量是不是声明了再使用。
为什么?如果你需要用名字是nlen这个变量,当中有一个不小心写成n1en,
不强制检查的话,编译器不告诉你错,但运行结果是错误的。但这种错误要是在很多行
代码里你怎么找?特别是'l'和'1'如此相似。
编译器虽然允许,但你别以为那样写就是好事。说回刚刚的C代码,TC2允许不加头文件,
于是不少初学的人习惯了从不写头文件,以为C语言不需要头文件似的。
好了,等到看到那本书的138页,那个字符输入输出,用了gets,
就突然多了一个#include <stdio.h>,仔细一看,那一页中间有100来字强调
了要用库函数,可是没有讲怎么用,下面多了的那一行初学者也可能会觉得奇怪,
要是不理解的人就跳过了,要是没留意的更不当一回事了,谁让之前书里一直都
没有那句呢。然后,当有的初学者用TC3.0打代码的时候,编译提示说scanf没有
声明(或者是用TC2的打了gets函数说gets没有声明),他们就郁闷了,
都是按照书的代码啊,都一模一样还会错?于是跑来论坛问。有跑来问的还好,
最怕的就是用TC2的,看了数组觉得难还跳了过去的,于是一直都不会写头文件,
成了习惯。要是随便换个环境,结果没写头文件的,错了,结果还说自己写C代码
写那么多,这里怎么就错了,然后就怀疑编译器是不是坏的。然后就借口说这个
用不习惯要换TC2。结果就是恶性循环,跳不出TC2,学不到新领域的东西。
论坛上这种代码绝不少见,随便翻一些提问帖子肯定找得到。其实早在TC3.0已经
不再允许scanf和printf不加头文件了,随后的所有C编译器也不再支持TC2的
这个特性了。
[color=black]本文源自雨中飞燕之家yzfy.org,作者雨中飞燕[/color]
/----------------------------------------------------------------------/
二。main的声明
其实如果只是算潭书的第二版,这个无类型的main声明没有问题,只是直到C99标准
的出现,这个声明才彻底废除。其实也是同样一个问题,允许你不写,但这不是说你
这样用就是好事。不过,这个的后果有点不一样的就是,你忽略不写,很可能以为是
不需要返回的,或者是以为返回一个无类型的(void),接着就出现了main函数里不
写return 0;的问题。那本书就是从头到尾所有main函数一律没有return 0; 。好了,
等到学了函数那章,书上说,没有返回值的函数应该要用void来声明,好了,
void main就这样诞生了。不信就看看谭书的第三版,变成从头到尾的void main()。
不过话说回头,这样的问题对于初学者学习基本语法和结构方面和写写小程序的都不会
出现任何影响。在编译器上来说,这只是一个标准的问题,但对于你来说别小看了这么
一点点的变化。因为你习惯了main这种写法的话,必然会把这个习惯带到编写其它函数里
(这里暂且不讲main本身返回值的问题)。
举个简单例子,写以下代码:
#include <stdio.h>
factorial(int n)
{
if(n==1)return 1;
else if(n>1)return n * factorial(n-1);
}
int main(void)
{
int n;
while(scanf("%d", &n),n>=0)
{
printf("%d\n", factorial(n));
}
return 0;
}
看得出来是计算阶乘的(主要看那个子函数,main函数用回标准写法),
只不过少了int声明和最后一个必然的return而已,
看看输入一个0进去会发生什么事吧:
TC2: 1 (结果居然是碰对了)
VC6: -858993460 (不确定的随机结果)
GCC: 0 (C99标准)
如果你用TC,那你还可能以为这份代码是正确的,
于是你就以为递归算阶乘就是这么写的。
于是还反过来问我:“喂,雨中飞燕,这个结果不就是正确的吗,还错什么啊?”
于是我无语了。。。然后你也就留下了一个你可能以后都不打算去检查的Bug。。。
现在我们再来看一个:
#include <stdio.h>
long Factorial(int n)
{
if(n==1)return 1;
else if(n>1)return n * Factorial(n-1);
return 1;
}
FactorialSum(int n)
{
float f = 0;
for(;n>0;--n)
{
f += 1.0/Factorial(n);
}
return f;
}
int main(void)
{
int n;
while(scanf("%d", &n),n>=0)
{
printf("%f\n", FactorialSum(n));
}
return 0;
}
这个是计算1/1! + 1/2! + 1/3! +...+ 1/n!的代码,Factorial的改好了,
然后加一个FactorialSum函数计算和。里面的变量f就是用来累加(喜欢用float来
保存浮点也是书上的一大不良特色),1写成1.0保证结果不是整数。似乎没错吧?
运行一下不就知道了嘛,输入1,输出0;输入2,输出0;输入5,输出0,
结果是输出全部是0。原因就是你省略类型埋的祸根,只需要在那个函数前面补上
一个float那结果就正确了。
[color=black]本文源自雨中飞燕之家yzfy.org,作者雨中飞燕[/color]
这个危害有多严重吗?在这里不算严重,因为在这里代码很短,相当容易看得出来。
要是换成大程序呢?上千代码甚至上万的代码,要是最后都懒得写一下return,
或者一个返回类型,那么错误还怎么找?你要是这个也省略那个也省略,
写了N多行代码的时候,一运行,这个结果也错那个输入也不行的时候,
你再看看你是不是被你自己的“习惯”给难住你自己吧。
其实说实在的,WIN-TC自带的一个tcsearch.exe文件,那个可以查函数用法和示例,
上面的示例代码全部都是一样的风格: int main(void)
非常规范标准的写法,可是有多少人看了这个了呢?
/----------------------------------------------------------------------/
三。函数声明与返回值
经典的老代码:
int max(x,y)
int x,y;
{
return x>y ? x : y;
}
现在早已不是pascal时代了,这样的函数声明不但难读,并且现在C99标准已经不再
支持这种写法了。在老潭的书也仅仅用了半版不到的篇幅提到了一下,
其它地方并没有使用这种声明,这点做得还不错。不过很奇怪的是论坛上还时不时
能看见这种声明,这个到底是拜谁所赐呢?这我就不知道了,这里也不展开来讲了。
/----------------------------------------------------------------------/
四。代码风格
这个问题就非常严重了。现在的情况是,从代码风格,就可以知道你的大概水平了,
至少能知道你是不是菜鸟。那些代码缩进弄得乱七八糟的,不用看详细代码都知道
水平肯定高不到哪里去(当然不排除你可以故意弄乱)。因为要是作为一个新手,
要是写的代码乱,调试的时候或者自己看自己的代码的时候,要是你自己都觉得乱,
当代码有Bug,你要找出来的话,看你还头痛不头痛了。本来代码就有问题,再加上
格式乱,要是你自己看着都不舒服,那你还怎么去调试代码呢?自己不会看着头晕?
代码少的时候你可能不觉得,等你写了上百行代码的那再尝尝这种滋味吧。
更严重的问题是,DOS原版TC对缩进支持不好,
格式的控制相对其它的编辑器来说都要弱。
对于初学者,很容易弄出参差不齐的代码,
对于学习方面来说这是一个很不利的因素。
[color=black]本文源自雨中飞燕之家yzfy.org,作者雨中飞燕[/color]
再者,大括号的位置及变量声明位置的问题。看以下几种风格:
1.
int main(void) //潭氏风格
{int n,s;
while(scanf("%d", &n),n>=0)
{
s = factorial(n);
printf("%d\n", s);
}
return 0;
}
2.
int main(void) //视频教学风格?
{ int n,s;
while(scanf("%d", &n),n>=0)
{ s = factorial(n);
printf("%d\n", s);
}
return 0;
}
3.
int main(void) //不知道这风格的来源
{
int n,s;
while(scanf("%d", &n),n>=0)
{
s = factorial(n);
printf("%d\n", s);
}
return 0;
}
4.
int main(void){ //这种风格也有不少高手使用的
int n,s;
while(scanf("%d", &n),n>=0){
s = factorial(n);
printf("%d\n", s);
}
return 0;
}
5.
int main(void) //C Primer Plus 上的风格
{
int n;
while(scanf("%d", &n),n>=0)
{
int s = factorial(n);
printf("%d\n", s);
}
return 0;
}
我推荐的写法是第5种。第三种写法貌似较少见,雨中飞燕本人不好作出评论。
但对于1,2,4三种写法,都是有原因的。原因也很简单,减少占用的行数。
特别是纸版书,节省这点行数累积起来可以节约不少纸张,降低书的成本。
对于powerpoint演示,如果不节约行数,代码根本没办法显示完。
但你要注意,它这样写可能不是为了告诉你要这样写出这样紧密的代码。
但同样的问题出现在TC上。DOS窗口标准大小80*25,高度只能显示25行,
再加上TC菜单和最下面的输出窗口,你能同时看到最多20行,要是按第5种风格
来写代码,会看得很辛苦(因为TC2用不了鼠标,TC3能用不过也麻烦),
于是造成N多紧缩型代码。如果你换成现在新的编辑软件,根本用不着这样。
Windows上的集成编辑软件一页下来就是三四十行,用鼠标滚轮滚一下就能上下拉,
一个代码块要是不想看还可以折叠起来,这些特性都是TC所无法比拟的,
都比TC方便得多。你还有什么理由抱着TC不放呢?还何必写紧缩型代码来为难
自己的那双眼睛呢?
/----------------------------------------------------------------------/
五。TC图形库
TC图形库这个可以说是TC一大特色,用TC2写出来的代码一般可以一眼看出,因为TC2
编译运行的时候,屏幕上原有的东西并不会清除,所以用TC的人一般会习惯在程序开头
写上clrscr()。当然,要是用Win-TC就不会发生这种情况。如果使用者本人知道这个
库是TC专有(好比是VC的MFC)的话,这倒问题不大。问题是如果使用者不知道的话,
屏幕输出用习惯了gotoxy,变得理所当然地认为C就应该支持这类函数的话,
那就糟糕了。论坛上跑来问VC6可不可以输出图形,或者问有没有gotoxy函数的人
不是一个两个人的问题了。
[color=black]本文源自雨中飞燕之家yzfy.org,作者雨中飞燕[/color]
/----------------------------------------------------------------------/
六。越界检查
由于在DOS下,DOS系统根本不会去检查程序的访问越界问题,无论你要对内存的哪里
进行读写,都是允许的(只要不把自己程序的代码区改写了就没事)。但在Windows下,
尤其是WinXP,内存是分块的,对只读块写数据或者对不可读写块进行读数据都会引发
异常,如果程序不能够处理这个异常,那么这个程序就会被强制关闭。有了这个异常
机制,当然会使你更容易查出程序的错误。特别地,在VC6的Debug模式下,
堆里未被初始化的内存被0xCD字节模式填充,堆里释放的内存被0xDD字节模式填充。
于是一但发生越界的时候,很容易通过程序运行结果得知当中有错,为调试带来了方便。
然而TC则不然,不管你越界了多少,你都收不到任何的警告或者错误。
而且在多数情况下,TC下运行正常的越界代码换VC6上就会结果出错。
有初学者以为这是VC6编译器有问题,其实不然,而是TC给你掩盖了这个错误。
#include <stdio.h>
int main(void)
{
int n;
int num[8];
int sum[8] = {0};
for(n=1;n<=8;++n)num[n] = 1;
for(n=1;n<8;++n)sum[n] = num[n]+num[n+1];
for(n=1;n<8;++n)
printf("%d\n", sum[n]);
getchar();
return 0;
}
这个程序的目的是给num数组全部给1,然后sum数组计算num相邻两个数的和。
有的初学者可能会说,这个程序没问题,如果他以为int num[8];的下标是从1至8的话。
然后,照样运行一下看看。TC的结果是7个2,结果正常。
VC6的结果是,什么都没有显示,然后你打开资源管理器查看一下进程,
你就会发现这个程序占用CPU高达90%以上。你不要以为这是编译器发生了问题,
原因正是因为这里的越界导致了一个死循环!如果是GCC或更高版本的VC编译器,
把for里的8改成11也会发生死循环。但即使改成11,在TC上运行的结果也非常正常,
TC里完全没有任何错误的征兆。这里不分析这个死循环产生的原因,这里只是想告诉你,
你在TC上运行结果无误的程序不一定就逻辑上正确了(包括VC和GCC)。特别是TC几乎
没有任何的越界检查,所以更要求程序员在TC上编写代码时候要十分谨慎和细心。
但现在问题是现在使用TC的大多是初学者,在没有什么经验的情况下,很大可能
会写出类似这样的越界访问代码。这种代码也许在TC上没有问题,可是只要换一个
编译环境,问题就马上暴露出来了。不信就看看下面的经典TC错误代码吧:
#include <stdio.h>
int main(void)
{
char *pstr;
gets(pstr);
puts(pstr);
getchar();
return 0;
}
(别告诉我说你不知道这代码错在哪里,你不知道错哪里的话那你平时一定是使用TC的)
[color=black]本文源自雨中飞燕之家yzfy.org,作者雨中飞燕[/color]
/----------------------------------------------------------------------/
七。结束语
现在再来回答文章一开头的内容:“为什么说TC过时”?
主要原因其实不是过时不过时的问题,主要是不适合现在初学C语言的学生们使用。
很容易因为TC过于宽松的一些语法,或者一些与C99标准不一样的语法,
让初学者养成不良习惯或者产生特定环境下的依赖性。这些都是对学习上不利的因素。
所以我一般给别人推荐DevC++或者VC2005就是这个原因,借助编译器的强制能力,
迫使你使用较为规范的方式去写代码。新加坡的环境为什么好?不是因为公民素质高,
是因为有法律规定,随便扔垃圾或者破坏环境的都会有严重的法律后果。
归根究底,不让你用TC,就是不希望你有不良习惯,更何况有很多比TC优秀的编译器呢?
何必因为教材或者考试是TC,你就一定用TC呢?
知识是属于自己的,用来真正充实你自己的
考试是给别人看的,用来得到一时之虚荣的
你希望得到充实,还是一时之虚荣?
本文源自雨中飞燕之家C/C++学习论坛http://yzfy.org,转载请注明出处。
补充:老潭新版(2006年版)C/C++书中就提及到代码规范的问题,
建议大家看书购书请购买最新版,否则如被旧书误导,所产生的问题请自行负责
阅读全文(3110) | 评论:14 | 复制链接
函数声明省略类型的问题(2007-9-27 20:02:00)
且不说新标准禁止这种声明,即使在旧标准下允许,一样带来很麻烦的问题
假设你能通过编译的话:
#include <stdio.h>
myprint()
{
printf("Hello World");
return 0;
}
int main()
{
myprint();//请问这一句到底是函数声明还是函数调用??
return 0;
}
如果以下这样写:
#include <stdio.h>
int main()
{
myprint();//请问这一句到底是函数声明还是函数调用??
return 0;
}
myprint()
{
printf("Hello World");
return 0;
}

阅读全文(2436) | 评论:6 | 复制链接
[原创]火拼俄罗斯方块单机第二版(含源代码)(2007-6-14 23:16:00)
很简单的一个俄罗斯方块游戏,花了两天时间写出来的
一天写内核,一天写录像,写的很随便
欢迎大家来玩玩哈哈,使用VC6编写
第一版本下载地址:http://yzfy.org/file/tetris.exe (18Kb)
第二版本下载地址:http://yzfy.org/file/tetris.rar (23Kb,主程序19Kb)
说明:
键盘键位和被攻击速度可以自行调节,默认被攻击速度是2行/5秒。
一次消三行可以降低两行;一次消四行可以降低三行。
被攻击速度是2行/5秒:坚持180秒不被顶死为合格
被攻击速度是2行/4秒:坚持100秒不被顶死为合格
被攻击速度是2行/3秒:坚持 60秒不被顶死为合格
被攻击速度是2行/2秒:坚持 30秒不被顶死为合格
第二版本支持游戏录像功能,压缩包内附带了偶打的两个录像
祝游戏愉快:)
此处下载源代码: http://yzfy.org/dis/listpost.php?tid=135
阅读全文(7030) | 评论:24 | 复制链接
[转载]C/C++语言误区之:fflush(stdin)(2007-6-10 13:59:00)
1.为什么fflush(stdin) 是错的
首先请看以下程序:
#include <stdio.h>
int main( void )
{
int i=1;
while(i)
{
printf("Please input an integer: ");
scanf("%d", &i);
printf("%d\n", i);
}
return 0;
}
这个程序首先会提示用户输入一个整数,然后等待用户输入,如果用户输入的是整数,
程序会输出刚才输入的整数,并且再次提示用户输入一个整数,然后等待用户输入。
但是一旦用户输入的不是整数(如小数或者字母),假设 scanf 函数最后一次得到的整数
是 2 ,那么程序会不停地输出“Please input an integer: 2”。这是因为scanf("%d", &i);
只能接受整数,如果用户输入了字母,则这个字母会遗留在“输入缓冲区”中。
因为缓冲中有数据,故而 scanf 函数不会等待用户输入,直接就去缓冲中读取,可是缓冲中的却是字母,
这个字母再次被遗留在缓冲中,如此反复,从而导致不停地输出“Please input an integer: 2”。
也许有人会说:“居然这样,那么在 scanf 函数后面加上‘fflush(stdin);’,
把输入缓冲清空掉不就行了?”然而这是错的!C和C++的标准里从来没有定义过 fflush(stdin)。
也许有人会说:“可是我用 fflush(stdin) 解决了这个问题,你怎么能说是错的呢?”的确,
某些编译器(如VC6)支持用 fflush(stdin) 来清空输入缓冲,但是并非所有编译器都要支持
这个功能(linux 下的 gcc 就不支持),因为标准中根本没有定义 fflush(stdin)。MSDN 文档
里也清楚地写着fflush on input stream is an extension to the C standard(fflush 操作
输入流是对 C 标准的扩充)。当然,如果你毫不在乎程序的移植性,用 fflush(stdin) 也没什么
大问题。以下是 C99 对 fflush 函数的定义:
int fflush(FILE *stream);
如果 stream 指向输出流或者更新流(update stream),并且这个更新流
最近执行的操作不是输入,那么 fflush 函数将把这个流中任何待写数据传送至
宿主环境(host environment)写入文件。否则,它的行为是未定义的。
原文如下:
int fflush(FILE *stream);
If stream points to an output stream or an update stream in which
the most recent operation was not input, the fflush function causes
any unwritten data for that stream to be delivered to the host environment
to be written to the file; otherwise, the behavior is undefined.
其中,宿主环境可以理解为操作系统或内核等。
由此可知,如果 stream 指向输入流(如 stdin),那么 fflush 函数的行为是不确定的。
故而使用 fflush(stdin) 是不正确的,至少是移植性不好的。
2.清空输入缓冲区的方法
虽然不可以用 fflush(stdin),但是我们可以自己写代码来清空输入缓冲区。只需要在 scanf 函数
后面加上几句简单的代码就可以了。
/* C 版本 */
#include <stdio.h>
int main( void )
{
int i, c;
for ( ; ; )
{
printf("Please input an integer: ");
scanf("%d", &i);
if ( feof(stdin) || ferror(stdin) )
{
/* 如果用户输入文件结束标志(或文件已被读完), */
/* 或者发生读写错误,则退出循环 */
/* do something */
break;
}
/* 没有发生错误,清空输入流。 */
/* 通过 while 循环把输入流中的余留数据“吃”掉 */
while ( (c = getchar()) != '\n' && c != EOF ) ;
/* 使用 scanf("%*[^\n]"); 也可以清空输入流, */
/* 不过会残留 \n 字符。 */
printf("%d\n", i);
}
return 0;
}
/* C++ 版本 */
#include <iostream>
#include <limits> // 为了使用numeric_limits
using std::cout;
using std::endl;
using std::cin;
using std::numeric_limits;
using std::streamsize;
int main()
{
int value;
for ( ; ; )
{
cout << "Enter an integer: ";
cin >> value;
if ( cin.eof() || cin.bad() )
{
// 如果用户输入文件结束标志(或文件已被读完),
// 或者发生读写错误,则退出循环
// do something
break;
}
// 读到非法字符后,输入流将处于出错状态,
// 为了继续获取输入,首先要调用 clear 函数
// 来清除输入流的错误标记,然后才能调用
// ignore 函数来清除输入流中的数据。
cin.clear();
// numeric_limits<streamsize>::max() 返回输入缓冲的大小。
// ignore 函数在此将把输入流中的数据清空。
// 这两个函数的具体用法请读者自行查询。
cin.ignore( numeric_limits<streamsize>::max(), '\n' );
cout << value << '\n';
}
return 0;
}
阅读全文(3038) | 评论:7 | 复制链接
[随笔]WC?(2007-5-31 13:23:00)
无锡市的现在,是我们的将来?100年后,我们的城市会变成什么?
相关资料图片:


一个比WC还要臭的地城市——蓝藻污染
阅读全文(3328) | 评论:11 | 复制链接
[原创]对战弹球小游戏(2007-5-29 13:57:00)
偶做的对战弹球小游戏,人机对战!考你反应和对战策略哦!!
有兴趣的试试,难度不小的哦~~~~~
请点击此处下载
可执行文件大小仅18Kb
欢迎大家玩玩,呵呵~~~~~~~~~~~~~~~~~~
阅读全文(2779) | 评论:16 | 复制链接
[原创]四行代码算1000阶乘精确值(2007-4-24 13:19:00)
#include<stdio.h>
#define N 1000 //要计算的N
long s[N]={1,1},n=N,t=2,a=1,b=0;
int main()//雨中飞燕之作
{
for(;a<=*s||(++t<=n?(b=0,a=1):0);(*s==a++&&b)?(*s)++:0)
s[a]=(b+=s[a]*t)%10000,b/=10000;
for(printf("%d",s[*s]);--*s>0;)printf("%04d",s[*s]);
return 0;
}
在VC6,DevC,Code::Block上测试,算1000!用时毫秒级
最少字节数版本(从long定义变量开始计算共155字节,不计算换行)
#include<stdio.h> //雨中飞燕之作
#define N 1000 //要计算的N
long s[N]={1},n=10000,t=2,a,b,m;main(){
for(;a<=m||++t<=N&&(a=b=0,1);m==a++&&b&&m++)
s[a]=(b+=s[a]*t)%n,b/=n;
for(printf("%d",s[m]);m--;)printf("%04d",s[m]);}
附1000!的精确值:
40238726007709377354370243392300398571937486421071463254379991042993851239862902
05920442084869694048004799886101971960586316668729948085589013238296699445909974
24504087073759918823627727188732519779505950995276120874975462497043601418278094
64649629105639388743788648733711918104582578364784997701247663288983595573543251
31853239584630755574091142624174743493475534286465766116677973966688202912073791
43853719588249808126867838374559731746136085379534524221586593201928090878297308
43139284440328123155861103697680135730421616874760967587134831202547858932076716
91324484262361314125087802080002616831510273418279777047846358681701643650241536
91398281264810213092761244896359928705114964975419909342221566832572080821333186
11681155361583654698404670897560290095053761647584772842188967964624494516076535
34081989013854424879849599533191017233555566021394503997362807501378376153071277
61926849034352625200015888535147331611702103968175921510907788019393178114194545
25722386554146106289218796022383897147608850627686296714667469756291123408243920
81601537808898939645182632436716167621791689097799119037540312746222899880051954
44414282012187361745992642956581746628302955570299024324153181617210465832036786
90611726015878352075151628422554026517048330422614397428693306169089796848259012
54583271682264580665267699586526822728070757813918581788896522081643483448259932
66043367660176999612831860788386150279465955131156552036093988180612138558600301
43569452722420634463179746059468257310379008402443243846565724501440282188525247
09351906209290231364932734975655139587205596542287497740114133469627154228458623
77387538230483865688976461927383814900140767310446640259899490222221765904339901
88601856652648506179970235619389701786004081188972991831102117122984590164192106
88843871218556461249607987229085192968193723886426148396573822911231250241866493
53143970137428531926649875337218940694281434118520158014123344828015051399694290
15348307764456909907315243327828826986460278986432113908350621709500259738986355
42771967428222487575867657523442202075736305694988250879689281627538488633969099
59826280956121450994871701244516461260379029309120889086942028510640182154399457
15680594187274899809425474217358240106367740459574178516082923013535808184009699
63725242305608559037006242712434169090041536901059339838357779394109700277534720
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000
阅读全文(8649) | 评论:76 | 复制链接
[随笔]今天,偶无语了(2007-4-17 12:46:00)
VC++群(34774033)
==================================================
消息组:群/校友录(16)
==================================================
消息类型:聊天记录
==================================================
2007-04-16 23:32:25 Morning Call(308617383)
请问VC2005最低要求的内存多大啊?
2007-04-16 23:32:41 静轩帝胄(438038687)
1G
2007-04-16 23:32:57 Morning Call(308617383)
512行不?
2007-04-16 23:32:58 百叶草(59994609)
512就可以吧..
2007-04-16 23:34:10 静轩帝胄(438038687)
理论上
2007-04-16 23:37:32 Morning Call(308617383)
请问你用的哪个?
2007-04-16 23:38:04 Morning Call(308617383)
我们老师老是鼓励我们用.NET
2007-04-16 23:38:55 Morning Call(308617383)
6.0过时了吗
2007-04-16 23:39:17 雨中飞燕(609754650)
256M足够了
2007-04-16 23:39:22 雨中飞燕(609754650)
6.0不过时
2007-04-16 23:41:30 静轩帝胄(438038687)
只要你真正弄懂哪个都行
2007-04-16 23:43:17 雨中飞燕(609754650)
老师鼓励你用.net是因为她用的是.net
所以看不习惯其它的
2007-04-16 23:43:55 静轩帝胄(438038687)
一般
2007-04-16 23:44:14 Morning Call(308617383)
谦虚了
2007-04-16 23:44:21 静轩帝胄(438038687)
只是编程方面多少懂点
2007-04-16 23:44:39 静轩帝胄(438038687)
我劝你最好还是跟着老师走
2007-04-16 23:45:07 Morning Call(308617383)
为什么?
2007-04-16 23:45:28 Morning Call(308617383)
老师现在都是不管的啊 只是建议而已
2007-04-16 23:47:02 静轩帝胄(438038687)
你是研究生?
2007-04-16 23:47:05 Morning Call(308617383)
才把孙鑫老师的教程学了一遍 如果想要自己会编 该如何?
2007-04-16 23:47:09 静轩帝胄(438038687)
在哪家研究所
2007-04-16 23:47:13 雨中飞燕(609754650)
建议不要跟着老师走
2007-04-16 23:47:18 Morning Call(308617383)
就是
2007-04-16 23:47:28 Morning Call(308617383)
我还不还是
2007-04-16 23:47:35 Morning Call(308617383)
还不是
2007-04-16 23:47:36 静轩帝胄(438038687)
不懂的人不要乱说
2007-04-16 23:47:47 静轩帝胄(438038687)
雨中飞燕
2007-04-16 23:47:51 静轩帝胄(438038687)
我就是说你
2007-04-16 23:47:56 静轩帝胄(438038687)
你算什么东西
2007-04-16 23:48:03 静轩帝胄(438038687)
在这里指手画脚
2007-04-16 23:48:04 Morning Call(308617383)
大侠请指点一二
2007-04-16 23:48:12 静轩帝胄(438038687)
你是什么水平
2007-04-16 23:48:18 雨中飞燕(609754650)
老师教的内容通常使用老教材
2007-04-16 23:48:25 静轩帝胄(438038687)
根据你的实际情况
2007-04-16 23:48:41 静轩帝胄(438038687)
你能把老教材搞透就行了
2007-04-16 23:48:50 静轩帝胄(438038687)
就把好高骛远
2007-04-16 23:49:02 雨中飞燕(609754650)
多数老师教的都不规范
2007-04-16 23:49:16 雨中飞燕(609754650)
就像老潭的书
2007-04-16 23:49:16 静轩帝胄(438038687)
其实任何事物的基本原理都差不多
2007-04-16 23:49:18 Morning Call(308617383)
哦 老师都没空教的
2007-04-16 23:49:29 静轩帝胄(438038687)
老教材的东西往往最有用
2007-04-16 23:49:32 雨中飞燕(609754650)
void main一大堆
2007-04-16 23:49:33 静轩帝胄(438038687)
那是基础
2007-04-16 23:49:43 Morning Call(308617383)
有理
2007-04-16 23:49:51 静轩帝胄(438038687)
雨中飞燕请你嘴下积德
2007-04-16 23:50:07 静轩帝胄(438038687)
不要乱开大口
2007-04-16 23:50:10 雨中飞燕(609754650)
那请问你是什么东西?
2007-04-16 23:50:20 静轩帝胄(438038687)
你有多少实战经验
2007-04-16 23:50:22 雨中飞燕(609754650)
偶应该请的是你
2007-04-16 23:50:25 雨中飞燕(609754650)
六年
2007-04-16 23:50:43 静轩帝胄(438038687)
我不会像你那样吹
2007-04-16 23:50:46 雨中飞燕(609754650)
一万代码
2007-04-16 23:50:55 雨中飞燕(609754650)
可以啊
2007-04-16 23:51:01 静轩帝胄(438038687)
我在微软亚洲研究院工作4年半
2007-04-16 23:51:11 雨中飞燕(609754650)
呵呵
2007-04-16 23:51:22 静轩帝胄(438038687)
现在的编程能力不看代码多少
2007-04-16 23:51:26 静轩帝胄(438038687)
你懂不懂
2007-04-16 23:51:27 Morning Call(308617383)
你们都比较厉害
2007-04-16 23:51:30 雨中飞燕(609754650)
那你写个小程序来看看
2007-04-16 23:51:33 Morning Call(308617383)
[strong]
2007-04-16 23:51:41 雨中飞燕(609754650)
计算1000!就行
2007-04-16 23:51:48 静轩帝胄(438038687)
写个六
2007-04-16 23:52:01 雨中飞燕(609754650)
看不起这小程序吧
2007-04-16 23:52:09 静轩帝胄(438038687)
你让陈静润给你算道中学题看看
2007-04-16 23:52:20 静轩帝胄(438038687)
级别不同
2007-04-16 23:52:34 静轩帝胄(438038687)
玩的东西也不同
2007-04-16 23:52:36 雨中飞燕(609754650)
看不起这小程序对吧
2007-04-16 23:52:39 雨中飞燕(609754650)
呵呵
2007-04-16 23:53:03 静轩帝胄(438038687)
雨中飞燕你现在处于一瓶不满到处砸呼的阶段
2007-04-16 23:53:17 Morning Call(308617383)
飞燕 你初学的时候有了一定的基础是不是找例子做?
2007-04-16 23:53:20 雨中飞燕(609754650)
偶告诉你,看不起小程序的人,水平肯定好不到哪里
2007-04-16 23:53:28 静轩帝胄(438038687)
还是静下心提高自己能力才重要
2007-04-16 23:53:40 雨中飞燕(609754650)
学的时候就要多动手
2007-04-16 23:53:44 静轩帝胄(438038687)
唉
2007-04-16 23:53:46 静轩帝胄(438038687)
悲哀
2007-04-16 23:53:47 雨中飞燕(609754650)
边看边做
2007-04-16 23:53:59 雨中飞燕(609754650)
多积累
2007-04-16 23:54:08 静轩帝胄(438038687)
一个小家伙也跑这瞎的德了
2007-04-16 23:54:26 雨中飞燕(609754650)
可以啊,你继续说
2007-04-16 23:54:41 Morning Call(308617383)
恩
2007-04-16 23:55:18 雨中飞燕(609754650)
静轩帝胄 22岁?
2007-04-16 23:55:30 雨中飞燕(609754650)
哈哈哈
2007-04-16 23:56:04 静轩帝胄(438038687)
雨中飞燕你太不踏实
2007-04-16 23:56:07 百叶草(59994609)
我觉得初学还是把基础打牢固吧...
2007-04-16 23:56:22 雨中飞燕(609754650)
说实在,陈景润要是健在,偶让他给偶算道中学题肯定没有问题
2007-04-16 23:56:23 百叶草(59994609)
以后就会知道基础重要性
2007-04-16 23:56:31 静轩帝胄(438038687)
像你这样的绝对不能成为一个好的软件从业者
2007-04-16 23:56:40 雨中飞燕(609754650)
中学题也有不容易的
2007-04-16 23:56:51 静轩帝胄(438038687)
雨中飞燕你是什么东西
2007-04-16 23:56:57 静轩帝胄(438038687)
你小学毕业没有
2007-04-16 23:57:00 雨中飞燕(609754650)
嗯嗯,你赢你赢
2007-04-16 23:57:14 雨中飞燕(609754650)
你博士毕业了对不?
2007-04-16 23:57:16 静轩帝胄(438038687)
以后建议群里加强审核
2007-04-16 23:57:21 静轩帝胄(438038687)
对
2007-04-16 23:57:25 雨中飞燕(609754650)
呵呵
2007-04-16 23:57:55 静轩帝胄(438038687)
像雨中飞燕这样的外行一定要踹出去
2007-04-16 23:58:01 雨中飞燕(609754650)
博士毕业这种水平哈哈哈
2007-04-16 23:58:02 静轩帝胄(438038687)
什么都不懂
2007-04-16 23:58:08 静轩帝胄(438038687)
除了会傻笑
2007-04-16 23:58:23 静轩帝胄(438038687)
我看你小学都没毕业
2007-04-16 23:58:37 静轩帝胄(438038687)
你是启智学校的吧
2007-04-16 23:58:38 雨中飞燕(609754650)
谁对谁错除了偶和你,大家看在心里了
2007-04-16 23:58:50 雨中飞燕(609754650)
偶没必要和你吵
2007-04-16 23:58:58 雨中飞燕(609754650)
你赢了
2007-04-16 23:59:15 静轩帝胄(438038687)
我是2000届浙大计算机专业博士研究生
2007-04-16 23:59:21 雨中飞燕(609754650)
你是用LOGO写RPG游戏的吧
2007-04-16 23:59:25 静轩帝胄(438038687)
不信你可以去查
2007-04-16 23:59:35 雨中飞燕(609754650)
很厉害啊
2007-04-16 23:59:35 静轩帝胄(438038687)
你说你哪毕业的让大家看看
2007-04-16 23:59:48 静轩帝胄(438038687)
我叫高天齐
2007-04-17 00:00:05 静轩帝胄(438038687)
你敢报家底吗
2007-04-17 00:00:13 静轩帝胄(438038687)
一看你就一个假货
2007-04-17 00:00:30 静轩帝胄(438038687)
什么都不懂只会耍破嘴
2007-04-17 00:00:34 雨中飞燕(609754650)
不敢不敢,才发现浙大博士很自大
2007-04-17 00:00:40 静轩帝胄(438038687)
替你母亲惋惜
2007-04-17 00:00:46 雨中飞燕(609754650)
偶也不敢多说什么
2007-04-17 00:00:48 静轩帝胄(438038687)
雨中飞燕
2007-04-17 00:00:53 雨中飞燕(609754650)
谢谢哈
2007-04-17 00:01:05 静轩帝胄(438038687)
你还是回到雨中清醒一下
2007-04-17 00:01:08 百叶草(59994609)
都少说两句吧
2007-04-17 00:01:09 静轩帝胄(438038687)
对你有好处
2007-04-17 00:01:18 雨中飞燕(609754650)
对的
2007-04-17 00:01:41 雨中飞燕(609754650)
呵呵,你也应该来一下
2007-04-17 00:01:57 静轩帝胄(438038687)
我最讨厌那些对学术不严谨乱说的家伙
2007-04-17 00:02:16 静轩帝胄(438038687)
和什么和
2007-04-17 00:02:36 静轩帝胄(438038687)
你真没有存在的价值
2007-04-17 00:02:42 雨中飞燕(609754650)
不要说1000!,10!你也做不出来唉
2007-04-17 00:02:44 静轩帝胄(438038687)
雨中飞燕是女人?
2007-04-17 00:02:49 Morning Call(308617383)
好像博士说话都这么牛气
2007-04-17 00:03:02 静轩帝胄(438038687)
首次看到如此不知羞耻的女性
2007-04-17 00:03:02 Morning Call(308617383)
建议以后大家都不要考博士了
2007-04-17 00:03:07 静轩帝胄(438038687)
真是好笑
2007-04-17 00:03:07 雨中飞燕(609754650)
[;P]
2007-04-17 00:03:20 静轩帝胄(438038687)
不是牛气
2007-04-17 00:03:28 静轩帝胄(438038687)
是对待科学的严谨
2007-04-17 00:03:37 雨中飞燕(609754650)
那这个真严谨
2007-04-17 00:03:48 雨中飞燕(609754650)
[;P]
2007-04-17 00:04:23 雨中飞燕(609754650)
到底谁不知羞耻偶也不用说了
2007-04-17 00:04:35 雨中飞燕(609754650)
大家表理这只猪
2007-04-17 00:04:57 百叶草(59994609)
你们都少说两句吧....
2007-04-17 00:05:58 百叶草(59994609)
静轩帝胄 对于你的观点我还是比较赞同的. 但是我觉得,你的语言上有点过激....
2007-04-17 00:06:54 雨中飞燕(609754650)
身份地位不代表水平。。。唉。。。现在的人啊
2007-04-17 00:07:18 静轩帝胄(438038687)
你说碰到一个外行假装什么都懂气人不
2007-04-17 00:08:00 静轩帝胄(438038687)
雨中飞燕你是吃不到葡萄说葡萄酸
2007-04-17 00:08:04 雨中飞燕(609754650)
偶不喜欢和你说空话,你敢写代码出来介就相信你
2007-04-17 00:08:07 静轩帝胄(438038687)
你报报你的身份
2007-04-17 00:08:08 Morning Call(308617383)
不懂可以学嘛 您水平高就贡献一下 干吗说话这么偏激啊
2007-04-17 00:08:18 静轩帝胄(438038687)
不敢说你就是假冒伪劣
2007-04-17 00:08:40 雨中飞燕(609754650)
身份不代表水平,刚刚偶说过
2007-04-17 00:08:40 静轩帝胄(438038687)
要求群主把这个不知羞耻的女人赶出去
2007-04-17 00:08:44 静轩帝胄(438038687)
雨中飞燕
2007-04-17 00:08:57 Morning Call(308617383)
太过分了!!!!!!!!!!
2007-04-17 00:08:57 静轩帝胄(438038687)
你没身份所以这么说
2007-04-17 00:09:12 雨中飞燕(609754650)
你没水平所以不敢写代码出来看
2007-04-17 00:09:21 雨中飞燕(609754650)
好玩
2007-04-17 00:09:26 雨中飞燕(609754650)
[:D]
2007-04-17 00:09:52 静轩帝胄(438038687)
跟你真是对狗粪说话
2007-04-17 00:10:11 雨中飞燕(609754650)
嗯嗯,偶在和博士说话
2007-04-17 00:10:14 静轩帝胄(438038687)
你会的那些代码你好意思往外说
2007-04-17 00:10:34 雨中飞燕(609754650)
那你完全不懂也往外说。。。更厉害
2007-04-17 00:10:36 静轩帝胄(438038687)
你那些什么计算类的东西那部叫代码
2007-04-17 00:10:40 雨中飞燕(609754650)
[strong]
2007-04-17 00:10:49 静轩帝胄(438038687)
那叫小学启蒙教育
2007-04-17 00:10:55 静轩帝胄(438038687)
唉
2007-04-17 00:11:02 雨中飞燕(609754650)
真聪明
2007-04-17 00:11:08 静轩帝胄(438038687)
现在的女人真是道德沦丧
2007-04-17 00:11:25 静轩帝胄(438038687)
一个弱智愣装什么都会
2007-04-17 00:11:28 静轩帝胄(438038687)
雨中飞燕
2007-04-17 00:11:39 静轩帝胄(438038687)
你真是当代阿Q
2007-04-17 00:11:58 雨中飞燕(609754650)
继续
2007-04-17 00:12:00 静轩帝胄(438038687)
你这种精神胜利法值得某些人学习
2007-04-17 00:12:07 雨中飞燕(609754650)
嗯嗯,是的
2007-04-17 00:12:20 静轩帝胄(438038687)
雨中飞燕不要再补懂装懂了
2007-04-17 00:12:38 雨中飞燕(609754650)
是啊偶不懂的,你真的什么都懂
2007-04-17 00:12:47 雨中飞燕(609754650)
对吧
2007-04-17 00:12:58 静轩帝胄(438038687)
赶紧回到你母亲的肚子里逃避吧
2007-04-17 00:13:03 静轩帝胄(438038687)
不敢
2007-04-17 00:13:11 静轩帝胄(438038687)
我懂的就说懂
2007-04-17 00:13:23 静轩帝胄(438038687)
不懂绝对不像你一样装大象
2007-04-17 00:13:28 雨中飞燕(609754650)
嗯嗯
2007-04-17 00:13:29 静轩帝胄(438038687)
恬不知耻
2007-04-17 00:13:42 静轩帝胄(438038687)
雨中飞燕就会恩
2007-04-17 00:13:52 雨中飞燕(609754650)
现在到底谁是大象呢?
2007-04-17 00:13:56 雨中飞燕(609754650)
你?
2007-04-17 00:13:58 静轩帝胄(438038687)
好像她是一头傻驴
2007-04-17 00:14:19 静轩帝胄(438038687)
群主谁
2007-04-17 00:14:24 雨中飞燕(609754650)
对啊,你天下无敌了
2007-04-17 00:14:36 静轩帝胄(438038687)
赶紧干掉这个臭不要脸的女性
2007-04-17 00:14:48 静轩帝胄(438038687)
她不配做人
2007-04-17 00:14:51 雨中飞燕(609754650)
叫牛不脸红——天下无敌
2007-04-17 00:15:02 静轩帝胄(438038687)
雨中飞燕开始说胡话了
2007-04-17 00:15:10 静轩帝胄(438038687)
你是牛
2007-04-17 00:15:18 静轩帝胄(438038687)
别糟蹋牛了
2007-04-17 00:15:31 静轩帝胄(438038687)
牛还有自知之明
2007-04-17 00:15:40 雨中飞燕(609754650)
你喜欢是用void main声明的那种人吧
2007-04-17 00:15:49 雨中飞燕(609754650)
那你应该去论坛
2007-04-17 00:15:57 雨中飞燕(609754650)
把像偶的那些人
2007-04-17 00:16:05 雨中飞燕(609754650)
统统骂个痛快淋漓
2007-04-17 00:16:19 雨中飞燕(609754650)
要不要给你网址?
2007-04-17 00:16:22 静轩帝胄(438038687)
你说的什么乱话
2007-04-17 00:16:33 静轩帝胄(438038687)
偶你个什么啊
2007-04-17 00:16:45 静轩帝胄(438038687)
我看你语文也没学好
2007-04-17 00:16:47 雨中飞燕(609754650)
很多人都批判老教材
2007-04-17 00:17:01 静轩帝胄(438038687)
我说雨中飞燕你能说出你会什么吗
2007-04-17 00:17:04 雨中飞燕(609754650)
你喜欢就去骂他们吧
2007-04-17 00:17:28 静轩帝胄(438038687)
我看你连脚踏实地都不会
2007-04-17 00:17:38 雨中飞燕(609754650)
你在对你自己说的吧
2007-04-17 00:17:44 雨中飞燕(609754650)
真好笑
2007-04-17 00:17:45 静轩帝胄(438038687)
算了不和你废口舌了
2007-04-17 00:17:55 静轩帝胄(438038687)
还是做点实事吧
2007-04-17 00:18:02 雨中飞燕(609754650)
那做过实事?
2007-04-17 00:18:02 静轩帝胄(438038687)
以后以你为戒
2007-04-17 00:18:14 静轩帝胄(438038687)
时刻警醒自己
2007-04-17 00:18:18 雨中飞燕(609754650)
发个你做的软件看看
2007-04-17 00:18:26 雨中飞燕(609754650)
代码也行啊
2007-04-17 00:18:31 静轩帝胄(438038687)
不做像雨中飞燕一样不知羞耻
2007-04-17 00:18:37 静轩帝胄(438038687)
没有廉耻的人
2007-04-17 00:18:44 静轩帝胄(438038687)
雨中飞燕不是人
2007-04-17 00:18:46 雨中飞燕(609754650)
一说发代码你就不理
2007-04-17 00:18:50 静轩帝胄(438038687)
是假人
2007-04-17 00:18:58 雨中飞燕(609754650)
就知道你从来没做过代码
2007-04-17 00:18:58 静轩帝胄(438038687)
畜牲
2007-04-17 00:19:12 静轩帝胄(438038687)
雨中飞燕你就别给畜牲丢脸了
2007-04-17 00:19:13 Morning Call(308617383)
博士怎么这样说话?
2007-04-17 00:19:24 静轩帝胄(438038687)
唉被小人气的
2007-04-17 00:19:25 雨中飞燕(609754650)
这是他本性啊
2007-04-17 00:19:36 静轩帝胄(438038687)
毛主席有时也拍桌子
2007-04-17 00:19:51 静轩帝胄(438038687)
雨中飞燕请你闭上你的嘴
2007-04-17 00:19:54 雨中飞燕(609754650)
你看偶有像你这样说过话吗?
2007-04-17 00:19:55 Morning Call(308617383)
是啊老毛还打仗呢
2007-04-17 00:20:00 静轩帝胄(438038687)
如果你那东西还叫嘴
2007-04-17 00:20:15 雨中飞燕(609754650)
那你是叫猪?
2007-04-17 00:20:52 静轩帝胄(438038687)
雨中飞燕能有猪一半品德
2007-04-17 00:21:02 静轩帝胄(438038687)
她妈就烧高香了
2007-04-17 00:21:31 雨中飞燕(609754650)
[;P]
2007-04-17 00:22:28 静轩帝胄(438038687)
替你父亲悲哀
2007-04-17 00:22:29 雨中飞燕(609754650)
没有了?
2007-04-17 00:22:49 静轩帝胄(438038687)
当年他老人家累个半死把你弄出来
2007-04-17 00:22:51 雨中飞燕(609754650)
嗯嗯,还差偶兄弟姐妹没讲
2007-04-17 00:22:54 雨中飞燕(609754650)
继续
2007-04-17 00:23:09 静轩帝胄(438038687)
现在你弄个半人不鬼
2007-04-17 00:23:11 静轩帝胄(438038687)
唉
2007-04-17 00:23:23 静轩帝胄(438038687)
不跟这种不算人的女人说了
2007-04-17 00:23:29 静轩帝胄(438038687)
自降身份
2007-04-17 00:23:35 雨中飞燕(609754650)
偶还真不知道你做人还有什么意思
2007-04-17 00:23:36 静轩帝胄(438038687)
总之
2007-04-17 00:23:46 静轩帝胄(438038687)
冷暖自知
2007-04-17 00:23:49 雨中飞燕(609754650)
总之你算了吧
2007-04-17 00:24:03 静轩帝胄(438038687)
雨中飞燕你是什么货色你自己最清楚
2007-04-17 00:24:12 雨中飞燕(609754650)
偶明天把记录发blog上,你也来看看啊
2007-04-17 00:24:30 静轩帝胄(438038687)
你再替自己辩解也改变不了你浅薄到极致的事实
2007-04-17 00:24:32 雨中飞燕(609754650)
对,偶也知道你什么货色
2007-04-17 00:24:55 静轩帝胄(438038687)
你就继续一个人演你的阿Q吧
2007-04-17 00:25:05 雨中飞燕(609754650)
真厉害
2007-04-17 00:25:17 雨中飞燕(609754650)
你可以做当代大律师了
2007-04-17 00:26:07 雨中飞燕(609754650)
你走了?
2007-04-17 00:26:14 雨中飞燕(609754650)
不送了啊,睡觉
------------------------------------------------------------------------------
第二天,“静轩帝胄”此人被T出了本群。。。。。
阅读全文(7582) | 评论:152 | 复制链接




最新评论