博文
[置顶] 发回复和留言的注意(2007-09-18 01:03:00)
摘要:本人人懒,最近也少写文章,很少管理自己的Blog,
但不等于你们就可以在Blog随便发表不雅言论。
当然,如果你认为匿名发表是可以不负任何责任,可以用这种方法骂人的话,
我也没时间管,你愿意的话你随便,随便在这里表现你丑恶的一面。......
论坛文章:基础算法、技巧、调试概要(2008-01-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......
给使用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函数说......
函数声明省略类型的问题(2007-09-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;
}
......
[转载]C/C++语言误区之:fflush(stdin)(2007-06-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) 来清空......
[原创]火拼俄罗斯方块单机第二版(含源代码)(2007-06-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......
[随笔]WC?(2007-05-31 13:23:00)
摘要:无锡市的现在,是我们的将来?100年后,我们的城市会变成什么?
相关资料图片:
一个比WC还要臭的地城市——蓝藻污染......
[原创]对战弹球小游戏(2007-05-29 13:57:00)
摘要:偶做的对战弹球小游戏,人机对战!考你反应和对战策略哦!!
有兴趣的试试,难度不小的哦~~~~~
请点击此处下载
可执行文件大小仅18Kb
欢迎大家玩玩,呵呵~~~~~~~~~~~~~~~~~~......
[原创]四行代码算1000阶乘精确值(2007-04-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
245040870737599188236277271887325197795059509952......
[随笔]今天,偶无语了(2007-04-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)
只要你真正弄懂哪个都行
......