當前位置:首頁 » 編程語言 » c語言聯機

c語言聯機

發布時間: 2022-06-10 10:06:06

A. 求一個C語言編寫的可聯機的五子棋程序,一定要可聯機的!!!

哈哈 ,誰有那樣的時間啊!

B. 誰能具體形象的解釋一下什麼叫 聯機命令(語言)

UNIX 命令大多數可用聯機幫助手冊 man 獲得幫助,下面是常用命令及簡單說明. 命令 功能簡述 acctcom 等於進程記帳文件 accton 啟動或中止記帳進程 adb 匯編語言調試工具 admin 創建和管理SCCS文件 ar 檔案文件和庫文件管理程序 as 匯編器 asa 回車控制 在指定時間執行程序 awk 模式搜索和處理語言 banner 製作標題 basename 生成文件基本名(無前。後綴) batch 命令的延遲執行 bc 計算器 bdiff 大型文件比較 bfs 大文件搜索 break 退出循環 cal 列印日歷表 calendar 列印日歷表 cancel 取消列印任務 case 分支語句 cb C語言整理程序 cd 改變當前目錄 cc C語言編譯器 cdc SCCS實用程序

麻煩採納,謝謝!

C. C語言的問題

本文描述了Win32編譯器對C語言結構空間的分配原則,以及如何利用這些原則
更好的編寫應用程序。該原則可以被推廣到非Win32系統(如Digital UNIX、
Linux等)。

------------------------------------------------------------------------
--------

正文:

C編譯器對結構空間的分配及其應用

C編譯器對結構空間預設的分配
在C語言中,結構是一種復合數據類型,其構成元素既可以是基本數據類型(
如int、long、float等)的變數,也可以是一些復合數據類型(如數組、結構、聯
合等等)的數據單元。在結構中,編譯器為結構的每個成員按其自然對界(
alignment)條件分配空間;各個成員按照它們被聲明的順序在內存中順序存儲
第一個成員的地址和整個結構的地址相同。在預設情況下,C編譯器為每一個變數
或是數據單元按其自然對界條件分配空間,見表1:

-----------------------------------------
|數據類型| 地址對界情況 |
|---------------------------------------|
|char 1 |
|short 2 |
|int 4 |
|long 4 |
|float 4 |
|double 8 |
|pointer 4 |
|struct 任意成員要求的最大對界 |
|union 第一個成員所要求的對界 |
|---------------------------------------|

表1:Win32下的自然對界條件
例如,下面的結構各成員空間分配情況如圖1:
struct test {
char x1;
short x2;
float x3;
char x4;
};

31 16 15 8 7 0
--------------------------------------------
| short x2 | |char x1 |
|-------------------------------------------|
63| float x3 |
|-------------------------------------------|
95| |char x4 |
---------------------------------------------
圖1:預設結構空間分配

結構的第一個成員x1,其偏移地址為0,占據了第1個位元組。第二個成員x2為
short類型,其起始地址必須2位元組對界,因此,編譯器在x2和x1之間填充了一個空
位元組。結構的第三個成員x3和第四個成員x4恰好落在其自然對界地址上,在它們前
面不需要額外的填充位元組。在test結構中,成員x3要求4位元組對界,是該結構所有
成員中要求的最大對界單元,因而test結構的自然對界條件為4位元組,編譯器在成
員x4後面填充了3個空位元組。整個結構所佔據空間為12位元組。

結構中的位段
所謂位段是以位為單位定義長度的結構體類型中的成員。編譯器對結構中位段
的分配遵從下面幾點原則:
? 對於長度為0的位段,其下一個位段從下一個存儲單元開始存放:
如:
struct T {
unsigned char a : 1;
unsigned char b : 2;
unsigned : 0;
unsigned c : 3;
};
結構T的成員a和b在一個存儲單元中,c則在另一個存儲單元中。
· 一個位段必須存儲在同一存儲單元中,不能跨兩個單元:
如:
struct T {
unsigned char a : 4;
unsigned char b : 6;
};
結構T的成員a在一個存儲單元中,b則在另一個存儲單元中。

更改C編譯器的預設分配策略
一般地,可以通過下面的兩種方法改變預設的對界條件:
· 使用偽指令#pragma pack ([n])
· 在編譯時使用命令行參數
#pragma pack ([n])偽指令允許你選擇編譯器為數據分配空間所採取的對界策略,
見表2:

|--------------------------------------------|
| n | 效果 |
|--------------------------------------------|
| 1 |所有數據將會在任意位元組單位上對界,不必遵|
| |守其自然對界條件,將會導致程序速度的下降|
|--------------------------------------------|
| 2 |所有非位元組數據將會在偶數地址單元上對界 |
|--------------------------------------------|
| 4 |小於4位元組按原有長度對界,其餘按4位元組對界|
|--------------------------------------------|
| 8 |小於8位元組按原有長度對界,其餘按8位元組對界|
|--------------------------------------------|
| 16|小於16位元組按原有長度對界,其餘按16位元組對界|
|--------------------------------------------|
表2:更改預設對界條件
在Microsfot Visual C++中,命令行參數/Zp[n]可以改變預設對界條件;在
Borland C++ Builder中,命令行參數-a[n]可以改變預設對界條件。n的含義和
#pragma pack中的n相同。
例如,在使用了#pragma pack (1)偽指令後,test結構各成員的空間分配情況
如圖2所示:

31 24 23 8 7 0
--------------------------------------------
| float x3 | short x2 |char x1 |
|-------------------------------------------|
63| char x4 | float x3 |
|-------------------------------------------|

圖2:使用#pragma pack (1)後的結構空間分配

應用實例

我們在日常編程工作中,特別是對一些網路事務的處理,經常會同其他人有著
各種各樣的協議:如我傳給你20位元組的頭,前4個位元組表示……等等。很多人都是
通過指針偏移的方法來得到各種信息,這樣做,不僅編程復雜,而且一旦協議有變
化,程序修改起來也比較麻煩。在了解了編譯器對結構空間的分配原則之後,我們
完全可以利用這一特性定義自己的協議結構,通過訪問結構的成員來獲取各種信息
。這樣做,不僅簡化了編程,而且即使協議發生變化,我們也只需修改協議結構的
定義即可,其它程序無需修改,省時省力。下面以TCP協議首部為例,說明如何定
義協議結構。
TCP協議首部如圖3所示:

0 15 16 31
|-----------------------------------------------------|
| 16位源埠號 | 16位目的埠號 |
|-----------------------------------------------------|
| 32 位序列號 |
|-----------------------------------------------------|
| 32 位確認號 |
|-----------------------------------------------------|
|4位 |保留 |U|A|P|R|S|F| |
|首部 | |R|C|S|S|Y|I| 16位窗口大小 |
|長度 |6位 |G|K|H|T|N|N| |
|-----------------------------------------------------|
| 16位TCP校驗和 | 16位緊急指針 |
|-----------------------------------------------------|

圖3:TCP首部

其協議結構定義如下:
struct TCPHEADER {
short SrcPort; // 16位源埠號
short DstPort; // 16位目的埠號
int SerialNo; // 32位序列號
int AckNo; // 32位確認號
unsigned char HaderLen : 4; // 4位首部長度
unsigned char Reserved1 : 4; // 保留6位中的4位
unsigned char Reserved2 : 2; // 保留6位中的2位
unsigned char URG : 1;
unsigned char ACK : 1;
unsigned char PSH : 1;
unsigned char RST : 1;
unsigned char SYN : 1;
unsigned char FIN : 1;
short WindowSize; // 16位窗口大小
short TcpChkSum; // 16位TCP檢驗和
short UrgentPointer; // 16位緊急指針
};
其協議結構還可以定義為如下的形式:
struct TCPHEADER {
short SrcPort; // 16位源埠號
short DstPort; // 16位目的埠號
int SerialNo; // 32位序列號
int AckNo; // 32位確認號
unsigned char HaderLen : 4; // 4位首部長度
unsigned char : 0; // 保留6位中的4位
unsigned char Reserved : 2; // 保留6位中的2位
unsigned char URG : 1;
unsigned char ACK : 1;
unsigned char PSH : 1;
unsigned char RST : 1;
unsigned char SYN : 1;
unsigned char FIN : 1;
short WindowSize; // 16位窗口大小
short TcpChkSum; // 16位TCP檢驗和
short UrgentPointer; // 16位緊急指針
};

參考資料:
1. 《Programmer's Guide》,DIGITAL UNIX Documentation,Version 4.0E。
Compaq Computer Corporation, November 1998。
2. 微軟MSDN Library Visual Studio 6.0版。
3. Borland C++ Builder 5.0聯機文檔。
4. 《C程序設計》,譚浩強,清華大學出版社,1991年7月。
5. 《TCP/IP詳解 卷1:協議》,W. Richard Stevens著,范建華等譯。機械工業
出版社,2000年4月。

D. 如何用C語言實現聯機

這個必須要學習windows下的socket編程,你要是真想學就買本相關的書看看吧

E. 怎樣用C語言或者是C++編寫一個區域網的聊天軟體特別是怎樣實現軟體的介面。

你的程序是客戶端發請求還是主機發請求?你的IP是程序中寫好了還是運行時查詢得到的?埠一定不要搞錯
雙機互連線和點對hub線是不一樣的

F. C++編寫網路編程甚至聯機游戲嗎

dota2、CS的Source引擎就是C++寫的
星際2好像也是C++寫的

可以說大多數「大型3D游戲」都是C++

G. C語言問題!!關於聯機

C語言編一個聯機鬥地主

聯機一般都是使用TCP/IP通訊協議,有關的你可以查一下,C++的話說不定能幫上忙

C的話沒有界面的吧,我沒有辦法想像怎麼玩....

H. 無憂網計算機二級C語言考試大題為什麼要聯機

計算機二級C語言考試,在考大題目的時候一定要聯機的,如果不聯機的話,那麼網路就會有問題,就會無法提交。

I. 學習C語言技巧

所有初學者面臨的第一個問題便是:如何選擇教材。好的開始是成功的一半,選擇一本優秀的教材是事半功倍的關鍵因素。不幸的是,學校通常會幫你指定一本很差勁的C語言課本;而幸運的是,你還可以再次選擇。

大名鼎鼎的譚浩強教授出了一本《C語言程序設計》,據說發行量有超過400萬,據我所知,很多學校都會推薦這本書作為C語言課本。雖然本人的名字(譚浩宇)跟教授僅僅一字之差,但我是無比堅定地黑他這本書的。這本書不是寫給計算機專業的學生的,而是給那些需要考計算機等級考試的其它專業學生看的。這本書的主要缺點是:例子程序非常不專業,不能教給你程序設計應該掌握的思考方式;程序風格相當地不好,會讓你養成亂寫代碼的惡習;錯誤太多,曾經有人指出過這本書的上百個錯誤,其中不乏關鍵的概念性錯誤。好了,這本書我也不想說太多了,有興趣大家可以網路一下:)

Kernighan和Ritchie的《The C Programming Language》(中譯名《C程序設計語言》)堪稱經典中的經典,不過舊版的很多內容都已過時,和現在的標准C語言相去甚遠,大家一定要看最新的版本,否則不如不看。另外,即使是最經典最權威的書,也沒有辦法面面俱到,所以手邊常備一本《C語言參考手冊》是十分必要的。《C語言參考手冊》就是《C Reference Manual》,是C語言標準的詳細描述,包括絕大多數C標准庫函數的細節,算得上是最好的標准C語言的工具書。順便提一句,最新的《C程序設計語言》是根據C89標准修訂的,而《C語言參考手冊》描述的是C99標准,二者可能會有些出入,建議按照C99標准學習。還有一本《C和指針》,寫得也是相當地不錯,英文名是《Pointers on C》,特別地強調指針的重要性,算是本書的一個特點吧。不過這本書並不十分適合初學者,如果你曾經學過C語言,有那麼一些C語言的基礎但又不是很扎實,那麼你可以嘗試一下這本書。我相信,只要你理解了指針,C語言便不再神秘。

如果你已經啃完了一本C語言教材,想要更進一步,那麼有兩本書你一定要看。首先是《C Traps and Pitfalls》(中譯名《C陷井與缺陷》),很薄的一本小冊子,內容非常非常地有趣。要注意一點,這本書是二十多年前寫成的,裡面提到的很多C語言的缺陷都已被改進,不過能夠了解一些歷史也不是什麼壞事。然後你可以挑戰一下《Expert C Programming》(中譯名《C專家編程》),書如其名,這本書頗具難度,一旦你仔細讀完並能透徹理解,你便可以放心大膽地在簡歷上寫「精通C語言」了。

切記一個原則,不要讀自己目前還看不懂的書,那是浪費生命。如果你看不懂,那你一定是缺失了某些必需基礎知識。此時,你要仔細分析自己需要補充哪些內容,然後再去書店尋找講述的這些內容的書籍。把基礎知識補充完畢再回頭來學習,才會真正的事半功倍。

Unix/Linux還是Windows,這是個很大的問題

不同的編程環境會造就出不同思維的程序員。Windows的程序員大多依賴集成開發環境,比如Visual Studio,而Unix程序員更加鍾愛Makefile與控制台。顯而易見,集成開發環境更容易上手,在Windows上學習C語言,只需要會按幾個基本的Visutal C++工具欄按鈕就可以開始寫Hello, World!了,而在Unix下,你需要一些控制台操作的基本知識。有人也許認為Unix的環境更簡潔,但習慣的力量是很大的,大家都很熟悉Windows的基本操作,而為了學習C語言去專門裝一個Unix系統,似乎有點不劃算。

對於一個只懂得Windows基本操作、連DOS是什麼都不知道的新手而言,盡快做一些有趣而有意義的事情才是最重要的。用C語言寫一個小程序遠比學習ls、cat等命令有趣,況且我們要專注於C語言本身,就不得不暫時忽略一些東西,比如編譯鏈接的過程、Makefile的寫法等等等等。

所以我建議初學者應該以Visual C++ 6.0(不是VisualC++ .NET)或者Dev C++作為主要的學習環境,而且千萬不要在IDE的使用技巧上過多糾纏,因為今後你一定要轉向Unix環境的。Visual C++ 6.0使用很方便,調試也很直觀,但其默認的編譯器對C標準的支持並不好,而Dev C++使用gcc編譯器,對C99的標准都支持良好。使用順帶提一下,很多大學的C語言課程還在使用Turbo C 2.0作為實驗環境,這是相當不可取的,原因其一是TC 2.0對C標准幾乎沒有支持,其二是TC 2.0編譯得到的程序是16位的,這對今後理解32位的程序會造成極大的困擾(當然,用djgpp之類的東西可以使TC 2.0編譯出32位程序,不過那過於復雜了)。

等你學完一本C語言的教材,你一定要轉向Unix平台繼續學習,幾乎所有的C語言高級教程都是基於Unix平台的(比如《C專家編程》)。轉變的過程是痛苦的,你需要面對的是各種紛繁復雜的命令,完全不同於Windows平台的思考方式,但是這種痛苦是值得的。Unix與C是共生的,Unix的思考方式和習慣更加符合C語言的思考方式和習慣。在Unix下,你可以找到無數優秀的源代碼供你盡情閱讀,你可以方便地查看某個庫函數的聯機手冊,還可以看到最優秀的代碼風格
歸結起來就是一句話:初學C語言,建議使用Windows系統和集成開發環境,在准備向「高手」方向努力時,請先轉向Unix平台。

書已選定,環境配置完成,正所謂萬事俱備,只欠你自己的努力了。請從書的前言開始,仔細地閱讀手頭的教材,很多人看書喜歡直接從第一章開始看,這是錯誤的做法。前言是作者對整本書的大體介紹,作者一般會告訴你需要什麼基礎才能夠順利閱讀本書,這可以幫助你檢驗自己的基礎知識是否已經具備。看完前言,還要瀏覽一下目錄,了解一下書的整體結構,順便給自己安排一下學習計劃。

學習C語言,必需注意每一個細節,書上的例子代碼一定要自己親自敲一遍,編譯執行輸出都跟書上說的一致才能算是學完了一個例子,如果不一致,就要仔細找原因。出了書本上有的例子,自己還要「創造」一些例子,比如學習運算符優先順序的時候,可以寫幾個相同的表達式,在不同的位置加上括弧,看看有哪些不同的行為,比如*p++和(*p)++,又比如a = b == c、(a = b) == c和a = (b == c)等等。自己抄的書上的例子以及改造之後的例子,還有自己「創造」的例子,都應該仔細地歸類保存,並且要在源代碼中寫上簡短的注釋,闡述這個例子的意圖。

例子之後就是習題了,我建議初學者把所有的習題都獨立做一遍,然後對照答案的代碼,看看自己的代碼有那些不足,再試著修改自己的代碼。很多人不重視習題,這是極大的錯誤,因為作者通常會在習題中說明一些重要的道理,而不是單純地檢驗前面的知識。

也許你認為這樣學習太慢,其實不然。學得細致就不用走回頭路,等你學到後面才發現自己前面沒搞清楚,那才是真的得不償失。一般說來,整本書讀完,你應該完成數千行乃至上萬行的代碼,無論是原封不動照抄書上的,還是自己心血來潮寫就的,都是今後繼續學習的一筆財富。以我自己舉例,閱讀《Windows核心編程》時(我只閱讀了3/4的內容),除了抄書上的代碼,還自己寫了很多例子,一共有5574行(用unix下的wc工具統計),時隔多日,我早已記不清Windows的系統編程了,但只要花幾分鍾翻出以前的代碼看看,便會重新瞭然於胸。所謂好記性不如爛筆頭,就是這個道理。

仔細讀書、認真抄寫源代碼、獨立完成習題外加更進一步的實驗,最後將所有的代碼留下,成為自己的經驗和財富,絕對的辛苦,也絕對的事半功倍。當然,這種方式只適合學習需要精通的技術,如果不是學習C語言,你還要具體情況具體分析。

J. 我在編寫C語言建立一個單鏈表存儲數據,運行沒報錯,卻出現聯機調試等對話框,希望大神看看哪裡有錯誤。

三個問題

1 creat函數返回值 應該是sqlist * 而不是int

2 頭結點沒有存數據,列印的時候應該略過頭結點

3 作為鏈表,不應該在列印的時候用for (int i = 0; i < 4; i++) 這樣的方式,而應該判斷next是否為空。

voidprint(sqlist*h)
{
sqlist*p;
p=h->next;
for(;p;p=p->next)
{
printf("%d",p->date);
}
}
熱點內容
linuxsuse重啟 發布:2025-02-08 01:49:27 瀏覽:410
java對稱加密 發布:2025-02-08 01:48:04 瀏覽:521
java報表框架 發布:2025-02-08 01:47:59 瀏覽:928
方舟手游怎麼防止踢出伺服器 發布:2025-02-08 01:42:44 瀏覽:690
c語言中函數的聲明函數 發布:2025-02-08 01:41:08 瀏覽:69
編譯termux 發布:2025-02-08 01:39:42 瀏覽:649
王者榮耀安卓哪裡看ios國服榜 發布:2025-02-08 01:25:54 瀏覽:630
解壓帶教程 發布:2025-02-08 01:16:33 瀏覽:760
什麼是程序存儲器 發布:2025-02-08 01:05:01 瀏覽:315
解壓包手機安裝 發布:2025-02-08 00:49:29 瀏覽:961