• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            天之道

            享受編程的樂趣。
            posts - 118, comments - 7, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            編寫一遞歸函數(shù)將一根整數(shù)n轉(zhuǎn)換成字符串,例如輸入482,應(yīng)輸出字符串“482”。n的位數(shù)不確定,可以是任意位數(shù)的整數(shù)。

            代碼測試通過:

            #include<stdio.h>
            #include<string.h>
            void IntToStr(int n);
            char str[80]={0};
            int main()
            {
                int num;
                printf("input an integer number: ");
                scanf("%d",&num);
                IntToStr(num);
                printf("The string is: %s\n",str);
                return 0;
            }

            void IntToStr(int n)
            {
                int i;
                if(n == 0)
                    return;
                for(i=strlen(str)-1;i>=0;i--)
                    str[i+1]=str[i]; //向后移一位
                str[0]=n%10+0x30; //最開始輸入的數(shù)字最后一位放在str[0],隨后向后移,直到n==0 
                IntToStr(n/10); //n不斷取除個(gè)位的其他高位數(shù)
            }




                

            posted @ 2012-08-12 09:58 hoshelly 閱讀(844) | 評論 (0)編輯 收藏

            輸入若干個(gè)單詞,輸出它們的平均長度。單詞只包括大寫字母和小寫字母,用一個(gè)空格隔開。

            代碼測試通過:

            #include<stdio.h>
            #include<string.h>
            int main()
            {
                char s[1000];
                char *p;
                p=&s[0];
                int len=0,tot=0,ws=0,per_len,i;
                gets(s);
                len=strlen(s);
                for(i=0;i<=len;i++)
                {
                    if( *p >='a' && *p<='z' || *p >='A' && *p<='Z')
                    {
                        tot++;
                        p++;
                    }

                    else if( *p == ' ' || *p =='\0')
                    {
                        ws++;
                        p++;
                    }
                }

                per_len=tot/ws;
                printf("%d\n",per_len);

                return 0;
            }

            posted @ 2012-08-11 23:11 hoshelly 閱讀(582) | 評論 (0)編輯 收藏

            輸入正整數(shù)n<=20,輸出一個(gè)n層的倒三角形,例如n=5時(shí)輸出如下:

            #########
              #######
                #####
                  ###
                    #

            代碼測試通過:

            #include<stdio.h>
            int main()
            {
                int n,s,i,j,k,c=0;
                scanf("%d",&n);
                s=2*n-1;
                for(i=0;i<n;i++)
                {
                      if(c!=0) //如果不是第一行,即s要減2,作為輸出#的個(gè)數(shù)
                          s=s-2;
                      for(k=0;k<c;k++)
                      {
                        printf(" ");
                      }
                      for(j=0;j<s;j++)
                      {
                        printf("#");
                      }
                      for(k=0;k<c;k++)
                      {
                          printf(" ");
                      }
                      c++;
                    

                    printf("\n");
                }
                return 0;
                    
            }
                    

            posted @ 2012-08-10 20:24 hoshelly 閱讀(462) | 評論 (0)編輯 收藏

            刪數(shù)問題
            時(shí)間限制:1000 ms  |  內(nèi)存限制:65535 KB
            描述

                       給出一個(gè)N位正整數(shù)(首位不為0),去掉其中S個(gè)數(shù)字后剩下的數(shù)字按左右次序組成一個(gè)新的N-S位正整數(shù)(首位不能為0)。對給定的N和S,尋找一種刪數(shù)規(guī)則使得剩下得數(shù)字組成的新數(shù)最小。

            輸入
                     第一行一個(gè)正整數(shù)T ,表示有T組測試數(shù)據(jù)。

                    對于每組測試數(shù)據(jù):第一行兩個(gè)正整數(shù) n ,s (s<  n <= 10, 000) (用空格隔開); 第二行為一個(gè)n 位正整數(shù)。

            輸出
                     對于每組測試數(shù)據(jù)輸出一行:最小的新數(shù)。

            樣例輸入
            2
            10 2
            1234334789
            11 3
            90019008798
            樣例輸出
            12333478
            19008798

            代碼:

            #include<stdio.h>
            int main()
            {
                int t,n,s,i,j,c=0;
                char str[1200];
                char *p,*sp;
                scanf("%d",&t);
                while(t--)
                {
                    i=0;
                    scanf("%d%d",&n,&s);
                    scanf("%s",str);
                    p=&str[0];
                    sp=&str[1];
                    while(*sp !='\0')
                    {
                        if(str[0] =='0')
                        {
                            for(j=0;j<n-c;j++)
                            {
                               str[j]=str[j+1];
                            }
                            c++;
                        }
                        if(*p == str[0] && *p > *sp)
                        {
                            for(j=0;j<n-c;j++)
                            {
                               str[j]=str[j+1];
                            }
                            i++;
                            p++;
                            sp++;
                            continue;
                        }
                        for(;*p > *sp;*p--,*sp--)
                        {
                            if(c != s)
                            {
                              for(j=i;j<n-c;j++)
                              {
                                 str[j]=str[j+1];
                              }
                              i--;
                              c++;
                            }
                        }
                      if(c != s && str[0] !='0')
                      {
                        p++;
                        sp++;
                        i++;
                      }
                       if(c == s)
                       {
                           break;
                       }
                    }

                    for(i=0;i<n-s;i++)
                    {
                        printf("%c",str[i]);
                    }
                    printf("\n");
                }

                return 0;
            }

            posted @ 2012-08-10 11:44 hoshelly 閱讀(1078) | 評論 (0)編輯 收藏

            我們學(xué)習(xí)Linux的時(shí)候勢必要學(xué)習(xí)一大堆對于大部分正常人來說枯燥無比的命令行,因?yàn)槭堑谝淮螄L試在一個(gè)黑箱子里面敲一串一串不熟悉的命令,可以理解的啦。現(xiàn)在我總結(jié)出一些Linux中比較常用的命令行。

            一)列出文件:ls ,如果要列出本目錄下的文件屬性呢,例如想知道他們的文件權(quán)限、大小、日期,那么就用 ls -l ,也可用其命令別名 ll 。
                               我們都知道Linux中都有一些隱藏的文件,那么如何顯示出它們呢?用 ls -a 即可顯示出所有文件,包括隱藏文件。要列出這些文件的屬性,用 ls -al 
                               列出目錄用:ls -d
                               如果我們想找出一個(gè)特定的文件如file 的信息,那么可以用ls  -l file ,又如要尋找一個(gè)前綴為test的文件的信息,可以這樣:ls -l test*,*為通配符。
                               如果我們想找出文件名中帶有數(shù)字或字母的相關(guān)文件,可以這樣 : ls -f [0-9]* / ls -f [a-z]*

            二)打開文件或目錄:如想打開名為 file.txt文件,用cat file.txt即可顯示出內(nèi)容。如想把文件內(nèi)容的行號(hào)顯示出來,用 cat -n file.txt 即可 ;打開目錄tmp 則用 cd tmp

            三)復(fù)制文件: 如想把文件file.txt 復(fù)制到目錄 /test 下,即可用:cp file.txt /test ;如想把目錄 /etc/ 的所有內(nèi)容復(fù)制到 /tmp,用:cp /etc/ /tmp

            四)刪除文件或目錄:如想刪除文件file.txt 則可: rm file.txt 。如想把目錄tmp(包括有內(nèi)容的目錄)都刪除掉,用 rm -rf tmp ,而 rmdir tmp 刪除的是一個(gè)空目錄。

            五)移動(dòng)文件或重命名:如把文件file.txt移動(dòng)到目錄tmp中: mv file.txt tmp 。把文件file.txt重命名為 test.txt,則可: mv file.txt test.txt

            六)翻頁查看命令:1. 如想查看/etc/中的文件man.config,可 more /etc/man.config ,敲空格鍵表示向下翻一頁;Enter表示向下翻“一行”;/字符串可以向下搜索字符串:如搜索word,可以 /word ;離開more 可以用 q ;2. 也可用 less 進(jìn)行翻頁操作:less /etc/man.config ,使用less可以向前或向后翻頁,而more只能向后翻頁;?字符串表示向前搜索的功能,其他操作和more 大體相同。

            七)創(chuàng)建新文件或目錄 : 如創(chuàng)建新文件 test.txt 可以: touch test.txt ;創(chuàng)建目錄abc,用命令:mkdir abc . 如果我們要?jiǎng)?chuàng)建一個(gè)名為junk.data ,大小為1M,內(nèi)容為空的文件,該怎么辦呢?可以使用命令: dd if=/dev/zero of=junk.data bs=1M count=1 即可,其中dd是用來創(chuàng)建特定大小文件的命令,dd命令會(huì)克隆給定的輸入內(nèi)容,然后將一模一樣的一份副本寫入到輸出,stdin、設(shè)備文件、普通文件都可以作為輸入. if 代表輸入文件, of 代表輸出文件, bs代表以字節(jié)為單位的塊大小,count代表要被復(fù)制的塊數(shù)。

            八)改變文件的權(quán)限: 1. 使用符號(hào)方法改變文件權(quán)限:在此之前了解下who /action 的知識(shí),u表示屬主、g表示組、o表示其他、a表示所有;+表示增加文件權(quán)限、-表示減少文件權(quán)限、=明確地設(shè)置文件權(quán)限。好了,如果現(xiàn)在我們想把一個(gè)目錄下的所有文件都改變?yōu)閷λ腥司稍L問,則可用命令:chmod a=r * (或chmod guo=r *),注意空格。
            如果想阻止除了文件屬主之外的任何人寫文件 test.txt ,可用命令: chmod go-w test.txt 
            2. 使用八進(jìn)制方法改變文件權(quán)限:r=4,w=2,x=1. 把各個(gè)想要賦予的權(quán)限值相加即可得到用來指定文件屬主、組和其他用戶對文件的權(quán)限。 如:對文件test.txt 改為對所有均有讀、寫、執(zhí)行的權(quán)限:chmod 777 test.txt

            九)改變文件屬主和組: 1. 改變文件屬主:如把文件test.txt 改變?yōu)?zlb 所屬有,則可 chown zlb: test.txt ,冒號(hào)不能省略。 2. 改變文件所屬的組:可以用1中 chown :authors test.txt 改變文件test.txt所屬的組;也可以用 chgrp authors test.txt 改變文件為authors這個(gè)組所有。


            posted @ 2012-08-02 11:49 hoshelly 閱讀(222) | 評論 (0)編輯 收藏

            shell是和unix系統(tǒng)交流的語言,它是unix系統(tǒng)的工具,利用它可以來和操作系統(tǒng)的核心功能進(jìn)行交互。
            1)兩種模式:交互式和非交互式Shell;所謂交互,即用戶編寫shell命令行來和操作系統(tǒng)交互。而在非交互模式下,不需要用戶直接敲命令行,而是通過shell讀命令之后,(就存在文件里),然后再執(zhí)行,當(dāng)文件結(jié)束的時(shí)候,就退出。
            2)啟動(dòng)交互式shell:$ /bin/bash
                                        bash$
            第一個(gè)$是登陸系統(tǒng)時(shí)就有的,第二個(gè)bash$是由用戶啟動(dòng)的Shell來顯示的。這樣一來就有了兩個(gè)交互式的shell,可以用來測試之用。退出第二個(gè)shell可用命令:
            exit,然后就會(huì)回到原先的shell。
            3)啟動(dòng)非交互式shell:$ /bin/sh filename
            這里的filename指的是可執(zhí)行的文件,比如用shell寫  echo 'hello world!' 放在一個(gè)命名為hello的文件里,要執(zhí)行它的時(shí)候,就要用到命令 /bin/sh hello
            4)基本命令行總結(jié)如下:
            $ ls :列出當(dāng)前目錄的內(nèi)容;
            $ ls -a :列出當(dāng)前目錄包括不可見文件的內(nèi)容;
            $ man ls :獲取關(guān)于ls命令的有關(guān)信息;注:不懂的命令要及時(shí)找man
            $ cat [filename] :查看文件的內(nèi)容
            $ wc files :獲取文件內(nèi)容的行、單詞和字符的數(shù)目;
            $ wc -l file :統(tǒng)計(jì)行數(shù)
            $ wc -w file: 統(tǒng)計(jì)單詞
            $ wc -m file: 統(tǒng)計(jì)字符
            $ cp src dest :拷貝文件;src:被拷貝文件 、dest:拷貝到的目錄
            $ mv src dest :更改文件名
            $ rm file :刪除文件
            $ ls dir :列出目錄
            $ mkdir dir :創(chuàng)建目錄dir
            $ cp -r src dest : 拷貝文件和目錄; src:拷貝文件的目錄的路徑、dest:拷貝被放置的目錄的路徑
            $ mv src dest :移動(dòng)目錄
            $ rmdir dir:刪除目錄dir(內(nèi)容為空的)
            $ rm-r dir: 刪除目錄dir及其內(nèi)容(無論內(nèi)容是否為空)

            好了,先介紹這些,以后會(huì)陸續(xù)更新。

            posted @ 2012-06-09 02:47 hoshelly 閱讀(226) | 評論 (0)編輯 收藏

            掌握Linux學(xué)習(xí)方法學(xué)好Linux
            如果你愛好學(xué)習(xí)知識(shí),尤其是Linux操作系統(tǒng)知識(shí),隨著Linux應(yīng)用的擴(kuò)展,許多朋友開始接觸Linux,可你不知道去哪里找到這些知識(shí),來這里,讓你更加了解Linux學(xué)習(xí)方法。讓你全面掌握Linux學(xué)習(xí)方法。

            1.學(xué)習(xí)的目的

            通過Linux的學(xué)習(xí)掌握UNIX的目的想必不用多說了,在這個(gè)網(wǎng)絡(luò)人才身價(jià)倍增的年代,想靠技術(shù)吃飯又不想掌握網(wǎng)絡(luò)和編程技術(shù)是不明智的。當(dāng)人們第一次聽說Linux并躍躍欲試的時(shí)候,總會(huì)提出幾個(gè)?,它是什么(What)?為什么要用它(Why)?怎樣學(xué)習(xí)它(How)?作為開放源碼運(yùn)動(dòng)的主要組成部分,Linux的應(yīng)用越來越廣泛,從我們平時(shí)的娛樂、學(xué)習(xí),到商業(yè)、政府辦公,再到大規(guī)模計(jì)算的應(yīng)用。為了滿足人們的需求,各種各樣的、基于Linux的應(yīng)用軟件層出不窮。只要具備了LinuX的基本功,并具有了自學(xué)的能力之后,都可以通過長期地學(xué)習(xí)予以掌握。

            2.從命令開始、從基礎(chǔ)開始

            常常有些朋友一接觸Linux就希望構(gòu)架網(wǎng)站,根本沒有想到要先了解一下Linux的基礎(chǔ)。這是相當(dāng)困難的。雖然Linux桌面應(yīng)用發(fā)展很快,但是命令在Linux中依然有很強(qiáng)的生命力。Linux是一個(gè)命令行組成的操作系統(tǒng),精髓在命令行,無論圖形界面發(fā)展到什么水平這個(gè)原理是不會(huì)變的。Linux命令有許多強(qiáng)大的功能:從簡單的磁盤操作、文件存取、到進(jìn)行復(fù)雜的多媒體圖象和流媒體文件的制作。這里筆者把它們中比較重要的和使用頻率最多的命令,按照它們在系統(tǒng)中的作用分成幾個(gè)部分介紹給大家,通過這些基礎(chǔ)命令的學(xué)習(xí),我們可以進(jìn)一步理解Linux系統(tǒng)。

            3.選擇一本好的Linux書籍

            無論在論壇還是讀者反饋中,我們看到最多的問題往往是某個(gè)新手,在安裝或使用Linux的過程中遇到一個(gè)具體的問題就開始提問,很多都是重復(fù)性的問題,甚至有不少人連基本的問題描述都不是很清楚。這說明很多初學(xué)Linux的人還沒有掌握基本功。怎樣才能快速提高掌握Linux的基本功呢?最有效的方法莫過于學(xué)習(xí)權(quán)威的Linux工具書,工具書對于學(xué)習(xí)者而言是相當(dāng)重要的。一本錯(cuò)誤觀念的工具書卻會(huì)讓新手整個(gè)誤入歧途。目前國內(nèi)關(guān)于Linux的書籍有很多不過精品的不多,筆者強(qiáng)烈建議閱讀影印本的o'reilly原版Linux圖書http://www.oreilly.com.cn/,而且出版社還提供了一個(gè)非常好的路線圖:linux.php">http://www.oreilly.com.cn/guide/guide_linux.php

            4.養(yǎng)成在命令行下工作的習(xí)慣

            一定要養(yǎng)成在命令行下工作的習(xí)慣,要知道X-window只是運(yùn)行在命令行模式下的一個(gè)應(yīng)用程序。在命令行下學(xué)習(xí)雖然一開始進(jìn)度較慢,但是熟悉后,你未來的學(xué)習(xí)之路將是以指數(shù)增加的方式增長的。對網(wǎng)管員來說,命令行實(shí)際上就是規(guī)則,它總是有效的,同時(shí)也是靈活的。即使是通過一條緩慢的調(diào)制解調(diào)器線路,它也能操縱幾千公里以外的遠(yuǎn)程系統(tǒng)。 5.用UNIX思維思考Linux

            由于Linux是參照UNIX的思想來設(shè)計(jì)的,理解和掌握它就必須以Unix的思維來進(jìn)行,而不能以Windows思維。不可否認(rèn),Windows在市場上的成功很大一部分在于技術(shù)思想的獨(dú)到之處。可是這個(gè)創(chuàng)新是在面對個(gè)人用戶的前提下進(jìn)行的,而面對著企業(yè)級(jí)的服務(wù)應(yīng)用,它還是有些力不從心。多年來在計(jì)算機(jī)操作系統(tǒng)領(lǐng)域一直是二者獨(dú)大:UNIX在服務(wù)器領(lǐng)域,Windows在個(gè)人用戶領(lǐng)域。由此可見,用戶需求決定了所采用的操作系統(tǒng)。不管什么原因,如果要學(xué)習(xí)Linux,那么首先要將思維從Windows的"這個(gè)小河"中拖出來,放入U(xiǎn)NIX的海洋。

            6.學(xué)習(xí)Shell

            對于Shell(中文名稱殼),習(xí)慣Windows的讀者肯定是非常陌生的,因?yàn)閃indows只有一個(gè)"Shell"(如果可以說是Shell的話),那就是Windows自己。用一句話容易理解的解釋就是,shell是用戶輸入命令與系統(tǒng)解釋命令之間的中介。最直觀的說法,一種Shell有一套自己的命令。舉一個(gè)容易理解的例子,Linux的標(biāo)準(zhǔn)Shell是Bash Shell;Solaris的shell是B shell;Linux的Shell是以命令行的方式表現(xiàn)出來的。讀者可能會(huì)不理解,Windows從命令行"進(jìn)化"到了圖形界面,那么Linux現(xiàn)在還使用命令行豈不是一種倒退?當(dāng)初我剛剛接觸Linux時(shí)就曾有過這種想法。可是后來發(fā)現(xiàn),如果使用圖形界面,那么分配給應(yīng)用軟件的資源就少了,在價(jià)格昂貴的服務(wù)器上,能夠以較低的硬件配置實(shí)現(xiàn)同樣的功能是非常重要的。

            下面舉例說明:一臺(tái)服務(wù)器有1GB內(nèi)存,假設(shè)其中512MB用于處理圖形界面,若要安裝一個(gè)需要784MB內(nèi)存的數(shù)據(jù)庫軟件,唯一的辦法就是擴(kuò)大內(nèi)存。但是如果使用命令行,系統(tǒng)可能只需要64MB內(nèi)存,其他的內(nèi)存就可以供數(shù)據(jù)庫軟件使用了。使用命令行,不僅是內(nèi)存,而且CPU及硬盤等資源的占用都要節(jié)省很多。所以,作為服務(wù)器,使用命令行是優(yōu)點(diǎn)而不是缺點(diǎn)。既然Shell有這么多優(yōu)點(diǎn),就必須要學(xué)習(xí)它。

            7.勤于實(shí)踐

            要增加自己Linux的技能,只有通過實(shí)踐來實(shí)現(xiàn)了。所以,趕快找一臺(tái)計(jì)算機(jī),趕快安裝一個(gè)Linux發(fā)行版本,然后進(jìn)入精彩的Linux世界。相信對于你自己的Linux能力必然大有斬獲。此外,人腦不像計(jì)算機(jī)的硬盤一樣,除非硬盤壞掉了或者是資料被你抹掉了,否則存儲(chǔ)的資料將永遠(yuǎn)而且立刻地記憶在硬盤中。在人類記憶的曲線中,你必須要不斷地重復(fù)練習(xí)才會(huì)將一件事情記得比較熟。學(xué)習(xí)Linux也一樣,如果你無法經(jīng)常學(xué)習(xí)的話,學(xué)了后面的,前面的往往忘了。對Linux命令熟悉后,可以開始搭建一個(gè)小的Linux網(wǎng)絡(luò),這是最好的實(shí)踐方法。Linux是網(wǎng)絡(luò)的代名詞,Linux網(wǎng)絡(luò)服務(wù)功能非常強(qiáng)大,不論是郵件服務(wù)器、Web服務(wù)器、DNS服務(wù)器等都非常完善。當(dāng)然你不需搭建所有服務(wù),可以慢慢來。需要說明的是這個(gè)Linux網(wǎng)絡(luò)對于初學(xué)者有兩三臺(tái)計(jì)算機(jī)即可。自己多動(dòng)手,不要非要等著別人幫你解決問題。

            8.學(xué)會(huì)使用文檔

            和私有操作系統(tǒng)不同,各個(gè)Linux的發(fā)行版本的技術(shù)支持時(shí)間都較短,這對于Linux初學(xué)者是往往不夠的。其實(shí)當(dāng)你安裝了一個(gè)完整的Linux系統(tǒng)后,其中已經(jīng)包含了一個(gè)強(qiáng)大的幫助系統(tǒng),只是可能你還沒有發(fā)現(xiàn)和使用它們的技巧。主流Linux發(fā)行版都自帶非常詳細(xì)的文檔(包括手冊頁和FAQ),從系統(tǒng)安裝到系統(tǒng)安全,針對不同層次的人的詳盡文檔,仔細(xì)閱讀文檔后40%問題都可在此解決。查閱經(jīng)典工具書和Howto,特別是Howto是全球數(shù)以萬計(jì)的Linux、UNIX的經(jīng)驗(yàn)總結(jié)非常有參考價(jià)值,通常40%的問題可以解決。安裝一個(gè)新的軟件時(shí)先看README,再看INSTALL然后看FAQ,最后才動(dòng)手安裝,這樣遇到問題就知道為什么了。如果說明文檔不看,結(jié)果出了問題再去論壇來找答案反而浪費(fèi)時(shí)間。

            當(dāng)查找文檔時(shí),一定要看文檔是在何種版本、何種環(huán)境及何種狀態(tài)下出現(xiàn)的何種結(jié)果。對于文檔的有效性,一時(shí)還無法在操作前就知道結(jié)論如何,那么對某個(gè)專題或問題,閱讀相關(guān)的多篇文章將會(huì)節(jié)省大量的時(shí)間,還可以保證盡量"干凈"的環(huán)境,有效避免因?yàn)椴煌僮魉斐傻母鄦栴}。操作時(shí)要仔細(xì)核對各個(gè)步驟及輸出的結(jié)果,盡量保持與文檔一致。 9.在Linux論壇獲取幫助

            如果上面的措施沒有解決問題,此時(shí)你就需要Linux社區(qū)的幫助了。需要說明的是你要有周全的思考,準(zhǔn)備好你的問題,不要草率的發(fā)問,否則只會(huì)得到到草率的回答或者根本得不到任何答案。越表現(xiàn)出在尋求幫助前為解決問題付出的努力,你越能得到實(shí)質(zhì)性的幫助。最好先搜尋一下論壇是否有你需要的文章。這樣可以獲得事半功倍的效果。

            你需要提供精確有效的信息。這并不是要求你簡單的把成噸的出錯(cuò)代碼或者數(shù)據(jù)完全轉(zhuǎn)儲(chǔ)摘錄到你的提問中。如果你有龐大而復(fù)雜的測試條件,盡量把它剪裁得越小越好。可能你會(huì)遇到這種情況,對于一個(gè)問題會(huì)出現(xiàn)不同內(nèi)容回答,這時(shí)你需要通過實(shí)踐來驗(yàn)證。另外把這個(gè)問題放在其他Linux社區(qū)請求幫助也是一種選擇。如果得不到答案,請不要以為我們覺得無法幫助你。有時(shí)只是看到你問題的人不知道答案罷了。這時(shí)換一個(gè)社區(qū)是不錯(cuò)的選擇。

            10.學(xué)習(xí)專業(yè)英文

            如果你想深入學(xué)習(xí)Linux,看不懂文檔,因?yàn)閷?shí)在是太難了。寫得最好的,最全面的文檔都是英語寫的,最先發(fā)布的技術(shù)信息也都是用英語寫的。即便是非英語國家的人發(fā)布技術(shù)文檔,也都首先翻譯成英語在國際學(xué)術(shù)雜志和網(wǎng)絡(luò)上發(fā)表。

            通過man、info等命令,可以從在線幫助中快速地獲得所需要的命令和操作方法。不要害怕海量的系統(tǒng)幫助,仔細(xì)閱讀幾個(gè)man或info文檔就會(huì)發(fā)現(xiàn),這些幫助幾乎都按照固定格式寫成命令名稱、參數(shù)、參數(shù)說明、使用例子、參考等。當(dāng)英語成為一種習(xí)慣,就會(huì)自覺地查找或訂閱互聯(lián)網(wǎng)上感興趣的英文材料。這樣,在不知不覺中就已經(jīng)和世界同步了。

            11.在社區(qū)共享你的經(jīng)驗(yàn)

            隨著Linux應(yīng)用的擴(kuò)展,出現(xiàn)了不少Linux社區(qū)。其中有一些非常優(yōu)秀的社區(qū):水木清華、其中有一些非常優(yōu)秀的社區(qū):www.linuxforum.net(國內(nèi)最高水平GNU站點(diǎn))、http://www.chinaunix.net/(中國最大的Unix技術(shù)社區(qū)),隨著知識(shí)的不斷積累,就可以把自己動(dòng)手解決一些前人沒有遇到的問題寫出文檔在網(wǎng)絡(luò)上共享給其他讀者。這個(gè)時(shí)候,也就成為了一名"高手"。Linux的使用者一般都是專業(yè)人士,他們有著很好的電腦背景且愿意協(xié)助他人,Linux高手更具有鼓勵(lì)新手的文化精神。

            最后是筆者的Linux學(xué)習(xí)的一個(gè)路線圖(roadmap):

            了解Linux的基礎(chǔ)知識(shí),這些包含了用戶管理、群組的概念、權(quán)限的觀念等;

            掌握100個(gè)以上的常用命令;

            掌握.tgz、.rpm等軟件包的常用安裝方法

            學(xué)習(xí)添加外設(shè),安裝設(shè)備驅(qū)動(dòng)程序(比如網(wǎng)卡)

            熟悉Linux文件系統(tǒng)和目錄結(jié)構(gòu)。

            掌握vi,gcc,gdb等常用編輯器,編譯器,調(diào)試器。

            理解shell別名、管道、I/O重定向、輸入和輸出及shell腳本編程。

            網(wǎng)絡(luò)的基礎(chǔ)包括:掌握路由概念、OSI七層網(wǎng)絡(luò)模型、TCP/IP模型及相關(guān)服務(wù)對應(yīng)的層次對于Linux學(xué)習(xí)非常重要的。然后學(xué)習(xí)Linux環(huán)境下的組網(wǎng)。

            以上是Linux學(xué)習(xí)方法,希望對你有些幫助。

            posted @ 2012-06-08 18:18 hoshelly 閱讀(347) | 評論 (0)編輯 收藏


            建立一個(gè)鏈表,其中的節(jié)點(diǎn)包括學(xué)號(hào),成績信息。要求用動(dòng)態(tài)插入鏈表的方法實(shí)現(xiàn),就是輸入第一個(gè)節(jié)點(diǎn)信息時(shí),則必須創(chuàng)建該鏈表,之后每輸入一個(gè)學(xué)生節(jié)點(diǎn)的基本信息,就把該節(jié)點(diǎn)插入到已有的鏈表當(dāng)中。要求按照學(xué)號(hào)順序插入。輸入的時(shí)候可以不按照學(xué)號(hào)的順序,輸入0 0 表
            示輸入結(jié)束。
            (不允許對輸入的數(shù)據(jù)排序后再創(chuàng)建鏈表)

            Sample Input

            1 50
            4 60
            2 70
            3 80
            5 64
            0 0 

            Sample Output

            The list is:
            1 50
            2 70
            3 80
            4 60
            5 64



            #include<stdio.h>
            #include<stdlib.h>

            struct student
            {
                int number;
                float score;
                struct student *next;
            };

            int main()
            {
                int n=0;
                struct student *head,*p1;
                p1=(struct student*)malloc(sizeof(struct student));
                scanf("%d %f",&p1->number,&p1->score);
                head=p1;
                head->next=NULL;
                while(p1->number!=0 && p1->score!=0)
                {
                      n++;
                      p1->next=(struct student*)malloc(sizeof(struct student));
                      p1=p1->next;
                      p1->next=NULL;
                      scanf("%d %f",&p1->number,&p1->score);
                }
                
                struct student *p3,*p4;
                p3=(struct student*)malloc(sizeof(struct student));
                p4=(struct student*)malloc(sizeof(struct student));
                for(int i=0;i<n;i++) 
                {    
                    p3=head;
                    for(int j=0;j<n-i-1;j++)
                    {
                        p4=p3->next;
                        if(p3->number>p4->number)
                        {
                            int k=p3->number;
                            p3->number=p4->number;
                            p4->number=k;
                            float m=p3->score;
                            p3->score=p4->score;
                            p4->score=m;
                        }
                        p3=p3->next;
                    }
                }
                printf("The list is:\n");
                 p3=head;
                 do
                 {
                  if(p3->number ==0 && p3->score==0)
                      continue;
                  printf("%d %.0f\n",p3->number,p3->score); 
                  p3=p3->next;
                }while(p3!=NULL);

                free(p1);
                free(p3);
                free(p4);
                return 0;
            }
                

            posted @ 2012-05-12 10:29 hoshelly 閱讀(1820) | 評論 (0)編輯 收藏

            輸入
            第一行包含一個(gè)整數(shù)T,表示有T組測試數(shù)據(jù)。對于每組測試數(shù)據(jù):第一行包含一個(gè)整數(shù)N,表示有N個(gè)元素(N不大于50),第二行包含N個(gè)整數(shù),表示這N個(gè)元素(各個(gè)元素的值小于1000)。

            輸出
            對于每組測試數(shù)據(jù),輸出一行,包含一個(gè)數(shù)據(jù)即返回的最小值。

            樣例輸入
            2
            3
            3 2 1
            5
            -1 5 3 -2 4
            樣例輸出
            1
            -2

            解法一:
            將一個(gè)數(shù)組,分成兩部分,然后求出兩部分中的最小值,當(dāng)然這里有一個(gè)要考慮的情況是,然后元素的個(gè)數(shù)為奇數(shù)個(gè)的時(shí)候,我們可以將其分為三部分,中間元素,前半部分,后半部分。然后使用遞歸的方法,求出數(shù)組元素中的最小值。

            #include<stdio.h>
            int Min(int a[],int n)
            {
                int a1,a2,a3;
                if(n==1)
                    return a[0];
                if(n%2==0)
                {
                    a1=Min(a,n/2);
                    a2=Min(a+n/2,n/2);
                    if(a1>a2)
                        return a2;
                    else
                        return a1;
                }
                else
                {
                    a1=Min(a,n/2);
                    a2=Min(a+n/2+1,n/2);
                    a3=a[n/2];
                    if(a1>a2)
                    {
                        if(a2>a3)
                            return a3;
                        else
                            return a2;
                    }
                    else
                    {
                        if(a1>a3)
                            return a3;
                        else
                            return a1;
                    }
                }
                
            }


            int main()
            {
                int n,m,i;
                int a[50];
                scanf("%d",&n);
                while(n--)
                {
                    scanf("%d",&m);
                    for(i=0;i<m;i++)
                    {
                        scanf("%d",&a[i]);
                    }
                    printf("%d\n",Min(a,m));
                }
                return 0;
            }

            解法二:
            代碼如下
            #include<stdio.h>
            int Min(int a[],int n)
            {
                if(n==0)
                    return a[0];
                else
                    return ((Min(a,n-1)<a[n])? Min(a,n-1):a[n]);
                
            }


            int main()
            {
                int n,m,i;
                int a[50];
                scanf("%d",&n);
                while(n--)
                {
                    scanf("%d",&m);
                    for(i=0;i<m;i++)
                    {
                        scanf("%d",&a[i]);
                    }
                    printf("%d\n",Min(a,m-1));
                }
                return 0;
            }


            posted @ 2012-05-09 00:50 hoshelly 閱讀(3076) | 評論 (0)編輯 收藏

            輸入

            第一行包含一個(gè)整數(shù)T,表示有T組數(shù)據(jù)。對于每組數(shù)據(jù):第一行包含一個(gè)數(shù)字N(<100),表示該組數(shù)據(jù)由N個(gè)元素;第二行包含N個(gè)數(shù),就是這N個(gè)元素的值( <10000 )。

            輸出

            對于每組數(shù)據(jù)輸出一行,包含排序好后的N個(gè)元素,要求從小到大排序,相鄰2個(gè)元素間有個(gè)空格,末尾無空格有個(gè)回車。

            樣例輸入
            1 3 1 3 2
            樣例輸出
            1 2 3


            #include<stdio.h>
            void swap(int a[],int low,int high)
            {
                
            int temp=a[low];
                a[low]
            =a[high];
                a[high]
            =temp;
            }

            int partition(int a[],int low,int high)
            {
                
            int pivotkey=a[low];
                
            while(low<high)
                {
                    
            while(low<high && a[high]>=pivotkey)
                        high
            --;
                    swap(a,low,high);
                    
            while(low<high && a[low]<=pivotkey)
                        low
            ++;
                    swap(a,low,high);
                }
                
            return low;
            }

            void qsort(int a[],int low,int high)
            {
                
            int pivot;
                
            if(low<high)
                {
                    pivot
            =partition(a,low,high);
                    qsort(a,low,pivot
            -1);
                    qsort(a,pivot
            +1,high);
                }
            }


            int main()
            {
                
            int n,m,i,a[102];
                scanf(
            "%d",&n);
                
            while(n--)
                {
                    scanf(
            "%d",&m);
                    
            for(i=0;i<m;i++)
                    {
                        scanf(
            "%d",&a[i]);
                    }

                    qsort(a,
            0,m-1);

                        
                    
            for(i=0;i<m;i++)
                    {
                        printf(
            "%d ",a[i]);
                    }
                    printf(
            "\n");

                }

                
            return 0;
            }

            posted @ 2012-05-08 17:11 hoshelly 閱讀(133) | 評論 (0)編輯 收藏

            僅列出標(biāo)題
            共12頁: First 3 4 5 6 7 8 9 10 11 Last 
            亚洲欧美日韩中文久久| 久久久久久久久无码精品亚洲日韩 | 亚洲性久久久影院| 国产成人精品综合久久久久| 久久久久久精品成人免费图片| 欧洲人妻丰满av无码久久不卡| 久久久中文字幕| 久久久亚洲AV波多野结衣 | 99精品国产综合久久久久五月天| 亚洲午夜无码久久久久| 久久综合丁香激情久久| 久久99国产精品久久99小说| av无码久久久久不卡免费网站 | 99久久99久久精品免费看蜜桃 | 国产精品伊人久久伊人电影| 欧美丰满熟妇BBB久久久| 日本精品久久久久久久久免费| 久久精品国产清高在天天线| 日本亚洲色大成网站WWW久久| 欧美喷潮久久久XXXXx| 91精品国产91久久久久久青草| 久久AV无码精品人妻糸列| 国内精品伊人久久久久影院对白| 久久人人爽人人爽人人片av麻烦 | 精品乱码久久久久久夜夜嗨| 久久久久久午夜成人影院| 一级做a爰片久久毛片毛片 | 日韩久久久久中文字幕人妻| 欧美综合天天夜夜久久| 99久久精品午夜一区二区| 亚洲第一极品精品无码久久| 一级做a爰片久久毛片免费陪| 久久久免费观成人影院| 久久久久国产| 久久露脸国产精品| 亚洲?V乱码久久精品蜜桃| 久久久久久国产精品无码下载| 国产免费久久精品丫丫| 日本欧美国产精品第一页久久| 久久久久亚洲精品天堂久久久久久 | 777久久精品一区二区三区无码|