<?xml version="1.0" encoding="utf-8"?><rss version="2.0">
<channel>
<title><![CDATA[唉编程]]></title>
<link>http://blog.pfan.cn/zhaoyg</link>
<description>编程爱好者博客</description>
<language>zh-cn</language>
			<item>
		<title><![CDATA[计算日期]]></title>
		<link>http://blog.pfan.cn/zhaoyg/39819.html</link>
		<description><![CDATA[// 给定一个天数,查询该天之后的日期//例如//当前日期是 2008 11 10 则5050天后是 2022 9 8
#include &lt;iostream&gt;
using namespace std;
class DAY{private:&nbsp;int y;&nbsp;int m;&nbsp;int d;&nbsp;int days[12];
public:&nbsp;DAY()&nbsp;{&nbsp;&nbsp;cout&lt;&lt;"请输入当前日期"&lt;&lt;endl;&nbsp;&nbsp;cout &lt;&lt;"year"&lt;&lt;endl;&nbsp;&nbsp;cin &gt;&gt; y;&nbsp;&nbsp;cout &lt;&lt; "mouth"&lt;&lt;endl;&nbsp;&nbsp;cin &gt;&gt;m;&nbsp;&nbsp;cout &lt;&lt; "day"&lt;&lt;endl;&nbsp;&nbsp;cin &gt;&gt; d;
&nbsp;&nbsp;int i;
&nbsp;&nbsp;for( i = 1 ; i &lt;= 12 ; i++)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;switch(i)&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;case 2:&nbsp;&nbsp;&nbsp;&nbsp;days[i-1] = isLeapYear() ? 29:28; //设置2月天数&nbsp;&nbsp;&nbsp;&nbsp;break;
&nbsp;&nbsp;&nbsp;case 4:&nbsp;&nbsp;&nbsp;case 6:&nbsp;&nbsp;&nbsp;case 9:&nbsp;&nbsp;&nbsp;case 11:&nbsp;&nbsp;&nbsp;&nbsp;days[i-1] = 30;&nbsp;&nbsp;&nbsp;&nbsp;break;
&nbsp;&nbsp;&nbsp;default :&nbsp;&nbsp;&nbsp;&nbsp;days[i-1] = 31;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;}&nbsp;}
&nb]]></description>
		<author><![CDATA[zhaoyg]]></author>
		<pubDate>2008-12-07 13:19:00</pubDate>
		</item>
				<item>
		<title><![CDATA[好久没有写了，故，今日特写]]></title>
		<link>http://blog.pfan.cn/zhaoyg/39603.html</link>
		<description><![CDATA[好久都没有写博客了，觉得今天是应该写些什么。
暑假期间我用了一个月的时间把&lt;C++ primer plus &gt;5th看了一遍，这估计是我这辈子看技术类书籍最快的一次了，看完之后总觉得应该用C++做个什么来稍微练练，后来有一次在上微处理课时突然就想到了做一个类似于电子宠物的小程序。
经过慢腾腾的编写过程后终于将这个程序写完了（仅实现了大体的功能），而这次代码行数也终于突破一千大关（之前一直都因自己学了这么久的编程了，写的代码都是百行的而郁闷）
说实话，我一直都想写个大一些的程序，但最终不是因为难度太大就是因为找不到题目而最终不了了之。唉，看着那些牛人在上学期间就已写了很多程序了，而我至今仍停留在百行当中。唉，已然大三了！
&nbsp;
P.S ： 关于暑假看的那本书的速度，说实话我当时那么快的想看完那本书仅仅只是为了想快点看《C++ Primer》，后来被证明是有些不太好，因为有好些东西不够并没有较好的记住。以后看技术类书的时候，最好还是不要看的太快。]]></description>
		<author><![CDATA[zhaoyg]]></author>
		<pubDate>2008-11-29 22:37:00</pubDate>
		</item>
				<item>
		<title><![CDATA[代码高亮的小程序]]></title>
		<link>http://blog.pfan.cn/zhaoyg/36492.html</link>
		<description><![CDATA[之前在论坛上见有人做了一个代码高亮的程序，于是我也有些心动。
这是样本代码：#include &lt;stdio.h&gt;#include &lt;conio.h&gt;int main(){int a=0,n=0,c=0;char ch;printf("请输入字符串\n");while ((ch=getchar())!='\n'){&nbsp;&nbsp;//printf("请输入字符\n");&nbsp;&nbsp;if (ch=='i')&nbsp;&nbsp;&nbsp;a=1;&nbsp;&nbsp;if (ch!='e'&amp;&amp;ch!='i'&amp;&amp;a==1||ch=='*')&nbsp;&nbsp;&nbsp;c++;&nbsp;&nbsp;if (ch=='e'&amp;&amp;a==1)&nbsp;&nbsp;//当a为1时表示在e之前有i&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;if (c==1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//当c等于1时表示i与e之间只有一个其他字符&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp; n++;&nbsp;&nbsp;&nbsp; a=0;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;c=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//如果此处不重新赋值为0，则下次c会在1的基础上继续递增&nbsp;&nbsp;}}&nbsp;&nbsp;&nbsp; printf("刚才的字符中有%d次",n);getch();return 0;}
转换后：

[color=red]#include &lt;stdio.h&gt;[/color][color=red]#include &lt;conio.h&gt;[/color][color=blue]int[/color] main(){[color=blue]int[/color] a=[color=800080]0[/color],n=[color=800080]0[/color],c=[color=800080]0[/color];[color=blue]char[/colo]]></description>
		<author><![CDATA[zhaoyg]]></author>
		<pubDate>2008-07-06 11:22:00</pubDate>
		</item>
				<item>
		<title><![CDATA[用状态机实现对代码中注释的清除]]></title>
		<link>http://blog.pfan.cn/zhaoyg/36443.html</link>
		<description><![CDATA[之前写了一个同样功能的一段程序http://blog.programfan.com/article.asp?id=34327这次模仿别人的思路，我自己又重新写了一个用状态机实现的。相比之前我写的那个，这次的代码明显短了很多。/*用状态机实现对代码中注释的清除.Visual C++ 2005 编译08.6.26zhaoyg*/
#include &lt;stdio.h&gt;#include &lt;string.h&gt;
#define SCREEN
void initialize_fsm(char fsm[7][256]);
int main(){&nbsp;int ch , temp = 0 ;&nbsp;int state = 0;&nbsp;char fsm[7][256];
&nbsp;FILE *pfin ;&nbsp;pfin = fopen("sweep-comments.txt","r");
&nbsp;#ifdef SCREEN&nbsp;&nbsp;#define OUT stdout&nbsp;#else&nbsp;&nbsp;FILE *pfout;&nbsp;&nbsp;pfout = fopen("result.txt","w");&nbsp;&nbsp;#define OUT pfout&nbsp;#endif
&nbsp;initialize_fsm(fsm);
&nbsp;#pragma region FSM ///尝试#pragma region功能. Visual C++ 2005
&nbsp;while ((ch = fgetc(pfin)) !=EOF)&nbsp;{&nbsp;&nbsp;state = fsm[state][ch];
&nbsp;&nbsp;if ( state != 2&nbsp; &amp;&amp; ch !='*' &amp;&amp; temp == '/')&nbsp;&nbsp;&nbsp;fputc(temp,OUT);
&nbsp;&nbsp;temp = ch;
&nbsp;&nbsp;switch(state)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;/*0,5,6执行同一个动作*/&nbsp;&nbsp;&nbsp;case 5:&n]]></description>
		<author><![CDATA[zhaoyg]]></author>
		<pubDate>2008-07-03 14:11:00</pubDate>
		</item>
				<item>
		<title><![CDATA[[转载]内存区划分、内存分配、常量存储区、堆、栈、自由存储区、全局区]]></title>
		<link>http://blog.pfan.cn/zhaoyg/35045.html</link>
		<description><![CDATA[一. 在c中分为这几个存储区1.栈 - 由编译器自动分配释放2.堆 - 一般由程序员分配释放，若程序员不释放，程序结束时可能由OS回收3.全局区（静态区），全局变量和静态变量的存储是放在一块的，初始化的全局变量和静态变量在一块区域，未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放4.另外还有一个专门放常量的地方。- 程序结束释放&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]]></description>
		<author><![CDATA[zhaoyg]]></author>
		<pubDate>2008-05-15 01:00:00</pubDate>
		</item>
				<item>
		<title><![CDATA[[转贴]void及void指针深层探索]]></title>
		<link>http://blog.pfan.cn/zhaoyg/35002.html</link>
		<description><![CDATA[void及void指针深层探索
1.概述 　　许多初学者对C/C++语言中的void及void指针类型不甚理解，因此在使用上出现了一些错误。本文将对void关键字的深刻含义进行解说，并详述void及void指针类型的使用方法与技巧。 　　2.void的含义 　　void的字面意思是“无类型”，void *则为“无类型指针”，void *可以指向任何类型的数据。 　　void几乎只有“注释”和限制程序的作用，因为从来没有人会定义一个void变量，让我们试着来定义： void a; 　　这行语句编译时会出错，提示“illegal use of type 'void'”。不过，即使void a的编译不会出错，它也没有任何实际意义。 　　void真正发挥的作用在于： 　　（1） 对函数返回的限定； 　　（2） 对函数参数的限定。 　　我们将在第三节对以上二点进行具体说明。 　　众所周知，如果指针p1和p2的类型相同，那么我们可以直接在p1和p2间互相赋值；如果p1和p2指向不同的数据类型，则必须使用强制类型转换运算符把赋值运算符右边的指针类型转换为左边指针的类型。 　　例如： float *p1; int *p2; p1 = p2; 　　其中p1 = p2语句会编译出错，提示“'=' : cannot convert from 'int *' to 'float *'”，必须改为： p1 = (float *)p2; 　而void *则不同，任何类型的指针都可以直接赋值给它，无需进行强制类型转换： void *p1; int *p2; p1 = p2; 　　但这并不意味着，void *也可以无需强制类型转换地赋给其它类型的指针。因为“无类型”可以包容“有类型”，而“有类型”则不能包容“无类型”。道理很简单，我们可以说“男人和女人都是人”，但不能说“人是男人”或者“人是女人”。下面的语句编译出错： void *p1; int *p2; p2 = p1; 　　提示“'=' : cannot convert from 'void *' to 'int *'”。 3.void的使用 　　下面给出void关键字的使用规则： 　　规则一 如果函数没有返回值，那么应声明为void类型 　　在C语言中，凡不加返回值类型限定的函数，就会被编译器作为返回整型值处理。但是许多程序员却误以为]]></description>
		<author><![CDATA[zhaoyg]]></author>
		<pubDate>2008-05-13 13:14:00</pubDate>
		</item>
				<item>
		<title><![CDATA[[转贴]水滴石穿C语言之正确使用const]]></title>
		<link>http://blog.pfan.cn/zhaoyg/35001.html</link>
		<description><![CDATA[基本解释　　const是一个C语言的关键字，它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的健壮性，另外，在观看别人代码的时候，清晰理解const所起的作用，对理解对方的程序也有一些帮助。　　虽然这听起来很简单，但实际上，const的使用也是c语言中一个比较微妙的地方，微妙在何处呢？请看下面几个问题。　　问题：const变量 &amp; 常量　　为什么我象下面的例子一样用一个const变量来初始化数组，ANSI C的编译器会报告一个错误呢？&nbsp; &nbsp; const int n = 5;&nbsp; &nbsp; int a[n];&nbsp;&nbsp;　　答案与分析:　　1）、这个问题讨论的是“常量”与“只读变量”的区别。常量肯定是只读的，例如5， “abc”，等，肯定是只读的，因为程序中根本没有地方存放它的值，当然也就不能够去修改它。而“只读变量”则是在内存中开辟一个地方来存放它的值，只不过这个值由编译器限定不允许被修改。C语言关键字const就是用来限定一个变量不允许被改变的修饰符（Qualifier）。上述代码中变量n被修饰为只读变量，可惜再怎么修饰也不是常量。而ANSI C规定数组定义时维度必须是“常量”，“只读变量”也是不可以的。　　2)、注意：在ANSI C中，这种写法是错误的，因为数组的大小应该是个常量，而const int n,n只是一个变量（常量 != 不可变的变量，但在标准C++中，这样定义的是一个常量，这种写法是对的），实际上，根据编译过程及内存分配来看，这种用法本来就应该是合理的，只是ANSI C对数组的规定限制了它。　　3)、那么，在ANSI C 语言中用什么来定义常量呢？答案是enum类型和#define宏，这两个都可以用来定义常量。
来自：弘少&nbsp;&nbsp;&nbsp; http://www.bansun.com/bbs/thread-4878-1-5.html]]></description>
		<author><![CDATA[zhaoyg]]></author>
		<pubDate>2008-05-13 13:13:00</pubDate>
		</item>
				<item>
		<title><![CDATA[清除代码中的注释]]></title>
		<link>http://blog.pfan.cn/zhaoyg/34327.html</link>
		<description><![CDATA[昨天在一个人的blog中看到他做了一个清除代码中的注释的小程序，于是我自己也来了兴趣。以下是我自己做的，完全是我独立思考的。不过相比之下我的代码比人家的多了很多，唉，心痛呀！！！stack_push、stack_pop 、cope_string与cope_comment这四个函数的代码都copy于我做的那个代码缩排程序里的代码，只有局部做了些删除。----------------------------------------------------------------------------/*清除代码中的注释zhaoyg&nbsp;&nbsp; 08.4.19*/
#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;typedef struct stack{&nbsp;char item;&nbsp;stack *next;}stack;void stack_push( stack **,char );stack *stack_pop (stack **);stack *cope_string(FILE *fout,stack *current_node_string);stack *cope_comment(FILE *fout,stack *current_node_comment);int main(){&nbsp;char current_char;
&nbsp;FILE *pfin,*pfout;&nbsp;stack *current_node=NULL ,*head=NULL;
&nbsp;pfin = fopen("test.txt","r");&nbsp;pfout = fopen("out.txt","w");&nbsp;////////////////////////////////////////////////////////&nbsp;while (fscanf(pfin,"%c",&amp;current_char)!=EOF)&nbsp;{&nbsp;&nbsp;if (head==NULL)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;stack_push(&amp;head,current_char);&nbsp;&nbsp;&nbsp;current_n]]></description>
		<author><![CDATA[zhaoyg]]></author>
		<pubDate>2008-04-19 23:29:00</pubDate>
		</item>
				<item>
		<title><![CDATA[做了一个选择、插入、冒泡与shell这四种排序的比较]]></title>
		<link>http://blog.pfan.cn/zhaoyg/34269.html</link>
		<description><![CDATA[#include &lt;iostream&gt;#include &lt;cstdlib&gt;#include &lt;ctime&gt;inline void exch(int &amp;A, int &amp;B){int temp = A; A = B; B = temp;} inline void compexch(int &amp;A, int &amp;B){if (A &gt; B)&nbsp;exch(A,B);} 
void selection_sort(int src[],int lengh);void insertion_sort(int src[],int lengh);void insertion_sort_adv(int src[],int lengh);void bubble (int src[] , int lengh);void quick_sort(int src[],int l, int lengh);int partition(int src[],int l, int lengh);void shell_sort(int src[], int lengh);
using namespace std;
int main(){&nbsp;int *src;&nbsp;int index_i;&nbsp;clock_t start, finish;&nbsp;clock_t save[10];&nbsp;int max;
&nbsp;cout &lt;&lt;"enter\n";&nbsp;cin &gt;&gt;max;
&nbsp;src = (int *) malloc (max*sizeof(int));
&nbsp;for (index_i = 0; index_i &lt; max ; index_i++)&nbsp;&nbsp;src[index_i] =max - index_i;&nbsp;start = clock();&nbsp;selection_sort( src, max-1);&nbsp;finish = clock();&nbsp;save[0] =finish - start ;
///////////////////////////////////////////////////]]></description>
		<author><![CDATA[zhaoyg]]></author>
		<pubDate>2008-04-17 16:53:00</pubDate>
		</item>
				<item>
		<title><![CDATA[&lt;数据结构&gt;:137-3]]></title>
		<link>http://blog.pfan.cn/zhaoyg/33989.html</link>
		<description><![CDATA[/*&nbsp; &nbsp; &lt;数据结构&gt; 
&nbsp; Page:&nbsp;137 &nbsp;exercise:3
&nbsp; description:&nbsp;&nbsp; 编写一个函数insert_left,在线索二叉树中,插入一个新节点child,作为节点parent的左儿子.节点parent的左儿子指针变为节点child的左儿子指针*/void&nbsp;insert_right(tree_node&nbsp;*parent,tree_node&nbsp;*child) { &nbsp;&nbsp;&nbsp;&nbsp;tree_node&nbsp;*temp; &nbsp;&nbsp;&nbsp;&nbsp;child-&gt;left&nbsp;=&nbsp;parent-&gt;left; &nbsp;&nbsp;&nbsp;&nbsp;child-&gt;right&nbsp;=&nbsp;parent; &nbsp;&nbsp;&nbsp;&nbsp;parent-&gt;left&nbsp;=&nbsp;child; &nbsp;&nbsp;&nbsp;&nbsp;child-&gt;left_thread&nbsp;=&nbsp;parent-&gt;left_thread; &nbsp;&nbsp;&nbsp;&nbsp;child-&gt;right_thread&nbsp;=&nbsp;true; &nbsp;&nbsp;&nbsp;&nbsp;parent-&gt;left_thread&nbsp;=&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;!&nbsp;child-&gt;left_thread) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;insucc(child); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp-&gt;right&nbsp;=&nbsp;child; &nbsp;&nbsp;&nbsp;&nbsp;} }&nbsp; tree]]></description>
		<author><![CDATA[zhaoyg]]></author>
		<pubDate>2008-04-07 22:17:00</pubDate>
		</item>
				<item>
		<title><![CDATA[不重叠地重复出现次数最多的子串]]></title>
		<link>http://blog.pfan.cn/zhaoyg/33531.html</link>
		<description><![CDATA[/*P.S: 这是我第一次参加论坛组织的比赛,此题是第52次的题目,虽然没有什么效率,但值得庆幸的是我的程序最后还通过了两组测试数据给出一个由小写字母组成的串s和一个不超过s的长度的正整数l，求s所有长度不小于l的字串中在s中不重叠地重复出现次数最多的子串。只要输出这个子串出现的次数就行了。
特别强调：子串不是子序列，必须是从s截出来连续的一段。s也是自身的子串。
例如
s = "abcabc", l = 3，
那么输出2，因为所求的子串是abc。
再例如
s = "ababa", l = 3，
那么输出1，长度不小于3的字串包括aba, bab, abab, baba, ababa。其中后面四个显然都只出现一次。前一个aba和后一个aba重叠了一个a，所以只能算不重叠地出现了一次。
实现接口
int solve(const char *s, int l);
s和l意思如上。通过返回值返回答案。*/#include&lt;stdio.h&gt;
int solve(const char *s, int l);int main(){&nbsp;&nbsp;&nbsp; char s[]="jfurhgyaopylhijknmbjhutyaopglhkyinjbaopfjguthfaopkbmvnchfaop";&nbsp;&nbsp;&nbsp; int l;&nbsp;&nbsp; // printf("enter characters\n");&nbsp;&nbsp; // scanf("%s",s);&nbsp;&nbsp;&nbsp; printf("enter l\n");&nbsp;&nbsp;&nbsp; scanf("%d",&amp;l);&nbsp;&nbsp;&nbsp; printf("%d",solve(s,l));&nbsp;&nbsp;&nbsp; getchar();getchar();&nbsp;&nbsp;&nbsp; return 0;}
int solve(const char *s, int l){&nbsp;&nbsp;&nbsp; int max=1,c;&nbsp;&nbsp;&nbsp; int i,j,k,t=0,lenth,take,ls,p,t1=0;&nbsp;&nbsp;&nbsp;]]></description>
		<author><![CDATA[zhaoyg]]></author>
		<pubDate>2008-03-23 13:45:00</pubDate>
		</item>
				<item>
		<title><![CDATA[successive&nbsp;numeral&nbsp;]]></title>
		<link>http://blog.pfan.cn/zhaoyg/33529.html</link>
		<description><![CDATA[/*output a successive numeral both sides the character '-' from lift to rightexample :input : 1,4,3-9,3,7-9#1,3d-5#
output: 1,4,3,4,5,6,7,8,9,3,7,8,9illegal
zhaoyg 2008.1.11*/
#include &lt;stdio.h&gt;#include &lt;conio.h&gt;
int main(){&nbsp;int flage=0,input,input_end,temp;&nbsp;int in[100][2]={0} , count=-1;
&nbsp;printf("add '#' as a end of input , and a sigle '#' to end\n");
&nbsp;int a=0;
&nbsp;while( (flage=scanf("%d",&amp;input))==1 &amp;&amp; input!='#')&nbsp;{
&nbsp;&nbsp;in[++count][0]=input;
&nbsp;&nbsp;if ((temp=getchar())!=',' &amp;&amp; temp!='-')&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;flage=0;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;}
&nbsp;&nbsp;if (temp=='-') &nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;if(scanf("%d",&amp;input_end)==1)&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;in[count][1]=input_end;
&nbsp;&nbsp;&nbsp;&nbsp;if ((temp=getchar())!=',' &amp;&amp; temp!='#')// eat off ',' after intput_end&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flage=0;&nbsp;&nbsp;&nbsp;&nbs]]></description>
		<author><![CDATA[zhaoyg]]></author>
		<pubDate>2008-03-23 13:34:00</pubDate>
		</item>
				<item>
		<title><![CDATA[上阶梯]]></title>
		<link>http://blog.pfan.cn/zhaoyg/33528.html</link>
		<description><![CDATA[/*上阶梯，你可以一个一个阶梯上，也可以两个两个地来，也可以一个和二个间隔着上，甚至可以一次k个阶梯问题是，上一个阶梯数为n，每步能上1至k个阶的话，你有多少种方法走完它？如 n = 5 , k = 2，可以1,1,1,1,12,1,1,11,2,1,11,1,2,11,1,1,22,2,12,1,21,2,2共8种输入阶梯数n(1 &lt;= n &lt;= 30)和每步最大阶数k(1&lt;=k&lt;=n)：5 25 3输出：813难度：Easy*/#include &lt;stdio.h&gt;#include &lt;conio.h&gt;#define MAX 300
int a[MAX];int in_step,in_total;&nbsp; //in_step为最大步长即每次最多跨几个台阶,in_total为台阶总数int count=0;&nbsp;&nbsp; //统计成功次数
void fun(int index){&nbsp;int sum=0;
&nbsp;&nbsp;for (int i=1;i&lt;=in_step;i++)&nbsp;{&nbsp;&nbsp;a[a[0]]=i;
&nbsp;&nbsp;for (int j=1;j&lt;=a[0];j++)&nbsp;&nbsp;&nbsp;sum+=a[j];
&nbsp;&nbsp;if (sum==in_total)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;count++;&nbsp;&nbsp;&nbsp;a[a[0]--]=0;&nbsp;&nbsp;&nbsp;&nbsp;for (a[0];a[a[0]]==in_step;a[0]--)&nbsp;&nbsp;&nbsp; //如果a[a[0]]已达到最大步长则清0&nbsp;&nbsp;&nbsp;&nbsp;a[a[0]]=0;
&nbsp;&nbsp;&nbsp;sum=0;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;}
&nbsp;&nbsp;if (sum&gt;in_total)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;a[a[0]--]=0;&nbsp;&nbsp;&nbsp;sum=0;&nbsp;&nbsp;&nbs]]></description>
		<author><![CDATA[zhaoyg]]></author>
		<pubDate>2008-03-23 13:33:00</pubDate>
		</item>
				<item>
		<title><![CDATA[大兵站队]]></title>
		<link>http://blog.pfan.cn/zhaoyg/33526.html</link>
		<description><![CDATA[/*问题描述大兵们站成一行横队。排长发出命令：立正！向右看——齐！！唰的一声，所有大兵都向右看。由于大兵们的身高不全相同，向右看的时候就能看到比他矮的士兵的头了。如果他右边有一个人大于等于他的身高，那么他就看不到那个人右边的人了。假设总共n个士兵，第i个士兵看到ki个头，问S=k1+k2+k3+..+kn
输入多组测试数据，第一行是n(1&lt;=n&lt;=1e5)，第二行是n个数，表示k1,k2,....,kn，kn范围在1到1e9
输出对于每组数据要输出一行，包含S的值，测试数据保证s&lt;2e9
样例输入21 231 2 333 2 131 1 151 5 2 9 3
样例输出13226
提示对于：51 5 2 9 35看到1；2看到5；9看到1,5,2；3看到9；
难度：easy*/#include &lt;stdio.h&gt;
int main(){&nbsp;int n,a[ 100000];&nbsp;int MAX,k;&nbsp;long count;
&nbsp;while (scanf("%d",&amp;n)!=EOF)&nbsp;{&nbsp;&nbsp;MAX=0;&nbsp;&nbsp;count=0;&nbsp;&nbsp;&nbsp;&nbsp;for (k=0;k&lt;n;k++)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;scanf("%d",&amp;a[k ]);
&nbsp;&nbsp;&nbsp;if (k!=0)&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;if (a[ k]&gt;a[ MAX])&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MAX=k;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count = count+k;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int i=k-1;i&gt;=MAX;i--)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{]]></description>
		<author><![CDATA[zhaoyg]]></author>
		<pubDate>2008-03-23 13:31:00</pubDate>
		</item>
				<item>
		<title><![CDATA[循环移位]]></title>
		<link>http://blog.pfan.cn/zhaoyg/33525.html</link>
		<description><![CDATA[/*题目描述：给你一个字符串"abcdefg"，循环左移两位得到"cdefgab"，循环右移两位得到"fgabcde"
输入：多组测试数据，每组一行，第一个是int范围内的整数n，表示要右移的位数，如果n是负数则表示要左移。接着后面是一个串长小于10000000的字符串。最后遇到EOF标志的时候结束。
输出：输出移位后的字符串
样例输入：2 abcdefg-2 abcdefg
样例输出：fgabcdecdefgab
难度：for beginner*/
#include &lt;stdio.h&gt;#include &lt;string.h&gt;#define MAX 10000000
char ch[MAX];char *point;
int main(){&nbsp;&nbsp;&nbsp; int n;
&nbsp;&nbsp;&nbsp; while (scanf("%d %s",&amp;n,ch)!=EOF)&nbsp;{&nbsp;&nbsp;point=ch;&nbsp;&nbsp;//getchar();
&nbsp;&nbsp;if(n&lt;0)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp; n=(-1*n)%strlen(ch);&nbsp;&nbsp;&nbsp;&nbsp; point+=n;&nbsp;&nbsp;&nbsp;&nbsp; printf("%s",point);&nbsp;&nbsp;&nbsp;&nbsp; *point='\0';&nbsp;&nbsp;&nbsp;&nbsp; printf("%s\n",ch);&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;}&nbsp;&nbsp;else&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp; n=n%strlen(ch);&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; while (*(point+n))&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; point++;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbs]]></description>
		<author><![CDATA[zhaoyg]]></author>
		<pubDate>2008-03-23 13:28:00</pubDate>
		</item>
				<item>
		<title><![CDATA[大数相乘]]></title>
		<link>http://blog.pfan.cn/zhaoyg/33524.html</link>
		<description><![CDATA[#include&lt;stdio.h&gt;#include&lt;conio.h&gt;#define MAX 100000int main(){&nbsp;&nbsp;&nbsp; long x,y;&nbsp;int p;&nbsp;&nbsp;&nbsp; int a[MAX];&nbsp;&nbsp;&nbsp; int b[MAX];&nbsp;&nbsp;&nbsp; int c[MAX];&nbsp;&nbsp;&nbsp; int sum[MAX] ;&nbsp;&nbsp;&nbsp; int len_a,len_b,i,j,temp,k;&nbsp;&nbsp;&nbsp; &nbsp;while(1)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; for (int i=0;i&lt;MAX;i++)&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[i]=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b[i]=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c[i]=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sum[i]=0; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("请输入两个相乘的数，用*分隔\n");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scanf("%d*%d",&amp;x,&amp;y);&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (len_a=0;]]></description>
		<author><![CDATA[zhaoyg]]></author>
		<pubDate>2008-03-23 13:27:00</pubDate>
		</item>
				<item>
		<title><![CDATA[分类排序]]></title>
		<link>http://blog.pfan.cn/zhaoyg/33522.html</link>
		<description><![CDATA[/*题目描述：编写一个StrSort函数，要求声明为int StrSort(char str[]);功能是把传入的str参数里的字符串ASCII大小进行升序排序，排序后的结果保存回str中。要求是对数字、小写字母、大写字母分别排序，其它符号位置不变，并且原来是数字的位置排序后还得是数字，原来是小写字母的排序后还得是小写字母
输入：按参数传递，传递的字符串最大串长是1000000个字符
输出：按参数返回，相应原字符串即可函数执行成功则应当返回非0值
样例输入：a5b4c3!d@c#B$A%
样例输出：a3b4c5!c@d#A$B%
07.11.9&nbsp; zhaoyg*/
#include&lt;stdio.h&gt;#include&lt;conio.h&gt;#include &lt;string.h&gt;#define M 20int StrSort(char *);int main(){&nbsp;char input[]="dje873hf/*6-4*fsjd83%#KHDS6f8hkldfjs83*fdjdk238sdhj";
&nbsp;//gets(input);
&nbsp;StrSort(input);&nbsp;&nbsp;puts(input);
&nbsp;getch();&nbsp;&nbsp;return 0;}
int StrSort(char a[ ]){&nbsp;int i,j,lengh;&nbsp;char temp;
&nbsp;for (lengh=0;a[lengh];lengh++)&nbsp;&nbsp;;
&nbsp;//lengh--;&nbsp;
&nbsp;for (i=0;i&lt;lengh;i++)&nbsp;&nbsp;for (j=0;j&lt;=lengh;j++)&nbsp;&nbsp;&nbsp;if (((a[i ]&lt;='z' &amp;&amp; a[i ]&gt;='a')&amp;&amp;(a[j ]&lt;='z' &amp;&amp; a[ j]&gt;='a'))||&nbsp;&nbsp;&nbsp;&nbsp;((a[i ]&lt;='9' &amp;&amp; a[i ]&gt;='0')&amp;&amp;(a[j ]&lt;='9]]></description>
		<author><![CDATA[zhaoyg]]></author>
		<pubDate>2008-03-23 13:17:00</pubDate>
		</item>
				<item>
		<title><![CDATA[大数阶乘]]></title>
		<link>http://blog.pfan.cn/zhaoyg/33520.html</link>
		<description><![CDATA[//大数阶乘// 07.4.27
#include&lt;stdio.h&gt;#include&lt;time.h&gt;
int main(){&nbsp;&nbsp;&nbsp; double duration;
&nbsp;&nbsp;&nbsp; int a[100000]={0};&nbsp;&nbsp;&nbsp; int N,i,c=1,j;
&nbsp;&nbsp;&nbsp; a[1]=1;&nbsp;&nbsp;&nbsp; clock_t start, finish;
&nbsp;&nbsp;&nbsp; printf("大数阶乘,请输入一个数\n");&nbsp;&nbsp;&nbsp; scanf("%d",&amp;N);&nbsp;&nbsp;&nbsp; start = clock();&nbsp;&nbsp;&nbsp; for (j=1;j&lt;=N;j++)&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (i=1;i&lt;=c;i++)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[i]=a[i]*j;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (i=1;i&lt;=c;i++)&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*不能写成(i=c;i&gt;0;i--)因为这样将漏掉低位的进位,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如a[3]=7*7,a[2]=3*3,a[1]=2*5,当i减到1时a[1]=1]]></description>
		<author><![CDATA[zhaoyg]]></author>
		<pubDate>2008-03-23 13:15:00</pubDate>
		</item>
				<item>
		<title><![CDATA[数字正方形]]></title>
		<link>http://blog.pfan.cn/zhaoyg/33456.html</link>
		<description><![CDATA[输出如下图形3 3 3 3 33 2 2 2 33 2 1 2 33 2 2 2 33 3 3 3 3 最笨版://任意输入一个数，实现其正方形#include &lt;stdio.h&gt;#include &lt;conio.h&gt;#include &lt;time.h&gt;
int main (){ clock_t start, end;&nbsp;&nbsp;&nbsp; //while(1)&nbsp;&nbsp; // {&nbsp;int a=0,n,b;&nbsp;int i,j;&nbsp;int c[200][200] ;&nbsp;int s,h,q;&nbsp;&nbsp;printf("请输入一个整数\n"); &nbsp;scanf("%d",&amp;n);&nbsp;&nbsp;&nbsp; q=n;&nbsp;&nbsp;&nbsp; b=2*n-1;&nbsp;&nbsp;&nbsp; start = clock();
&nbsp;while (n&gt;0)&nbsp;{&nbsp;&nbsp;for (i=a;i&lt;b;i++)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;for (j=a;j&lt;b;j++)&nbsp;&nbsp;&nbsp;&nbsp;c[i][j]=n;&nbsp;&nbsp;}&nbsp;&nbsp;n--;&nbsp;&nbsp;a++;&nbsp;&nbsp;b--;&nbsp;}
&nbsp;for (s=0;s&lt;(2*q-1);s++)&nbsp;{&nbsp;&nbsp;for (h=0;h&lt;(2*q-1);h++)&nbsp;&nbsp;&nbsp;printf("%2d",c[s][h]);&nbsp;&nbsp;&nbsp;printf("\n");&nbsp;}//}end = clock();&nbsp;printf("\nThe time was: %f\n", (end - start) / CLK_TCK);
&nbsp;getch();&nbsp;return 0;}
改进版:/*说明:&nbsp;&nbsp;&nbsp;&nbsp; j列 a b c d e&nbsp;i 行 a&nbsp;&nbsp; 3 3 3 3 3]]></description>
		<author><![CDATA[zhaoyg]]></author>
		<pubDate>2008-03-19 23:18:00</pubDate>
		</item>
				<item>
		<title><![CDATA[打印菱形]]></title>
		<link>http://blog.pfan.cn/zhaoyg/33455.html</link>
		<description><![CDATA[最早的版本:#include &lt;stdio.h&gt;
int main(){&nbsp;int k1 = 5 , k2 = 1;&nbsp;int i,j;&nbsp;&nbsp;&nbsp; do &nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (i=1 ; i &lt;= k1-1 ; i++)&nbsp;&nbsp; printf (" ");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (j=1 ; j &lt;= k2 ; j++)&nbsp; printf("*");&nbsp;&nbsp; printf("\n");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; k1=k1-1;&nbsp; //每行*号前的空格相差1个&nbsp;&nbsp; k2+=2;&nbsp;&nbsp; // 每行的*号个数相差2个 &nbsp;}&nbsp;while (k1 &gt;1 );&nbsp;&nbsp; //注释:下&nbsp;&nbsp;/* 原先之所以输出&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp; *****&nbsp;&nbsp; ***&nbsp;&nbsp;&nbsp; *&nbsp; &nbsp;&nbsp;&nbsp; 这样，是因为将判断条件错误的写为k1&lt;=0,于是第一次循环执行了k1=k1-1后,K值为2不满足k1&lt;=0&nbsp;&nbsp;&nbsp; 于是结束了循环
&nbsp;*/
&nbsp;&nbsp;&nbsp; int k3=1, k4 =5;&nbsp;int i2 , j2;
&nbsp;do &nbsp;{&nbsp;&nbsp;for (i2=1; i2 &lt;= k3+1 ; i2++ ) printf (" ");&nbsp;&nbsp;&nbsp;&nbsp;for (j2=1 ; j2 &lt;= k4 ; j2++ )&nbsp;printf ("*");&nbsp;&nbsp;&nbsp;&nbsp;printf ("\n");&nbsp;&nbsp;k3++;&nbsp;&nbsp;k4-=2;
&nbsp;}&nbsp;while (k3]]></description>
		<author><![CDATA[zhaoyg]]></author>
		<pubDate>2008-03-19 23:14:00</pubDate>
		</item>
		</channel>
</rss>