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

c語言程序設計第63講

發布時間: 2022-08-27 10:49:43

1. c語言程序設計,高手請進!

我對題目的理解:
單詞首地址:單詞首字母下標
假設單詞只由英文字母和阿拉伯數字組成

先在x.txt中輸入字元串:
例如:
ajfljfljalf afjalfjlaf ,.. afjadfiw
adfkdsf
afddfj d f e fa d g afafadf

結果:
0 14 30 39 47 54 56 58 60 63 65 68
total:12

/*
題目: 記錄句中單詞的首地址
要求:在x.txt文件中給出10個字元串(10個句子),用程序讀入,找出每個單詞的首地址,同時計算單詞個數,輸出到屏幕上後,再
輸出到x1.txt文件中。
*/
#include<stdio.h>
#include<stdlib.h>
char Buffer[2000]; //在字元串不大的情況下沒問題
void ReadFile()
{
int i;
char ch;
FILE *fp;
fp=fopen("x.txt","r");
if(!fp)
{
printf("Can not open the file!\n");
exit(0);
}

for(i=0;(ch=fgetc(fp))!=EOF;i++)
Buffer[i]=ch;
Buffer[i]='\0';

fclose(fp);
return ;
}
int IsStr(char ch)
{
if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')||(ch>='0'&&ch<='9')) return 1;
else return 0;
}
void CreateFile()
{
int i=0,count=0;
char ch;
FILE *fp2;
fp2=fopen("x1.txt","w");
if(!fp2)
{
printf("Can not open the file!\n");
exit(0);
}
while(Buffer[i]!='\0')
{
if(IsStr(Buffer[i]))
{
fprintf(fp2,"%d\t",i);
count++;
for(;IsStr(Buffer[i]);i++);
}
i++;
}
fprintf(fp2,"\ntotal:%d\n",count);
fclose(fp2);
return ;
}
int main()
{
ReadFile();
CreateFile();
printf("哈哈,去看看你的x1.txt吧!\n");
return 0;
}

2. C語言程序設計學習輔導的C語言程序設計學習輔導(第2版)

作者:譚浩強
出版社: 清華大學出版社; 第2版 (2009年1月1日)叢書名: 普通高等教育「十一五」國家級規劃教材,高等院校計算機應用技術規劃教材·應用型教材系列
平裝: 233頁
正文語種: 漢語
開本: 16
ISBN: 9787302189893
條形碼: 9787302189893
產品尺寸及重量: 25.6 x 18.2 x 1.2 cm ; 381 g 《C語言程序設計學習輔導(第2版)》的特點:
堅持面向應用的方向,以應用為中心構建課程體系。
准確定位,合理取捨內容,切合實際需要。
採用「提出問題-解決問題-歸納分析」的新的教學三部曲。
寫法通俗易懂,易於理解,便於教學,容易入門。
品種豐富,涵蓋面廣。包括必修課教材、選修課教材、教學輔導書、實訓教材、參考書等。
著名計算機教育家譚浩強教授親自組織和指導.有經驗的專家和骨幹教師參與編寫,教材質量高。
叢書包含4個系列
基礎教材系列 涵蓋了計算機公共基礎課程的教材。
應用型教材系列 適合作為培養應用性人才的本科院校和基礎較好、要求較高的高職高專學校的主幹教材。
實用技術教材系列 針對應用型院校和高職高專院校所需掌握的技能技術編寫的教材。
實訓教材系列 應用型本科院校和高職高專院校都可以選用這類實訓教材。 譚浩強教授,我國著名計算機教育專家,計算機普及和高校計算機基礎教育開拓者之一,現任全國高校計算機基礎教育研究會會長。
他創造了3個世界紀錄:
(1)20年來他(及其合作者)共編著出版了140餘部計算機著作,此外主編了300多部計算機書籍,是出版科技著作數量最多的入。
(2)他編著和主編的書發行量近5000萬冊,是讀者最多的科技作家。
(3)他和別人合作編著的《BASIC語言》發行了1250萬冊,創科技書籍發行量的世界紀錄。他善於用讀者容易理解的方法和語言說明復雜的概念。許多人認為他「開創了計算機書籍貼近大眾的新風」,為我國的計算機普及事業做出了重要的貢獻。 進入21世紀,計算機成為人類常用的現代工具,每一個有文化的人都應當了解計算機,學會使用計算機來處理各種的事務。
學習計算機知識有兩種不同的方法:一種是側重理論知識的學習,從原理入手,注重理論和概念;另一種是側重於應用的學習,從實際入手,注重掌握其應用的方法和技能。不同的人應根據其具體情況選擇不同的學習方法。對多數人來說,計算機是作為一種工具來使用的,應當以應用為目的、以應用為出發點。對於應用性人才來說,顯然應當採用後一種學習方法,根據當前和今後的需要,選擇學習的內容,圍繞應用進行學習。 第一部分 《C語言程序設計(第2版)》中的習題和參考解答
第1章 C語言概述
第2章 數據的存儲與運算
第3章 最簡單的C程序設計——順序程序設計
第4章 選擇結構程序設計
第5章 循環結構程序設計
第6章 利用數組處理批量數據
第7章 利用函數實現模塊化程序設計
第8章 善於使用指針
第9章 使用結構體類型處理組合數據——用戶自定義數據類型
第10章 利用文件保存數據
第二部分 常見錯誤分析和程序調試
第11章 常見錯誤分析
第12章 程序的調試與測試
12.1 程序的調試
12.2 程序錯誤的類型
12.3 程序的測試
第三部分 C語言上機指南
第13章 Turbo C 2.0的上機操作
13.1 Turbo C的安裝
13.2 進入Turbo C
13.3 Turbo C的工作窗口
13.4 編輯一個新文件
13.5 編輯一個已存在的文件
13.6 改變用戶工作目錄
13.7 確立Turbo C工作環境
13.8 編譯和連接
13.9 運行
第14章 Turbo C++3.0的上機操作
14.1 進入Turbo C++3.0集成環境
14.2 C源文件的建立和程序的編輯
14.3 程序的編譯和連接
14.4 運行程序
14.5 退出Turbo C++3.0環境
14.6 對多文件程序進行編譯和連接
14.7 程序動態調試方法
第15章 Visual C++的上機操作
15.1 Visual C++的安裝和啟動
15.2 輸入和編輯源程序
15.3 編譯、連接和運行
15.4 建立和運行包含多個文件的程序的方法
第四部分 上機實驗安排
第16章 上機實驗的指導思想和要求
16.1 上機實驗的目的
16.2 上機實驗前的准備工作
16.3 上機實驗的步驟
16.4 實驗報告
16.5 實驗內容安排的原則
第17章 實驗安排
17.1 實驗1 C程序的運行環境和運行C程序的方法
17.2 實驗2 數據的存儲與運算
17.3 實驗3 最簡單的C程序設計——順序程序設計
17.4 實驗4 邏輯結構程序設計
17.5 實驗5 循環結構程序設計
17.6 實驗6 利用數組處理批量數據
17.7 實驗7 用函數實現模塊化程序設計(一)
17.8 實驗8 用函數實現模塊化程序設計(二)
17.9 實驗9 善於利用指針(一)
17.10 實驗10 善於利用指針(二)
17.11 實驗11 使用結構體類型處理組合數據
17.12 實驗12 文件操作
參考文獻

3. c語言程序設計的目錄

第1章程序設計基礎1
1.1程序設計的基本概念1
1.1.1程序1
1.1.2演算法與數據結構2
1.2程序設計的一般步驟6
1.3結構化程序設計方法7
小結7
習題18
第2章C語言概述9
2.1C語言的發展及其特點9
2.1.1C語言的發展簡史9
2.1.2C語言的特點9
2.2簡單的C程序介紹10
2.2.1簡單的C程序10
2.2.2C源程序的結構特點12
2.2.3C源程序的書寫規則12
2.3運行C語言程序的基本步驟13
小結13
習題214
第3章數據類型、運算符及表達式15
3.1C語言的數據類型15
3.2標識符與關鍵字16
3.3常量16
3.3.1整型常量17
3.3.2實型常量18
3.3.3字元型常量18
3.3.4字元串常量20
3.3.5符號常量22
3.4變數23
3.4.1變數的定義23
3.4.2變數的初始化25
3.5運算符及其表達式28
3.5.1算術運算符和算術表達式29
3.5.2賦值運算符和賦值表達式32
3.5.3關系運算符和關系表達式34
3.5.4邏輯運算符和邏輯表達式35
3.5.5條件運算符和條件表達式38
3.5.6逗號運算符和逗號表達式39
3.5.7位運算40
3.5.8指針運算符、sizeof運算符43
3.6運算符的優先順序和結合性43
3.7表達式中數據類型的轉換44
小結49
習題350
第4章結構化的C語言程序設計54
4.1結構化程序設計概述54
4.2順序結構程序設計54
4.2.1賦值語句、復合語句54
4.2.2字元輸出函數55
4.2.3字元輸入函數55
4.2.4格式化輸出函數56
4.2.5格式化輸入函數58
4.2.6順序結構程序設計舉例60
4.3選擇結構程序設計62
4.3.1簡單的if結構62
4.3.2if-else語句結構63
4.3.3if結構的嵌套64
4.3.4if-else-if語句結構65
4.3.5switch結構67
4.3.6選擇結構程序設計舉例68
4.4循環結構程序設計69
4.4.1goto語句69
4.4.2while語句69
4.4.3do-while 語句70
4.4.4for語句71
4.4.53種循環語句的比較73
4.4.6循環嵌套73
4.4.7break語句74
4.4.8continue語句74
4.4.9空語句75
4.4.10循環結構程序設計舉例75
小結77
習題478
第5章數組83
5.1一維數組的定義和引用83
5.1.1一維數組的定義83
5.1.2一維數組元素的引用85
5.1.3一維數組的初始化86
5.1.4一維數組程序舉例87
5.2二維數組90
5.2.1二維數組的定義90
5.2.2二維數組元素的引用91
5.2.3二維數組的初始化91
5.2.4二維數組程序舉例92
5.3字元數組96
5.3.1字元數組的定義96
5.3.2字元數組的初始化96
5.3.3字元數組的引用97
5.3.4字元串97
5.3.5字元串的輸入/輸出98
5.3.6字元串操作函數101
5.3.7字元數組應用舉例103
小結106
習題5106

4. 一道c語言最簡單的題,但我就是不會做!!

A是正確的,C語言的一個重要特點就是幾乎任何東西都是表達式,c=100也是個表達式,它的值就是100當然可以賦值給b
B也是正確的,雖然沒有使用返回值,但是b的值發生了變化。
C是錯誤的,因為c+b的返回值沒有使用,而且c和b都沒有變化
D是正確的,(c=22)的結果是22賦值給c,同時返回22,b++是把b+1賦值給b,同時返回b原來的值,兩者相減給d,允許的

5. c語言程序設計的張磊編著

書名:C語言程序設計(第3版)
作者:張磊編著
ISBN:978-7-302-273233
出版社:清華大學出版社
出版日期:2012-9
平裝:317頁
定價:34.5元 本書面向程序設計初學者編寫,以「注重基礎、注重方法、注重編程、注重應用」為指導思想,突出C語言課程的應用性、實踐性特點,靈活運用案例教學、任務驅動、啟發式教學等多種教學方法,對C語言程序設計的語言知識和程序設計的方法過程進行了系統介紹,特別適合將C語言程序設計作為第一門程序設計課程的高校學生。
全書共有九章,分別為程序設計概述、簡單程序設計、分支結構程序設計、循環結構程序設計、數組程序設計、函數程序設計、指針程序設計、結構體程序設計和文件程序設計。
本書主教材和實驗教材合二為一,在每章之後均設有實驗指導,實驗指導內容與教學內容密切銜接,相輔相成。實驗指導分為基礎實驗和綜合實驗兩部分。基礎實驗緊密結合教材中的例題程序設置,以「理解—驗證—完善—擴充—提高」為實驗教學線索,重在鞏固課堂教學知識,提高調試程序及完善程序的能力;綜合實驗以演算法設計和程序實現為重點,訓練運用所學知識解決實際問題的能力。
本書有配套的教學課件、程序資源和試題庫。 第1章 程序設計概述
1.1 程序設計語言
1.2 演算法
1.2.1 演算法概念與演算法描述
1.2.2 演算法的邏輯結構
1.2.4 演算法的特性
1.2.4 演算法評價
1.3 程序設計與實現
1.3.1 程序設計的基本過程
1.3.2 使用VisualC++ 6.0實現C語言程序
1.3.3 程序設計示例
1.4 C語言程序的基本結構
1.4.1 程序的函數化結構
1.4.2 程序中的常量和變數
1.4.3 程序中的基本語句
1.4.5 標識符與保留字
1.4.6 程序風格
小結
習題一
實驗一 編輯運行C語言程序
第2章 簡單程序設計
2.1 用printf()函數輸出數據
2.1.1 固定數值的加法程序
2.1.2 printf()函數
2.2 用scanf()函數輸入數據
2.2.1 任意數值的加法程序
2.2.2 scanf()函數
2.3 輸入輸出字元數據
2.4 語言知識補遺
2.4.1 數據類型
2.4.2 常量詳解
2.4.3 簡單變數詳解
2.4.4 算術運算
2.4.5 賦值運算
2.4.6 宏命令
2.5 程序設計舉例
2.5.1 計算三角形面積
2.5.2 字母轉換
2.5.3 雞兔同籠問題
*2.6 表達式中數據類型的自動轉換
*2.7 用typedef命名數據類型
*2.8使用C++命令輸入輸出數據
2.8.1 簡單的C++程序
2.8.2 C++的輸入和輸出
小結
習題二
實驗二 簡單程序設計
第3章 分支結構程序設計
3.1簡單條件的分支程序
3.1.1判斷優等生程序
3.1.2關系表達式
3.1.3 if語句
3.2 復合條件的分支程序
3.2.1 使用新標準的優等生程序
3.2.2 邏輯表達式
3.3 用switch語句實現分支控制
3.4 goto語句
3.5 條件運算
3.6 分支結構應用舉例
3.6.1 閏年問題
3.6.2 判斷等邊三角形
3.6.3 求解一元二次方程
3.6.4 學生成績分等顯示
小結
習題三
實驗三 分支結構程序設計
第4章 循環結構程序設計
4.1 while循環結構程序
4.1.1 while循環程序示例
4.1.2 while語句
4.1.3 自增、自減運算
4.2 do-while循環結構程序
4.2.1 do-while循環程序示例
4.2.2 do-while語句
4.3 for循環結構程序
4.3.1 for循環程序示例
4.3.2 for語句
4.3.3 逗號表達式
4.4 循環體中的控制命令
4.4.1 break命令
4.4.2 continue命令
4.5 多重循環程序
4.5.1多重循環程序示例
4.5.2多重循環的一般結構
4.6 循環結構程序設計舉例
4.6.1 字元統計
4.6.2 比賽評分
4.6.3 學生成績分等統計
4.6.4 最大公約數
4.6.5 Fibonacci數列
4.6.6 乘法表
4.6.7 搬磚問題
4.6.8 找素數
4.6.9 哥德巴赫猜想
小結
習題四
實驗四 循環結構程序設計
第5章 數組程序設計
5.1 一維數組程序設計
5.1.1 逆序輸出數據程序
5.1.2 一維數組的定義
5.1.3 數值型一維數組的輸入和輸出
5.1.4 數值型一維數組的初始化
5.1.5 字元型一維數組的初始化
5.1.6 一維數組的存儲
5.2字元串操作
5.2.1 字元串的輸入輸出
5.2.2 多字元串操作函數
5.2.3 其他字元串操作函數
5.3二維數組程序設計
5.3.1 矩陣求和程序
5.3.2 二維數組的定義
5.3.3 二維數組的輸入和輸出
5.3.4 二維數組的初始化
5.3.5 二維數組的存儲
5.4 數組應用
5.4.1 排序
5.4.2 查找
5.4.3 單詞統計
5.4.4 矩陣運算
5.4.5 成績處理
5.4.6 楊輝三角形
小結
習題五
實驗五 數組程序設計
第6章 函數程序設計
6.1函數概述
6.2自定義函數示例
6.3函數定義及調用
6.3.1函數定義
6.3.2函數值和return命令
6.3.3 函數調用
6.4函數嵌套和遞歸函數
6.4.1函數嵌套
6.4.2遞歸函數
6.5 數組作為函數的參數
6.5.1數組元素作為函數參數
6.5.2一維數組名作為函數參數
6.5.3用一維數組求解二維數組問題
6.6 函數應用舉例
6.6.1計算長方體的面積
6.6.2利用遞歸函數計算Fibonacci數列
6.6.3排序函數的設計與應用
6.7 變數的作用域和存儲類型
6.7.1變數的作用域
6.7.2變數的存儲類型
小結
習題六
實驗六 使用自定義函數的程序設計
第7章 指針程序設計
7.1 指針概述
7.2指針變數的定義和使用
7.2.1指針變數程序示例
7.2.2定義指針變數
7.2.3使用指針變數
7.3指針與數組
7.3.1指針與一維數組
7.3.2 指針與二維數組
7.3.3 指針與字元串
7.3.4 指針數組
7.4指針作為函數的參數
7.4.1簡單指針變數作函數參數
7.4.2指向數組的指針作函數的參數
7.4.3字元串指針作函數的參數
7.4.4 指針數組作函數的參數
*7.4.5 使用帶參數的main()函數
7.5指針函數和指向函數的指針變數
7.5.1指針函數
*7.5.2指向函數的指針變數
7.6指針應用舉例
小結
習題七
實驗七 指針程序設計
第8章 結構體程序設計
8.1結構體數據概述
8. 2結構體類型和結構體變數
8.2.1使用結構體變數存儲學生信息
8.2.2定義結構體數據類型
8.2.3結構體變數的定義及使用
8.3結構體數組
8.3.1結構體數組概述
8.3.2結構體數組的初始化
8.3.3利用結構體數組管理學生信息
8.4結構體指針變數
8.4.1結構體指針變數的定義及使用
8.4.2結構體指針作函數的參數
8.5使用鏈表動態存儲數據
8.5.1使用鏈表存儲學生信息
8.5.2鏈表的特點
8.5.3動態內存管理函數
8.5.4定義鏈表結構
8.6鏈表的基本操作
8.6.1鏈表結點的插入
8.6.2鏈表結點的刪除
8.6.3鏈表結點的查找
8.7 結構體應用舉例
8.7.1 字元串加密
8.7.2 學生成績排序
8.7.3 Josephus問題
小結
習題八
實驗八 結構體程序設計
第9章 文件程序設計
9.1 文件概述
9.1.1 文件的概念
9.1.2 文件的分類
9.1.3 文件的一般操作過程
9.1.4 文件的指針
9.2文件的基本操作
9.2.1打開和關閉文件
9.2.2最基本的文件讀寫函數
9.3文件的數據塊讀寫操作
9.3.1 fwrite()函數
9.3.1 fread()函數
9.4文件的其他操作
9.4.1文件的格式化讀寫
9.4.2文件的隨機讀寫操作
9.4.3 ftell()函數
9.4.4文件的字元串操作
9.5文件應用舉例
9.5.1文件復制
9.5.2 存儲在文件中的學生成績排序
小結
習題九
實驗九 文件程序設計
附錄一C語言的運算符
附錄二C語言的保留關鍵字
附錄三 常用ASCII碼字元對照表
參考文獻

6. c語言程序設計

第一章 程序設計的基本概念

第一節 C語言的發展歷史與特點

第二節 程序與程序設計

第三節 演算法與演算法的描述

第四節 C語言的上機操作

思考題與習題

第二章 C語言程序設計基礎

第一節 C語言的程序結構

第二節 數據類型

第三節 運算符與表達式

思考題與習題

第三章 C程序控制結構

第一節 C程序的三種基本控制結構

第二節 順序結構

第三節 選擇結構

第四節 循環結構

思考題與習題

第四章 數組

第一節 數組與數組元素的概念

第二節 一維數組

第三節 二維數組及多維數組

第四節 字元串與字元數組

思考題與習題

第五章 指針

第一節 指針與指針變數的概念

第二節 指針變數的定義和引用

第三節 指針變數與數組

思考題與習題

第六章 函數

第一節 函數的定義

第二節 函數的嵌套調用

第三節 數組作為函數參數

第四節 指針與函數

第五節 變數的使用范圍與存儲類別

第六節 不同文件中的函數使用

思考題與習題

第七章 編譯預處理

第一節 宏定義

第二節 文件包含

第三節 條件編譯

思考題與題

第八章 結構體與共用體

第一節 結構體基礎

第二節 結構體數組

第三節 結構體指針

第四節 鏈表

第五節 位段

第六節 共用體

第七節 枚舉類型與自定義類型

思考題與習題

第九章 文件

第一節 文件概述

第二節 文件的打開與關閉

第三節 文件的讀/寫

第四節 文件的定位

思考題與習題

第十章 程序設計方法

第一節 程序設計的基本概念

第二節 結構化程序設計方法

第三節 程序效率

第四節 程序設計風格

思考題與習題

附錄

附錄A C語言實驗

附錄B 標准ABSII碼表

附錄C C語言中的關鍵字

附錄D 運算符的優先順序與結合性

7. C語言程序設計、幫忙寫下解題步驟!

#include<stdio.h>
void main()
{
char ch[2][5]={"6937","8254"},*p[2];
int i,j,s=0;
for(i=0;i<2;i++)
p[i]=ch[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]>'\0';j+=2)
s=10*s+p[i][j]-'0'; //這里寫錯了,不是'\0',應該是'0'
printf("%d\n", s);
}

p[0]指向ch[0]
p[1]指向ch[1]
i = 0, j = 0時,s = 10 * 0 + '6' - '0' = 6
i = 0, j = 2時,s = 10 * 6 + '3' - '0' = 63
i = 0, j = 4時,p[0][4] = '\0'跳出循環
i = 1, j = 0時,s = 10 * 63 + '8' - '0' = 638
i = 1, j = 0時,s = 10 * 638 + '5' - '0' = 6385
i = 1, j = 4時,p[1][4] = '\0'跳出循環

8. C語言程序設計課程 譚浩強 視頻

上verycd.com裡面去找吧...那裡有得下載

9. 什麼是C語言程序設計.

(一)「項目驅動」式教學
目前最著名、最有影響、應用最廣泛的windows、linux和UNIX三個操作系統都是用C語言編寫的。0S是計算機系統(由軟硬體兩個子系統構成)的核心和靈魂,它是軟體中最龐大最復雜的系統軟體。既然如此龐大復雜的0S都可以用c語言編寫,從狹義而言,還有什麼系統軟體和應用軟體不能用c語言編寫呢?由此可以肯定的說,c語言是一門十分優秀而又重要的語言。
c語言程序設計是過程性程序設計語言,它的發展貫穿了計算機發展的歷程,它蘊含了程序設計的基本思想,囊括了程序設計的基本概念,所以它是理工科高等院校的一門基礎課程。
從市面上有關c語言的書籍和高等院校採用的教材來看,它們有一個共性,那就是:脫離了實際應用(全是小打小鬧的小例子),純粹的過程性程序設計,沒有軟體工程思想的體現,沒有一定程序設計風格,僅僅是為了讓大家明白什麼是c語言而已。
高等院校開設c語言程序設計的目的是讓學生對程序設計有個入門,有個直觀的理解,同時為其他後續課程作鋪墊。但是如果教學僅僅以此為目的,那麼教學本身就效果而言是個大大的失敗。
大家知道,在商業上講究唯利是圖,「利」是商業追求的目標,離開了「利」經商,則商無動力,其結果是必敗無疑。在c語言程序設計教學當中,教師應該把「唯用是圖」作為教學的首要目標。如果拋開了實際應用進行程序設計教學,就是紙上談兵,就是「說明書」式的教學。印度的程序設計課程採用「事件驅動式」教學,我認為在中國的c語言程序設計教學中應該採用「項目驅動式」教學。「項目驅動式」教學就是以項目為目的,以c語言理論教學為過程,最終能用c語言設計項目,實現項目的要求。「項目驅動式」教學的關鍵在於培養學生「如何做什麼」和「可以干什麼」。一個項目就是一個工程,在「項目驅動式」教學中,首先應該讓學生簡單了解什麼是軟體工程思想,其次在c語言理論教學過程中,讓學生懂得面向對象的程序設計的風格,最後引導他們來設計項目。
(二)「項目驅動」式教學應注意的問題
1.c語言程序設計教學要幫助學生樹立面向工程的觀點
在計算機行業中,軟體是通過人們的智力活動、把知識與技術轉化成信息的一種產品。軟體的設計已經用工程的觀念來進行管理。軟體設計工作被當作一項系統工程來對待。軟體的的生存周期一般可分為以下階段:問題定義、可行性研究、需求分析、概要設計、詳細設計、編碼、測試、運行與維護。我們不難看出軟體工程的復雜程度是很大的。理工科高等院校把c語言作為一門基礎課程,也是為了給社會培養信息技術人才。眾所周知,養成一個好的習慣是非常重要的,所以c語言程序設計作為大多數工科院校學生接觸的第一門程序設計語言(有的院校講pascal),就應該讓學生樹立正確的觀點。那麼當前的程序設計教學也必須以切合將來軟體工程開發的實際需要為第一目標,使學生在學習程序設計的初級階段就樹立正確的軟體工程觀點。這樣做不僅可以為學生將來從事計算機應用設計打下良好的基礎,而且有利於培養學生分析問題的完備性,以及統籌全局,協調關系的基本素質。
2.理論教學應從單一的「結構化程序設計」向「結構化與面向對象並舉」轉變
「結構化程序設計」方法是程序設計的基礎,必須讓學生掌握得堅實可靠。結構化程序設計的過程是培養學生思維能力的過程,在教學中經常發現有些學生的思維混亂。這些都是缺乏思維訓練的結果。結構化程序設計的訓練不僅可以讓學生養成良好的程序設計習慣,而且可以有效地培養學生思維的條理性和邏輯性。所以在授課過程中要注意講解結構化程序設計的思想時應突出兩點:(1)程序的質量首先取決於它的結構。(2)程序設計的基本方法是自頂向下地逐步求精和模塊化。
在c程序教學過程中,越到後面的章節,學生越會產生設計程序逐漸變難的感覺,這是不符合邏輯的一種怪現象。按照常理,C語言學的越多,說明你的程序設計知識越多,設計起程序來應該更加得心應手,那麼出現這種現象的原因何在呢?當然該問題的出現的原因是多方面的,但是其中最重要的一點就是長期以來程序設計的觀念不是以如何處理好對象為出發點,而是以如何使用好語言為基本點。受這種思想的影響,我們的程序設計教學大多數不是以如何解決好問題為重點,而是以講解語法規則和語句格式為重點,是「說明書」式的教學。這樣做造成的結果就是見到一個程序後學生首先想到是該用哪條語句,而不是思考怎樣合理的解析。要切實解決這個問題,首先應該改變程序設計的觀念。「面向對象程序設計」思想是目前最為流行、極為實用的一種程序設計方法,但是讓學生直接接觸「面向對象程序設計」,肯定不能對程序設計打下牢固的基礎。「結構化與面向對象並舉」是現代計算機程序設計的發展趨勢,應該認真探索研究,讓學生有一個較為輕松的學習過程。程序設計的實質就是編寫處理對象的過程,所以將c與c++有機的融為一體的教材應該是首選教材,在教學過程中,我們應該從社會發展的角度進行探索研究,將目前最為流行又極為實用「面向對象程序設計」思想融合到c語言教學中。
3.c語言教學應培養學生良好的程序設計風格
具有良好的設計風格應該是程序員所具備的基本素質,在實際的項目中程序員往往都有自己的一些編程風格。目前95%以上的程序設計書籍不注重程序設計風格問題,這導致了很多學生沒有良好的程序設計風格,在他們剛剛畢業踏入社會時,如果周圍的同事沒有良好的編程風格,那麼很難通過環境來使自己提高這方面的素質,即使有提高也不容易比較全面的提高。因此在學生接觸的第一門程序設計語言教學中,就應該培養學生良好的程序設計風格,使他們一進工作環境就具備這個素質。
Pascal設計者N.Writh教授十分重視程序設計風格的養成,他堅信「教給學生們以表達他們思維的語言會深深地影響他們思維和創造發明的習慣,而正是這些語言本身的混亂直接影響著學生們的程序設計的風格」,他這里所指的「這些運用」是當時那些主要用於程序設計教學的計算機語言。對學生來講,一開始就強調程序設計風格很有必要,良好的程序設計風格不僅有助於提高程序的可靠性、可理解性、可測試性、可維護性和可重用性,而且也能夠促進技術的交流,改善軟體的質量。所以培養良好的程序設計風格對於初學者來說非常重要。
程序設計風格,實際上是指的是編碼風格。在教學過程中應從源程序文檔化,數據說明的原則,輸入/輸出方法這三個方面培養學生的編碼風格,進而從編碼原則探討提高程序的可讀性、改善程序質量的方法。
(1)源程序文檔化。編碼的目的是產生程序,但是為了提高程序的可維護性。源代碼是需要實現文檔化的。源程序文檔化包括選擇標識符(變數和標號)的名字、安排注釋以及標準的書寫格式等。
①選擇標識符的命名規則。標識符包括模塊名、變數名、常量名、標號名、子程序名等。這些名字應能反映它所代表的實際東西,應有一定實際意義,使其能顧名思義。另外在模塊名、變數名、常量名、標號名、子程序名中使用下劃線是一種風格。使用這一技術的一種廣為人知的命名規則就是匈牙利命名法(變數類型由一個或兩個字元表示,並且這些字元將作為變數名的前綴)。當然使用匈牙利命名法與否都沒有錯誤,重要的是要保持一致性——在整個程序中使用相同的命名規則。這就是說,如果你在一個小組環境中編程,你和其他小組成員應該制定一種命名規則。並自始至終使用這種規則。如果有人使用了別的命名規則,那麼集成的程序讀起來將是很費勁的。此外,你還要與程序中用到的第三方庫(如果有的話)所使用的風格保持一致。如果可能的話,你應該盡量使用與第三方庫相同的命名規則,這將加強你的程序的可讀性和一致性。
②注釋。程序中的注釋是程序設計者與程序閱讀者之間通信的重要手段。注釋能夠幫助讀者理解程序,並為後續測試維護提供明確的指導信息。因此,注釋是十分重要的,大多數程序設計語言提供了使用自然語言來寫注釋的環境,為程序閱讀者帶來很大的方便。注釋分為功能性注釋和序言性注釋。
a.功能性注釋。功能性注釋在源程序中,用以描述其後的語句或程序段是在做什麼工作,也就是解釋下面要「做什麼」,而不是解釋下面怎麼做。對於書寫功能性注釋,要注意以下幾點:第一描述一段程序,而不是每一個語句。第二利用縮進和空行,使程序與注釋容易區別。第三注釋要准確無誤。
b.序言性注釋。序言性注釋通常位於每個程序模塊的開頭部分,它給出程序的整體說明,對於理解程序具有引導作用。有些軟體開發部門對序言性注釋做了明確而嚴格的規定,要求程序編制者逐項列出。有關內容包括:程序標題;有關該模塊功能和目的的說明;主要演算法;介面說明:包括調用形式,參數描述,子程序清單;有關數據描述;模塊位置(在哪一個源文件中,或隸屬於哪一個軟體包);開發簡歷:模塊設計者、復審考、復審日期。
③用標準的書寫格式。源程序清單的書寫建議採用以下幾點:
a.每行只寫一條語句;
b.用分層縮進的寫法顯示嵌套結構層次,這樣可使程序的邏輯結構更加清晰,層次更加分明。
c.書寫表達式時適當使用空格或圓括弧作隔離符。
d.在注釋段周圍加上邊框;
e.注釋段與程序段、以及不同的程序段之間插入字行;
(2)數據說明採用的原則。在編寫程序時,要注意數據說明的風格。
數據說明的次序如果規范,將有利於測試,排錯和維護。首先說明的先後次序要固定,例如,按常量說明、簡單變數類型說明、數組說明用數據塊說明、所有的文件說明的順序說明。當然在類型說明中還可進一步要求,例如按如下順序排列:整型量說明、實型量說明、字元量說明、邏輯說明。
其次當用一個語句說明多個變數名時,應當對這些變數按字母的順序排列。
最後對於復雜數據結構,應利用注釋說明實現這個數據結構的特點。
(3)輸入/輸出方法。輸入/輸出的方式和格式應當盡量避免因設計不當給用戶帶來的麻煩。這就要求,源程序的輸入/輸出風格必須滿足能否為用戶接受這一原則。所以在設計程序時,應考慮以下原則:輸入數據時,要使輸入的步驟和操作盡可能簡單,應允許使用自由格式輸入;應允許預設值;對輸入的數據要進行檢驗,以保證每個數據的有效性。
(三)結束語
在教學過程中,我們讓學生設計一個程序模擬體育彩票的銷售與對獎的過程,取得了良好的效果。他不僅啟發和誘導了學生獨立思考、積極思維的主動性,而且充分調動了學生學習的自覺性和積極性,使學生融會貫通地掌握了所學知識,提高了分析問題和解決實際問題的能力。
搞好c程序設計的教學工作涉及的因素很多,如果以項目來驅動教學,首先讓學生樹立面向工程的思想,其次把教學從單一的「結構化程序設計」向「結構化與面向對象並舉」轉變,最後特別要培養學生養成良好的編碼風格,從而使他們學會能夠「干什麼」,那麼我們認為教學目的就達到了

10. c語言編程