<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>我们都知道</title>
	<atom:link href="http://www.yarkee.net/feed" rel="self" type="application/rss+xml" />
	<link>http://www.yarkee.net</link>
	<description>挨踢是这样练成的</description>
	<lastBuildDate>Sat, 21 May 2011 05:09:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Python脚本:批量修改文件名</title>
		<link>http://www.yarkee.net/2011/05/rename-file.html</link>
		<comments>http://www.yarkee.net/2011/05/rename-file.html#comments</comments>
		<pubDate>Sat, 21 May 2011 05:09:23 +0000</pubDate>
		<dc:creator>Yarkee</dc:creator>
				<category><![CDATA[编程]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.yarkee.net/?p=417</guid>
		<description><![CDATA[问题大致是这样的：我下载了一堆文件放在某个文件夹下，这堆文件的名字都具有这样的格式 [Python乱码哇哇乱码哇哇].Python&#8230;. ，于是想把中括号里面的那堆乱码替换掉。 要实现其他字符的替换只需稍稍修改pat这个pattern和sub这个函数就可以了。比如说，要把所有文件名中的字符串A替换成字符串B，那pat和sub就作这样的修改 pat=re.compile(r&#8217;A') re.sub(pat,&#8217;B',i) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #! /usr/bin/env python ''' This script is used to substitute all the file name in a directory ''' &#160; import shutil import os import re &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>问题大致是这样的：我下载了一堆文件放在某个文件夹下，这堆文件的名字都具有这样的格式 [Python乱码哇哇乱码哇哇].Python&#8230;. ，于是想把中括号里面的那堆乱码替换掉。</p>
<p>要实现其他字符的替换只需稍稍修改pat这个pattern和sub这个函数就可以了。比如说，要把所有文件名中的字符串A替换成字符串B，那pat和sub就作这样的修改</p>
<p>pat=re.compile(r&#8217;A')</p>
<p>re.sub(pat,&#8217;B',i)</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#! /usr/bin/env python</span>
<span style="color: #483d8b;">''</span><span style="color: #483d8b;">'
    This script is used to substitute all the file name in a directory 
'</span><span style="color: #483d8b;">''</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">shutil</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">os</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">re</span>
&nbsp;
<span style="color: #008000;">dir</span>=r<span style="color: #483d8b;">&quot;/home/yarkee/test/&quot;</span>  <span style="color: #808080; font-style: italic;">#The target directory </span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #ff7700;font-weight:bold;">not</span> <span style="color: #dc143c;">os</span>.<span style="color: black;">path</span>.<span style="color: black;">isdir</span><span style="color: black;">&#40;</span><span style="color: #008000;">dir</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Error: The directory doesn't exist.&quot;</span>
    exit<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
files=<span style="color: #dc143c;">os</span>.<span style="color: black;">listdir</span><span style="color: black;">&#40;</span><span style="color: #008000;">dir</span><span style="color: black;">&#41;</span>
&nbsp;
pat=<span style="color: #dc143c;">re</span>.<span style="color: #008000;">compile</span><span style="color: black;">&#40;</span>r<span style="color: #483d8b;">'<span style="color: #000099; font-weight: bold;">\[</span>Python.*<span style="color: #000099; font-weight: bold;">\]</span>'</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> files:
    newFile=<span style="color: #dc143c;">re</span>.<span style="color: black;">sub</span><span style="color: black;">&#40;</span>pat,<span style="color: #483d8b;">'Python'</span>,i<span style="color: black;">&#41;</span>  <span style="color: #808080; font-style: italic;"># 'Python' substitute for pat</span>
    <span style="color: #ff7700;font-weight:bold;">print</span> newFile
    <span style="color: #dc143c;">shutil</span>.<span style="color: black;">move</span><span style="color: black;">&#40;</span><span style="color: #008000;">dir</span>+i,<span style="color: #008000;">dir</span>+newFile<span style="color: black;">&#41;</span>  <span style="color: #808080; font-style: italic;">#Same as the linux command mv</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.yarkee.net/2011/05/rename-file.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Python排序:快速,冒泡,归并</title>
		<link>http://www.yarkee.net/2011/05/python%e6%8e%92%e5%ba%8f%e5%bf%ab%e9%80%9f%e5%86%92%e6%b3%a1%e5%bd%92%e5%b9%b6.html</link>
		<comments>http://www.yarkee.net/2011/05/python%e6%8e%92%e5%ba%8f%e5%bf%ab%e9%80%9f%e5%86%92%e6%b3%a1%e5%bd%92%e5%b9%b6.html#comments</comments>
		<pubDate>Fri, 13 May 2011 14:33:37 +0000</pubDate>
		<dc:creator>Yarkee</dc:creator>
				<category><![CDATA[编程]]></category>
		<category><![CDATA[冒泡排序]]></category>
		<category><![CDATA[归并排序]]></category>
		<category><![CDATA[快速排序]]></category>

		<guid isPermaLink="false">http://www.yarkee.net/?p=410</guid>
		<description><![CDATA[之前介绍过qsort,但后来发现稍微有点不妥,终止条件设置成if not L: return L ,有点多余,实际上L长度为1时就可return了,所以改了改终止条件.然后写了下冒泡排序和归并排序,测试了下,运行结果应该没问题. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 def qsort&#40;L&#41;: if len&#40;L&#41;&#60;=1: return L return qsort&#40;&#91;x for x in L&#91;1:&#93; if x&#60;L&#91;0&#93;&#93;&#41;+L&#91;0:1&#93;+qsort&#40;&#91;x for x in L&#91;1:&#93; if x&#62;=L&#91;0&#93;&#93;&#41; &#160; def bubblesort&#40;L&#41;: for i in xrange&#40;0,len&#40;L&#41;&#41;: [...]]]></description>
			<content:encoded><![CDATA[<p>之前介绍过qsort,但后来发现稍微有点不妥,终止条件设置成if not L: return L ,有点多余,实际上L长度为1时就可return了,所以改了改终止条件.然后写了下冒泡排序和归并排序,测试了下,运行结果应该没问题.<br />
<br/></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">def</span> qsort<span style="color: black;">&#40;</span>L<span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>L<span style="color: black;">&#41;</span><span style="color: #66cc66;">&lt;</span>=<span style="color: #ff4500;">1</span>: <span style="color: #ff7700;font-weight:bold;">return</span> L
    <span style="color: #ff7700;font-weight:bold;">return</span> qsort<span style="color: black;">&#40;</span><span style="color: black;">&#91;</span>x <span style="color: #ff7700;font-weight:bold;">for</span> x <span style="color: #ff7700;font-weight:bold;">in</span> L<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span>:<span style="color: black;">&#93;</span> <span style="color: #ff7700;font-weight:bold;">if</span> x<span style="color: #66cc66;">&lt;</span>L<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>+L<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span>:<span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>+qsort<span style="color: black;">&#40;</span><span style="color: black;">&#91;</span>x <span style="color: #ff7700;font-weight:bold;">for</span> x <span style="color: #ff7700;font-weight:bold;">in</span> L<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span>:<span style="color: black;">&#93;</span> <span style="color: #ff7700;font-weight:bold;">if</span> x<span style="color: #66cc66;">&gt;</span>=L<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> bubblesort<span style="color: black;">&#40;</span>L<span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">xrange</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>,<span style="color: #008000;">len</span><span style="color: black;">&#40;</span>L<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">for</span> j <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">xrange</span><span style="color: black;">&#40;</span><span style="color: #008000;">len</span><span style="color: black;">&#40;</span>L<span style="color: black;">&#41;</span>-<span style="color: #ff4500;">1</span>,i,-<span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>:
            <span style="color: #ff7700;font-weight:bold;">if</span> L<span style="color: black;">&#91;</span>j<span style="color: black;">&#93;</span><span style="color: #66cc66;">&lt;</span>L<span style="color: black;">&#91;</span>j-<span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>:
                L<span style="color: black;">&#91;</span>j-<span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>,L<span style="color: black;">&#91;</span>j<span style="color: black;">&#93;</span>=L<span style="color: black;">&#91;</span>j<span style="color: black;">&#93;</span>,L<span style="color: black;">&#91;</span>j-<span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>
    <span style="color: #ff7700;font-weight:bold;">return</span> L
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> mergesort<span style="color: black;">&#40;</span>L<span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>L<span style="color: black;">&#41;</span><span style="color: #66cc66;">&lt;</span>=<span style="color: #ff4500;">1</span>: <span style="color: #ff7700;font-weight:bold;">return</span> L
    left=mergesort<span style="color: black;">&#40;</span>L<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span>:<span style="color: #008000;">len</span><span style="color: black;">&#40;</span>L<span style="color: black;">&#41;</span>/<span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
    right=mergesort<span style="color: black;">&#40;</span>L<span style="color: black;">&#91;</span><span style="color: #008000;">len</span><span style="color: black;">&#40;</span>L<span style="color: black;">&#41;</span>/<span style="color: #ff4500;">2</span>:<span style="color: #008000;">len</span><span style="color: black;">&#40;</span>L<span style="color: black;">&#41;</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
    result=<span style="color: black;">&#91;</span><span style="color: black;">&#93;</span>
    <span style="color: #ff7700;font-weight:bold;">while</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>left<span style="color: black;">&#41;</span><span style="color: #66cc66;">&gt;</span><span style="color: #ff4500;">0</span> <span style="color: #ff7700;font-weight:bold;">or</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>right<span style="color: black;">&#41;</span><span style="color: #66cc66;">&gt;</span><span style="color: #ff4500;">0</span>:
        <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>right<span style="color: black;">&#41;</span><span style="color: #66cc66;">&lt;</span>=<span style="color: #ff4500;">0</span> <span style="color: #ff7700;font-weight:bold;">or</span> <span style="color: black;">&#40;</span><span style="color: #008000;">len</span><span style="color: black;">&#40;</span>left<span style="color: black;">&#41;</span><span style="color: #66cc66;">&gt;</span><span style="color: #ff4500;">0</span> <span style="color: #ff7700;font-weight:bold;">and</span> left<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: #66cc66;">&lt;</span>=right<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>:
            result.<span style="color: black;">append</span><span style="color: black;">&#40;</span>left.<span style="color: black;">pop</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">else</span>:
            result.<span style="color: black;">append</span><span style="color: black;">&#40;</span>right.<span style="color: black;">pop</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">return</span> result</pre></td></tr></table></div>

</pre>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yarkee.net/2011/05/python%e6%8e%92%e5%ba%8f%e5%bf%ab%e9%80%9f%e5%86%92%e6%b3%a1%e5%bd%92%e5%b9%b6.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>消除ubuntu错误提示音</title>
		<link>http://www.yarkee.net/2011/04/clear-error-sound.html</link>
		<comments>http://www.yarkee.net/2011/04/clear-error-sound.html#comments</comments>
		<pubDate>Sun, 17 Apr 2011 11:52:56 +0000</pubDate>
		<dc:creator>Yarkee</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[错误提示音]]></category>

		<guid isPermaLink="false">http://www.yarkee.net/?p=404</guid>
		<description><![CDATA[在ubuntu中，发生按键错误时会发出相当刺耳的错误提示音，这简直是噪音，&#8221;Beep, beep&#8221;。比如说，在shell中已经没有输入字符了，却还在按backspace退格键，就会叫叫叫。之前还只在按下&#60;C+F1&#62;切换到字符界面后，才会因为按键错误而发出提示音。在Gnome图形界面中安然无恙。今天在Ubuntu上配了下compiz，弄了点特效。问题就来了。在Gnome环境中，按键错误也会&#8221;Beep, beep&#8221;地响。这还得了，按错键可是经常的时呀。 谷歌了一下，解决方法大致是这样的，切换到root权限，然后编辑当前用户的bashrc文件。 vim ~/.bashrc 在.bashrc的末尾加上这两行 setterm   -blength 0   （这个是数字0，不是字母o） 保存，注销后重新登陆即可。]]></description>
			<content:encoded><![CDATA[<p>在ubuntu中，发生按键错误时会发出相当刺耳的错误提示音，这简直是噪音，&#8221;Beep, beep&#8221;。比如说，在shell中已经没有输入字符了，却还在按backspace退格键，就会叫叫叫。之前还只在按下&lt;C+F1&gt;切换到字符界面后，才会因为按键错误而发出提示音。在Gnome图形界面中安然无恙。今天在Ubuntu上配了下compiz，弄了点特效。问题就来了。在Gnome环境中，按键错误也会&#8221;Beep, beep&#8221;地响。这还得了，按错键可是经常的时呀。</p>
<p>谷歌了一下，解决方法大致是这样的，切换到root权限，然后编辑当前用户的bashrc文件。</p>
<p>vim ~/.bashrc</p>
<p>在.bashrc的末尾加上这两行</p>
<p>setterm   -blength 0   （这个是数字0，不是字母o）</p>
<p>保存，注销后重新登陆即可。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yarkee.net/2011/04/clear-error-sound.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用python统计单词出现次数</title>
		<link>http://www.yarkee.net/2011/03/python-token-count.html</link>
		<comments>http://www.yarkee.net/2011/03/python-token-count.html#comments</comments>
		<pubDate>Thu, 31 Mar 2011 13:39:09 +0000</pubDate>
		<dc:creator>Yarkee</dc:creator>
				<category><![CDATA[编程]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.yarkee.net/?p=400</guid>
		<description><![CDATA[今天在珠三角技术沙龙发起者赖总的博客上 http://blog.csdn.net/lanphaday/archive/2011/03/31/6291668.aspx 看到一道Python面试题，赖总直接强悍地用Pipe写了个示例。我完全不懂Pipe这个模块的用法，试着用传统的方法写了遍。通过这道题，我发现正则语句&#8221;\W&#8221;很霸气。 题目是这样的： 读取文件，统计文件中每个单词出现的次数，然后按照次数高低排序。 代码如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #! /usr/bin/env python import re addr=&#34;/home/yarkee/test.txt&#34; f=open&#40;addr,&#34;rb&#34;&#41; p=re.compile&#40;&#34;\W&#34;&#41;; #\W equals to [^a-zA-Z0-9] text=f.read&#40;&#41; wn=re.split&#40;p,text&#41; #a list contain all the words wd=&#123;&#125; #a dic to count the appearence times for i in range&#40;0,len&#40;wn&#41;&#41;: [...]]]></description>
			<content:encoded><![CDATA[<p>今天在珠三角技术沙龙发起者赖总的博客上 <a href="http://blog.csdn.net/lanphaday/archive/2011/03/31/6291668.aspx">http://blog.csdn.net/lanphaday/archive/2011/03/31/6291668.aspx</a> 看到一道Python面试题，赖总直接强悍地用Pipe写了个示例。我完全不懂Pipe这个模块的用法，试着用传统的方法写了遍。通过这道题，我发现正则语句&#8221;\W&#8221;很霸气。</p>
<p>题目是这样的：</p>
<p>读取文件，统计文件中每个单词出现的次数，然后按照次数高低排序。</p>
<p>代码如下</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#! /usr/bin/env python</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">re</span>
addr=<span style="color: #483d8b;">&quot;/home/yarkee/test.txt&quot;</span>
f=<span style="color: #008000;">open</span><span style="color: black;">&#40;</span>addr,<span style="color: #483d8b;">&quot;rb&quot;</span><span style="color: black;">&#41;</span>
p=<span style="color: #dc143c;">re</span>.<span style="color: #008000;">compile</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\W</span>&quot;</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">;</span> <span style="color: #808080; font-style: italic;">#\W equals to [^a-zA-Z0-9] </span>
text=f.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
wn=<span style="color: #dc143c;">re</span>.<span style="color: black;">split</span><span style="color: black;">&#40;</span>p,text<span style="color: black;">&#41;</span> <span style="color: #808080; font-style: italic;">#a list contain all the words</span>
wd=<span style="color: black;">&#123;</span><span style="color: black;">&#125;</span>	<span style="color: #808080; font-style: italic;">#a dic to count the appearence times</span>
<span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>,<span style="color: #008000;">len</span><span style="color: black;">&#40;</span>wn<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">if</span> wn<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span><span style="color: #66cc66;">!</span>=<span style="color: #483d8b;">''</span>:
	wn<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>=wn<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>.<span style="color: black;">strip</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
	wn<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>=wn<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>.<span style="color: black;">lower</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
	<span style="color: #ff7700;font-weight:bold;">if</span> wn<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span> <span style="color: #ff7700;font-weight:bold;">in</span> wd:
	    wd<span style="color: black;">&#91;</span>wn<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span><span style="color: black;">&#93;</span>+=<span style="color: #ff4500;">1</span>
	<span style="color: #ff7700;font-weight:bold;">else</span>:
	    wd<span style="color: black;">&#91;</span>wn<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span><span style="color: black;">&#93;</span>=<span style="color: #ff4500;">1</span>
wl=<span style="color: black;">&#91;</span><span style="color: black;">&#40;</span>k,v<span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">for</span> k,v <span style="color: #ff7700;font-weight:bold;">in</span> wd.<span style="color: black;">items</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#93;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #008000;">sorted</span><span style="color: black;">&#40;</span>wl,key=<span style="color: #ff7700;font-weight:bold;">lambda</span> x:x<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>,reverse=<span style="color: #008000;">True</span><span style="color: black;">&#41;</span>	<span style="color: #808080; font-style: italic;">#sort desc by times</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.yarkee.net/2011/03/python-token-count.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Python实现快速排序</title>
		<link>http://www.yarkee.net/2011/03/python-quicksort.html</link>
		<comments>http://www.yarkee.net/2011/03/python-quicksort.html#comments</comments>
		<pubDate>Thu, 10 Mar 2011 15:39:17 +0000</pubDate>
		<dc:creator>Yarkee</dc:creator>
				<category><![CDATA[编程]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[快速排序]]></category>

		<guid isPermaLink="false">http://www.yarkee.net/?p=388</guid>
		<description><![CDATA[1 2 3 4 def qsort&#40;L&#41;: ＃The argument should be a list if not L:return &#91;&#93; return qsort&#40;&#91;x for x in L&#91;1:&#93; if x&#60;L&#91;0&#93;&#93;&#41;+L&#91;0:1&#93;+\ qsort&#40;&#91;x for x in L&#91;1:&#93; if x&#62;=L&#91;0&#93;&#93;&#41;]]></description>
			<content:encoded><![CDATA[<p>
<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">def</span> qsort<span style="color: black;">&#40;</span>L<span style="color: black;">&#41;</span>:      ＃The argument should be a <span style="color: #008000;">list</span>
    <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #ff7700;font-weight:bold;">not</span> L:<span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: black;">&#91;</span><span style="color: black;">&#93;</span>
    <span style="color: #ff7700;font-weight:bold;">return</span> qsort<span style="color: black;">&#40;</span><span style="color: black;">&#91;</span>x <span style="color: #ff7700;font-weight:bold;">for</span> x <span style="color: #ff7700;font-weight:bold;">in</span> L<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span>:<span style="color: black;">&#93;</span> <span style="color: #ff7700;font-weight:bold;">if</span> x<span style="color: #66cc66;">&lt;</span>L<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>+L<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span>:<span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>+\
	    qsort<span style="color: black;">&#40;</span><span style="color: black;">&#91;</span>x <span style="color: #ff7700;font-weight:bold;">for</span> x <span style="color: #ff7700;font-weight:bold;">in</span> L<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span>:<span style="color: black;">&#93;</span> <span style="color: #ff7700;font-weight:bold;">if</span> x<span style="color: #66cc66;">&gt;</span>=L<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yarkee.net/2011/03/python-quicksort.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux下的解压缩命令一堆</title>
		<link>http://www.yarkee.net/2011/03/linux%e4%b8%8b-extract.html</link>
		<comments>http://www.yarkee.net/2011/03/linux%e4%b8%8b-extract.html#comments</comments>
		<pubDate>Thu, 10 Mar 2011 12:11:56 +0000</pubDate>
		<dc:creator>Yarkee</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[bz2]]></category>
		<category><![CDATA[gz]]></category>
		<category><![CDATA[rar]]></category>
		<category><![CDATA[tar]]></category>
		<category><![CDATA[zip]]></category>

		<guid isPermaLink="false">http://www.yarkee.net/?p=379</guid>
		<description><![CDATA[按格式来，Linux下常用的解压缩命令有这样一些。 &#160; .tar 解压:  tar xvf TarFile.tar 压缩:  tar cvf TarFile.tar SourceFile 实际上，tar只是打文件给打包，而并没有实施压缩。x选项代表压缩，c选项代表解压。f选项必不可少，无论是解压还是压缩，f代表需要tar文档文件名作用命令的参数。 &#160; .gz 解压:  gzip -d GzipFile.gz 压缩:  gzip SourceFile &#160; .tar.gz 解压:  tar zxvf TarFile.tar.gz 压缩:  tar zcvf  TarFIle.tar.gz SourceDir 为什么有了.gz，还要有.tar.gz呢？因为用来解压缩.gz文件的gzip命令不方便对多个文件进行操作，如果有一个文件夹SourceDir需要压缩，就可以先打包成.tar，然后再压缩，把打包和压缩的过程用一条命令表示，就是上面这条命令了。 &#160; .bz2 解压:  bzip2 -d Bzip2File.bz2 压缩:  bzip2 Bzip2FIle.bz2 SourceFile &#160; .tar.bz2 解压:  tar jxvf Bzip2File.tar.bz2 压缩:  tar jcvf Bzip2File.tar.bz2 SourceDir [...]]]></description>
			<content:encoded><![CDATA[<p>按格式来，Linux下常用的解压缩命令有这样一些。</p>
<p>&nbsp;</p>
<p>.tar</p>
<p>解压:  tar xvf TarFile.tar</p>
<p>压缩:  tar cvf TarFile.tar SourceFile</p>
<p>实际上，tar只是打文件给打包，而并没有实施压缩。x选项代表压缩，c选项代表解压。f选项必不可少，无论是解压还是压缩，f代表需要tar文档文件名作用命令的参数。</p>
<p>&nbsp;</p>
<p>.gz</p>
<p>解压:  gzip -d GzipFile.gz</p>
<p>压缩:  gzip SourceFile</p>
<p>&nbsp;</p>
<p>.tar.gz</p>
<p>解压:  tar zxvf TarFile.tar.gz</p>
<p>压缩:  tar zcvf  TarFIle.tar.gz SourceDir</p>
<p>为什么有了.gz，还要有.tar.gz呢？因为用来解压缩.gz文件的gzip命令不方便对多个文件进行操作，如果有一个文件夹SourceDir需要压缩，就可以先打包成.tar，然后再压缩，把打包和压缩的过程用一条命令表示，就是上面这条命令了。</p>
<p>&nbsp;</p>
<p>.bz2</p>
<p>解压:  bzip2 -d Bzip2File.bz2</p>
<p>压缩:  bzip2 Bzip2FIle.bz2 SourceFile</p>
<p>&nbsp;</p>
<p>.tar.bz2</p>
<p>解压:  tar jxvf Bzip2File.tar.bz2</p>
<p>压缩:  tar jcvf Bzip2File.tar.bz2 SourceDir</p>
<p>.tar.bz2存在的意义与.tar.gz相同</p>
<p>&nbsp;</p>
<p><span id="more-379"></span></p>
<p>.Z</p>
<p>解压：uncompress ZFile.Z</p>
<p>压缩：compress SourceFile</p>
<p>&nbsp;</p>
<p>.tar.Z</p>
<p>解压：tar Zxvf ZFile.tar.Z</p>
<p>压缩：tar Zcvf ZFile.tar.Z SourceDir</p>
<p>&nbsp;</p>
<p>.zip</p>
<p>解压:  unzip ZipFile.zip</p>
<p>压缩:  zip ZipFile.zip SourceDir</p>
<p>zip和unzip命令可以对文件夹进行解压缩，不需要额外打包成.tar文档</p>
<p>&nbsp;</p>
<p>.rar</p>
<p>解压:  unrar x RarFile.rar  (用rar本身也可以用来解压文件，如命令rar x RarFile.rar，但rar解压不支持压缩文件中含有中文文件名)</p>
<p>压缩:  rar a RarFile.rar SourceDir</p>
<p>rar命令也可以对文件夹进行解压缩</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yarkee.net/2011/03/linux%e4%b8%8b-extract.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用Python计算最大公约数GCD</title>
		<link>http://www.yarkee.net/2011/01/python-gcd.html</link>
		<comments>http://www.yarkee.net/2011/01/python-gcd.html#comments</comments>
		<pubDate>Sun, 23 Jan 2011 15:08:48 +0000</pubDate>
		<dc:creator>Yarkee</dc:creator>
				<category><![CDATA[编程]]></category>
		<category><![CDATA[gcd]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.yarkee.net/?p=371</guid>
		<description><![CDATA[Python语言，辗转相除法求多个数的最大公约数，可以是2个，3个，……XX个数的公约数，这些数全部扔到T这个元组里面就行了。 这个例子，求256，4096，8192的最大公约数，结果当然是256了。 Python也太简洁了吧…… 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #! /usr/bin/env python &#160; def gcd&#40;argv&#41;: L=list&#40;argv&#41; while len&#40;L&#41;&#62;1: a=L&#91;len&#40;L&#41;-2&#93; b=L&#91;len&#40;L&#41;-1&#93; L=L&#91;:len&#40;L&#41;-2&#93; while b: a,b=b,a%b L.append&#40;a&#41; return a &#160; T=&#40;256,4096,8192&#41; print gcd&#40;T&#41;]]></description>
			<content:encoded><![CDATA[<p>Python语言，辗转相除法求多个数的最大公约数，可以是2个，3个，……XX个数的公约数，这些数全部扔到T这个元组里面就行了。</p>
<p>这个例子，求256，4096，8192的最大公约数，结果当然是256了。</p>
<p>Python也太简洁了吧……</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#! /usr/bin/env python</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> gcd<span style="color: black;">&#40;</span>argv<span style="color: black;">&#41;</span>:
    L=<span style="color: #008000;">list</span><span style="color: black;">&#40;</span>argv<span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">while</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>L<span style="color: black;">&#41;</span><span style="color: #66cc66;">&gt;</span><span style="color: #ff4500;">1</span>:
        a=L<span style="color: black;">&#91;</span><span style="color: #008000;">len</span><span style="color: black;">&#40;</span>L<span style="color: black;">&#41;</span>-<span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span>
        b=L<span style="color: black;">&#91;</span><span style="color: #008000;">len</span><span style="color: black;">&#40;</span>L<span style="color: black;">&#41;</span>-<span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>
        L=L<span style="color: black;">&#91;</span>:<span style="color: #008000;">len</span><span style="color: black;">&#40;</span>L<span style="color: black;">&#41;</span>-<span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span>
        <span style="color: #ff7700;font-weight:bold;">while</span> b:
            a,b=b,a<span style="color: #66cc66;">%</span>b
        L.<span style="color: black;">append</span><span style="color: black;">&#40;</span>a<span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">return</span> a
&nbsp;
T=<span style="color: black;">&#40;</span><span style="color: #ff4500;">256</span>,<span style="color: #ff4500;">4096</span>,<span style="color: #ff4500;">8192</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> gcd<span style="color: black;">&#40;</span>T<span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yarkee.net/2011/01/python-gcd.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>笔试题，输出一句”Hello world!”</title>
		<link>http://www.yarkee.net/2010/11/print-hello-world.html</link>
		<comments>http://www.yarkee.net/2010/11/print-hello-world.html#comments</comments>
		<pubDate>Tue, 02 Nov 2010 17:18:45 +0000</pubDate>
		<dc:creator>Yarkee</dc:creator>
				<category><![CDATA[编程]]></category>
		<category><![CDATA[hello world]]></category>

		<guid isPermaLink="false">http://www.yarkee.net/?p=352</guid>
		<description><![CDATA[题目是这样的:请在下面的*号处填写一段代码,使输出&#8221;Hello world!&#8221;. #include &#8220;stdio.h&#8221; void print () { * } void main() { } 在论坛上看到此题，不是如何下手。主函数是空的，一切工作都在在print函数中进行。 不过，很快我就看到了一个另辟蹊径的妙解。先思考下，然后见此文底部 华丽的分割线 ＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿ 在*号处输入如下内容: } void main()  { printf(&#8220;hello world!&#8221;); } #define main tmp_func  void func() { _________________________________________ 华丽的分割线。 这个解法很犀利，先用一个右花括号把print函数原来的左花括号匹配号，这个print函数就没动作了。 然后自己写一个main函数，输出要求的内容。 接下来宏定义，这样最后面的那个main函数便不起作用了，避免了存在两个main函数的冲突。 最后，需要写一个空的func函数，把原来print函数的右花括号匹配掉。 此程序在gcc下可正常编译并运行。 当然，这种解法更像是在考发散思维，不是在考语言基础及算法能力。]]></description>
			<content:encoded><![CDATA[<p>题目是这样的:请在下面的*号处填写一段代码,使输出&#8221;Hello world!&#8221;.</p>
<p>#include &#8220;stdio.h&#8221;<br />
 void print () {<br />
 *<br />
 }<br />
 void main()<br />
 {<br />
 }</p>
<p>在论坛上看到此题，不是如何下手。主函数是空的，一切工作都在在print函数中进行。</p>
<p>不过，很快我就看到了一个另辟蹊径的妙解。先思考下，然后见此文底部</p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><span id="more-352"></span></p>
<p>华丽的分割线</p>
<p>＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿</p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p>在*号处输入如下内容:</p>
<p><span>} <br />
 </span><span> </span><span>void main() <br />
 {</span><span> printf(&#8220;hello world!&#8221;); </span><span>} <br />
 </span><span> </span><span>#define main tmp_func <br />
 </span><span> </span><span>void func()<br />
 {</span></p>
<p><span>_________________________________________</span></p>
<p><span>华丽的分割线。</span></p>
<p>这个解法很犀利，先用一个右花括号把print函数原来的左花括号匹配号，这个print函数就没动作了。</p>
<p>然后自己写一个main函数，输出要求的内容。</p>
<p>接下来宏定义，这样最后面的那个main函数便不起作用了，避免了存在两个main函数的冲突。</p>
<p>最后，需要写一个空的func函数，把原来print函数的右花括号匹配掉。</p>
<p>此程序在gcc下可正常编译并运行。</p>
<p>当然，这种解法更像是在考发散思维，不是在考语言基础及算法能力。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yarkee.net/2010/11/print-hello-world.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>UNIX环境高级编程中的apue.h错误</title>
		<link>http://www.yarkee.net/2010/09/apue-h.html</link>
		<comments>http://www.yarkee.net/2010/09/apue-h.html#comments</comments>
		<pubDate>Wed, 29 Sep 2010 02:12:09 +0000</pubDate>
		<dc:creator>Yarkee</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[apue.h]]></category>
		<category><![CDATA[UNIX环境高级编程]]></category>

		<guid isPermaLink="false">http://www.yarkee.net/?p=324</guid>
		<description><![CDATA[最近在读 Richard Stevens 的大作《UNIX环境高级编程》，相信很多初读此书的人都会与我一样遇到这个问题，编译书中的程序实例时会出现问题，提示 &#8220;错误：apue.h：没有那个文件或目录&#8221;。 apue.h 是作者自定义的一个头文件，并不是Unix/Linux系统自带的，此头文件包括了Unix程序所需的常用头文件及作者Richard自己写的出错处理函数。所以在默认情况下，gcc在编译时是读不到这个头文件的。 先在这个网站 http://www.apuebook.com/ 下载tar.gz格式的源码包，然后解压至某个目录，比如说/home/yarkee/下，然后进入目录apue.2e，把文件Make.defines.linux 中的 WKDIR=/home/xxx/apue.2e 修改为 WKDIR=/home/yarkee/apue.2e ，然后再进入apue.2e目录下的std目录，打开linux.mk，将里面的nawk全部替换为awk，如果是用的vi/vim编辑器，可以使用这个命令  :1.$s/nawk/awk/g （注意前面有冒号） 然后在此目录下运行make命令，即回到 /home/yarkee/apue.2e 目录在终端中输入 &#8220;./make&#8221; (不含引号) 然后把 /home/yarkee/apue.2e/inlcude 目录下的 apue.h 文件和位于 /home/yarkee/apue.2e/lib 目录下的 error.c 文件都复制到 /usr/include 目录下，注意复制这两个文件你需要有root权限。之所以要这样做，是因为gcc在链接头文件时会到 /usr/include 这个目录下寻找需要的头文件，若找不到则报错。 最终还要编辑一下复制过来的 apue.h 文件 在最后一行 #endif 前面添加一行 #include &#8220;error.c&#8221; 这样就不会报错了。]]></description>
			<content:encoded><![CDATA[<p>最近在读 Richard Stevens 的大作《UNIX环境高级编程》，相信很多初读此书的人都会与我一样遇到这个问题，编译书中的程序实例时会出现问题，提示 &#8220;错误：apue.h：没有那个文件或目录&#8221;。</p>
<p>apue.h 是作者自定义的一个头文件，并不是Unix/Linux系统自带的，此头文件包括了Unix程序所需的常用头文件及作者Richard自己写的出错处理函数。所以在默认情况下，gcc在编译时是读不到这个头文件的。</p>
<p>先在这个网站 <a href="http://www.apuebook.com/">http://www.apuebook.com/</a> 下载tar.gz格式的源码包，然后解压至某个目录，比如说/home/yarkee/下，然后进入目录apue.2e，把文件Make.defines.linux 中的 WKDIR=/home/xxx/apue.2e 修改为 WKDIR=/home/yarkee/apue.2e ，然后再进入apue.2e目录下的std目录，打开linux.mk，将里面的nawk全部替换为awk，如果是用的vi/vim编辑器，可以使用这个命令  :1.$s/nawk/awk/g （注意前面有冒号）<br />
然后在此目录下运行make命令，即回到 /home/yarkee/apue.2e 目录在终端中输入 &#8220;./make&#8221; (不含引号)</p>
<p>然后把 /home/yarkee/apue.2e/inlcude 目录下的 apue.h 文件和位于 /home/yarkee/apue.2e/lib 目录下的 error.c 文件都复制到 /usr/include 目录下，注意复制这两个文件你需要有root权限。之所以要这样做，是因为gcc在链接头文件时会到 /usr/include 这个目录下寻找需要的头文件，若找不到则报错。</p>
<p>最终还要编辑一下复制过来的 apue.h 文件<br />
 在最后一行 #endif 前面添加一行 #include &#8220;error.c&#8221;</p>
<p>这样就不会报错了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yarkee.net/2010/09/apue-h.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>linux下小巧实用的截图工具scrot</title>
		<link>http://www.yarkee.net/2010/09/scrot.html</link>
		<comments>http://www.yarkee.net/2010/09/scrot.html#comments</comments>
		<pubDate>Fri, 24 Sep 2010 12:27:34 +0000</pubDate>
		<dc:creator>Yarkee</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[linux截图工具]]></category>
		<category><![CDATA[scrot]]></category>

		<guid isPermaLink="false">http://www.yarkee.net/?p=320</guid>
		<description><![CDATA[scrot是linux下小巧而实用的截图工具，它采用基于命令行的工作方式。使用起来很方便。以ubuntu为例介绍scrot的使用方法 安装:    sudo apt-get install scrot 1.抓取整个桌面:    scrot pic1.jpg    #此命令将抓取整个桌面，并且生成名字为pic1.jpg的截图保存在当前目录下 2.抓取窗口:    scrot -bs pic2.jpg    #此命令将抓取一个窗口，选项b使得抓取窗口时一并抓取其边框，选项s使得用户可以用鼠标选定抓取的是哪个窗口(在想抓取的窗口上用鼠标点一下) 3.区域截图:    scrot -s pic3.jpg    #此命令用于矩形区域截图，用鼠标选定想截图的矩形区域 4.定时截图:    scrot -cd 10 pic4.jpg    #此命令用于定时截图，选项d后接数字10，代表定时为10秒钟，选项c显示倒计时 5.生成缩略图:    scrot -t 70% pic5.jpg    #此命令除了生成pic5.jpg外，还会生成名字为pic5-thumb.jpg缩略百分比为70％的缩略图 6.更改截图品质:    scrot -q 80 pic6.jpg    #此命令选项q用于决定截图的品质，数值介于1-100之间，数值越大，品质越好，占用的空间也越大。默认为75.]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: small;"><br class="spacer_" /></span></p>
<div id="_mcePaste"><span style="font-size: small;">scrot是linux下小巧而实用的截图工具，它采用基于命令行的工作方式。使用起来很方便。以ubuntu为例介绍scrot的使用方法</span></div>
<div><span style="font-size: medium;"><span style="font-size: small;"><br />
</span> </span></div>
<div><span style="font-size: small;">安装:    sudo apt-get install scrot</span></div>
<div><span style="font-size: medium;"><span style="font-size: small;"><br />
</span><span style="font-size: small;"> </span></span></div>
<div><span style="font-size: small;">1.抓取整个桌面:    scrot pic1.jpg    #此命令将抓取整个桌面，并且生成名字为pic1.jpg的截图保存在当前目录下</span></div>
<div><span style="font-size: medium;"><span style="font-size: small;"><br />
</span><span style="font-size: small;"> </span></span></div>
<div><span style="font-size: small;">2.抓取窗口:    scrot -bs pic2.jpg    #此命令将抓取一个窗口，选项b使得抓取窗口时一并抓取其边框，选项s使得用户可以用鼠标选定抓取的是哪个窗口(在想抓取的窗口上用鼠标点一下)</span></div>
<div><span style="font-size: medium;"><span style="font-size: small;"><br />
</span><span style="font-size: small;"> </span></span></div>
<div><span style="font-size: small;">3.区域截图:    scrot -s pic3.jpg    #此命令用于矩形区域截图，用鼠标选定想截图的矩形区域</span></div>
<div><span style="font-size: medium;"><span style="font-size: small;"><br />
</span><span style="font-size: small;"> </span></span></div>
<div><span style="font-size: small;">4.定时截图:    scrot -cd 10 pic4.jpg    #此命令用于定时截图，选项d后接数字10，代表定时为10秒钟，选项c显示倒计时</span></div>
<div><span style="font-size: medium;"><span style="font-size: small;"><br />
</span><span style="font-size: small;"> </span></span></div>
<div><span style="font-size: small;">5.生成缩略图:    scrot -t 70% pic5.jpg    #此命令除了生成pic5.jpg外，还会生成名字为pic5-thumb.jpg缩略百分比为70％的缩略图</span></div>
<div><span style="font-size: medium;"><span style="font-size: small;"><br />
</span><span style="font-size: small;"> </span></span></div>
<div><span style="font-size: small;">6.更改截图品质:    scrot -q 80 pic6.jpg    #此命令选项q用于决定截图的品质，数值介于1-100之间，数值越大，品质越好，占用的空间也越大。默认为75.</span></div>
<p><br class="spacer_" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yarkee.net/2010/09/scrot.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>解决rhythmbox播放器乱码问题</title>
		<link>http://www.yarkee.net/2010/09/rhythmbox-code.html</link>
		<comments>http://www.yarkee.net/2010/09/rhythmbox-code.html#comments</comments>
		<pubDate>Tue, 21 Sep 2010 15:06:10 +0000</pubDate>
		<dc:creator>Yarkee</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[rhythmbox]]></category>

		<guid isPermaLink="false">http://www.yarkee.net/?p=315</guid>
		<description><![CDATA[rhythmbox是ubuntu自带的音乐播放器，使用得比较广泛。但是国内许多采用GBK/GB18030编码方式的mp3文件会在rhythmbox中会显示乱码。也有许多关于解决乱码问题的方法。 方法一是使用软件包mid3iconv对mp3文件重新进行编码，这种方法不太可取，mp3被重新编码可能会发生一些不可预知的错误。强烈不推荐。此方法具体如何实现，这里不介绍。 方法二是修改配置文件 sudo gedit /etc/profile  然后在文件末尾加上如下两行， export PATH=$PATH GST_ID3_TAG_ENCODING=GBK:UTF-8:GB18030 export PATH=$PATH GST_ID3V2_TAG_ENCODING=GBK:UTF-8:GB18030 保存文件，注销，重新登录。 这种方法，从用户一登录开始，就修改了编码规则，也可能会造成一些不可预知的麻烦，也不太推荐。 方法三是最可取的，只修改rhythmbox本身的编码规则,推荐使用些方法。把rhythmbox在桌面或面板上建立一个图标，右键点击图标－&#62;属性－&#62;把命令一栏中的内容改成如下内容 env GST_ID3_TAG_ENCODING=GBK:GB18030 rhythmbox %U 注销并重新登录。下次启动rhythmbox就直接点击图标启动，清空一下媒体库，重新导入音乐文件，无乱码了。记住以后都通过图标的方式启动rhythmbox。]]></description>
			<content:encoded><![CDATA[<p>rhythmbox是ubuntu自带的音乐播放器，使用得比较广泛。但是国内许多采用GBK/GB18030编码方式的mp3文件会在rhythmbox中会显示乱码。也有许多关于解决乱码问题的方法。</p>
<p>方法一是使用软件包mid3iconv对mp3文件重新进行编码，这种方法不太可取，mp3被重新编码可能会发生一些不可预知的错误。强烈不推荐。此方法具体如何实现，这里不介绍。</p>
<p><br class="spacer_" /></p>
<p>方法二是修改配置文件</p>
<p>sudo gedit /etc/profile  然后在文件末尾加上如下两行，</p>
<p>export PATH=$PATH GST_ID3_TAG_ENCODING=GBK:UTF-8:GB18030</p>
<p>export PATH=$PATH GST_ID3V2_TAG_ENCODING=GBK:UTF-8:GB18030</p>
<p>保存文件，注销，重新登录。</p>
<p>这种方法，从用户一登录开始，就修改了编码规则，也可能会造成一些不可预知的麻烦，也不太推荐。</p>
<p><br class="spacer_" /></p>
<p>方法三是最可取的，只修改rhythmbox本身的编码规则,推荐使用些方法。把rhythmbox在桌面或面板上建立一个图标，右键点击图标－&gt;属性－&gt;把命令一栏中的内容改成如下内容</p>
<p>env GST_ID3_TAG_ENCODING=GBK:GB18030 rhythmbox %U</p>
<p>注销并重新登录。下次启动rhythmbox就直接点击图标启动，清空一下媒体库，重新导入音乐文件，无乱码了。记住以后都通过图标的方式启动rhythmbox。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yarkee.net/2010/09/rhythmbox-code.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>wget命令用法简介</title>
		<link>http://www.yarkee.net/2010/09/wget.html</link>
		<comments>http://www.yarkee.net/2010/09/wget.html#comments</comments>
		<pubDate>Sun, 19 Sep 2010 03:41:33 +0000</pubDate>
		<dc:creator>Yarkee</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[wget]]></category>

		<guid isPermaLink="false">http://www.yarkee.net/?p=311</guid>
		<description><![CDATA[wget 是一个命令行的下载工具，直接HTTP，HTTPS，FTP协议，支持断点续传，在宽带状态不佳的情况下，wget能表现出很强的稳定性。wget的用法并不复杂。一般的Linux发行版都已自带了wget工具。下面就简单介绍一下wget的一些用法 $wget http://example.com/yarkee 此命令下载整个网页http://example.com/yarkee到当前目录下，如果加上参数-x则会建立一个与服务器同名的目录，下载内容保存在该目录下。 $ wget -r -np -nd http://example.com/packages/ 此命令下载 http://example.com 网站上 packages 目录中的所有文件。其中，-r表示递归子目录，-np 的作用是不遍历父目录，-nd 表示不在本机重新创建目录结构。 $ wget -r -np -nd &#8211;accept=iso http://example.com/fedora13/i386/ &#8211;accept=iso 选项表示 wget 仅下载 i386 目录中所有扩展名为 iso 的文件。你也可以指定多个扩展名，只需用逗号分隔即可。 $ wget -r -np -nd &#8211;reject=iso http://example.com/fedora13/i386/ 与上条命令相反，&#8211;reject&#8211;iso表示不下载扩展名为iso的文件，其他文件全部下载。 $ wget -i address.txt 此命令实现批量下载，所有下载地址存放到 address.txt 中，一行一个， wget 就会自动下载所有文件了。 $ wget -c -t 100 [...]]]></description>
			<content:encoded><![CDATA[<p><br class="spacer_" /></p>
<div id="_mcePaste"><span style="font-size: medium;"><strong><span style="font-size: small;">wget 是一个命令行的下载工具，直接HTTP，HTTPS，FTP协议，支持断点续传，在宽带状态不佳的情况下，wget能表现出很强的稳定性。wget的用法并不复杂。一般的Linux发行版都已自带了wget工具。下面就简单介绍一下wget的一些用法</span></strong></span></div>
<div><span style="font-size: small;"><br />
</span></div>
<div id="_mcePaste"><span style="color: #ff0000;"><span style="font-size: small;">$wget http://example.com/yarkee</span></span></div>
<div id="_mcePaste"><span style="font-size: small;">此命令下载整个网页http://example.com/yarkee到当前目录下，如果加上参数-x则会建立一个与服务器同名的目录，下载内容保存在该目录下。</span></div>
<div><span style="font-size: small;"><br />
</span></div>
<div id="_mcePaste"><span style="color: #ff0000;"><span style="font-size: small;">$ wget -r -np -nd http://example.com/packages/</span></span></div>
<div id="_mcePaste"><span style="font-size: small;">此命令下载 http://example.com 网站上 packages 目录中的所有文件。其中，-r表示递归子目录，-np 的作用是不遍历父目录，-nd 表示不在本机重新创建目录结构。</span></div>
<div><span style="font-size: small;"><br />
</span></div>
<div id="_mcePaste"><span style="color: #ff0000;"><span style="font-size: small;">$ wget -r -np -nd &#8211;accept=iso http://example.com/fedora13/i386/</span></span></div>
<div id="_mcePaste"><span style="font-size: small;">&#8211;accept=iso 选项表示 wget 仅下载 i386 目录中所有扩展名为 iso 的文件。你也可以指定多个扩展名，只需用逗号分隔即可。</span></div>
<div><span style="font-size: small;"><br />
</span></div>
<div id="_mcePaste"><span style="color: #ff0000;"><span style="font-size: small;">$ wget -r -np -nd &#8211;reject=iso http://example.com/fedora13/i386/</span></span></div>
<div id="_mcePaste"><span style="font-size: small;">与上条命令相反，&#8211;reject&#8211;iso表示不下载扩展名为iso的文件，其他文件全部下载。</span></div>
<div><span style="font-size: small;"><br />
</span></div>
<div id="_mcePaste"><span style="color: #ff0000;"><span style="font-size: small;">$ wget -i address.txt</span></span></div>
<div id="_mcePaste"><span style="font-size: small;">此命令实现批量下载，所有下载地址存放到 address.txt 中，一行一个， wget 就会自动下载所有文件了。</span></div>
<div><span style="font-size: small;"><br />
</span></div>
<div id="_mcePaste"><span style="color: #ff0000;"><span style="font-size: small;">$ wget -c -t 100 http://example.com/fedora13.iso</span></span></div>
<div id="_mcePaste"><span style="font-size: small;">-c选项实现断点续传，-t表示重新连接的次数,100则表示重新连接100次，如果设置成-t 0则表示无限次重新连接，直到下载完成。</span></div>
<div><span style="font-size: small;"><br />
</span></div>
<div id="_mcePaste"><span style="font-size: small;">wget还可实现镜像网站，使用代理服务器下载等功能，此处未作介绍。</span></div>
<p><br class="spacer_" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yarkee.net/2010/09/wget.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ubuntu 10.4 教育网源</title>
		<link>http://www.yarkee.net/2010/09/ubuntu-10-4-sources.html</link>
		<comments>http://www.yarkee.net/2010/09/ubuntu-10-4-sources.html#comments</comments>
		<pubDate>Sat, 18 Sep 2010 08:03:55 +0000</pubDate>
		<dc:creator>Yarkee</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[ubuntu源]]></category>

		<guid isPermaLink="false">http://www.yarkee.net/?p=293</guid>
		<description><![CDATA[﻿﻿﻿﻿推荐教育网的ubuntu用户使用教育网源，速度相当理想。 修改源的方法，在命令行中打入如下命令： sudo /etc/apt/sources.list  /etc/apt/sources.list_bak          备份原有源 sudo gedit /etc/apt/sources.list         编辑源文件 将以下任意一个源列表替换掉源文件中的内容，并保存源文件。然后继续打入如下命令， sudo apt-get update        更新源 sudo apt-get upgrade     检查源内的软件更新 搞定！ 成都电子科大的源，教育网推荐 deb http://Ubuntu.uestc.edu.cn/ubuntu/ lucid main restricted universe multiverse deb http://Ubuntu.uestc.edu.cn/ubuntu/ lucid-backports main restricted universe multiverse deb http://Ubuntu.uestc.edu.cn/ubuntu/ lucid-proposed main restricted universe multiverse [...]]]></description>
			<content:encoded><![CDATA[<p>﻿﻿﻿﻿推荐教育网的ubuntu用户使用教育网源，速度相当理想。</p>
<p>修改源的方法，在命令行中打入如下命令：</p>
<p>sudo /etc/apt/sources.list  /etc/apt/sources.list_bak          备份原有源</p>
<p>sudo gedit /etc/apt/sources.list         编辑源文件</p>
<p>将以下任意一个源列表替换掉源文件中的内容，并保存源文件。然后继续打入如下命令，</p>
<p>sudo apt-get update        更新源</p>
<p>sudo apt-get upgrade     检查源内的软件更新</p>
<p>搞定！</p>
<p><br class="spacer_" /></p>
<p><strong>成都电子科大的源，教育网推荐</strong><br />
 <code>deb http://Ubuntu.uestc.edu.cn/ubuntu/ lucid main restricted universe multiverse<br />
 deb http://Ubuntu.uestc.edu.cn/ubuntu/ lucid-backports main restricted universe multiverse<br />
 deb http://Ubuntu.uestc.edu.cn/ubuntu/ lucid-proposed main restricted universe multiverse<br />
 deb http://Ubuntu.uestc.edu.cn/ubuntu/ lucid-security main restricted universe multiverse<br />
 deb http://Ubuntu.uestc.edu.cn/ubuntu/ lucid-updates main restricted universe multiverse<br />
 deb-src http://Ubuntu.uestc.edu.cn/ubuntu/ lucid main restricted universe multiverse<br />
 deb-src http://Ubuntu.uestc.edu.cn/ubuntu/ lucid-backports main restricted universe multiverse<br />
 deb-src http://Ubuntu.uestc.edu.cn/ubuntu/ lucid-proposed main restricted universe multiverse<br />
 deb-src http://Ubuntu.uestc.edu.cn/ubuntu/ lucid-security main restricted universe multiverse<br />
 deb-src http://Ubuntu.uestc.edu.cn/ubuntu/ lucid-updates main restricted universe multiverse</code></p>
<p><strong>中科大的源，教育网推荐</strong><br />
 <code>deb http://debian.ustc.edu.cn/Ubuntu/ lucid main restricted universe multiverse<br />
 deb http://debian.ustc.edu.cn/Ubuntu/ lucid-backports restricted universe multiverse<br />
 deb http://debian.ustc.edu.cn/Ubuntu/ lucid-proposed main restricted universe multiverse<br />
 deb http://debian.ustc.edu.cn/Ubuntu/ lucid-security main restricted universe multiverse<br />
 deb http://debian.ustc.edu.cn/Ubuntu/ lucid-updates main restricted universe multiverse<br />
 deb-src http://debian.ustc.edu.cn/Ubuntu/ lucid main restricted universe multiverse<br />
 deb-src http://debian.ustc.edu.cn/Ubuntu/ lucid-backports main restricted universe multiverse<br />
 deb-src http://debian.ustc.edu.cn/Ubuntu/ lucid-proposed main restricted universe multiverse<br />
 deb-src http://debian.ustc.edu.cn/Ubuntu/ lucid-security main restricted universe multiverse<br />
 deb-src http://debian.ustc.edu.cn/Ubuntu/ lucid-updates main restricted universe multiverse</code></p>
<p><span id="more-293"></span></p>
<p><strong>北京交大的源，教育网</strong><br />
 <code>deb http://mirror.bjtu.edu.cn/Ubuntu/ lucid main multiverse restricted universe<br />
 deb http://mirror.bjtu.edu.cn/Ubuntu/ lucid-backports main multiverse restricted universe<br />
 deb http://mirror.bjtu.edu.cn/Ubuntu/ lucid-proposed main multiverse restricted universe<br />
 deb http://mirror.bjtu.edu.cn/Ubuntu/ lucid-security main multiverse restricted universe<br />
 deb http://mirror.bjtu.edu.cn/Ubuntu/ lucid-updates main multiverse restricted universe<br />
 deb-src http://mirror.bjtu.edu.cn/Ubuntu/ lucid main multiverse restricted universe<br />
 deb-src http://mirror.bjtu.edu.cn/Ubuntu/ lucid-backports main multiverse restricted universe<br />
 deb-src http://mirror.bjtu.edu.cn/Ubuntu/ lucid-proposed main multiverse restricted universe<br />
 deb-src http://mirror.bjtu.edu.cn/Ubuntu/ lucid-security main multiverse restricted universe<br />
 deb-src http://mirror.bjtu.edu.cn/Ubuntu/ lucid-updates main multiverse restricted universe</code></p>
<p>兰州大学的源，教育网推荐<br />
 <code>deb ftp://mirror.lzu.edu.cn/Ubuntu/ lucid main multiverse restricted universe<br />
 deb ftp://mirror.lzu.edu.cn/Ubuntu/ lucid-backports main multiverse restricted universe<br />
 deb ftp://mirror.lzu.edu.cn/Ubuntu/ lucid-proposed main multiverse restricted universe<br />
 deb ftp://mirror.lzu.edu.cn/Ubuntu/ lucid-security main multiverse restricted universe<br />
 deb ftp://mirror.lzu.edu.cn/Ubuntu/ lucid-updates main multiverse restricted universe<br />
 deb ftp://mirror.lzu.edu.cn/Ubuntu-cn/ lucid main multiverse restricted universe</code></p>
<p><strong>上海交大的源，教育网推荐</strong><br />
 <code>deb http://ftp.sjtu.edu.cn/Ubuntu/ lucid main multiverse restricted universe<br />
 deb http://ftp.sjtu.edu.cn/Ubuntu/ lucid-backports main multiverse restricted universe<br />
 deb http://ftp.sjtu.edu.cn/Ubuntu/ lucid-proposed main multiverse restricted universe<br />
 deb http://ftp.sjtu.edu.cn/Ubuntu/ lucid-security main multiverse restricted universe<br />
 deb http://ftp.sjtu.edu.cn/Ubuntu/ lucid-updates main multiverse restricted universe<br />
 deb http://ftp.sjtu.edu.cn/Ubuntu-cn/ lucid main multiverse restricted universe<br />
 deb-src http://ftp.sjtu.edu.cn/Ubuntu/ lucid main multiverse restricted universe<br />
 deb-src http://ftp.sjtu.edu.cn/Ubuntu/ lucid-backports main multiverse restricted universe<br />
 deb-src http://ftp.sjtu.edu.cn/Ubuntu/ lucid-proposed main multiverse restricted universe<br />
 deb-src http://ftp.sjtu.edu.cn/Ubuntu/ lucid-security main multiverse restricted universe<br />
 deb-src http://ftp.sjtu.edu.cn/Ubuntu/ lucid-updates main multiverse restricted universe</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yarkee.net/2010/09/ubuntu-10-4-sources.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>一半一半</title>
		<link>http://www.yarkee.net/2010/07/half-half.html</link>
		<comments>http://www.yarkee.net/2010/07/half-half.html#comments</comments>
		<pubDate>Sun, 04 Jul 2010 13:21:28 +0000</pubDate>
		<dc:creator>Yarkee</dc:creator>
				<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://www.yarkee.net/2010/07/%e4%b8%80%e5%8d%8a%e4%b8%80%e5%8d%8a.html</guid>
		<description><![CDATA[星期五下午，最后一科期末考试结束，本学期也终于算是告一段落。星期六一整天，人是迷糊糊的，因为考试的缘故，一度连续30个小时没有合眼睡觉，能坚持完周五上午和下午两科，已经算是个奇迹了，哪还有什么精力。直到今天才算是清醒了些。 广州这几天的天气热得出奇，坐在宿舍里也直抹汗，下午去游泳，人虽不多，却发现泳池里的水也是“暖和”的。学校统一在暑假为宿舍装空调，所有人期待那一天的到来。虽说期末考试才结束，从明天开始我们又要上课了。学校大刀阔斧地改革，把每年二个学期改成每年三个学期，接下来我们便要在盛夏的七月开始为期一个月的第三学期了，因为第三学期时间短，我们又习惯称之为小学期。小学期对于我们大二来说，无非还是上课，针对式地上课。作为计算机系的学生，小学期里我们大多数人都选修了程序设计课，整个小学期也有这一门专业课，真可谓专门地针对式训练了。大一的师弟师妹们就要惨一点了，他们在小学期唯一的任务便是军训，在酷暑之下，这绝对是一件十分难熬的事情。 在过去的这一学期，无疑是入学以来最难应对的一个学期，专业课多而且难，经常被压抑得不知道自己在干什么，而且很多东西于我们看来，学了实在没多大用处。在此之前，本想在学期结束了好好地痛批下本学期的课程设置的，但现在既然已经熬过来了，那股怨气便也消停了些。 四月份的时候我和同学一起组队参加了程序设计校赛，虽然成绩不错，但是仍然没有打入省赛，很遗憾。我们始终是实力有限，对很多算法和数据结构并不了解，这当然难以有很好的突破。打入省赛的目标也只能等明年再继续努力了。 在五月底的时候，社团举行了换届，于是我这个当了一年的技术部副部长也终于退位了。在一年的任期内，我们一起传播社团的理念，贯彻着我们免费修电脑的宗旨。我们社团虽然名声不大，但是口碑很好，这让我们很欣慰。在这期间，我学到了很多东西，特别是关于电脑和网站方面的技术，也认识了不少朋友，这些都让我收获不少，这段经历于我来说是很宝贵的。也希望新一届的管理员能把社团带上新的高度。 算算时间，大学也就这么一半一半了，过完两年，剩下两年。而实际上，留给我们的时间已经不到一半了。大三修完剩下的那二十几个学分，进入大四便是找工作或考研的阶段，基本没有什么课了。在这过去的一半时间时，虽然很多时候都是得过且过，但也不至于沦落到混日子的地步。我非常清楚自己现在要干什么，将来要干什么。有时候慵懒会让我忽略掉一些本应该做的事情，谁让我已经没了中学时候的那种拼劲了呢。大学的计算机教学都是那种泛式的教学，很难有什么方向性，至于自己往后要走哪个方向，当然得靠自己决定。很多人都是选择跟着老师走，老师教什么就学什么，也没有想过自己毕业以后到底要干些什么。我也为这种问题困惑过。计算机这种技术型学科，想要有作为就必须要某个领域内有自己所长，而学校这种广散网的方式不可能让你能在某个领域特别突出。能不能突出，得看学生自己有多重视。我思前想后，最终希望自己以后能从事Linux环境下的开发工作，在Linux平台下开发一些东西。但遗憾的是，学校并没有把Linux教学当回事，关于Linux的课程少之又少，于是又只能靠自己去摸索了。 小学期算上暑假，有两个多月的时候，当然也不能教这些时间闲过。我给自己定了几个计划，首先当然是坚持程序，连程序都不会写的计算机学生很难在往后有多少作为。此外，还要把Linux学一遍，是系统地全面地学一遍。最近喜欢上了看小说，村上春树的《1Q84》已经要看完第一册了，第二册也买到手了，很棒。]]></description>
			<content:encoded><![CDATA[<p>星期五下午，最后一科期末考试结束，本学期也终于算是告一段落。星期六一整天，人是迷糊糊的，因为考试的缘故，一度连续30个小时没有合眼睡觉，能坚持完周五上午和下午两科，已经算是个奇迹了，哪还有什么精力。直到今天才算是清醒了些。 </p>
<p>广州这几天的天气热得出奇，坐在宿舍里也直抹汗，下午去游泳，人虽不多，却发现泳池里的水也是“暖和”的。学校统一在暑假为宿舍装空调，所有人期待那一天的到来。虽说期末考试才结束，从明天开始我们又要上课了。学校大刀阔斧地改革，把每年二个学期改成每年三个学期，接下来我们便要在盛夏的七月开始为期一个月的第三学期了，因为第三学期时间短，我们又习惯称之为小学期。小学期对于我们大二来说，无非还是上课，针对式地上课。作为计算机系的学生，小学期里我们大多数人都选修了程序设计课，整个小学期也有这一门专业课，真可谓专门地针对式训练了。大一的师弟师妹们就要惨一点了，他们在小学期唯一的任务便是军训，在酷暑之下，这绝对是一件十分难熬的事情。</p>
<p>在过去的这一学期，无疑是入学以来最难应对的一个学期，专业课多而且难，经常被压抑得不知道自己在干什么，而且很多东西于我们看来，学了实在没多大用处。在此之前，本想在学期结束了好好地痛批下本学期的课程设置的，但现在既然已经熬过来了，那股怨气便也消停了些。</p>
<p>四月份的时候我和同学一起组队参加了程序设计校赛，虽然成绩不错，但是仍然没有打入省赛，很遗憾。我们始终是实力有限，对很多算法和数据结构并不了解，这当然难以有很好的突破。打入省赛的目标也只能等明年再继续努力了。</p>
<p>在五月底的时候，社团举行了换届，于是我这个当了一年的技术部副部长也终于退位了。在一年的任期内，我们一起传播社团的理念，贯彻着我们免费修电脑的宗旨。我们社团虽然名声不大，但是口碑很好，这让我们很欣慰。在这期间，我学到了很多东西，特别是关于电脑和网站方面的技术，也认识了不少朋友，这些都让我收获不少，这段经历于我来说是很宝贵的。也希望新一届的管理员能把社团带上新的高度。</p>
<p>算算时间，大学也就这么一半一半了，过完两年，剩下两年。而实际上，留给我们的时间已经不到一半了。大三修完剩下的那二十几个学分，进入大四便是找工作或考研的阶段，基本没有什么课了。在这过去的一半时间时，虽然很多时候都是得过且过，但也不至于沦落到混日子的地步。我非常清楚自己现在要干什么，将来要干什么。有时候慵懒会让我忽略掉一些本应该做的事情，谁让我已经没了中学时候的那种拼劲了呢。大学的计算机教学都是那种泛式的教学，很难有什么方向性，至于自己往后要走哪个方向，当然得靠自己决定。很多人都是选择跟着老师走，老师教什么就学什么，也没有想过自己毕业以后到底要干些什么。我也为这种问题困惑过。计算机这种技术型学科，想要有作为就必须要某个领域内有自己所长，而学校这种广散网的方式不可能让你能在某个领域特别突出。能不能突出，得看学生自己有多重视。我思前想后，最终希望自己以后能从事Linux环境下的开发工作，在Linux平台下开发一些东西。但遗憾的是，学校并没有把Linux教学当回事，关于Linux的课程少之又少，于是又只能靠自己去摸索了。</p>
<p>小学期算上暑假，有两个多月的时候，当然也不能教这些时间闲过。我给自己定了几个计划，首先当然是坚持程序，连程序都不会写的计算机学生很难在往后有多少作为。此外，还要把Linux学一遍，是系统地全面地学一遍。最近喜欢上了看小说，村上春树的《1Q84》已经要看完第一册了，第二册也买到手了，很棒。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yarkee.net/2010/07/half-half.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>归并排序与快速排序谁快谁慢</title>
		<link>http://www.yarkee.net/2010/05/mergesort_quicksort.html</link>
		<comments>http://www.yarkee.net/2010/05/mergesort_quicksort.html#comments</comments>
		<pubDate>Fri, 14 May 2010 12:54:17 +0000</pubDate>
		<dc:creator>Yarkee</dc:creator>
				<category><![CDATA[编程]]></category>
		<category><![CDATA[归并排序]]></category>
		<category><![CDATA[快速排序]]></category>

		<guid isPermaLink="false">http://www.yarkee.net/?p=283</guid>
		<description><![CDATA[用这两种不同的排序方法，分别对1000个无序的数进行排序，看谁更快。当然，也可以把1000替换成10000或者更多（前提是int没有暴掉）。 网上流传着一种快速排序的写法，是用两个指针分别从左至破口大骂和从右至左扫描，那样的代码也太复杂了吧。像下面这段程序写的，要简单得多。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 [...]]]></description>
			<content:encoded><![CDATA[<p>用这两种不同的排序方法，分别对1000个无序的数进行排序，看谁更快。当然，也可以把1000替换成10000或者更多（前提是int没有暴掉）。<br /> 网上流传着一种快速排序的写法，是用两个指针分别从左至破口大骂和从右至左扫描，那样的代码也太复杂了吧。像下面这段程序写的，要简单得多。</p>
<p><span id="more-283"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
</pre></td><td class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #339900;">#include&lt;iostream&gt;</span>
<span style="color: #339900;">#include&lt;ctime&gt;</span>
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #666666;">//MergeSort</span>
<span style="color: #0000ff;">void</span> Merge<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> a<span style="color: #008000;">&#91;</span> <span style="color: #008000;">&#93;</span>, <span style="color: #0000ff;">int</span> p, <span style="color: #0000ff;">int</span> q, <span style="color: #0000ff;">int</span> r<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
<span style="color: #666666;">//对两个有序的数列进行归并</span>
    <span style="color: #0000ff;">int</span> i,k<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> begin1,end1,begin2,end2<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> <span style="color: #000040;">*</span>temp<span style="color: #000080;">=</span> <span style="color: #0000dd;">new</span> <span style="color: #0000ff;">int</span><span style="color: #008000;">&#91;</span>r<span style="color: #000040;">-</span>p<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    begin1<span style="color: #000080;">=</span> p<span style="color: #008080;">;</span>
    end1 <span style="color: #000080;">=</span> q<span style="color: #008080;">;</span>
    begin2 <span style="color: #000080;">=</span> q<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
    end2 <span style="color: #000080;">=</span> r<span style="color: #008080;">;</span>
    k <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #666666;">//数列a从begin1到end1，及从begin2到end2都是有序的，接下来把这两部分合成一个</span>
    <span style="color: #666666;">//新的有序的数列</span>
    <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>begin1 <span style="color: #000080;">&lt;=</span> end1<span style="color: #008000;">&#41;</span><span style="color: #000040;">&amp;&amp;</span><span style="color: #008000;">&#40;</span> begin2 <span style="color: #000080;">&lt;=</span> end2<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>a<span style="color: #008000;">&#91;</span>begin1<span style="color: #008000;">&#93;</span> <span style="color: #000080;">&lt;=</span>a<span style="color: #008000;">&#91;</span>begin2<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
            temp<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> a<span style="color: #008000;">&#91;</span>begin1<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
            begin1<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: #008000;">&#123;</span>
            temp<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> a<span style="color: #008000;">&#91;</span>begin2<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
            begin2<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        k<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span>begin1<span style="color: #000080;">&lt;=</span>end1<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
        temp<span style="color: #008000;">&#91;</span>k<span style="color: #000040;">++</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> a<span style="color: #008000;">&#91;</span>begin1<span style="color: #000040;">++</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span>begin2<span style="color: #000080;">&lt;=</span>end2<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
        temp<span style="color: #008000;">&#91;</span>k<span style="color: #000040;">++</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> a<span style="color: #008000;">&#91;</span>begin2<span style="color: #000040;">++</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;</span> <span style="color: #008000;">&#40;</span>r <span style="color: #000040;">-</span> p<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
        a<span style="color: #008000;">&#91;</span>p<span style="color: #000040;">+</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> temp<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000dd;">delete</span> temp<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> MergeSort<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> a<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>, <span style="color: #0000ff;">int</span> first, <span style="color: #0000ff;">int</span> last<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> mid <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>first<span style="color: #000080;">&lt;</span>last<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
        mid <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>first<span style="color: #000040;">+</span>last<span style="color: #008000;">&#41;</span><span style="color: #000040;">/</span><span style="color: #0000dd;">2</span><span style="color: #008080;">;</span>
        MergeSort<span style="color: #008000;">&#40;</span>a, first, mid<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        MergeSort<span style="color: #008000;">&#40;</span>a, mid<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span>,last<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        Merge<span style="color: #008000;">&#40;</span>a,first,mid,last<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #666666;">//QuickSort</span>
<span style="color: #0000ff;">void</span> QuickSort<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> a<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>,<span style="color: #0000ff;">int</span> first,<span style="color: #0000ff;">int</span> last<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> pivot,last_small<span style="color: #008080;">;</span>
    pivot<span style="color: #000080;">=</span>a<span style="color: #008000;">&#91;</span>first<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    last_small<span style="color: #000080;">=</span>first<span style="color: #008080;">;</span>
    <span style="color: #666666;">//从pivot之后的第一个元素开始扫描，一旦发现比pivot小的元素就挪到前边</span>
    <span style="color: #666666;">//循环结束后，从a[1]到a[last_small]都是比pivot小的元素</span>
    <span style="color: #666666;">//从a[last_small+1]到a[last]都是不比pivot小的元素</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i<span style="color: #000080;">=</span>first<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>last<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>
<span style="color: #000080;">&lt;</span>pivot<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
            last_small<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
            swap<span style="color: #008000;">&#40;</span>a<span style="color: #008000;">&#91;</span>last_small<span style="color: #008000;">&#93;</span>,a<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #666666;">//这个swap的作用是使得从a[0]到a[last_small-1]都是比pivot小的元素</span>
    <span style="color: #666666;">//从a[last_small+1]到a[last]都是不比pivot小的元素</span>
    swap<span style="color: #008000;">&#40;</span>a<span style="color: #008000;">&#91;</span>first<span style="color: #008000;">&#93;</span>,a<span style="color: #008000;">&#91;</span>last_small<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>first<span style="color: #000080;">&lt;</span>last<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
        QuickSort<span style="color: #008000;">&#40;</span>a,first,last_small<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        QuickSort<span style="color: #008000;">&#40;</span>a,last_small<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span>,last<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> <span style="color: #000040;">*</span>p,<span style="color: #000040;">*</span>q,t<span style="color: #000080;">=</span><span style="color: #0000dd;">2</span><span style="color: #008080;">;;</span>
    <span style="color: #0000ff;">int</span> choice<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">clock_t</span> start,end<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> num<span style="color: #000080;">=</span><span style="color: #0000dd;">1000</span><span style="color: #008080;">;</span>
    p<span style="color: #000080;">=</span><span style="color: #0000dd;">new</span> <span style="color: #0000ff;">int</span><span style="color: #008000;">&#91;</span>num<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
    <span style="color: #0000dd;">srand</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">time</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">NULL</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>num<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
        p<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">rand</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">%</span>num<span style="color: #008080;">;</span>
        <span style="color: #0000dd;">cout</span><span style="color: #000080;">&lt;&lt;</span>p<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">&lt;&lt;</span><span style="color: #FF0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>&quot;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
&nbsp;
    q<span style="color: #000080;">=</span><span style="color: #0000dd;">new</span> <span style="color: #0000ff;">int</span><span style="color: #008000;">&#91;</span>num<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>num<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
        q<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>p<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
&nbsp;
    <span style="color: #0000dd;">cout</span><span style="color: #000080;">&lt;&lt;</span>endl<span style="color: #008080;">;</span>
    <span style="color: #0000dd;">cout</span><span style="color: #000080;">&lt;&lt;</span><span style="color: #FF0000;">&quot;Input 1 to use mergesort,input 2 to use quicksort:&quot;</span><span style="color: #000080;">&lt;&lt;</span>endl<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span>t<span style="color: #000040;">--</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">cin</span><span style="color: #000080;">&gt;&gt;</span>choice<span style="color: #008080;">;</span>
        <span style="color: #0000ff;">switch</span><span style="color: #008000;">&#40;</span>choice<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">case</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">:</span>
              start<span style="color: #000080;">=</span><span style="color: #0000dd;">clock</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
              MergeSort<span style="color: #008000;">&#40;</span>p,<span style="color: #0000dd;">0</span>,num<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
              end<span style="color: #000080;">=</span><span style="color: #0000dd;">clock</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
              <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>num<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
                  <span style="color: #0000dd;">cout</span><span style="color: #000080;">&lt;</span>
<span style="color: #000080;">&lt;</span>p<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">&lt;&lt;</span><span style="color: #FF0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>&quot;</span><span style="color: #008080;">;</span>
              <span style="color: #008000;">&#125;</span>
              <span style="color: #0000dd;">cout</span><span style="color: #000080;">&lt;&lt;</span><span style="color: #FF0000;">&quot;Time of sort is &quot;</span><span style="color: #000080;">&lt;&lt;</span><span style="color: #0000ff;">double</span><span style="color: #008000;">&#40;</span>end<span style="color: #000040;">-</span>start<span style="color: #008000;">&#41;</span><span style="color: #000040;">/</span><span style="color: #0000ff;">CLOCKS_PER_SEC</span><span style="color: #000080;">&lt;&lt;</span>endl<span style="color: #008080;">;</span>
              <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
         <span style="color: #0000ff;">case</span> <span style="color: #0000dd;">2</span><span style="color: #008080;">:</span>
            start<span style="color: #000080;">=</span><span style="color: #0000dd;">clock</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            QuickSort<span style="color: #008000;">&#40;</span>q,<span style="color: #0000dd;">0</span>,num<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            end<span style="color: #000080;">=</span><span style="color: #0000dd;">clock</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>num<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
                 <span style="color: #0000dd;">cout</span><span style="color: #000080;">&lt;&lt;</span>q<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">&lt;&lt;</span><span style="color: #FF0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>&quot;</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0000dd;">cout</span><span style="color: #000080;">&lt;&lt;</span><span style="color: #FF0000;">&quot;Time of sort is &quot;</span><span style="color: #000080;">&lt;&lt;</span><span style="color: #0000ff;">double</span><span style="color: #008000;">&#40;</span>end<span style="color: #000040;">-</span>start<span style="color: #008000;">&#41;</span><span style="color: #000040;">/</span><span style="color: #0000ff;">CLOCKS_PER_SEC</span><span style="color: #000080;">&lt;&lt;</span>endl<span style="color: #008080;">;</span>
            <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
          <span style="color: #008000;">&#125;</span>
     <span style="color: #0000dd;">cout</span><span style="color: #000080;">&lt;&lt;</span>endl<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.yarkee.net/2010/05/mergesort_quicksort.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>有一所很不起眼的学校，它叫云帆实验学校</title>
		<link>http://www.yarkee.net/2010/05/yunfan.html</link>
		<comments>http://www.yarkee.net/2010/05/yunfan.html#comments</comments>
		<pubDate>Sat, 08 May 2010 12:01:47 +0000</pubDate>
		<dc:creator>Yarkee</dc:creator>
				<category><![CDATA[生活]]></category>
		<category><![CDATA[云帆]]></category>

		<guid isPermaLink="false">http://www.yarkee.net/?p=277</guid>
		<description><![CDATA[云帆实验学校是长沙市宁乡县教育局于2003年创办的一所复读学校。对，这只是一所没什么地位的复读学校。 2004年，云帆713名学生参加高考，本科一、二批上线365人，其中重本152人； 2005年，云帆1317名学生参加高考，本科一、二批上线691人； 2006年，本科一、二批上线949人； 2007年，本科一、二批上线1179人； 2008年， 云帆2389名学生参加高考，本科一、二批上线1554人，其中重本上线689人； 2009 年，云帆2568人参考，本科一、二批上线1696人，其中重本上线765人。其中彭巍、刘婷、谢毅荣获宁乡文科状元（600分），刘宏达荣获宁乡理科状 元（645分）。文科6人进入全县10名，37人进入全县50名。理科4人进入全县10名，17人进入全县50名。 云帆学校，简直不是常人能呆的地方。在云帆，呆上一个来月然后被逼得选择退学的大有人在。当年我们班，开学一段时间后，选择退学的，保守估计也有十来个吧。 最后选择留下来，坚持完整个高四的，要么就是早已超脱，看破世俗，无视精神与皮肉之苦的高人，要么就是如我般极度有自虐倾向的人。身体健康状况不是很好的人请切勿来这。 我在云帆的时候，起床10分钟（10分钟内到田径场集合，然后晨跑）。早餐和午餐40分钟。晚餐60分钟。白天8节课，晚上3节晚 自习。下晚自习到宿舍熄灯，20分钟。除星期一外，每天第8节课进行限时训练（每天1科，正好6科），限时训练的成绩将被收集统计，全校范围内进行排名公 示。每天晚自习前20分钟听力训练，一直坚持到高考。每个月2到3天假期。宿舍环境与餐饮，我表示无语。这知道如今，云帆的生活作息及生活条件有没有改变。 但是，当你被高考打击得体无完肤，无路可走的时候，你可以选择来这里。当你无路可走了，也就不会去在乎日子会有多苦，压力会有多大，只管让云帆的管理模式与育人理论压榨你就OK了。 好，接下来说点严肃的。归根结底，我还是很感谢云帆的。如果没有云帆，我是不可能坐在我的理想大学的宿舍里，慢条丝理地敲着这些文字。如果没有云帆，我早就在高三毕业的那个夏天向命运妥协了。而在云帆的那年时光，也是我永远无法忘记的一年。 距2010年高考还有一个月，望云帆2010届的师弟师妹们能如我们这些往届的人一般。只要结果是辉煌的，别人才懒得关心你的过程有多么的惨无人道呢！]]></description>
			<content:encoded><![CDATA[<div id="blogContent">
<p>云帆实验学校是长沙市宁乡县教育局于2003年创办的一所复读学校。对，这只是一所没什么地位的复读学校。</p>
<p><strong>2</strong><strong>004年，云帆713名学生参加高考，本科一、二批上线365人，其中重本152人；</strong></p>
<p><strong>2005年，云帆1317名学生参加高考，本科一、二批上线691人；</strong></p>
<p><strong>2006年，本科一、二批上线949人；<br />
 </strong></p>
<p><strong>2007年，本科一、二批上线1179人；</strong></p>
<p><strong>2008年， 云帆2389名学生参加高考，本科一、二批上线1554人，其中重本上线689人；</strong></p>
<p><strong>2009 年，云帆2568人参考，本科一、二批上线1696人，其中重本上线765人。其中彭巍、刘婷、谢毅荣获宁乡文科状元（600分），刘宏达荣获宁乡理科状 元（645分）。文科6人进入全县10名，37人进入全县50名。理科4人进入全县10名，17人进入全县50名。</strong></p>
<p><span id="more-277"></span></p>
<p>云帆学校，简直不是常人能呆的地方。在云帆，呆上一个来月然后被逼得选择退学的大有人在。当年我们班，开学一段时间后，选择退学的，保守估计也有十来个吧。 最后选择留下来，坚持完整个高四的，要么就是早已超脱，看破世俗，无视精神与皮肉之苦的高人，要么就是如我般极度有自虐倾向的人。身体健康状况不是很好的人请切勿来这。</p>
<p>我在云帆的时候，起床10分钟（10分钟内到田径场集合，然后晨跑）。早餐和午餐40分钟。晚餐60分钟。白天8节课，晚上3节晚 自习。下晚自习到宿舍熄灯，20分钟。除星期一外，每天第8节课进行限时训练（每天1科，正好6科），限时训练的成绩将被收集统计，全校范围内进行排名公 示。每天晚自习前20分钟听力训练，一直坚持到高考。每个月2到3天假期。宿舍环境与餐饮，我表示无语。这知道如今，云帆的生活作息及生活条件有没有改变。</p>
<p>但是，当你被高考打击得体无完肤，无路可走的时候，你可以选择来这里。当你无路可走了，也就不会去在乎日子会有多苦，压力会有多大，只管让云帆的管理模式与育人理论压榨你就OK了。</p>
<p>好，接下来说点严肃的。归根结底，我还是很感谢云帆的。如果没有云帆，我是不可能坐在我的理想大学的宿舍里，慢条丝理地敲着这些文字。如果没有云帆，我早就在高三毕业的那个夏天向命运妥协了。而在云帆的那年时光，也是我永远无法忘记的一年。</p>
<p>距2010年高考还有一个月，望云帆2010届的师弟师妹们能如我们这些往届的人一般。只要结果是辉煌的，别人才懒得关心你的过程有多么的惨无人道呢！</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.yarkee.net/2010/05/yunfan.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>C++输入函数再贴一篇</title>
		<link>http://www.yarkee.net/2010/04/cin-function.html</link>
		<comments>http://www.yarkee.net/2010/04/cin-function.html#comments</comments>
		<pubDate>Mon, 12 Apr 2010 12:34:06 +0000</pubDate>
		<dc:creator>Yarkee</dc:creator>
				<category><![CDATA[编程]]></category>
		<category><![CDATA[cin]]></category>

		<guid isPermaLink="false">http://www.yarkee.net/?p=264</guid>
		<description><![CDATA[当然，还是先要声明，这篇是转载的。 1、cin&#62;&#62;           用法1：最基本，也是最常用的用法，输入一个数字： #include &#60;iostream&#62; using namespace std; main () { int a,b; cin&#62;&#62;a&#62;&#62;b; cout&#60;&#60;a+b&#60;&#60;endl; } 输入：2[回车]3[回车] 输出：5 用法2：接受一个字符串，遇“空格”、“TAB”、“回车”都结束 #include &#60;iostream&#62; using namespace std; main () { char a[20]; cin&#62;&#62;a; cout&#60;&#60;a&#60;&#60;endl; } 输入：jkljkljkl 输出：jkljkljkl 输入：jkljkl jkljkl       //遇空格结束 输出：jkljkl 2、cin.get() 用法1： cin.get(字符变量名)可以用来接收字符 #include &#60;iostream&#62; using namespace std; main () { char ch; ch=cin.get();               //或者cin.get(ch); cout&#60;&#60;ch&#60;&#60;endl; [...]]]></description>
			<content:encoded><![CDATA[<p>当然，还是先要声明，这篇是转载的。</p>
<p>1、cin&gt;&gt;          </p>
<p>用法1：最基本，也是最常用的用法，输入一个数字：</p>
<p>#include &lt;iostream&gt;<br />
using namespace std;<br />
main ()<br />
{<br />
int a,b;<br />
cin&gt;&gt;a&gt;&gt;b;<br />
cout&lt;&lt;a+b&lt;&lt;endl;<br />
}</p>
<p>输入：2[回车]3[回车]<br />
输出：5</p>
<p>用法2：接受一个字符串，遇“空格”、“TAB”、“回车”都结束</p>
<p>#include &lt;iostream&gt;<br />
using namespace std;<br />
main ()<br />
{<br />
char a[20];<br />
cin&gt;&gt;a;<br />
cout&lt;&lt;a&lt;&lt;endl;<br />
}</p>
<p>输入：jkljkljkl<br />
输出：jkljkljkl</p>
<p>输入：jkljkl jkljkl       //遇空格结束<br />
输出：jkljkl</p>
<p><span id="more-264"></span><br />
2、cin.get()</p>
<p>用法1： cin.get(字符变量名)可以用来接收字符</p>
<p>#include &lt;iostream&gt;<br />
using namespace std;<br />
main ()<br />
{<br />
char ch;<br />
ch=cin.get();               //或者cin.get(ch);<br />
cout&lt;&lt;ch&lt;&lt;endl;<br />
}</p>
<p>输入：jljkljkl<br />
输出：j</p>
<p>用法2：cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格</p>
<p>#include &lt;iostream&gt;<br />
using namespace std;<br />
main ()<br />
{<br />
char a[20];<br />
cin.get(a,20);<br />
cout&lt;&lt;a&lt;&lt;endl;<br />
}</p>
<p>输入：jkl jkl jkl<br />
输出：jkl jkl jkl</p>
<p>输入：abcdeabcdeabcdeabcdeabcde （输入25个字符）<br />
输出：abcdeabcdeabcdeabcd              （接收19个字符+1个&#8217;\0&#8242;）</p>
<p>用法3：cin.get(无参数)没有参数主要是用于舍弃输入流中的不需要的字符,或者舍弃回车,弥补cin.get(字符数组名,接收字符数目)的不足.</p>
<p>这个我还不知道怎么用，知道的前辈请赐教；</p>
<p>3、cin.getline()   // 接受一个字符串，可以接收空格并输出</p>
<p>#include &lt;iostream&gt;<br />
using namespace std;<br />
main ()<br />
{<br />
char m[20];<br />
cin.getline(m,5);<br />
cout&lt;&lt;m&lt;&lt;endl;<br />
}</p>
<p>输入：jkljkljkl<br />
输出：jklj</p>
<p>接受5个字符到m中，其中最后一个为&#8217;\0&#8242;，所以只看到4个字符输出；</p>
<p>如果把5改成20：<br />
输入：jkljkljkl<br />
输出：jkljkljkl</p>
<p>输入：jklf fjlsjf fjsdklf<br />
输出：jklf fjlsjf fjsdklf</p>
<p>//延伸：<br />
//cin.getline()实际上有三个参数，cin.getline(接受字符串的看哦那间m,接受个数5,结束字符)<br />
//当第三个参数省略时，系统默认为&#8217;\0&#8242;<br />
//如果将例子中cin.getline()改为cin.getline(m,5,&#8217;a');当输入jlkjkljkl时输出jklj，输入 jkaljkljkl时，输出jk</p>
<p>当用在多维数组中的时候，也可以用cin.getline(m[i],20)之类的用法：</p>
<p>#include&lt;iostream&gt;<br />
#include&lt;string&gt;<br />
using namespace std;</p>
<p>main ()<br />
{<br />
char m[3][20];<br />
for(int i=0;i&lt;3;i++)<br />
{<br />
cout&lt;&lt;&#8221;\n请输入第&#8221;&lt;&lt;i+1&lt;&lt;&#8221;个字符串：&#8221;&lt;&lt;endl;<br />
cin.getline(m[i],20);<br />
}</p>
<p>cout&lt;&lt;endl;<br />
for(int j=0;j&lt;3;j++)<br />
cout&lt;&lt;&#8221;输出m["&lt;&lt;j&lt;&lt;"]的值:&#8221;&lt;&lt;m[j]&lt;&lt;endl;</p>
<p>}</p>
<p>请输入第1个字符串：<br />
kskr1</p>
<p>请输入第2个字符串：<br />
kskr2</p>
<p>请输入第3个字符串：<br />
kskr3</p>
<p>输出m[0]的值:kskr1<br />
输出m[1]的值:kskr2<br />
输出m[2]的值:kskr3</p>
<p>4、getline()     // 接受一个字符串，可以接收空格并输出，需包含 “#include&lt;string&gt;”</p>
<p>#include &lt;iostream&gt;<br />
#include &lt;string&gt;<br />
using namespace std;<br />
void main(void)<br />
{<br />
string st ;<br />
cout&lt;&lt;&#8221;Input st:&#8221;;<br />
getline(cin,st);<br />
cout&lt;&lt;st&lt;&lt;endl;<br />
}</p>
<p>上面这段代码，如果输入abc，那么需要按两次回车键才能显示abc（在VC6中），因为getline有三个参数，第三个参数是字符串的结束符，也就是当getline遇到这个结束符时，就不在接受输入了，比如写成 getline(cin,st,&#8217;s'); 即使输入的是abcsabc 那么也只会显示 abc ，因此对于上面出现的情况，有人说getline默认情况下以回车(&#8216;\n&#8217;)作为结束符，第一次按回车表示字符串结束，第二次按回车才开始输出。</p>
<p>5、gets()        // 接受一个字符串，可以接收空格并输出，需包含“#include&lt;string&gt;”</p>
<p>#include&lt;iostream&gt;<br />
#include&lt;string&gt;<br />
using namespace std;<br />
main ()<br />
{<br />
char m[20];<br />
gets(m);                       //不能写成m=gets();<br />
cout&lt;&lt;m&lt;&lt;endl;<br />
}</p>
<p>输入：jkljkljkl<br />
输出：jkljkljkl</p>
<p>输入：jkl jkl jkl<br />
输出：jkl jkl jkl</p>
<p>类似cin.getline()里面的一个例子，gets()同样可以用在多维数组里面：</p>
<p>#include&lt;iostream&gt;<br />
#include&lt;string&gt;<br />
using namespace std;</p>
<p>main ()<br />
{<br />
char m[3][20];<br />
for(int i=0;i&lt;3;i++)<br />
{<br />
cout&lt;&lt;&#8221;\n请输入第&#8221;&lt;&lt;i+1&lt;&lt;&#8221;个字符串：&#8221;&lt;&lt;endl;<br />
gets(m[i]);<br />
}</p>
<p>cout&lt;&lt;endl;<br />
for(int j=0;j&lt;3;j++)<br />
cout&lt;&lt;&#8221;输出m["&lt;&lt;j&lt;&lt;"]的值:&#8221;&lt;&lt;m[j]&lt;&lt;endl;</p>
<p>}</p>
<p>请输入第1个字符串：<br />
kskr1</p>
<p>请输入第2个字符串：<br />
kskr2</p>
<p>请输入第3个字符串：<br />
kskr3</p>
<p>输出m[0]的值:kskr1<br />
输出m[1]的值:kskr2<br />
输出m[2]的值:kskr3</p>
<p>自我感觉gets()和cin.getline()的用法很类似，只不过cin.getline()多一个参数罢了；</p>
<p>这里顺带说明一下，对于本文中的这个kskr1,kskr2,kskr3的例子，对于cin&gt;&gt;也可以适用，原因是这里输入的没有空格，如果输入了空格，比如“ks kr jkl[回车]”那么cin就会已经接收到3个字符串，“ks,kr,jkl”；再如“kskr 1[回车]kskr 2[回车]”，那么则接收“kskr,1,kskr”；这不是我们所要的结果！而cin.getline()和gets()因为可以接收空格，所以不会产生这个错误；</p>
<p>6、getchar()   //接受一个字符，需包含“#include&lt;string&gt;”</p>
<p>#include&lt;iostream&gt;<br />
#include&lt;string&gt;<br />
using namespace std;<br />
main ()<br />
{<br />
char ch;<br />
ch=getchar();                      <br />
cout&lt;&lt;ch&lt;&lt;endl;<br />
}</p>
<p>输入：jkljkljkl<br />
输出：j</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yarkee.net/2010/04/cin-function.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>二维vector容器模拟迷宫，用回溯法走出迷宫</title>
		<link>http://www.yarkee.net/2010/04/maze.html</link>
		<comments>http://www.yarkee.net/2010/04/maze.html#comments</comments>
		<pubDate>Fri, 09 Apr 2010 14:56:51 +0000</pubDate>
		<dc:creator>Yarkee</dc:creator>
				<category><![CDATA[编程]]></category>
		<category><![CDATA[vector]]></category>
		<category><![CDATA[回溯]]></category>
		<category><![CDATA[迷宫]]></category>

		<guid isPermaLink="false">http://www.yarkee.net/?p=262</guid>
		<description><![CDATA[依然是老师布置的作业。题目为： Write a backtracking program to find a way through a rectangle maze. 即用回溯法找出一条走出矩形迷宫的路径。 程序写得很粗糙，相当粗糙。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 [...]]]></description>
			<content:encoded><![CDATA[<p>依然是老师布置的作业。题目为：</p>
<p>Write a backtracking program to find a way through a rectangle maze.<br />
即用回溯法找出一条走出矩形迷宫的路径。<br />
程序写得很粗糙，相当粗糙。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
</pre></td><td class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #339900;">#include&lt;iostream&gt;</span>
<span style="color: #339900;">#include&lt;vector&gt;</span>
<span style="color: #339900;">#include&quot;time.h&quot;</span>
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">int</span> flag<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span><span style="color: #666666;">//由于迷宫可能有多个解，flag的作用就是用来控制，使输出的解只有一个</span>
&nbsp;
<span style="color: #ff0000; font-style: italic;">/*模拟的迷宫是有h*l个点的矩形，若矩形的某位置可以通行，则用'-'表示，某位置有障碍
，不可通行，用'*'表示,已走过的点用'0'表示
*/</span>
&nbsp;
<span style="color: #0000ff;">void</span> find_way<span style="color: #008000;">&#40;</span>vector<span style="color: #000080;">&lt;</span>vector<span style="color: #000080;">&lt;</span><span style="color: #0000ff;">char</span><span style="color: #000080;">&gt;&gt;</span> <span style="color: #000040;">&amp;</span>maze,<span style="color: #0000ff;">int</span> maze_i,<span style="color: #0000ff;">int</span> maze_j<span style="color: #008000;">&#41;</span><span style="color: #666666;">//回溯法</span>
<span style="color: #008000;">&#123;</span>
        maze<span style="color: #008000;">&#91;</span>maze_i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>maze_j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #FF0000;">'0'</span><span style="color: #008080;">;</span>
        <span style="color: #666666;">//若已达到出口，则输出已经被解出来的迷宫，及线路图</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>maze_i<span style="color: #000080;">==</span><span style="color: #008000;">&#40;</span>maze.<span style="color: #007788;">size</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">&amp;&amp;</span>maze_j<span style="color: #000080;">==</span><span style="color: #008000;">&#40;</span>maze<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">size</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
            flag<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
            <span style="color: #0000dd;">cout</span><span style="color: #000080;">&lt;&lt;</span><span style="color: #FF0000;">&quot;One solution of this maze is as follow: &quot;</span><span style="color: #000080;">&lt;&lt;</span>endl<span style="color: #008080;">;</span>
            <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>vector<span style="color: #000080;">&lt;</span>vector<span style="color: #000080;">&lt;</span><span style="color: #0000ff;">char</span><span style="color: #000080;">&gt;&gt;</span><span style="color: #008080;">::</span><span style="color: #007788;">size_type</span> i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>maze.<span style="color: #007788;">size</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
                <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>vector<span style="color: #000080;">&lt;</span><span style="color: #0000ff;">char</span><span style="color: #000080;">&gt;</span><span style="color: #008080;">::</span><span style="color: #007788;">size_type</span> j<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;</span>maze<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">size</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
                    <span style="color: #0000dd;">cout</span><span style="color: #000080;">&lt;&lt;</span>maze<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">&lt;&lt;</span><span style="color: #FF0000;">&quot; &quot;</span><span style="color: #008080;">;</span>
                <span style="color: #008000;">&#125;</span>
                <span style="color: #0000dd;">cout</span><span style="color: #000080;">&lt;&lt;</span>endl<span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0000dd;">cout</span><span style="color: #000080;">&lt;&lt;</span>endl<span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span><span style="color: #0000ff;">else</span><span style="color: #008000;">&#123;</span>
        <span style="color: #666666;">//如果下一个位置可以前进，则前进一步，然后递归调用fing_way函数</span>
            <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>maze_i<span style="color: #000080;">&gt;</span><span style="color: #0000dd;">0</span><span style="color: #000040;">&amp;&amp;</span>maze<span style="color: #008000;">&#91;</span>maze_i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>maze_j<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #FF0000;">'-'</span><span style="color: #000040;">&amp;&amp;</span>flag<span style="color: #000080;">==</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
                find_way<span style="color: #008000;">&#40;</span>maze,maze_i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span>,maze_j<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>maze_i<span style="color: #000080;">&lt;</span>maze.<span style="color: #007788;">size</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #000040;">&amp;&amp;</span>maze<span style="color: #008000;">&#91;</span>maze_i<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>maze_j<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #FF0000;">'-'</span><span style="color: #000040;">&amp;&amp;</span>flag<span style="color: #000080;">==</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
                find_way<span style="color: #008000;">&#40;</span>maze,maze_i<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span>,maze_j<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>maze_j<span style="color: #000080;">&gt;</span><span style="color: #0000dd;">0</span><span style="color: #000040;">&amp;&amp;</span>maze<span style="color: #008000;">&#91;</span>maze_i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>maze_j<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #FF0000;">'-'</span><span style="color: #000040;">&amp;&amp;</span>flag<span style="color: #000080;">==</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
                find_way<span style="color: #008000;">&#40;</span>maze,maze_i,maze_j<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>maze_j<span style="color: #000080;">&lt;</span>maze<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">size</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #000040;">&amp;&amp;</span>maze<span style="color: #008000;">&#91;</span>maze_i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>maze_j<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #FF0000;">'-'</span><span style="color: #000040;">&amp;&amp;</span>flag<span style="color: #000080;">==</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
                find_way<span style="color: #008000;">&#40;</span>maze,maze_i,maze_j<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
        maze<span style="color: #008000;">&#91;</span>maze_i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>maze_j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #FF0000;">'-'</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    vector<span style="color: #000080;">&lt;</span>vector<span style="color: #000080;">&lt;</span><span style="color: #0000ff;">char</span><span style="color: #000080;">&gt;&gt;</span> maze<span style="color: #008080;">;</span>
    vector<span style="color: #000080;">&lt;</span><span style="color: #0000ff;">char</span><span style="color: #000080;">&gt;</span> temp<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> h,l,t<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
    <span style="color: #0000dd;">srand</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span><span style="color: #008000;">&#41;</span><span style="color: #0000dd;">time</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">NULL</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span>t<span style="color: #000040;">!</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">cout</span><span style="color: #000080;">&lt;&lt;</span><span style="color: #FF0000;">&quot;Input the height of the maze: &quot;</span><span style="color: #008080;">;</span>
        <span style="color: #0000dd;">cin</span><span style="color: #000080;">&gt;&gt;</span>h<span style="color: #008080;">;</span>
        <span style="color: #0000dd;">cout</span><span style="color: #000080;">&lt;&lt;</span><span style="color: #FF0000;">&quot;Input the length of the maze: &quot;</span><span style="color: #008080;">;</span>
        <span style="color: #0000dd;">cin</span><span style="color: #000080;">&gt;&gt;</span>l<span style="color: #008080;">;</span>
        <span style="color: #666666;">//用二维的vector容器模拟一个迷宫，'-'表示可通行，'#'表示有障碍</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>h<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> j<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;</span>l<span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
                <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #000040;">&amp;&amp;</span>j<span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">||</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">==</span>h<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #000040;">&amp;&amp;</span>j<span style="color: #000080;">==</span>l<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> temp.<span style="color: #007788;">push_back</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">'-'</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #666666;">//保证入口和出口是可通行的</span>
                <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">rand</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">%</span><span style="color:#800080;">3</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
                    temp.<span style="color: #007788;">push_back</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">'-'</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
                <span style="color: #008000;">&#125;</span>
                <span style="color: #0000ff;">else</span> <span style="color: #008000;">&#123;</span>
                    temp.<span style="color: #007788;">push_back</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">'#'</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
                <span style="color: #008000;">&#125;</span>
            <span style="color: #008000;">&#125;</span>
            maze.<span style="color: #007788;">push_back</span><span style="color: #008000;">&#40;</span>temp<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            temp.<span style="color: #007788;">clear</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000dd;">cout</span><span style="color: #000080;">&lt;&lt;</span><span style="color: #FF0000;">&quot;The maze is as follow:&quot;</span><span style="color: #000080;">&lt;&lt;</span>endl<span style="color: #008080;">;</span>
        <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>h<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> j<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;</span>l<span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>
                <span style="color: #0000dd;">cout</span><span style="color: #000080;">&lt;&lt;</span>maze<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">&lt;&lt;</span><span style="color: #FF0000;">&quot; &quot;</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0000dd;">cout</span><span style="color: #000080;">&lt;&lt;</span>endl<span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #ff0000; font-style: italic;">/*迷宫默认的入口位置为左上角，出口位置为右下角
          可以通过修改find_way的第二个和第三个参数，来修改入口位置
          通过修改find_way的第一个if语句来修改出口位置
        */</span>
        <span style="color: #0000dd;">cout</span><span style="color: #000080;">&lt;&lt;</span>endl<span style="color: #008080;">;</span>
        find_way<span style="color: #008000;">&#40;</span>maze,<span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #666666;">//此时flag还等于0，证明迷宫无解</span>
        <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>flag<span style="color: #000080;">==</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span> <span style="color: #0000dd;">cout</span><span style="color: #000080;">&lt;&lt;</span><span style="color: #FF0000;">&quot;Oh my god! No solution in this terrible maze!&quot;</span><span style="color: #000080;">&lt;&lt;</span>endl<span style="color: #000080;">&lt;&lt;</span>endl<span style="color: #008080;">;</span>
        <span style="color: #0000dd;">cout</span><span style="color: #000080;">&lt;&lt;</span><span style="color: #FF0000;">&quot;Input 0 to quit this program,else to continue simulating.&quot;</span><span style="color: #000080;">&lt;&lt;</span>endl<span style="color: #008080;">;</span>
        <span style="color: #666666;">//模拟完一次后，把二维的vector容器清空，flag置1，为下一次模拟做准备</span>
        maze.<span style="color: #007788;">clear</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        flag<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
        <span style="color: #0000dd;">cin</span><span style="color: #000080;">&gt;&gt;</span>t<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.yarkee.net/2010/04/maze.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>转载:cin深入分析(下) &#8211; cin的错误处理</title>
		<link>http://www.yarkee.net/2010/03/cin-analyze-2.html</link>
		<comments>http://www.yarkee.net/2010/03/cin-analyze-2.html#comments</comments>
		<pubDate>Sat, 27 Mar 2010 14:34:09 +0000</pubDate>
		<dc:creator>Yarkee</dc:creator>
				<category><![CDATA[编程]]></category>
		<category><![CDATA[cin]]></category>

		<guid isPermaLink="false">http://www.yarkee.net/2010/03/%e8%bd%ac%e8%bd%bdcin%e6%b7%b1%e5%85%a5%e5%88%86%e6%9e%90%e4%b8%8b-cin%e7%9a%84%e9%94%99%e8%af%af%e5%a4%84%e7%90%86.html</guid>
		<description><![CDATA[在前一节中我们有几个例子中提到了cin函数出错，以致不再执行读操作(程序8)。而且我们经常会看到程序中会出现cin.clear(),cin.ignore(), cin.fail()等函数。这些函数都是与cin的错误处理有关的。这一节我们来分析一下cin的错误处理机制，并且学习几个重要的函数：cin.fail(), cin.bad(), cin.good(), cin.clear(),&#160; cin.ignore()等。 程序执行时有一个标志变量来标志输入的异常状态，其中有三位标志位分别用来标志三种异常信息，他们分别是：failbit，eofbit，badbit。这三个标志位在标志变量中是这样分配的： ____________________________________ &#124;&#160;&#160;&#160;&#160; 2&#160;&#160;&#160;&#160; &#124;&#160;&#160;&#160;&#160; 1&#160;&#160;&#160; &#124;&#160;&#160;&#160;&#160; 0&#160;&#160;&#160;&#160; &#124; &#124;&#160; failbit&#160; &#124;&#160; eofbit&#160; &#124;&#160;&#160; badbit&#160; &#124; &#124;___________&#124;__________&#124;___________&#124; 看一下这几个标志位的作用(引用msdn)： badbit, to record a loss of integrity of the stream buffer. eofbit, to record end-of-file while extracting from a stream. failbit, to record a failure to extract a valid field from [...]]]></description>
			<content:encoded><![CDATA[<p>在前一节中我们有几个例子中提到了cin函数出错，以致不再执行读操作(程序8)。而且我们经常会看到程序中会出现cin.clear(),cin.ignore(), cin.fail()等函数。这些函数都是与cin的错误处理有关的。这一节我们来分析一下cin的错误处理机制，并且学习几个重要的函数：cin.fail(), cin.bad(), cin.good(), cin.clear(),&#160; cin.ignore()等。</p>
<p>程序执行时有一个标志变量来标志输入的异常状态，其中有三位标志位分别用来标志三种异常信息，他们分别是：failbit，eofbit，badbit。这三个标志位在标志变量中是这样分配的：   <br />____________________________________    <br />|&#160;&#160;&#160;&#160; 2&#160;&#160;&#160;&#160; |&#160;&#160;&#160;&#160; 1&#160;&#160;&#160; |&#160;&#160;&#160;&#160; 0&#160;&#160;&#160;&#160; |    <br />|&#160; failbit&#160; |&#160; eofbit&#160; |&#160;&#160; badbit&#160; |    <br />|___________|__________|___________|    <br />看一下这几个标志位的作用(引用msdn)：    <br />badbit, to record a loss of integrity of the stream buffer.    <br />eofbit, to record end-of-file while extracting from a stream.    <br />failbit, to record a failure to extract a valid field from a stream.    <br />In addition, a useful value is goodbit, where no bits are set.</p>
<p>接下来我么看几个ios类的数据定义(引用msdn)：   <br />typedef T2 iostate;    <br />static const iostate badbit, eofbit, failbit, goodbit;</p>
<p>这里ios类定义了这四个常量badbit, eofbit, failbit, goodbit，其实这四个标志常量就是取对应标志位的掩码，也即输入的四种异常情况！   <br />以上四个常量对应的取值为：    <br />ios::badbit&#160;&#160;&#160; 001&#160;&#160; 输入（输出）流出现致命错误，不可挽回&#160; <br />ios::eofbit&#160;&#160;&#160; 010&#160;&#160; 已经到达文件尾    <br />ios::failbit&#160;&#160; 100&#160;&#160; 输入（输出）流出现非致命错误，可挽回    <br />ios::goodbit&#160;&#160; 000&#160;&#160; 流状态完全正常, 各异常标志位都为0</p>
<p>我们可以用输出语句来验证这几个常量的值：   <br />cout &lt;&lt; ios:: failbit &lt;&lt; endl;    <br />cout &lt;&lt; ios:: eofbit &lt;&lt; endl;    <br />cout &lt;&lt; ios:: badbit &lt;&lt; endl;    <br />cout &lt;&lt; ios:: goodbit &lt;&lt; endl;    <br />输出的结果为：    <br />4    <br />2    <br />1    <br />0    <br />【注意】它们不是failbit、badbit、eofbit、goodbit这四个标记位的存贮变量，而是四个标志四种异常状态的常量，其实他们就相当于取对应状态标志位的掩码。如果标志变量为flag，则flag &amp; failbit 就取得fail标志位。</p>
<p><span id="more-252"></span>
<p>搞清楚了标志位的原理后，我们来看几个关于异常标志的函数：</p>
<p>1、iostate ios::rdstate()   <br />取标志变量的值，我们可以用该函数取得整个标志变量的值，再与前面定义的标志位常量相与就可以获得对应标志位的状态。如：    <br />void TestFlags( ios&amp; x )&#160; // 获得x流的三个标志位状态    <br />{    <br /> cout &lt;&lt; ( x.rdstate( ) &amp; ios::badbit ) &lt;&lt; endl;    <br /> cout &lt;&lt; ( x.rdstate( ) &amp; ios::failbit ) &lt;&lt; endl;    <br /> cout &lt;&lt; ( x.rdstate( ) &amp; ios::eofbit ) &lt;&lt; endl;    <br /> cout &lt;&lt; endl;    <br />}</p>
<p>2、bool ios::fail() const;   <br />1 or true if rdstate &amp; failbit is nonzero, otherwise 0 or false. (引用msdn)    <br />其中rdstate即通过rdstate()取得的标识变量的值，与failbit相与，即取得failbit标志位的值，如果结果非零则放回true，否则返回false。即该函数返回failbit的状态，将标志位状态通过bool值返回。</p>
<p>3、bool ios::bad() const;   <br />1 or true if rdstate &amp; badbit is nonzero; otherwise 0. (引用msdn)    <br />与fail()相似。</p>
<p>4、bool ios::good() const;   <br />1 or true if rdstate == goodbit (no state flags are set), otherwise, 0 or false.&#160; (引用msdn)    <br />改函数取goodbit的情况，即三个标志位都0(即没有任何异常情况)时返回true，否则返回false。</p>
<p>5、void ios::clear(iostate _State=goodbit);   <br />该函数用来重置标识变量，_State是用来重置的值，默认为goodbit，即默认时将所有标志位清零。用户也可以传进参数，如：clear(failbit)，这样就将标识变量置为failbit(即：001)。    <br />我们一般是用它的默认值，当cin出现异常，我们用该函数将所有标志位重置。如果cin出现异常，没有重置标志的话没法执行下一次的cin操作。如上一节的程序2的测试二为什么第二次输入操作没有执行？程序8中 cin&gt;&gt;ch 为什么没有执行？都是这个原因！！！    <br />所以经常在程序中使用 cin.clear(), 为了重置错误标志！</p>
<p>6、另外还有一个函数 void ios::setstate(iostate _State);   <br />这个函数也是用来设置标识变量的，但与clear()不同。clear()是将所有标志清零，在置以参数新的标志。而该函数不清零其他的标志，而只是将参数对应的标志位置位。这个函数不是经常使用，这里不再赘述。</p>
<p>&#160; 在搞清楚了这几个函数后，对cin输入操作的错误处理就有了比较深的了解了。下面我们回过头来看看上一节程序8的测试，因为第一次用getline()读取字符串超长，所以导致出现异常，大家可以查看一下标志位来验证一下！所以会导致后面的 cin&gt;&gt;ch 语句没有执行。那我们利用前面学习的clear()函数来强制重置错误标志，看看会出现什么情况呢？   <br /><strong>程序9：     <br /></strong>#include &lt;iostream&gt;    <br />using namespace std;    <br />int main ()    <br />{    <br /> char ch, str[20];    <br /> cin.getline(str, 5);    <br /> cout&lt;&lt;&quot;flag1:&quot;&lt;&lt;cin.good()&lt;&lt;endl;&#160;&#160;&#160; // 查看goodbit状态，即是否有异常    <br /> cin.clear();&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 清除错误标志    <br /> cout&lt;&lt;&quot;flag1:&quot;&lt;&lt;cin.good()&lt;&lt;endl;&#160;&#160;&#160; // 清除标志后再查看异常状态    <br /> cin&gt;&gt;ch;    <br /> cout&lt;&lt;&quot;str:&quot;&lt;&lt;str&lt;&lt;endl;    <br /> cout&lt;&lt;&quot;ch :&quot;&lt;&lt;ch&lt;&lt;endl;    <br /> return 0;    <br />}    <br /><em><u>测试输入：</u></em>    <br />12345[Enter]    <br /><u><em>输出：</em></u>    <br />flag1:0&#160; // good()返回false说明有异常    <br />flag2:1&#160; // good()返回true说明，clear()已经清除了错误标志    <br />str:1234    <br />ch :5    <br />【分析】程序执行结束还是只执行了一次读操作，cin&gt;&gt;ch还是没有从键盘读取数据，但是与程序8中不同，这里打印了ch的值为&#8217;5&#8242;，而且在cin&gt;&gt;ch之前已经清楚了错误标志，也就是cin&gt;&gt;ch的读操作实际上执行了。这就是前面讲的cin读取数据的原理：它是直接从输入缓冲区中取数据的。此例中，第一次输入&quot;12345&quot;, 而getline(str, 5)根据参数&#8217;5&#8242;只取缓冲区中的前4个字符，所以str取的是&quot;1234&quot;，而字符&#8217;5&#8242;仍在缓冲区中，所以cin&gt;&gt;ch直接从缓冲区中取得数据，没有从键盘读取数据！    <br />也就是当前一次读取数据出错后，如果缓冲区没有清空的话，重置错误标志还不够！要是能将缓冲区的残留数据清空了就好了哦！下面我们再来看一个很重要的函数！</p>
<p>7、basic_istream&amp; ignore(streamsize _Count = 1, int_type _Delim = traits_type::eof());   <br />function: Causes a number of elements to be skipped from the current read position.    <br />Parameters:    <br />_Count, The number of elements to skip from the current read position.    <br />_Delim, The element that, if encountered before count, causes ignore to return and allowing all elements after _Delim to be read. (引用msdn)    <br />这个函数用来丢弃输入缓冲区中的字符，第一参数定义一个数，第二个参数定义一个字符变量。下面解释一下函数是怎样执行的：函数不停的从缓冲区中取一个字符，并判断是不是_Delim，如果不是则丢弃并进行计数，当计数达到_Count退出，如果是则丢弃字符退出。例：cin.ignore(5, &#8216;a&#8217;); 函数将不断从缓冲区中取一个字符丢弃，直到丢弃的字符数达到5或者读取的字符为&#8217;a'。下面我们看个程序例子：    <br /><strong>程序10：</strong>    <br />#include &lt;iostream&gt;    <br />using namespace std;    <br />int main ()    <br />{    <br /> cin.ignore(5, &#8216;a&#8217;);    <br /> return 0;    <br />}    <br /><em><u>测试一输入：       <br /></u></em>c[enter]    <br />c[enter]    <br />c[enter]    <br />c[enter]    <br />c[enter]    <br />程序结束。    <br />【分析】程序开始时缓冲区是空的，cin.ignore()到缓冲区中取数据，没有则请求从键盘输入，每次从键盘输入一个字符，如果不是&#8217;a'则丢弃，所以该测试中共输入了5次，直到计数达到5。</p>
<p><em><u>测试二输入：</u></em>    <br />c[enter]    <br />c[enter]    <br />a[enter]    <br />程序结束。    <br />【分析】前面两个字符不是&#8217;a'丢弃且计数没达到5，第三次输入为&#8217;a', 丢弃该字符程序结束！</p>
<p><strong>丢弃一个字符：</strong>    <br />我们看看这个函数的默认值，第一个参数默认为1，第二个参数默认为EOF。所以cin.ignore()就是丢弃缓冲区中的第一个字符，这在程序中也是比较常用的！我们回过头看看程序5，程序5中用cin.get()读取字符，第一次读取时用回车符结束，而get函数不丢弃回车符，所以回车符仍残留在缓冲区中，导致第二次读取数据直接从缓冲区中取得回车符！这与我们最初的用以是不相符的，既然cin.get()不会自动丢弃输入结束时的回车符，这里我们学会了ignore()函数，我们就可以自己手动求其回车符啊！所以程序5可以这样改动：    <br />程序11：    <br />#include &lt;iostream&gt;    <br />using namespace std;    <br />int main()    <br />{    <br /> char c1, c2;    <br /> cin.get(c1);    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; cin.ignore();&#160; // 用该函数的默认情况，丢弃一个字符，即上次输入结束的回车符    <br /> cin.get(c2);    <br /> cout&lt;&lt;c1&lt;&lt;&quot; &quot;&lt;&lt;c2&lt;&lt;endl;&#160;&#160; // 打印两个字符    <br /> cout&lt;&lt;(int)c1&lt;&lt;&quot; &quot;&lt;&lt;(int)c2&lt;&lt;endl;&#160; // 打印这两个字符的ASCII值    <br /> return 0;&#160; <br />}    <br />测试一输入：    <br />a[Enter]    <br />b[Enter]    <br />输出:    <br />a    <br />b    <br />97 98    <br />【分析】这样程序就正常了！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yarkee.net/2010/03/cin-analyze-2.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>转载：cin深入分析(上) &#8211; cin输入操作处理</title>
		<link>http://www.yarkee.net/2010/03/cin-analyze-1.html</link>
		<comments>http://www.yarkee.net/2010/03/cin-analyze-1.html#comments</comments>
		<pubDate>Sat, 27 Mar 2010 14:13:33 +0000</pubDate>
		<dc:creator>Yarkee</dc:creator>
				<category><![CDATA[编程]]></category>
		<category><![CDATA[cin]]></category>
		<category><![CDATA[getline()]]></category>

		<guid isPermaLink="false">http://www.yarkee.net/2010/03/%e8%bd%ac%e8%bd%bd%ef%bc%9acin%e6%b7%b1%e5%85%a5%e5%88%86%e6%9e%90%e4%b8%8a-cin%e8%be%93%e5%85%a5%e6%93%8d%e4%bd%9c%e5%a4%84%e7%90%86.html</guid>
		<description><![CDATA[问题描述 很多初学者都认为cin函数是一个很简单的函数，其实不然！cin函数有很多需要了解的知识（比如：cin的返回值是什么，cin提供了哪些成员函数且分别是什么作用，如cin.clear(), cin.ignore(), cin.fail(), cin.good()等等），如果没有很好的掌握，在使用的时候很可能会出问题却不知其原因！而且很多人也确确实实遇到过不少问题，以下是几个简单的例子： 程序1： #include &#60;iostream&#62; using namespace std; int main() { int m, n; cin&#62;&#62;m; cin&#62;&#62;n; return 0; } 测试情况： 如果用户每次都输入两个合法的数，程序不会出问题！ 但是如果用户第一次输入时给一个非法的输入，比如说输入一个字符&#8217;a'，你会发现程序不 会再执行第二条输入语句。似乎有点奇怪！！ 程序2： #include &#60;iostream&#62; using namespace std; int main() { char str[8]; cin.getline(str, 5); cout&#60;&#60;str&#60;&#60;endl; cin.getline(str, 5); cout&#60;&#60;str&#60;&#60;endl; return 0; } 程序的功能很简单，就是输入一个字符串再输出，再次输入一个字符串输出。程序执行情况： 测试一： abcd (回车) abcd (输出) efgh (回车) efgh [...]]]></description>
			<content:encoded><![CDATA[<p><u>问题描述</u></p>
<p>很多初学者都认为cin函数是一个很简单的函数，其实不然！cin函数有很多需要了解的知识（比如：cin的返回值是什么，cin提供了哪些成员函数且分别是什么作用，如cin.clear(), cin.ignore(), cin.fail(), cin.good()等等），如果没有很好的掌握，在使用的时候很可能会出问题却不知其原因！而且很多人也确确实实遇到过不少问题，以下是几个简单的例子：</p>
<p><b>程序1</b><b>：</b></p>
<p>#include &lt;iostream&gt;</p>
<p>using namespace std;</p>
<p>int main()</p>
<p>{</p>
<p>int m, n;</p>
<p>cin&gt;&gt;m;</p>
<p>cin&gt;&gt;n;</p>
<p>return 0;</p>
<p>}</p>
<p><i><u>测试情况：</u></i></p>
<p>如果用户每次都输入两个合法的数，程序不会出问题！</p>
<p>但是如果用户第一次输入时给一个非法的输入，比如说输入一个字符&#8217;a'，你会发现程序不</p>
<p>会再执行第二条输入语句。似乎有点奇怪！！</p>
<p><b>程序2</b><b>：</b></p>
<p>#include &lt;iostream&gt;</p>
<p>using namespace std;</p>
<p>int main()</p>
<p>{</p>
<p>char str[8];</p>
<p>cin.getline(str, 5);</p>
<p>cout&lt;&lt;str&lt;&lt;endl;</p>
<p>cin.getline(str, 5);</p>
<p>cout&lt;&lt;str&lt;&lt;endl;</p>
<p>return 0;</p>
<p>}</p>
<p>程序的功能很简单，就是输入一个字符串再输出，再次输入一个字符串输出。程序执行情况：</p>
<p><i><u>测试一：</u></i></p>
<p>abcd (回车)</p>
<p>abcd (输出)</p>
<p>efgh (回车)</p>
<p>efgh (输出)</p>
<p>当用户第一次输入的字符串字符数小于4时，程序执行正常！</p>
<p><i><u>测试二：</u></i></p>
<p>abcdefgh (回车)</p>
<p>abcd (输出)</p>
<p>(输出-换行)</p>
<p>当用户第一次输入的字符数字符数大于4时，第一个字符串接受输入的前四个字符，而第二次的输入操作没有执行，第二个字符串输出为空。似乎也很奇怪！！！</p>
<p>其实在很多时候都会遇到诸如此类的问题，如果不熟悉程序输入的原理和cin等一些函数的原理就不知道怎么解决！我在这里做一个简单的介绍，也许介绍得不是很准确和全面，或者存在一些误解，请大家包涵！</p>
<p> <span id="more-250"></span><br />
<h4><u>输入操作的原理</u></h4>
<p>与前一节中提到的scanf函数一样，程序的输入都建有一个缓冲区，即输入缓冲区。一次输入过程是这样的，当一次键盘输入结束时会将输入的数据存入输入缓冲区，而cin函数直接从输入缓冲区中取数据。正因为cin函数是直接从缓冲区取数据的，所以有时候当缓冲区中有残留数据时，cin函数会直接取得这些残留数据而不会请求键盘输入，这就是例子中为什么会出现输入语句失效的原因！</p>
<h4><u>cin的一些输入函数和操作符</u></h4>
<p>cin is a extern istream object。提供了很多可用的成员函数和重载的操作符，如：cin&lt;&lt;, cin.get(), cin.getline()等。下面我们来了解一下这几个函数：</p>
<p><b>一</b><b>. cin&lt;&lt;</b></p>
<p>该操作符是根据后面变量的类型读取数据。</p>
<p>输入结束条件 ：遇到Enter、Space、Tab键。(这个很重要！)</p>
<p>对结束符的处理 ：丢弃缓冲区中使得输入结束的结束符(Enter、Space、Tab)</p>
<p><b></b></p>
<p>读字符的情况：</p>
<p><b>程序3</b><b>：</b></p>
<p>#include &lt;iostream&gt;</p>
<p>using namespace std;</p>
<p>int main()</p>
<p>{</p>
<p>char c1, c2;</p>
<p>cin&gt;&gt;c1;</p>
<p>cin&gt;&gt;c2;</p>
<p>cout&lt;&lt;c1&lt;&lt;&quot; &quot;&lt;&lt;c2&lt;&lt;endl;</p>
<p>return 0;</p>
<p>}</p>
<p><i><u>测试一输入：</u></i></p>
<p>a[Enter]</p>
<p>b[Enter]</p>
<p><i><u>输出:</u></i></p>
<p>a b</p>
<p><i><u>测试二输入：</u></i></p>
<p>a b[Enter]</p>
<p><i><u>输出：</u></i></p>
<p>a b</p>
<p>读字符串的情况：</p>
<p><b>程序4</b><b>：</b></p>
<p>#include &lt;iostream&gt;</p>
<p>using namespace std;</p>
<p>int main()</p>
<p>{</p>
<p>char str1[10], str2[10];</p>
<p>cin&gt;&gt;str1;</p>
<p>cin&gt;&gt;str2;</p>
<p>cout&lt;&lt;str1&lt;&lt;endl;</p>
<p>cout&lt;&lt;str2&lt;&lt;endl;</p>
<p>return 0;</p>
<p>}</p>
<p><i><u>测试一输入：</u></i></p>
<p>abcd[Enter]</p>
<p>efgh[Enter]</p>
<p><i><u>输出：</u></i></p>
<p>abcd</p>
<p>efgh</p>
<p>【分析】输入遇到回车符结束，很正常。</p>
<p><i><u>测试二输入：</u></i></p>
<p>abcd efgh</p>
<p><i><u>输出：</u></i></p>
<p>abcd</p>
<p>efgh</p>
<p>【分析】第一次读取字符串时遇到空格则停止了，将abcd读入str1，并舍弃了空格，将后面的字符串给了第二个字符串。这证明了cin读入数据遇到空格结束；并且丢弃空格符；缓冲区有残留数据室，读入操作直接从缓冲区中取数据。</p>
<p><b>二．</b><b>cin.get()</b></p>
<p>该函数有三种格式：无参，一参数，二参数</p>
<p>即cin.get(), cin.get(char ch), cin.get(array_name, Arsize)</p>
<p><b>读取字符的情况：</b><b></b></p>
<p>输入结束条件：Enter键</p>
<p>对结束符处理：不丢弃缓冲区中的Enter</p>
<p>cin.get() 与 cin.get(char ch)用于读取字符，他们的使用是相似的，</p>
<p>即：ch=cin.get() 与 cin.get(ch)是等价的。</p>
<p><b>程序5</b><b>：</b></p>
<p>#include &lt;iostream&gt;</p>
<p>using namespace std;</p>
<p>int main()</p>
<p>{</p>
<p>char c1, c2;</p>
<p>cin.get(c1);</p>
<p>cin.get(c2);</p>
<p>cout&lt;&lt;c1&lt;&lt;&quot; &quot;&lt;&lt;c2&lt;&lt;endl; // 打印两个字符</p>
<p>cout&lt;&lt;(int)c1&lt;&lt;&quot; &quot;&lt;&lt;(int)c2&lt;&lt;endl; // 打印这两个字符的ASCII值</p>
<p>return 0;</p>
<p>}</p>
<p><i><u>测试一输入：</u></i></p>
<p>a[Enter]</p>
<p><i><u>输出:</u></i></p>
<p>a</p>
<p>97 10</p>
<p>【分析】会发现只执行了一次从键盘输入，显然第一个字符变量取的&#8217;a', 第二个变量取的是Enter(ASCII值为10)，这是因为该函数不丢弃上次输入结束时的Enter字符，所以第一次输入结束时缓冲区中残留的是上次输入结束时的Enter字符！</p>
<p><i><u>测试二输入：</u></i></p>
<p>a b[Enter]</p>
<p><i><u>输出：</u></i></p>
<p>a</p>
<p>97 32</p>
<p>【分析】显然第一个字符变量取的&#8217;a', 第二个变量取的是Space(ASCII值为32)。原因同上，没有丢弃Space字符。</p>
<p><b>读取字符串的情况：</b><b></b></p>
<p>cin.get(array_name, Arsize)是用来读取字符串的，可以接受空格字符，遇到Enter结束输入，按照长度(Arsize)读取字符, 会丢弃最后的Enter字符。</p>
<p><b>程序6</b><b>：</b></p>
<p>#include &lt;iostream&gt;</p>
<p>using namespace std;</p>
<p>int main ()</p>
<p>{</p>
<p>char a[20];</p>
<p>cin.get(a, 10);</p>
<p>cout&lt;&lt;a&lt;&lt;endl;</p>
<p>return 0;</p>
<p>}</p>
<p><i><u>测试一输入：</u></i></p>
<p>abc def[Enter]</p>
<p><i><u>输出：</u></i></p>
<p>abc def</p>
<p>【分析】说明该函数输入字符串时可以接受空格。</p>
<p><i><u>测试二输入：</u></i></p>
<p>1234567890[Enter]</p>
<p><i><u>输出：</u></i></p>
<p>123456789</p>
<p>【分析】输入超长，则按需要的长度取数据。</p>
<p><b>程序7</b><b>：</b></p>
<p>#include &lt;iostream&gt;</p>
<p>using namespace std;</p>
<p>int main ()</p>
<p>{</p>
<p>char ch, a[20];</p>
<p>cin.get(a, 5);</p>
<p>cin&gt;&gt;ch;</p>
<p>cout&lt;&lt;a&lt;&lt;endl;</p>
<p>cout&lt;&lt;(int)ch&lt;&lt;endl;</p>
<p>return 0;</p>
<p>}</p>
<p><i><u>测试一输入：</u></i></p>
<p>12345[Enter]</p>
<p><i><u>输出：</u></i></p>
<p>1234</p>
<p>53</p>
<p>【分析】第一次输入超长，字符串按长度取了&quot;1234&quot;，而&#8217;5&#8242;仍残留在缓冲区中，所以第二次输入字符没有从键盘读入，而是直接取了&#8217;5&#8242;，所以打印的ASCII值是53(&#8217;5&#8242;的ASCII值)。</p>
<p><i><u>测试二输入：</u></i></p>
<p>1234[Enter]</p>
<p>a[Enter]</p>
<p><i><u>输出：</u></i></p>
<p>1234</p>
<p>97</p>
<p>【分析】第二次输入有效，说明该函数把第一次输入后的Enter丢弃了！</p>
<p><b>三．</b><b>cin.getline()</b></p>
<p>cin.getline() 与 cin.get(array_name, Arsize)的读取方式差不多，以Enter结束，可以接受空格字符。按照长度(Arsize)读取字符, 会丢弃最后的Enter字符。</p>
<p>但是这两个函数是有区别的：</p>
<p>cin.get(array_name, Arsize)当输入的字符串超长时，不会引起cin函数的错误，后面的cin操作会继续执行，只是直接从缓冲区中取数据。但是cin.getline()当输入超长时，会引起cin函数的错误，后面的cin操作将不再执行。（具体原因将在下一部分&quot;cin的错误处理&quot;中详细介绍）</p>
<p><b>程序8</b><b>：</b></p>
<p>#include &lt;iostream&gt;</p>
<p>using namespace std;</p>
<p>int main ()</p>
<p>{</p>
<p>char ch, a[20];</p>
<p>cin.getline(a, 5);</p>
<p>cin&gt;&gt;ch;</p>
<p>cout&lt;&lt;a&lt;&lt;endl;</p>
<p>cout&lt;&lt;(int)ch&lt;&lt;endl;</p>
<p>return 0;</p>
<p>}</p>
<p><i><u>测试输入：</u></i></p>
<p>12345[Enter]</p>
<p><i><u>输出：</u></i></p>
<p>1234</p>
<p>-52</p>
<p>【分析】与cin.get(array_name, Arsize)的例程比较会发现，这里的ch并没有读取缓冲区中的5，而是返回了-52，这里其实cin&gt;&gt;ch语句没有执行，是因为cin出错了！下一部分将详细介绍。</p>
<p> <a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yarkee.net/2010/03/cin-analyze-1.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.691 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-02-07 09:14:32 -->

