欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      Mudos編程總結(jié)[推薦]

      時(shí)間:2019-05-12 11:56:36下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《Mudos編程總結(jié)[推薦]》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《Mudos編程總結(jié)[推薦]》。

      第一篇:Mudos編程總結(jié)[推薦]

      Mudos編程總結(jié)

      1,Mudos系統(tǒng)調(diào)用系統(tǒng) MudLib系統(tǒng)文件 的過程和一些特點(diǎn)

      Mudos啟動以后先要尋找一個(gè)配置文件,用來配置MudLib文件系統(tǒng)的一些信息(這里時(shí)config.cfg),找不到就無法啟動。找到以后根據(jù)配置文件里面的參數(shù)進(jìn)行初始化Mudos,然后調(diào)用配置文件里面的兩個(gè)入口文件,即simul_efun.c和master.c。首先載入simul_efun文件并生成一個(gè)特殊的全局對象,這個(gè)對象用于定義一些全局使用的函數(shù),也可以重載Mudos中的Efun函數(shù),這些新定義的文件使用起來和Efun是一樣的。然后系統(tǒng)會調(diào)用master.c文件并生成一個(gè)全局對象(主控對象),主控對象用于系統(tǒng)的全局控制,包括全局對象的加載,錯(cuò)誤信息的跟蹤處理等。接下來,系統(tǒng)會根據(jù)主控對象中的定義,載入一些系統(tǒng)需要用到的全局對象。到此,Mudos系統(tǒng)就啟動完成了。

      2、用戶連接系統(tǒng)后的處理過程。。

      當(dāng)用戶通過客戶端進(jìn)行連接以后,Mudos系統(tǒng)會調(diào)用master對象特有的connect()函數(shù),通過這個(gè)函數(shù)編程人員需要創(chuàng)建并返回一個(gè)用戶對象,系統(tǒng)會將用戶連接到這個(gè)用戶對象上,即是說這個(gè)用戶對象就代表了這個(gè)用戶。到此,就算完成了用戶的連接過程。

      3、用戶的登陸后的處理過程

      當(dāng)Mudos系統(tǒng)調(diào)用master的connect函數(shù)創(chuàng)建并返回一個(gè)用戶對象以后,用戶對象會調(diào)用特有的logon()函數(shù),這個(gè)函數(shù)用來把用戶的設(shè)置都設(shè)置好并進(jìn)行游戲。注:最好在這里重新建立一個(gè)用戶對象,然后通過exec函數(shù)把用戶的連接轉(zhuǎn)移到新的對象上,然后刪除這個(gè)對象。

      4、Mudos系統(tǒng)中的系統(tǒng)中 對象

      simul_efun對象、master主控對象和用戶對象這三種對象都是系統(tǒng)提供的特殊對象,其 中simul_efun對象和master主控對象在系統(tǒng)中只有一個(gè)實(shí)例,即不能被clone也不能new創(chuàng)建,而用戶對象主要的作用就是用來創(chuàng)建用戶并完成初始化的對象,用戶每次登陸都會自動生成一個(gè),用戶登陸完成后最好刪除它。這里需要指出主控對象和用戶對象都有特有的一些函數(shù),這些函數(shù)提供給Mudos系統(tǒng)來調(diào)用的,用來完成一些系統(tǒng)需要處理的事情。

      5、Master主控對象

      object connect()程序連接后調(diào)用的函數(shù),創(chuàng)建并返回一個(gè)用戶對象。string *epilog(int load_empty)返回一個(gè)包含物件文件名稱的數(shù)組, 其中所有的文件為啟動游戲之前必須預(yù)先載入的對象.void preload(string file)系統(tǒng)按照epilog函數(shù)返回的數(shù)組載入全局對象后調(diào)用次函數(shù),用來判斷對象是否成功創(chuàng)建 static void crash(string error, object command_giver, object current_object)當(dāng)系統(tǒng)異常終止(crash)時(shí), 就調(diào)用主控物件中的此函數(shù),用來記錄一些系統(tǒng)crash的log信息。void log_error(string file, string message)編譯程序發(fā)生任何錯(cuò)誤系統(tǒng)都會調(diào)用此函數(shù),用于發(fā)現(xiàn)是哪個(gè)對象出了什么錯(cuò)誤。用于記錄編譯程序時(shí)出現(xiàn)的錯(cuò)誤信息。

      string error_handler(mapping error, int caught)主控物件處理錯(cuò)誤的函數(shù),此函數(shù)讓 mudlib 代替系統(tǒng)處理錯(cuò)誤情形。用來處理系統(tǒng)運(yùn)行時(shí)出現(xiàn)的錯(cuò)誤信息。string get_root_uid()取得

      root 使用者識別名稱需要獲取系統(tǒng)的uid時(shí)調(diào)用此函數(shù)。string get_bb_uid()取得骨架使用者識別名稱。string creator_file(string str)系統(tǒng)創(chuàng)建任何對象時(shí)都會調(diào)用此函數(shù),用來獲得系統(tǒng)初始化對象的uid值。mixed compile_object(string file)提供虛擬對象,當(dāng)系統(tǒng)無法按照給定的路徑載入對象時(shí)調(diào)用此函數(shù)。如果返回值是0,系統(tǒng)將不會載入這個(gè)對象,如果返回值是一個(gè)對象,系統(tǒng)會把這個(gè)對象當(dāng)作是系統(tǒng)要載入的對象。一般來說,這里會返回一個(gè)void對象。string object_name(object ob)系統(tǒng)調(diào)用此函數(shù)以知曉一個(gè)物件的名稱。string domain_file(string str)返回一個(gè)指定對象所屬的區(qū)域,系統(tǒng)調(diào)用此函數(shù)來獲得對象的區(qū)域。string author_file(string str)返回一個(gè)指定對象所屬的作者,系統(tǒng)調(diào)用此函數(shù)來獲得對象的作者。int save_ed_setup(object who, int code)ed()函數(shù)儲存一個(gè)使用者的編輯程序設(shè)定或組態(tài)設(shè)定時(shí)調(diào)用 int retrieve_ed_setup(object who)ed()函數(shù)取得使用者的編輯程序設(shè)定或組態(tài)設(shè)定 string make_path_absolute(string file)ed()函數(shù)調(diào)用此函數(shù)以轉(zhuǎn)換文件的相對路徑名稱為絕對路徑名稱 string get_save_file_name(string fname)ed()函數(shù)使用者不正常斷線時(shí), 此函數(shù)應(yīng)返回與原來文件不同的名稱, 以免覆寫原來的文件 string privs_file(string file)為新創(chuàng)造的對象指定一個(gè)私有字符串。創(chuàng)建任何對象時(shí)系統(tǒng)都會調(diào)用此函數(shù).對象的文件名稱為其參數(shù),返回的字符串就用作此對象的私有字符串。void slow_shutdown(int minutes)告知 mud 目前正處于緩慢關(guān)閉的過程中.當(dāng)系統(tǒng)無法從堆中配置更多的內(nèi)存, 而只能使用保留的內(nèi)存區(qū)塊時(shí), 主控物件會調(diào)用此函數(shù).此函數(shù)只有在組態(tài)文件中設(shè)定了「內(nèi)存區(qū)塊保留大小」才會被調(diào)用.距離關(guān)閉時(shí)間還剩下幾分鐘則為此函數(shù)的參數(shù).void flag(string)當(dāng)系統(tǒng)啟動時(shí), 處理 mudlib 所指定的特定標(biāo)志.這個(gè)函數(shù)暫時(shí)還不是很了解。int valid_override(string file, string name)是否允許使用 efun:: 的情形,即是否允許運(yùn)行efun重載前的函數(shù)。int valid_seteuid(object ob, string str)是否允許設(shè)定一個(gè)對象的euid。int valid_socket(object eff_user, string fun, mixed *info)是否允許調(diào)用socket 外部函數(shù) int valid_asm(string file)

      是否能使用asm{}來控制 LPC->C 編譯的物件 int valid_compile_to_c(string file)是否允許由 LPC->C 的方式編譯 int valid_hide(object who)是否允許一個(gè)對象具有匿蹤和看到匿蹤對象的能力 int valid_object(object ob)是否允許載入某個(gè)對象。int valid_save_binary(string filename)是否允許一個(gè)對象儲存它的源代碼 int valid_bind(object binder, object old_owner, object new_owner)是否允許bind()函數(shù) 即把某個(gè)對象的函數(shù)指針指向其他對象。int valid_write(string file, mixed user, string func)是否允許一個(gè)人有權(quán)限寫入一個(gè)文件 int valid_read(string file, mixed user, string func)是否允許一個(gè)人有權(quán)限讀取一個(gè)文件 int valid_shadow(object ob)控制哪些對象可以作為投影。int valid_link(string original, string reference)是否允許link()函數(shù) int view_errors(object user)是否允許一個(gè)使用者看到錯(cuò)誤消息 int valid_compile(string file)是否允許預(yù)先編譯文件,這是22.2b14新加的設(shè)置6、、、、用戶對象

      void logon()主控對象conncet函數(shù)返回的用戶對象會直接調(diào)用次函數(shù),用以對用戶對象的初始化處理。string process_input(string str)用戶輸入信息后調(diào)用此函數(shù),字符串處理后再傳遞給本用戶對象,用來處理用戶輸入信息。void net_dead()當(dāng)用戶對象斷線時(shí), 系統(tǒng)調(diào)用此函數(shù)。用來處理用戶斷線后的事情。void terminal_type(string term_type)用戶對象登陸后調(diào)用,獲得用戶登陸的終端型號。void receive_message(string type, string str)用戶對象的消息處理函數(shù),系統(tǒng)的message()函數(shù)會把消息分配給各個(gè)符合條件的用戶對象,用戶對象接收到消息后調(diào)用此函數(shù)來接收并處理消息。void catch_tell(string message);無論系統(tǒng)對

      一個(gè)對象送出任何消息都會調(diào)用此函數(shù)來處理這些消息.消息可以依照需要顯示、丟棄、修改.此函數(shù)可以當(dāng)作耳罩擋住某些消息, 也可以用于消息處理程序.void receive_snoop(string message);一個(gè)用戶對象窺視另一個(gè)用戶對象時(shí), 所有窺視的文字會傳遞給用戶對象中的這個(gè)函數(shù).在此函數(shù)中, 您可以處理這些文字.次函數(shù)的內(nèi)容, 通常會再傳遞給 receive()函數(shù).void telnet_suboption(string buffer);

      獲得用戶終端的一些設(shè)置。void write_prompt(void);如果在用戶對象中有定義了次函數(shù),則預(yù)設(shè)的提示符號該顯示時(shí), 系統(tǒng)將調(diào)用此函數(shù).當(dāng)用戶正處于 input_to(輸入文字)和 ed(編輯程序)狀態(tài)時(shí), 系統(tǒng)不會調(diào)用此函數(shù)7、、、、所有對象

      void create(void);對象的構(gòu)造函數(shù),對象被系統(tǒng)載入后調(diào)用此函數(shù)來初始化對象。復(fù)制的對象也會調(diào)用。需要說明的是,系統(tǒng)第一次載入對象后會自動運(yùn)行對象和其所有的父類中的create,復(fù)制的對象只運(yùn)行對象自己的create。int id(string an_id);此函數(shù)被系統(tǒng)的present()函數(shù)調(diào)用, 以判斷一個(gè)指定的對象是否以字符串a(chǎn)n_id為識別名稱id.如果an_id是此對象的識別名稱之一, 就返回 1, 不是則返回 0。void init(void);當(dāng)系統(tǒng)把對象A放入對象B時(shí)(即調(diào)用move_object()函數(shù)),如果A是人物對象,讓A在B里調(diào)用A的init函數(shù),同時(shí)調(diào)用B里面所有對象的init函數(shù)。不管A是不是人物對象,讓B里所有人物對象調(diào)用A的init函數(shù)。int move_or_destruct(object dest);如果一個(gè)對象的環(huán)境對象被摧毀了, 就調(diào)用此函數(shù), 并用于它的內(nèi)容對象.dest是正要被摧毀的對象.如果 dest 不存在, 則 dest 為 0.如果 dest 中的對象沒有把自己移出被摧毀的對象, 則也會被一起摧毀.int clean_up(int inherited);系統(tǒng)每過一段時(shí)間,對非激活對象調(diào)用 clean_up()函數(shù).inherited指出此對象是否有別的對象繼承.如果返回 0,此對象將永遠(yuǎn)不再調(diào)用 clean_up().如果返回 1, 則繼續(xù)判斷調(diào)用。通常一個(gè)對象在 clean_up()中所作的事, 是摧毀自己以節(jié)省內(nèi)存.void reset(void);系統(tǒng)在每次reset之后(時(shí)間由系統(tǒng)設(shè)定),所有游戲中現(xiàn)存的對象都會調(diào)用reset()函數(shù).reset()常用于檢查寶物或怪物是否還在某個(gè)房間, 以判斷要不要重新產(chǎn)生一份.8、、、、一些概念的說明

      用戶對象用戶對象用戶對象用戶對象((((interactive()):):):):用戶連接的對象就是用戶對象,系統(tǒng)會調(diào)用用戶對象的一些方法來實(shí)現(xiàn)用戶的輸入輸出和消息處理等。如果用戶對象斷開連接,用戶對象就變成為普通對象。但是系統(tǒng)會記錄曾經(jīng)是用戶對象的對象,通過userp()函數(shù)可以判斷一個(gè)對象是否曾經(jīng)是用戶對象。人物人物人物人物對象對象對象對象(living())::::人物對象是曾經(jīng)呼叫過 enable_commands()的對象,當(dāng)然用戶對象也是人物對象。環(huán)境對象環(huán)境對象環(huán)境對象環(huán)境對象(environment())::::環(huán)境對象是通過move_object()函數(shù)激活的對象。激活激活激活激活對象對象對象對象::::在系統(tǒng)規(guī)定的(clear_up)時(shí)間內(nèi),曾經(jīng)調(diào)用過init()函數(shù)的對象。復(fù)制復(fù)制復(fù)制復(fù)制對象對象對象對象(clonep())::::系統(tǒng)在第一次載入某個(gè)對象后會建立一個(gè)初始對象并存于系統(tǒng)內(nèi)存中,以后每次重新建立對象包括new()、clone_object()、call_other()等都會通過拷貝這個(gè)初始對象來建立新的對象,每個(gè)拷貝出來的對象,系統(tǒng)都會指定一個(gè)遞增的數(shù)字標(biāo)識此對象。這里需要說明的是,new()等函數(shù)建立對象時(shí),如果初始對象不存在的話,系統(tǒng)會自動載入并初始化此對象,并把此對象定為初始對象,然后再拷貝一個(gè)對象作為new()等函數(shù)的返回值。系統(tǒng)建立初始對象的時(shí)候會由父到子的調(diào)用對象所有的create()函數(shù),而拷貝出來的對象只調(diào)用對象本身的create()函數(shù)。游戲中存在的對象都是復(fù)制出來的對象。初始對象只有系統(tǒng)才能調(diào)用。

      對象對象對象對象uid值值值值::::這個(gè)值只能通過主控對象中的creator_file()函數(shù)賦值或者export_uid()函數(shù)傳遞。指明當(dāng)前對象的使用者名稱。對象對象對象對象euid值值值值::::對象有效的使用者名稱,可以通過seteuid和geteuid函數(shù)設(shè)置和讀取。對象的對象的對象的對象的繼承繼承繼承繼承、、、、構(gòu)造及初始化構(gòu)造及初始化構(gòu)造及初始化構(gòu)造及初始化::::Mudos啟動以后,可以自動或者通過函數(shù)調(diào)用來創(chuàng)建和復(fù)制各種對象,Mudos系統(tǒng)的作用就是用來管理這些對象。Mudos在生成對象的時(shí)候有兩種方式,一種是載入對象,一種是復(fù)制已經(jīng)載入的對象。首先,Mudos是通過對象的文件名來尋找和定位對象的,當(dāng)需要載入對象的時(shí)候,先檢查對象是否已經(jīng)載入,如果沒有載入會檢查對象是否有需要繼承別的對象,如果需要就先載入需要繼承的對象,然后再載入并生成需要載入的對象。對象的繼承實(shí)際上是子對象先淺拷貝一份父對象(但不初始化),然后再構(gòu)造自己。任何一個(gè)對象被載入內(nèi)存或被復(fù)制出來都會執(zhí)行create函數(shù)來初始化自己。9、、、、EFUN函數(shù)說明

      This_object():這個(gè)函數(shù)返回由當(dāng)前文件所建立或拷貝的對象。如果這個(gè)文件繼承了另一個(gè)文件,那么另一個(gè)文件中的這個(gè)函數(shù)也返回由這個(gè)文件所建立或拷貝的對象。previous_object(n):返回調(diào)用此函數(shù)的第前n個(gè)對象,previous_object(0)= previous_object(),表示返回調(diào)用此函數(shù)的對象。This_interactive():返回調(diào)用此函數(shù)的用戶對象。This_player():返回調(diào)用此函數(shù)的人物對象。This_player(1)返回This_interactive()Load_object():如果已經(jīng)載入則返回已經(jīng)載入的對象,否則載入對象并返回它。New():如果對象沒載入則載入對象,并復(fù)制一個(gè)對象返回,否則復(fù)制已經(jīng)載入的對象返回。這里需要指出的是復(fù)制對象的過程并不會載入被復(fù)制對象所要繼承的對象。Clone_object():和new一樣,目前不知道有什么區(qū)別。replace_program():這個(gè)函數(shù)是用當(dāng)前對象的繼承對象來替換當(dāng)前對象,但是保留當(dāng)前對象的全局變量。就是說如果被替換以后,當(dāng)前對象就只有繼承對象的方法,而當(dāng)前對象所定義的方法都不存在了。

      第二篇:刀具和編程總結(jié)

      ① 白鋼刀(即高速鋼刀具)因其通體銀白色而得名,主要用于直壁加工。白鋼刀價(jià)格便宜,但切削壽命短、吃刀量小、進(jìn)給速度低、加工效率低,在數(shù)控加工中較少使用。

      ② 飛刀(即鑲嵌式刀具)主要為機(jī)夾式可轉(zhuǎn)位刀具,這種刀具剛性好、切削速度高,在數(shù)控加工中應(yīng)用非常廣泛,用于模胚的開粗、平面和曲面粗精加工效果均很好。

      ③ 合金刀(通常指的是整體式硬質(zhì)合金刀具)精度高、切削速度高,但價(jià)格昂貴,一般用于精加工。

      數(shù)控刀具與普通機(jī)床上所用的刀具相比,有以下不同的要求。

      (1)剛性好(尤其是粗加工刀具)、精度高、抗振及熱變形小。

      (2)互換性好,便于快速換刀。

      (3)壽命高,切削性能穩(wěn)定、可靠。

      (4)刀具的尺寸便于調(diào)整,以減少換刀調(diào)整時(shí)間。

      (5)刀具應(yīng)能可靠地?cái)嘈蓟蚓硇?,以利于切屑的排除。?)系列化、標(biāo)準(zhǔn)化,以利于編程和刀具管理。

      ① 刀具直徑越大,轉(zhuǎn)速越慢;同一類型的刀具,刀桿越長,吃刀量就要減小,否則容易彈刀而產(chǎn)生過切。

      ② 白鋼刀轉(zhuǎn)速不可過快,進(jìn)給速度不可過大。

      ③ 白鋼刀容易磨損,開粗時(shí)少用白鋼刀。

      ① 以上的飛刀參數(shù)只能作為參考,因?yàn)椴煌娘w刀材料其參數(shù)值也不相同,不同的刀具廠生產(chǎn)的飛刀其長度也略有不同。另外,刀具的參數(shù)值也因數(shù)控銑床或加工中心的性能和加工材料的不同而不同,所以刀具的參數(shù)一定要根據(jù)工廠的實(shí)際情況來設(shè)定。

      ② 飛刀的剛性好,吃刀量大,最適合模胚的開粗。另外,飛刀精加工陡峭面的質(zhì)量也非常好。③ 飛刀主要是鑲刀粒的,沒有側(cè)刃,① 合金刀剛性好,不易產(chǎn)生彈刀,用于精加工模具的效果最好。

      ② 合金刀和白鋼刀一樣有側(cè)刃,精銑銅公直壁時(shí)往往使用其側(cè)刃。

      ① 刀具的名稱一般根據(jù)刀具的直徑和圓角半徑來定義,例如,直徑為30,圓角半徑為5的飛刀,其名稱定義為D30R5;直徑為12的平底刀,其名稱定義為D12;半徑為5的球刀,其名稱定義為R5。

      ② 輸入刀具名稱時(shí),只需要輸入小寫字母即可,系統(tǒng)會自動將字母轉(zhuǎn)為大寫狀態(tài)。③ 設(shè)置刀具參數(shù)時(shí),只需要設(shè)置刀具的直徑和底圓角半徑即可,其他參數(shù)按默認(rèn)即可。加工時(shí),編程人員還需要編寫加工工藝說明卡,注明刀具的類型和實(shí)際長度。

      機(jī)床坐標(biāo)一般在工件頂面的中心位置,所以創(chuàng)建機(jī)床坐標(biāo)時(shí),最好先設(shè)置好當(dāng)前坐標(biāo),然后在〖CSYS〗對話框中設(shè)置“參考”為WCS。

      加工模具時(shí),其開粗余量多設(shè)為0.5,但如果是加工銅公余量就不一樣了,因?yàn)殂~公(銅公是火花機(jī)放電加工用的電極)最后的結(jié)果是要留負(fù)余量的。

      模具加工要求越高時(shí),其對應(yīng)的公差值就應(yīng)該越小。

      進(jìn)行實(shí)體模擬驗(yàn)證前,必須設(shè)置加工工件和毛坯,否則無法進(jìn)行實(shí)體模擬。

      第三篇:編程題總結(jié)

      C作業(yè)匯總

      1.short a,b=32767;/*short類型在內(nèi)存中占2B*/ a=b+1;問:a的值是多少?并分析原因。

      2.有一4位數(shù)整數(shù),假設(shè)用abcd表示,請把這個(gè)4位數(shù)的每個(gè)數(shù)位用表達(dá)式表示出來。3.從鍵盤輸入圓的半徑r,計(jì)算并輸出圓的面積s(要求:半徑r定義為float型;圓周率?定義為符號常量;面積s保留2位小數(shù))#define PI 3.14159 #include void main(){ float r,s;printf(“請輸入半徑r:n”);scanf(“%f”,&r);s=PI*r*r;printf(“面積是:%.2fn”,s);}

      4.輸入m>=3的正整數(shù),判斷m是否素?cái)?shù)。畫出算法流程圖及NS圖

      5.有一函數(shù):

      x?1 ?x ?y??2x?1 1?x?10

      ?3x-11 x?10 ?寫一段程序,輸入x,輸出y值。

      要求x,y聲明為float類型,y保留2位小數(shù)。#include void main(){ float x,y;printf(“請輸入x的值:n”);scanf(“%f”,&x);

      if(x<1)

      y=x;else

      if(x<10)

      y=2*x-1;

      else

      y=3*x-11;

      }

      printf(“y=%.2fn”,y);

      x3x5x7x9?????,6.課后習(xí)題4.17(P159)利用泰勒級數(shù)sinx?x?計(jì)算sinx的3!5!7!9!值。要求最后一項(xiàng)的絕對值小于10,并統(tǒng)計(jì)出此時(shí)累加了多少項(xiàng)。#include #include void main(){ float x,sinx=0;float term;

      /*記錄每個(gè)項(xiàng)數(shù)*/ int n=1,count=0;/*count記錄累加了多少項(xiàng)*/

      printf(“請輸入x值(弧度):n”);scanf(“%f”,&x);

      term=x/n;while(fabs(term)>1e-5)

      /* while循環(huán)*/ {

      sinx+=term;

      count++;

      n+=2;

      term=-term*x*x/((n-1)*n);}

      /* do

      /*do while循環(huán)*/ {

      sinx+=term;

      count++;

      n+=2;

      term=-term*x*x/((n-1)*n);}while(fabs(term)>1e-5);

      */

      printf(“sin(%.2f)=%.4fn”,x,sinx);printf(“一共累加了:%d項(xiàng)。n”,count);}

      7.用牛頓迭代法求下面方程在1.5附近的根:

      2x?4x?3x?6?0 32?5

      牛頓迭代公式:

      x1?x0?f(x0)f?(x0)

      #include #include void main(){ float x0,x1=1.5;float y1,y2;

      /*y1記錄f(x0),y2記錄f(x0)的導(dǎo)數(shù)*/

      do {

      x0=x1;

      y1=2*x0*x0*x0-4*x0*x0+3*x0-6;

      y2=6*x0*x0-8*x0+3;

      x1=x0-y1/y2;}while(fabs(x1-x0)>1e-5);

      printf(“the root is:%.2fn”,x1);}

      8.寫一函數(shù),輸入一個(gè)16進(jìn)制整數(shù),輸出相應(yīng)的10進(jìn)制數(shù)。例:從鍵盤輸入2a,輸出結(jié)果是42。

      要求:若輸入數(shù)據(jù)不合法,則輸出提示信息。如輸入了35g,輸出“您輸入的16進(jìn)制數(shù)不合法!”。

      #include #include void main(){ char c;int sum=0;

      printf(“請輸入一個(gè)16進(jìn)制數(shù)字:n”);

      while((c=getchar())!='n'){

      if(c>='0' && c<='9')

      sum=sum*16+c-'0';

      else

      if(c>='a' && c<='f')

      sum=sum*16+c-87;

      else

      if(c>='A' && c<='F')

      sum=sum*16+c-55;

      else

      {

      printf(“您輸入的16進(jìn)制不合法.n”);

      exit(0);

      } }

      printf(“相應(yīng)的10進(jìn)制數(shù)是:%dn”,sum);} 方法2:用字符串處理的方式 #include #include void main(){ char str[20];int i,sum=0;

      printf(“請輸入一個(gè)16進(jìn)制數(shù)字:n”);gets(str);

      for(i=0;str[i];i++){

      if(str[i]>='0' && str[i]<='9')

      sum=sum*16+str[i]-'0';

      else

      if(str[i]>='a' && str[i]<='f')

      sum=sum*16+str[i]-87;

      else

      if(str[i]>='A' && str[i]<='F')

      sum=sum*16+str[i]-55;

      else

      {

      printf(“您輸入的16進(jìn)制不合法.n”);

      exit(0);

      } }

      printf(“相應(yīng)的10進(jìn)制數(shù)是:%dn”,sum);} 方法3:用字符數(shù)組及指針處理的方式 #include #include void main()

      { char str[20],*p=str;int sum=0;

      printf(“請輸入一個(gè)16進(jìn)制數(shù)字:n”);gets(p);

      while(*p){

      if(*p>='0' && *p<='9')

      sum=sum*16+*p-'0';

      else

      if(*p>='a' && *p<='f')

      sum=sum*16+*p-87;

      else

      if(*p>='A' && *p<='F')

      sum=sum*16+*p-55;

      else

      {

      printf(“您輸入的16進(jìn)制不合法.n”);

      exit(0);

      }

      p++;}

      printf(“相應(yīng)的10進(jìn)制數(shù)是:%dn”,sum);} 9.編寫一個(gè)小函數(shù),其功能是計(jì)算兩個(gè)整數(shù)的平均值,該函數(shù)要在主函數(shù)中調(diào)用。

      #include void main(){ int x,y;float avg;float average(int,int);printf(“輸入x,y的值,用空格分隔兩個(gè)數(shù):n”);scanf(“%d%d”,&x,&y);

      avg=average(x,y);

      printf(“%d,%d的平均值是:%.2fn”,x,y,avg);}

      float average(int x,int y)

      { return(x+y)/2.0;}

      10.有N(N用宏定義為符號常量)個(gè)元素的一維整型數(shù)組,該數(shù)組中各元素值從鍵盤隨機(jī)輸入。然后,將這個(gè)整型數(shù)組中的值逆序存放。例如,原來5個(gè)元素的順序?yàn)?、1、4、6、5,逆序之后各元素的值是5、6、4、1、8 #define N 5 #include void main(){ int a[N];int i,t;

      printf(“輸入%d個(gè)整數(shù),用空格或回車分隔:n”,N);for(i=0;i

      scanf(“%d”,&a[i]);

      printf(“數(shù)組原來的值是:n”);for(i=0;i

      printf(“%dt”,a[i]);

      for(i=0;i

      t=a[i];

      a[i]=a[N-1-i];

      a[N-1-i]=t;}

      printf(“n逆序之后數(shù)組的值是:n”);for(i=0;i

      printf(“%dt”,a[i]);

      printf(“n”);} 11.有N(N用宏定義為符號常量)個(gè)元素的一維整型數(shù)組,該數(shù)組中各元素值從鍵盤隨機(jī)輸入。然后,對該數(shù)組元素進(jìn)行由小到大排序(要求,該功能用函數(shù)實(shí)現(xiàn)),輸出數(shù)組中各元素值。最后,從鍵盤隨機(jī)輸入一個(gè)整數(shù),并把該整數(shù)插入上述數(shù)組中(該功能用函數(shù)實(shí)現(xiàn)),使得插入該整數(shù)后的數(shù)組仍然有序,輸出數(shù)組中各元素的值。#define N 5 #include void main(){ int a[N+1];

      int i,x;void sort(int array[],int n);void insert(int array[],int n,int x);

      printf(“輸入%d個(gè)整數(shù),用空格或回車分隔:n”,N);for(i=0;i

      scanf(“%d”,&a[i]);

      sort(a,N);

      /*調(diào)用sort對數(shù)組進(jìn)行排序*/

      printf(“n升序排序之后數(shù)組的值是:n”);for(i=0;i

      printf(“%d

      ”,a[i]);

      printf(“n輸入一個(gè)x值插入到數(shù)組中:n”);scanf(“%d”,&x);

      insert(a,N,x);

      printf(“n插入%d之后數(shù)組的值是:n”,x);for(i=0;i

      printf(“%d

      ”,a[i]);

      printf(“n”);}

      void sort(int array[],int n)/*用選擇法對數(shù)組array升序排序*/ { int i,j,t,min;

      for(i=0;i

      min=i;

      for(j=i+1;j

      if(array[j]

      min=j;

      if(min!=i)

      {

      t=array[i];

      array[i]=array[min];

      array[min]=t;

      } } }

      void insert(int array[],int n,int x){ int i,pos;

      for(i=0;i

      pos=i;

      for(i=n-1;i>=pos;i--)

      array[i+1]=array[i];

      array[pos]=x;}

      12.有一整型數(shù)組,N(N用宏定義為符號常量)個(gè)元素,該數(shù)組中各元素值從鍵盤隨機(jī)輸入。從鍵盤隨機(jī)輸入一個(gè)整數(shù)x,刪除該數(shù)組中值與x相同的所有元素(該功能用函數(shù)實(shí)現(xiàn)),輸出數(shù)組中各元素的值。#define N 5 #include void main(){ int a[N];int i,x,n;int delet(int a[],int n,int x);

      printf(“輸入%d個(gè)整數(shù),用空格或回車分隔:n”,N);for(i=0;i

      scanf(“%d”,&a[i]);

      printf(“數(shù)組原來的值是:n”);for(i=0;i

      printf(“%dt”,a[i]);

      printf(“n請輸入要刪除的值x:n”);scanf(“%d”,&x);

      n=delet(a,N,x);

      /*n值是刪除與x相同的元素后,數(shù)組剩余元素的個(gè)數(shù)。*/

      printf(“刪除%d之后數(shù)組的值是:n”,x);for(i=0;i

      printf(“%d

      ”,a[i]);

      printf(“n”);

      }

      int delet(int a[],int n,int x){ int i,j;

      for(i=0,j=0;i

      if(a[i]!=x)

      a[j++]=a[i];

      return j;}

      13.從鍵盤隨機(jī)輸入一字符串,將所有ASCII值為偶數(shù)的字符輸出。例如:輸入abc123,輸出結(jié)果是b2(因?yàn)閎的ASCII值是98,2的ASCII值是50,其他字符的ASCII值都是奇數(shù))

      #include #define N 40 void main(){ char str[N];int i;

      printf(“輸入字符串:n”);gets(str);

      printf(“ASCII碼是偶數(shù)的字符有:”);for(i=0;str[i];i++)

      if(str[i]%2==0)putchar(str[i]);

      printf(“n”);}

      14.從鍵盤輸入兩個(gè)字符串s1,s2,把s2連接到s1的末尾。不能用strcat函數(shù) #include #define N 40 void main(){ char str1[N],str2[N];void mystrcat(char *p1,char *p2);

      printf(“輸入兩個(gè)字符串,輸入回車鍵結(jié)束:n”);gets(str1);gets(str2);

      mystrcat(str1,str2);

      printf(“連接在一起的字符串是:n”);puts(str1);

      }

      void mystrcat(char *p1,char *p2){ while(*p1)p1++;while(*p2)

      *p1++=*p2++;*p1='