當前位置:首頁 » 編程語言 » c語言程序設計作品
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言程序設計作品

發布時間: 2022-07-23 22:11:52

c語言程序設計

#include<stdio.h>
voidexchange(int*px,int*py);
intmain(void){
intx,y;
scanf("%d%d",&x,&y);
exchange(&x,&y);
printf("x=%d y=%d",x,y);
}
voidexchange(int*px,int*py){
inttemp;
temp=*px;
*px=*py;
*py=temp;
}

❷ c程序設計的作品目錄

第1章 C 程序設計的初步知識
1.1 簡單 C 程序的組成和格式
1.2 十進制整型數和實型數
1.2.1 常量
1.2.2 十進制整型常量
1.2.3 浮點常量
1.2.4 用定義一個符號名的方法來代表一個常量
1.3 標識符
1.3.1 關鍵字
1.3.2 預定義標識符
1.3.3 用戶標識符
1.4 整型變數和實型變數
1.4.1 變數
1.4.2 整型變數
1.4.3 浮點型變數
1.4.4 給變數置初值
1.4.5 定義不可變的變數
1.5 可進行算術運算的表達式
1.5.1 基本的算術運算符
1.5.2 運算符的優先順序與結合性和算術表達式
1.5.3 強制類型轉換表達式
1.6 賦值表達式
1.6.1 賦值運算符和賦值表達式
1.6.2 復合的賦值表達式
1.6.3 賦值運算中的類型轉換
1.7 自加、自減運算符和逗號運算符
1.7.1 自加運算符(++)和自減運算符(--)
1.7.2 逗號運算符和逗號表達式
習題
第2章 簡單的C語句及其順序程序結構
2.1 賦值語句
2.2 整型數和實型數的簡單輸入和輸出語句
2.2.1 調用 printf 函數輸出數據到終端
2.2.2 調用 scanf 函數從終端鍵盤輸入數據
2.3 復合語句和空語句
2.3.1 復合語句
2.3.2 空語句
習題
第3章 分支結構
3.1 關系運算和邏輯運算
3.1.1 C 語言中的邏輯值
3.1.2 關系運算符和關系表達式
3.1.3 邏輯運算符和邏輯表達式
3.2 用if 語句構成的分支結構
3.2.1 if 語句
3.2.2 嵌套的 if 語句
3.3 由條件表達式構成的分支結構
3.4 由switch 語句和 break 語句構成的分支結構
3.4.1 switch 語句
3.4.2 switch 語句的執行過程
3.4.3 在 switch 語句體中使用 break 語句
習題
第4章 循環結構4
4.1 用for語句構成的循環結構
4.1.1 for 循環的一般形式?
4.1.2 for 循環的執行過程
4.1.3 有關 for 語句的說明
4.2 用while 語句構成的循環結構
4.2.1 while 循環的一般形式
4.2.2 while 循環的執行過程
4.3 用do-while語句構成的循環結構
4.3.1 do-while 循環的一般形式
4.3.2 do-while 循環的執行過程
4.4 循環結構的嵌套
4.5 幾種循環結構的比較
4.6 break 和 continue 語句在循環體中的作用
4.6.1 break 語句
4.6.2 continue 語句
4.7 語句標號和 goto 語句
4.7.1 語句標號
4.7.2 goto 語句
4.8 程序舉例
習題
第5章 函數的初步知識
5.1 庫函數
5.2 函數的定義和返回值
5.2.1 函數定義的語法
5.2.2 函數的返回值
5.3 函數的調用
5.3.1 函數的兩種調用方式
5.3.2 函數調用時的語法要求
5.4 調用函數和被調用函數之間的數據傳遞
5.5 函數原型的說明
5.5.1 函數原型的說明語句
5.5.2 函數原型說明語句的位置
5.6 程序舉例
習題
第6章 演算法和結構化程序設計
6.1 程序和程序設計
6.1.1 程序
6.1.2 程序設計
6.2 演算法
6.3 結構化程序設計和模塊化結構
6.3.1 結構化程序
6.3.2 模塊化結構
6.4 怎樣評價一個程序
習題
第7章 字元數據和字元數據處理
7.1 字元常量
7.1.1 常規字元常量
7.1.2 轉義字元常量
7.1.3 可對字元量進行的運算
7.2 字元變數
7.3 字元的輸入和輸出
7.3.1 調用 printf 和 scanf 函數
7.3.2 調用 putchar 和 getchar 函數
7.3.3 調用 getche 和 putche 函數
7.3.4 調用 getch 和 putch 函數
7.4 程序舉例
習題
第8章 地址和指針
8.1 什麼是地址?什麼是指針?
8.2 指針變數的定義和指針變數的基類型
8.3 給指針變數賦值
8.3.1 使指針指向一個對象
8.3.2 給指針變數賦「空」值
8.4 對指針變數的操作
8.4.1 通過指針或地址來引用一個存儲單元
8.4.2 移動指針
8.4.3 指針比較
8.5 函數之間地址值的傳遞
8.5.1 地址或指針變數作為實參
8.5.2 在被調用函數中直接改變調用函數中的變數的值
8.5.3 函數返回地址值
習題?
第9章 一維數組
9.1 一維數組的定義和一維數組元素的引用
9.1.1 一維數組的定義
9.1.2 一維數組元素的引用
9.1.3 一維數組的初始化
9.1.4 通過賦初值定義數組的大小
9.2 一維數組的應用舉例(一)
9.3 一維數組和指針
9.3.1 一維數組和數組元素的地址
9.3.2 通過數組的首地址引用數組元素
9.3.3 通過指針來引用一維數組元素
9.3.4 用指針帶下標的形式引用一維數組元素
9.4 一維數組名或數組元素作實參
9.4.1 數組元素作實參
9.4.2 數組名作實參
9.4.3 數組元素地址作為實參
9.5 一維數組應用舉例(二)
習題
第10章 二維數組
10.1 二維數組的定義和二維數組元素的引用
10.1.1 二維數組的定義
10.1.2 二維數組元素的引用
10.1.3 二維數組的初始化
10.1.4 通過賦初值定義二維數組的大小
10.2 二維數組的應用舉例(一)
10.3 二維數組和指針?
10.3.1 二維數組和數組元素的地址
10.3.2 通過地址來引用二維數組元素
10.3.3 通過建立指針數組來引用二維數組元素
10.3.4 通過建立行指針來引用二維數組元素
10.4 通過建立指針數組和一維數組來構造二維數組
10.5 二維數組名和指針數組作為實參
10.5.1 二維數組名作為實參
10.5.2 指針數組作為實參
10.6 二維數組應用舉例(二)
習題
第11章 字元串
11.1 用一維字元數組來存放字元串
11.1.1 通過賦初值的方式給一維字元數組賦字元串
11.1.2 在 C 程序執行過程中給一維字元數組賦字元串
11.2 使用指針指向一個字元串
11.2.1 通過賦初值的方式使指針指向字元串
11.2.2 通過賦值運算使指針指向字元串
11.2.3 用字元數組作為字元串和用指針指向的字元串之間的區別
11.3 字元串的輸入和輸出
11.3.1 輸入和輸出字元串時的必要條件
11.3.2 逐個字元輸入和輸出
11.3.3 用格式說明符「%s」進行整串輸入和輸出
11.3.4 調用 gets和puts 函數在終端按行輸入輸出字元
11.4 字元串數組
11.5 用於字元串處理的函數
11.6 程序舉例
習題
第12章 對函數的進一步討論
12.1 傳給 main () 函數的參數
12.2 通過實參向函數傳遞函數名或指向函數的指針
12.3 函數的遞歸調用
習題
第13章 C語言中用戶標識符的作用域和存儲類
13.1 內部變數、外部變數和存儲分類
13.1.1 用戶標識符的作用域
13.1.2 內部變數、外部變數和存儲分類
13.2 內部變數及其作用域和生存期
13.2.1 auto 變數
13.2.2 register 變數
13.2.3 靜態存儲類的內部變數
13.3 外部變數及其作用域和生存期
13.3.1 外部變數的作用域和生存期
13.3.2 在同一編譯單位內使用extern說明符
13.3.3 在不同編譯單位內使用extern說明符
13.3.4 靜態外部變數
13.4 函數的存儲分類
13.4.1 用 extern 說明函數
13.4.2 用 static 說明函數
13.5 在 Turbo C 集成環境下連接多個編譯單位的方法
習題S
第14章 編譯預處理
14.1 宏替換S
14.1.1 不帶參數的宏定義
14.1.2 帶參數的宏定義
14.1.3 終止宏定義
14.2 文件包含
14.3 條件編譯
14.4 #line 行
習題
第15章 動態存儲分配
15.1 malloc 函數和 free 函數
15.2 calloc 函數
15.3 realloc 函數
習題
第16章 結構體類型和用戶定義類型
16.1 用 typedef 說明一種新類型名
16.2 結構體類型
16.3 結構體類型的說明
16.4 結構體類型的變數、數組和指針的定義
16.5 給結構體變數、數組賦初值
16.6 引用結構體類型變數中的數據
16.7 通過結構體組成較復雜的存儲結構
16.8 函數之間結構體變數的數據傳遞
16.8.1 向函數傳遞結構體變數的成員
16.8.2 向函數傳遞結構體變數
16.8.3 傳遞結構體的地址
16.8.4 函數值為結構體類型
16.8.5 函數的返回值可以是指向結構體變數的指針類型
16.9 利用結構體變數構成鏈表
16.9.1 結構體中含有可以指向本結構體的指針成員
16.9.2 動態鏈表的概念
16.9.3 單向鏈表
16.9.4 單向環形鏈表
16.9.5 雙向鏈表
習題
第17章 C 語言中的整型數和整型變數
17.1 十進制數和二、八、十六進制數之間的轉換
17.1.1 十進制數和二進制數之間的轉換
17.1.2 十進制數和八進制數之間的轉換
17.1.3 十進制數和十六進制數之間的轉換
17.1.4 二進制數與八進制數、十六進制數間的轉換
17.2 整數在內存中的存儲形式
17.2.1 正整數
17.2.2 負整數
17.2.3 無符號整數
17.3 C 語言中的整數類型
17.4 C 語言中的整數類型之間的轉換
習題
第18章 共用體、位段結構和枚舉類型
18.1 共用體
18.1.1 共用體類型的說明和變數定義
18.1.2 共用體變數的引用
18.1.3 共用體應用舉例
18.2 位段結構
18.3 枚舉類型
習題
第19章 位運算
19.1 位運算符和位運算
19.1.1 位運算符
19.1.2 位運算符的運算功能
19.2 位運算的簡單應用
習題
第20章 在終端上按格式進行數據的輸入和輸出
20.1 調用 printf() 在終端上按格式進行數據的輸出
20.1.1 printf() 函數的一般調用形式
20.1.2 printf () 函數中常用的格式說明
20.1.3 調用 printf (函數時的注意事項
20.2 調用 scanf() 在終端上按格式進行數據的輸入
20.2.1 scanf() 函數的一般調用形式
20.2.2 scanf () 函數中常用的格式說明
20.2.3 通過 scanf 函數從鍵盤輸入數據
習題
第21章 文件
21.1 文件的概念
21.2 文件指針
21.3 打開文件
21.4 關閉文件
21.5 getc(fgetc)函數和putc(fputc)函數
21.6 判文件結束函數 feof
21.7 fscanf 函數和fprintf函數
21.8 fgets函數和fputs函數
21.9 fread函數和fwrite函數
21.10 文件定位函數
21.10.1 fseek函數
21.10.2 ftell函數
21.10.3 rewind 函數
習題附錄
附錄A C 語言的關鍵字
附錄B 雙目算術運算中兩邊運算量類型轉換規律
附錄C 運算符的優先順序和結合性
附錄D 常用字元與 ASC Ⅱ代碼對照表
附錄E Turbo C 2.0 常用庫函數
附錄F 簡單的上機操作和程序的調試
參考文獻
張長海 陳娟 編

❸ 歷史上最權威最經典的關於C語言的書是哪本

C程序設計之四書五經

自從Dennis M.Ritchie於1973年設計並實現C語言以來,計算機程序設計領域已經發生了巨大的變化。以C語言為根基的C++、Java和C#等面向對象語言相繼誕生,並在各自領域大獲成功。今天,C及其後裔幾乎統治了計算機程序設計世界。可以這么說,C語言的誕生是現代程序語言革命的起點,它改變了程序設計語言發展的軌跡,是程序設計語言發展史中的一個里程碑。

然而,C並不僅僅是其他語言的起點和基礎,否則它早已成為程序設計語言發展過程中又一個被遺棄者。和當初發明時一樣,C語言今天依然至關重要。它的表達力、效率、簡練、緊湊、對機器的最終控制以及跨平台的高度移植性,使其在系統編程、嵌入式編程等領域一直占據著統治地位,而C99標準的制訂則再一次使C語言煥發出新的活力。下文介紹C程序設計領域中的幾本好書,其中一些堪稱經典。

1. Brian W.Kernighan, Dennis M.Ritchie,《C程序設計語言》,機械工業出版社

這是迄今為止在所有程序設計語言書籍中最廣受尊敬的一部經典,是任何一名C程序員的必讀之作。因為出自C語言的設計者Dennis M.Ritchie和著名的計算機科學家Brian W.Kernighan之手,它被昵稱為「K&R C」。是它首先引入了「Hello World!」程序,這個程序幾乎成了後來任何一本入門性程序設計語言書籍中的第一個例子。

如同C語言本身簡潔緊湊而極具威力一樣,這本書輕薄短小而極富張力。通過簡潔的描述和典型的示例,它全面、系統、准確地講述了C語言的各個特性以及C程序設計的基本方法,內容涵蓋基本概念、類型和表達式、控制流、函數與程序結構、指針與數組、結構、輸入與輸出、UNIX系統介面以及標准庫等內容。

簡潔清晰是這本書最大的特色。這本小書可以教給你許多比它厚幾倍的「大部頭」的知識。我認為那些動輒洋洋灑灑拼湊出好幾百頁乃至上千頁的技術作者應該好好向K&R學一學。對於中、高級程序員而言,如果希望迅速獲得C語言的嚴肅知識而又不願意多花費哪怕一丁點時間,這本書就是首選。

順便說一句,這本書的索引製作非常出色,極具實用價值,這可能首先要歸功於正文部分的簡明扼要。此外,盡管它看上去很像一本教程,但其實更是一本寫給專業程序員的指南。如果你不具備任何其他語言程序設計背景或基本的C語言知識,這本書也許並不適合用作你的C語言啟蒙讀物。

2. Perter Van Der LinDen,《C專家編程》,人民郵電出版社

C語言是嚴肅的程序員語言,但這並不意味著C語言書籍必須板著面孔說教。在這本被C程序員昵稱為「魚書」(封面上有一條「醜陋的」腔棘魚)的著作中,作為SUN公司編譯器和操作系統核心開發組成員之一,Peter淋漓盡致地展示了其深厚的技術沉澱、豐富的項目經驗、高超的寫作技巧以及招牌式的幽默。在這部作品中,作者以流暢的文字、詼諧的筆法將逸聞典故、智慧和幽默自然地融入技術描述中,讀來宛若一本小說,極富趣味。

本書講述了C語言的歷史、語言特性、聲明、數組、指針、連接、運行時以及內存使用等知識,揭示了C語言中許多隱晦之處,尤其深入解析了聲明、數組和指針、內存使用等方面的細節。要想成為一名專家級C程序員,這些內容都是必須掌握的。和其他滿是抽象例子的C語言書籍不同,這本書充滿了大量的來自真實世界的C程序設計實例,它們對C程序員具有很高的參照價值。另外,每一章都以極富趣味的「輕松一下」收尾,而附錄A「程序員工作面試的秘密」則是任何語言的程序員在應聘工作前增強自信的好材料。

我懷疑真正的C專家可能用不著看這本書 — 從內容到組織方式到行文風格都決定了這是一本輕松愉快的「從菜鳥到高手」的進階讀本,所以,它理應擁有更廣泛的讀者群。初級程序員往往更需要熱情的鼓勵,在閱讀這本書的過程中,你定會深深地被作者對編程的激情所感染。

世間並無完美。我認為這本書的缺陷在於,和大多數平庸的C語言書籍一樣,它畫蛇添足地加入了一章關於C++的描述。在今天看來,這個描述既不全面也有失公允。不過,鑒於作者是在1994年從一名C程序員的角度去觀察C++,這一點也就不足為奇了。

3. Samuel P. Harbison, Guy L. Steele,《C語言參考手冊(第五版)》(影印版),人民郵電出版社

在C語言參考手冊類書籍里,Samuel P. Harbison 和Guy L. Steele合著的《C: A Reference Manual》是非常出色的一本。這本手冊的第五版新增了對C99標準的介紹,以便滿足新時期C語言學習的需要。全書共分為兩大部分,第一部分專注於C語言特性,第二部分則全面討論了C標准庫。本書涵蓋C99、C89、傳統的C、所有版本的C運行庫以及編寫與C++兼容的C代碼等一切知識。

這本手冊只是中等厚度,但它比「比它更厚」的其他參考手冊更清晰地描述了C語言的現在和過去的方方面面。整本手冊技術細節描述精確,組織條理清楚,內容完備詳盡而又簡明扼要。可以這么說,它在廣度、深度和精度方面都是出類拔萃的。對於中、高級C程序員而言,這本手冊值得常備案頭,它幾乎肯定要比K&R的著作使用頻率更高。

2004年2月1日補充:我手頭有這本書的中文版:《C語言參考手冊》(機械工業出版社出版)。它在很大程度上減輕了我的查閱負擔,不過偶爾也增加了理解上的困難。

4. David Hanson,《C語言介面與實現:創建可重用軟體的技術》,機械工業出版社

C語言能夠歷經三十多年而不衰,一個重要的原因在於它的適應能力。在這「復用」、「面向對象」、「組件」、「異常處理」等先進機制漫天飛舞的年代,C語言仍然能夠憑借它小而優雅的語言特性,在相當程度上滿足現代軟體體系架構提出的要求。只不過,想要達到這個程度,必須要在C的應用功力上達到最高層次。在嵌入式、系統軟體以及對性能要求極高的系統開發中,開發人員必須達到這樣的層次,熟練掌握C語言的高級特性,才能夠同時滿足效率和靈活性、復用性的要求。可惜,雖然C語言技術圖書汗牛充棟,但是關注這個峰頂之域的作品卻是屈指可數。David Hanson的《C Interfaces and Implementations》就是個中翹楚。

David Hanson是業內大名鼎鼎的自由編譯器lcc的合作者。在這個項目中,他負責提供高度可復用的基礎架構。在不斷的實踐中,他完全使用ANSI C形成了一整套可復用組件庫。這套組件庫架構清晰,性能優異,而且提供了很多高級的特性,比如類Win32 SEH的異常處理機制,可移植的線程庫,高性能的內存池,豐富的可復用數據結構組件。David Hanson把他在創作這些組件的過程中所積累的心得以及對其源碼的精緻剖析原原本本地寫在了這本書里。這樣的著作,當然堪稱C語言領域里的銘心絕品。難怪已故著名技術作家Richard Stevens對此書贊不絕口,他說:「這本書中的技術,對於大部分C程序員來說,已經遺忘得太久了。」對於希望能在C語言應用上達到最高層次的核心程序員而言,這本書是難得的必讀之作。

其他

除了以上四本書以外,我還樂意推薦Andrew Koenig的著作《C陷阱和缺陷》(人民郵電出版社)和Deitel父子合著的《C How to Program》兩本書。

Andrew Koenig是世界上屈指可數的C++專家,他的這本書可能是最薄的一本C語言經典。它簡明扼要地講述了C程序設計中的陷阱和缺陷,包括詞法陷阱、語法陷阱、語義陷阱、連接、庫函數、預處理器以及可移植性缺陷等,最後一章還給出了關於如何減少程序錯誤的建議以及前面各章問題的參考答案。盡管這個小冊子成書於C89標准制定之前,然而,即使到了C99早已頒布的今天,書中提到的大多數陷阱和缺陷一如十五年前那樣使我們警醒。

Deitel父子合著的《C How to Program》一直是非常好的C語言入門教程,我手頭的中譯本名為《C程序設計教程》(機械工業出版社出版,原書第二版)。除了對技術的正規描述(輔以許多簡明扼要的例子)外,每一章後面都帶有小結、術語、常見的程序設計錯誤、良好的程序設計習慣、性能忠告、可移植性忠告、軟體工程評述、自我測驗練習及答案等。整書內容清晰,組織良好,易於閱讀和理解。值得一提的是,有許多入門書讀完一遍即可扔掉,而這一本是個例外。

結語

以上這幾本書很大程度上局限於描述C語言及標准庫本身,如果希望學習更專業的、領域相關的C程序設計技術,你可以在選擇閱讀這幾本書的基礎上繼續查閱專門書籍。此外,在C語言書籍領域,水平不相上下的作品有很多,這幾本只是根據我自身的閱讀體驗而做出的推薦。

我並不是一名C程序員,我的大多數時間都花在C的後裔語言尤其是C++身上了。然而,正如你知道的那樣,C++並不全是類和模板,不全是面向對象和泛型編程,在較低的層面,C++的各個實現一如既往在很大程度上兼容C。C++和C的親密關系決定了每一本C語言經典都應該是C++程序員的讀物。

這世界變化得真是太快。各色新事物層出不窮,讓人眼花繚亂、目不暇接。人們也很容易被那些五光十色的花哨玩意兒所吸引,常常會忘記構築過去、現在和未來的堅實基礎。C語言就是這樣的基礎之一。今天,世界上有許多我們看不見的重要軟體是用C語言(以及C++等)編寫而成的,正是它們在默默地支撐著這個信息世界的運轉。

❹ C語言設計程序

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#define SIZE 3 /*定義常量SIZE便於以後的修改*/

struct student /*定義一個結構體數組存放學生的信息*/

{

int number; /*學號*/

char name[20];/*名字*/

char xueyuan[20];/*學院*/

int cla;/*班級*/

int score[3];/*分數*/

int sum;/*總分*/

int average;/*平均分*/

}stu[SIZE];

void menu();/*調用菜單函數*/

void write();/*讀入信息*/

void save(int x);/*保存stud.dat文件函數*/

void SaveOneStudent(int i);/*保存一個學生信息*/

void SaveAllStudent(int n);/*保存全部學生信息*/

void inturn (struct student c[]);/*用於對學生的信息按學號排序的函數*/

void save2();/*將排序後的信息存入student.dat文件中*/

int AddStudent(int n);/*增加學生信息*/

void InputOnestudent(int i);/*輸入一個同學信息*/

int DelStudent(int n);/*刪除學生信息*/

void ModifyStudent(int n);/*修改學生信息*/

void OutputOneStudent(int i);/*查詢一個學生信息*/

void SearchMenu(int n);/*查詢學生信息操作*/

void SearchNumber(int n);/*按學號查詢學生信息*/

void SearchName(int n);/*按姓名查詢學生信息*/

void SearchXueyuan(int n);/*按所在學院查詢學生信息*/

void SearchCla(int n);/*按所在班級查詢學生信息*/

void tongji();/*學生信息統計操作*/

void tongji2();/*統計不及格率操作*/

void zfsc();/*總分排序操作*/

void avecz();/*按平均分統計人數操作*/

void avecz();/*按平均分統計人數操作*/

void search();/*查找最高成績操作*/

void tongji2();/*統計不及格率操作*/

void read();/*讀取student.dat文件文件中學生的信息*/

/*主函數************************************************************************************/

void main()

{

int n=SIZE;

int choice;/*用戶選擇變數*/

printf("*******************************************************************************\n");

printf("* *\n");

printf("* Hwadee &學生成績文件管理& Hwadee *\n");

printf("* *\n");

printf("*******************************************************************************\n\n\n");

printf("******************************●●歡迎使用●●*********************************");

while (1)

{

menu();/*調用菜單函數形成操作界面*/

printf("請選擇:");

scanf("%d", &choice);

if ( choice==0 )

{

printf("\t\t\t\t謝謝使用!!!");

break;

}

switch(choice) /*多重選擇實現功能不同的功能*/

{

case 1:

write();

inturn(stu);

save(SIZE);

break;

case 2:

AddStudent(n);

break;

case 3:

DelStudent(n);

break;

case 4:

ModifyStudent(n);

break;

case 5:

SearchMenu(n);

break;

case 6:

tongji();

break;

case 0:

printf("\n謝謝使用!再見!\n");

default:

printf("\n按鍵錯誤!請重新選擇!\n");

}/*結束switch*/

}/*結束while*/

}

部分程序清單

/*菜單函數*************************************************************************************/

void menu()

{

printf("************請輸入所需操作***********\n");/*選擇功能菜單*/

printf("*************************************\n");

printf("1.學生成績寫入及排序\n");

printf("2.增加學生信息\n");

printf("3.刪除學生信息\n");

printf("4.修改學生信息\n");

printf("5.查詢學生信息\n");

printf("6.學生成績統計操作\n");

printf("0.退出系統\n");

printf("**************************************\n");

}

/*寫入函數*************************************************************************************/

void write()

{

int i;/*計數變數*/

for(i=0;i<SIZE;i++)

{

printf("學號:");

scanf("%d",&stu[i].number);

printf("姓名:");

scanf("%s",&stu[i].number);

printf("學院:");

scanf("%s",&stu[i].xueyuan);

printf("班級:");

scanf("%d",&stu[i].cla);

printf("高數:");

scanf("%d",&stu[i].score[0]);

printf("英語:");

scanf("%d",&stu[i].score[1]);

printf("C語言:");

scanf("%d",&stu[i].score[2]);

stu[i].sum=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2]);/*計算總成績*/

printf("總成績:%d",stu[i].sum);

stu[i].average=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3;/*計算平均成績*/

printf("平均成績:%d\n",stu[i].average);

}

}

/*排序函數**************************************************************************************/

void inturn(struct student m[])

{

int i,j;/*計數變數*/

struct student temp;/*中間變數 類型為結構體*/

for(i=0;i<SIZE-1;i++) /*運用冒泡排序對結構體數組進行排序*/

for (j=i+1;j<SIZE-i-1;j++)

{

if(m[i].number>m[j].number)

{

temp=m[i];

m[i]=m[j];

m[j]=temp;

}

}

printf("\n排序後的學生信息:\n\n");

for (i=0;i<SIZE;i++)

{

printf("學號%d\t姓名%s\t學院%s\t班級%d\t高數%d\t英語%d\tC語言%d\t總成績%d\t平均成績%d\n\n",i+1,stu[i].number,stu[i].name,stu[i].xueyuan,stu[i].cla,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum,stu[i].average);

}/*輸出排序後的學生信息*/

}

/*寫入文件*************************************************************************************/

void save(int x)

{

FILE *fp;/*定義文件指針用於向文件讀入數據*/

int i;

if((fp=fopen("student.dat","rb+"))==NULL)/*以二進制讀,寫方式打開文件*/

{

printf("cannot open file\n");

exit(1);

}

附上出處鏈接:http://www.51hei.com/mcu/3212.html

❺ C語言程序設計

#include <stdio.h>
main()
{ int select,s1,s2;
int sum;
while (1) /*菜單循環顯示和功能循環處理*/
{ printf("\n 歡迎使用簡單計算系統!\n\n");/*菜單顯示*/
printf("* * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf("* 請選擇查詢對象: *\n");
printf("* 1.加 *\n");
printf("* 2.減 *\n");
printf("* 3.乘 *\n");
printf("* 4.除 *\n");
printf("* 5.謝謝使用,退出本系統! *\n");
INPUT:
printf("* * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf(" 請選擇功能號1—5: ");
scanf("%d",&select);
s1=0;s2=0;
if(select==5) /*退出系統*/
break;
if(select>=6||select<=0) /*輸入功能號有誤處理*/
{ printf("* * * 輸入有誤,請重新功能號1-5:* * *\n");
goto INPUT;
}
//aver=0;
switch(select)
{ case 1: /*+功能*/
printf("兩位數據\n");
scanf("%d%d",&s1,&s2);
sum=s1+s2;
printf("兩數之和%d\n",sum);
break;
case 2: /*-功能*/
printf("兩位數據\n");
scanf("%d%d",&s1,&s2);
sum=s1-s2;
printf("兩數之差%d\n",sum);
break;
case 3: /**功能*/
printf("兩位數據\n");
scanf("%d%d",&s1,&s2);
sum=s1*s2;
printf("兩數之積%d\n",sum);
break;
case 4: /*/功能*/
printf("兩位數據\n");
scanf("%d%d",&s1,&s2);
sum=s1/s2;
printf("兩數之商%d\n",sum);

break;
default:break; } } }
給你個大致框架然後你自己添加語句。。。自己動手好了

❻ 學習C語言 必看的書籍

給C++初學者的50個忠告
1.把C++當成一門新的語言學習(和C沒啥關系!真的。);
2.看《Thinking In C++》,不要看《C++變成死相》;
3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因為他們很難而我們自己是初學者所以就不看;
4.不要被VC、BCB、BC、MC、TC等詞彙所迷惑——他們都是集成開發環境,而我們要學的是一門語言;
5.不要放過任何一個看上去很簡單的小編程問題——他們往往並不那麼簡單,或者可以引伸出很多知識點;
6.會用Visual C++,並不說明你會C++;
7.學class並不難,template、STL、generic programming也不過如此——難的是長期堅持實踐和不遺餘力的博覽群書;
8.如果不是天才的話,想學編程就不要想玩游戲——你以為你做到了,其實你的C++水平並沒有和你通關的能力一起變高——其實可以時刻記住:學C++是為了編游戲的;
9.看Visual C++的書,是學不了C++語言的;
10.浮躁的人容易說:XX語言不行了,應該學YY;——是你自己不行了吧!?
11.浮躁的人容易問:我到底該學什麼;——別問,學就對了;
12.浮躁的人容易問:XX有錢途嗎;——建議你去搶銀行;
13.浮躁的人容易說:我要中文版!我英文不行!——不行?學呀!
14.浮躁的人容易問:XX和YY哪個好;——告訴你吧,都好——只要你學就行;
15.浮躁的人分兩種:a)只觀望而不學的人;b)只學而不堅持的人;
16.把時髦的技術掛在嘴邊,還不如把過時的技術記在心裡;
17.C++不僅僅是支持面向對象的程序設計語言;
18.學習編程最好的方法之一就是閱讀源代碼;
19.在任何時刻都不要認為自己手中的書已經足夠了;
20.請閱讀《The Standard C++ Bible》(中文版:標准C++寶典),掌握C++標准;
21.看得懂的書,請仔細看;看不懂的書,請硬著頭皮看;
22.別指望看第一遍書就能記住和掌握什麼——請看第二遍、第三遍;
23.請看《Effective C++》和《More Effective C++》以及《Exceptional C++》;
24.不要停留在集成開發環境的搖籃上,要學會控制集成開發環境,還要學會用命令行方式處理程序;
25.和別人一起討論有意義的C++知識點,而不是爭吵XX行不行或者YY與ZZ哪個好;
26.請看《程序設計實踐》,並嚴格的按照其要求去做;
27.不要因為C和C++中有一些語法和關鍵字看上去相同,就認為它們的意義和作用完全一樣;
28.C++絕不是所謂的C的「擴充」——如果C++一開始就起名叫Z語言,你一定不會把C和Z語言聯系得那麼緊密;
29.請不要認為學過XX語言再改學C++會有什麼問題——你只不過又在學一門全新的語言而已;
30.讀完了《Inside The C++ Object Model》以後再來認定自己是不是已經學會了C++;
31.學習編程的秘訣是:編程,編程,再編程;
32.請留意下列書籍:《C++面向對象高效編程(C++ Effective Object-Oriented Software Construction)》《面向對象軟體構造(Object-Oriented Software Construction)》《設計模式(Design Patterns)》《The Art of Computer Programming》;
33.記住:面向對象技術不只是C++專有的;
34.請把書上的程序例子親手輸入到電腦上實踐,即使配套光碟中有源代碼;
35.把在書中看到的有意義的例子擴充;
36.請重視C++中的異常處理技術,並將其切實的運用到自己的程序中;
37.經常回顧自己以前寫過的程序,並嘗試重寫,把自己學到的新知識運用進去;
38.不要漏掉書中任何一個練習題——請全部做完並記錄下解題思路;
39.C++語言和C++的集成開發環境要同時學習和掌握;
40.既然決定了學C++,就請堅持學下去,因為學習程序設計語言的目的是掌握程序設計技術,而程序設計技術是跨語言的;
41.就讓C++語言的各種平台和開發環境去激烈的競爭吧,我們要以學習C++語言本身為主;
42.當你寫C++程序寫到一半卻發現自己用的方法很拙劣時,請不要馬上停手;請盡快將餘下的部分粗略的完成以保證這個設計的完整性,然後分析自己的錯誤並重新設計和編寫(參見43);
43.別心急,設計C++的class確實不容易;自己程序中的class和自己的class設計水平是在不斷的編程實踐中完善和發展的;
44.決不要因為程序「很小」就不遵循某些你不熟練的規則——好習慣是培養出來的,而不是一次記住的;
45.每學到一個C++難點的時候,嘗試著對別人講解這個知識點並讓他理解——你能講清楚才說明你真的理解了;
46.記錄下在和別人交流時發現的自己忽視或不理解的知識點;
47.請不斷的對自己寫的程序提出更高的要求,哪怕你的程序版本號會變成Version 100.XX;
48.保存好你寫過的所有的程序——那是你最好的積累之一;
49.請不要做浮躁的人;
50.請熱愛C++!

建議你買本書,書比網上的電子版教程好的多,如計算機屆超級權威教授 譚浩強 老先生寫的《C語言程序設計(第三版)》,全國發行了700萬冊,可以說是學C語言的人必看的書,我們大學就用這本書,很適合自學,通俗易懂

建議你學習其它計算機知識時也看他的書,他出的書很多,涵蓋面廣,每一本都很經典

這里有他的教程word版下載

另外,機械工業出版社的 計算機叢書系列也相當經典,全是翻譯國外經典教材,國外計算機發展早,水平比國內高很多,看這些教材事半功倍,推薦(美)Al Kelley Ira Pohl的《C語言教程第4版》

學習程序語言要持之以恆,不浮躁,祝你成功!

❼ c語言程序設計實例

// 電話本Dlg.cpp : 實現文件
//

#include stdafx.h
#include 電話本.h
#include 電話本Dlg.h

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

// C電話本Dlg 對話框

C電話本Dlg::C電話本Dlg(CWnd* pParent /*=NULL*/)
: CDialog(C電話本Dlg::IDD, pParent)
{
m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);
}

void C電話本Dlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(C電話本Dlg, CDialog)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_EN_CHANGE(IDC_EDIT1, C電話本Dlg::OnName)
ON_EN_CHANGE(IDC_EDIT2, C電話本Dlg::OnPhoto)
ON_EN_CHANGE(IDC_EDIT3, C電話本Dlg::OnAddress)
ON_EN_CHANGE(IDC_EDIT4, C電話本Dlg::OnShow)
ON_BN_CLICKED(IDC_BUTTON1, C電話本Dlg::OnFill)
ON_BN_CLICKED(IDC_BUTTON2, C電話本Dlg::OnInsert)
ON_BN_CLICKED(IDC_BUTTON3, C電話本Dlg::OnFind)
ON_BN_CLICKED(IDC_BUTTON4, C電話本Dlg::OnDelete)
ON_BN_CLICKED(IDC_BUTTON5, C電話本Dlg::OnEdit)
ON_BN_CLICKED(IDC_BUTTON7, C電話本Dlg::OnSave)
END_MESSAGE_MAP()

// C電話本Dlg 消息處理程序

BOOL C電話本Dlg::OnInitDialog()
{
CDialog::OnInitDialog();

// 設置此對話框的圖標。當應用程序主窗口不是對話框時,框架將自動
// 執行此操作
SetIcon(m_hIcon, TRUE); // 設置大圖標
SetIcon(m_hIcon, FALSE); // 設置小圖標

// TODO: 在此添加額外的初始化代碼
ifstream InFile(Wab.fsd,ios::in);
listWabList::iterator ItWab;
char Tmp1[8],Tmp2[16],Tmp3[32];
Wab.clear();
while(InFile Tmp1 Tmp2 Tmp3)
{
OutWab.Name=Tmp1;
OutWab.Photo=Tmp2;
OutWab.Address=Tmp3;
Wab.push_front(OutWab);
}
C電話本Dlg::OnFill();

return TRUE; // 除非將焦點設置到控制項,否則返回 TRUE
}

// 如果向對話框添加最小化按鈕,則需要下面的代碼
// 來繪制該圖標。對於使用文檔/視圖模型的 MFC 應用程序,
// 這將由框架自動完成。

void C電話本Dlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用於繪制的設備上下文

SendMessage(WM_ICONERASEBKGND, reinterpret_castWPARAM(dc.GetSafeHdc()), 0);

// 使圖標在工作矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(rect);
int x = (rect.Width() - cxIcon 1) / 2;
int y = (rect.Height() - cyIcon 1) / 2;

// 繪制圖標
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}

//當用戶拖動最小化窗口時系統調用此函數取得游標顯示。
//
HCURSOR C電話本Dlg::OnQueryDragIcon()
{
return static_castHCURSOR(m_hIcon);
}

void C電話本Dlg::OnName()
{
CEdit *pMaxLen=(CEdit*)GetDlgItem(IDC_EDIT1);
pMaxLen-SetLimitText(6);
GetDlgItemText(IDC_EDIT1,InWab.Name);
}

void C電話本Dlg::OnPhoto()
{
CEdit *pMaxLen=(CEdit*)GetDlgItem(IDC_EDIT2);
pMaxLen-SetLimitText(11);
GetDlgItemText(IDC_EDIT2,InWab.Photo);
}

void C電話本Dlg::OnAddress()
{
CEdit *pMaxLen=(CEdit*)GetDlgItem(IDC_EDIT3);
pMaxLen-SetLimitText(30);
GetDlgItemText(IDC_EDIT3,InWab.Address);
}

void C電話本Dlg::OnShow()
{
// TODO: 如果該控制項是 RICHEDIT 控制項,則它將不會
// 發送該通知,除非重寫 CDialog::OnInitDialog()
// 函數並調用 CRichEditCtrl().SetEventMask(),
// 同時將 ENM_CHANGE 標志「或」運算到掩碼中。

// TODO: 在此添加控制項通知處理程序代碼
}

void C電話本Dlg::OnFill()
{
CString OutAll,OutTemp,Space,Enter;
Space=_T( );
Enter=_T(\r\n);
listWabList::iterator ItWab;
for(ItWab=Wab.begin();ItWab!=Wab.end();ItWab )
{
OutWab=*ItWab;
OutTemp=OutWab.Name Space OutWab.Photo Space OutWab.Address;
OutAll=OutAll OutTemp Enter;
}
SetDlgItemText(IDC_EDIT4,OutAll);
}

void C電話本Dlg::OnInsert()
{
Wab.push_front(InWab);
C電話本Dlg::OnFill();
}

void C電話本Dlg::OnFind()
{
CString OutAll,OutTemp,Space,Enter;
Space=_T( );
Enter=_T(\r\n);
listWabList::iterator ItWab;
for(ItWab=Wab.begin();ItWab!=Wab.end();ItWab )
{
if(ItWab-Name==InWab.Name)
{
OutTemp=ItWab-Name Space ItWab-Photo Space ItWab-Address;
OutAll=OutAll OutTemp Enter;
}
}
SetDlgItemText(IDC_EDIT4,OutAll);
}

void C電話本Dlg::OnDelete()
{
CString OutAll,OutTemp,Space,Enter;
Space=_T( );
Enter=_T(\r\n);
listWabList::iterator ItWab;
for(ItWab=Wab.begin();ItWab!=Wab.end();ItWab )
{
if(ItWab-Name==InWab.Name)
{
OutTemp=ItWab-Name Space ItWab-Photo Space ItWab-Address;
OutAll=OutAll OutTemp Enter;
break;
}
}
SetDlgItemText(IDC_EDIT4,OutAll);
if(ItWab!=Wab.end()) Wab.erase(ItWab);
}

void C電話本Dlg::OnEdit()
{
CString OutAll,OutTemp,Space,Enter;
Space=_T( );
Enter=_T(\r\n);
listWabList::iterator ItWab;
for(ItWab=Wab.begin();ItWab!=Wab.end();ItWab )
{
if(ItWab-Name==InWab.Name)
{
OutTemp=ItWab-Name Space ItWab-Photo Space ItWab-Address;
OutAll=OutAll OutTemp Enter;
break;
}
}
SetDlgItemText(IDC_EDIT4,OutAll);
if(ItWab!=Wab.end())
{
Wab.erase(ItWab);
Wab.push_front(InWab);
}
}

void C電話本Dlg::OnSave()
{
CString Tmp1,Tmp2,Tmp3;
ofstream OutFile(Wab.fsd,ios::out);
listWabList::iterator ItWab;
for(ItWab=Wab.begin();ItWab!=Wab.end();ItWab )
{
Tmp1=ItWab-Name;
Tmp2=ItWab-Photo;
Tmp3=ItWab-Address;
OutFile Tmp1 ' ' Tmp2 ' ' Tmp3 endl;
}
}
只是個用C語言編寫的電話本程序 很有實用意義