C語言程序設(shè)計 課件全套 原莉 0開篇、1創(chuàng)建第一個C程序-10利用文件完善項目_第1頁
C語言程序設(shè)計 課件全套 原莉 0開篇、1創(chuàng)建第一個C程序-10利用文件完善項目_第2頁
C語言程序設(shè)計 課件全套 原莉 0開篇、1創(chuàng)建第一個C程序-10利用文件完善項目_第3頁
C語言程序設(shè)計 課件全套 原莉 0開篇、1創(chuàng)建第一個C程序-10利用文件完善項目_第4頁
C語言程序設(shè)計 課件全套 原莉 0開篇、1創(chuàng)建第一個C程序-10利用文件完善項目_第5頁
已閱讀5頁,還剩822頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

C語言程序設(shè)計創(chuàng)建第一個C語言程序項目1“學(xué)生成績管理系統(tǒng)”中相關(guān)數(shù)據(jù)設(shè)計及簡單處理項目2項目中學(xué)生成績的等級判定項目3項目中的設(shè)計數(shù)據(jù)處理及封面與菜單的初步項目4學(xué)生成績的分組匯總程序項目5利用數(shù)組完善項目中數(shù)據(jù)的處理項目6利用函數(shù)進行項目的整體框架設(shè)計項目7利用結(jié)構(gòu)體實現(xiàn)項目項目8利用指針優(yōu)化項目項目9利用文件完善項目項目10開篇--學(xué)生成績管理系統(tǒng)開篇--學(xué)生成績管理系統(tǒng)

實現(xiàn)在線測試系統(tǒng)主頁面的布局和美化某班級需要一個學(xué)生成績管理系統(tǒng),該系統(tǒng)應(yīng)具有學(xué)生成績的添加、刪除、查詢、修改、插入和排序等處理功能,提供數(shù)字按鍵菜單操作方式,如圖0-1所示。任務(wù)描述實現(xiàn)在線測試系統(tǒng)主頁面的布局和美化某班級需要一個學(xué)生成績管理系統(tǒng),該系統(tǒng)應(yīng)具有學(xué)生成績的添加、刪除、查詢、修改、插入和排序等處理功能,提供數(shù)字按鍵菜單操作方式,如圖0-1所示。開篇--學(xué)生成績管理系統(tǒng)

實現(xiàn)在線測試系統(tǒng)主頁面的布局和美化某班級需要一個學(xué)生成績管理系統(tǒng),該系統(tǒng)應(yīng)具有學(xué)生成績的添加、刪除、查詢、修改、插入和排序等處理功能,提供數(shù)字按鍵菜單操作方式,如圖0-1所示。任務(wù)分析實現(xiàn)根據(jù)上面的問題描述,可以得出該學(xué)生系統(tǒng)要實現(xiàn)的功能,有以下幾方面:1.錄入學(xué)生成績信息。2.實現(xiàn)刪除功能,即輸入學(xué)號,刪除相應(yīng)的記錄。3.實現(xiàn)查找功能,即輸入學(xué)號,查詢該學(xué)生的相應(yīng)信息。4.實現(xiàn)修改功能,即輸入學(xué)號,修改相應(yīng)的記錄信息。5.指定位置插入學(xué)生的成績信息,即將新的記錄插入到指定位置。6.實現(xiàn)學(xué)生的排名,即按照選定的關(guān)鍵字段進行排序。7.數(shù)據(jù)統(tǒng)計,按用戶指定條件進行統(tǒng)計。測試系統(tǒng)主頁面的布局和美化某班級需要一個學(xué)生成績管理系統(tǒng),該系統(tǒng)應(yīng)具有學(xué)生成績的添加、刪除、查詢、修改、插入和排序等處理功能,提供數(shù)字按鍵菜單操作方式,如圖0-1所示。開篇--學(xué)生成績管理系統(tǒng)

實現(xiàn)在線測試系統(tǒng)主頁面的布局和美化某班級需要一個學(xué)生成績管理系統(tǒng),該系統(tǒng)應(yīng)具有學(xué)生成績的添加、刪除、查詢、修改、插入和排序等處理功能,提供數(shù)字按鍵菜單操作方式,如圖0-1所示。任務(wù)分析學(xué)生成績管理系統(tǒng)錄入數(shù)據(jù)查詢記錄修改記錄插入記錄刪除記錄成績排序數(shù)據(jù)統(tǒng)計瀏覽記錄開篇--學(xué)生成績管理系統(tǒng)

實現(xiàn)在線測試系統(tǒng)主頁面的布局和美化某班級需要一個學(xué)生成績管理系統(tǒng),該系統(tǒng)應(yīng)具有學(xué)生成績的添加、刪除、查詢、修改、插入和排序等處理功能,提供數(shù)字按鍵菜單操作方式,如圖0-1所示。實施方案本案例貫穿整個教材,由系統(tǒng)的初步設(shè)計、開發(fā)、優(yōu)化到系統(tǒng)的最后完善。方案設(shè)計如下:1.項目1-項目6,各項目設(shè)計獨立的案例,重點是學(xué)習(xí)、掌握C語言程序設(shè)計的語法規(guī)則。2.項目7,按照模塊化程序設(shè)計方法,完成系統(tǒng)的整體結(jié)構(gòu)和系統(tǒng)界面的設(shè)計。3.項目8,進行數(shù)據(jù)結(jié)構(gòu)設(shè)計及主要功能函數(shù)的實現(xiàn),從而學(xué)習(xí)結(jié)構(gòu)體相關(guān)內(nèi)容。4.項目9,利用指針優(yōu)化各功能模塊。5.項目10,利用文件實現(xiàn)系統(tǒng)的數(shù)據(jù)存取,完善整個系統(tǒng)。知識儲備要完成學(xué)生成績管理系統(tǒng)的開發(fā),必須學(xué)完正本教材全部內(nèi)容,熟悉C語言的語法規(guī)則和三大基本結(jié)構(gòu),掌握C語言程序設(shè)計的基本技能和結(jié)構(gòu)化程序設(shè)計方法。謝謝多一點努力,多一點實踐,多一點點就能創(chuàng)造奇跡!C語言程序設(shè)計創(chuàng)建第一個C語言程序項目1“學(xué)生成績管理系統(tǒng)”中相關(guān)數(shù)據(jù)設(shè)計及簡單處理項目2項目中學(xué)生成績的等級判定項目3項目中的設(shè)計數(shù)據(jù)處理及封面與菜單的初步項目4學(xué)生成績的分組匯總程序項目5利用數(shù)組完善項目中數(shù)據(jù)的處理項目6利用函數(shù)進行項目的整體框架設(shè)計項目7利用結(jié)構(gòu)體實現(xiàn)項目項目8利用指針優(yōu)化項目項目9利用文件完善項目項目10項目1創(chuàng)建第一個C語言程序目標TARGET知識目標能夠使用了解C語言的產(chǎn)生、發(fā)展和特點掌握C程序的實現(xiàn)過程和結(jié)構(gòu)熟悉VisualC++6.0開發(fā)環(huán)境理解程序設(shè)計的思想、方法以及算法了解軟件編程的規(guī)范目標TARGET技能目標熟悉VisualC++6.0環(huán)境能夠在VisualC++6.0下運行、調(diào)試C程序認識C程序任務(wù)1.1創(chuàng)建及運行第一個C程序任務(wù)1.2運用算法描述問題任務(wù)1.3任務(wù)1.1認識C程序

任務(wù)描述認識第一個C程序,其運行結(jié)果是在計算機屏幕上輸出一行文本信息(項目名稱)“學(xué)生成績管理系統(tǒng)”。任務(wù)分析這是一個簡單的C語言程序,只需要一條格式輸出語句即可實現(xiàn)上述功能。算法設(shè)計輸出文本“學(xué)生成績管理系統(tǒng)”,可以使用格式輸出函數(shù)實現(xiàn)。任務(wù)1.1認識C程序

實現(xiàn)在線測試系統(tǒng)主頁面的布局和美化某班級需要一個學(xué)生成績管理系統(tǒng),該系統(tǒng)應(yīng)具有學(xué)生成績的添加、刪除、查詢、修改、插入和排序等處理功能,提供數(shù)字按鍵菜單操作方式,如圖0-1所示。程序代碼#include"stdio.h"/*編譯預(yù)處理命令*/voidmain(){ printf("學(xué)生成績管理系統(tǒng)\n");

/*在屏幕上輸出學(xué)生成績管理系統(tǒng)*/}/*main()主函數(shù)結(jié)束*/執(zhí)行結(jié)果1認識C語言及C程序Part◎C語言的特點◎C程序的實現(xiàn)過程◎C程序的結(jié)構(gòu)◎C語言的產(chǎn)生和發(fā)展C語言的產(chǎn)生和發(fā)展

1972年美國貝爾實驗室DennisRitchie和BrainKernighan首先推出1983年美國貝爾實驗室DennisRitchie和BrainKernighan改進推出(TheCProgramingLanguage)1983年美國國家標準協(xié)會ANSI,制定標準C(ANSIC)20世紀80年代中期美國貝爾實驗室B.Stroustrup博士C++微軟MSC++\VisualC++,BorlandTurboC++\C++Builder面向過程面向?qū)ο驝語言的特點

簡潔緊湊、靈活方便.語言功能豐富。C是結(jié)構(gòu)式語言。C語言允許直接訪問物理地址,可以直接對硬件進行操作。因此既具有高級語言的功能,又具有低級語言的許多功能。C語言程序生成代碼質(zhì)量高,程序執(zhí)行效率高。C語言具備良好的可移植性。C程序的實現(xiàn)過程

源程序文件(*.C)可執(zhí)行文件(*.exe)結(jié)果目標文件(*.obj)編輯

編譯鏈接運行C程序的實現(xiàn)過程

1.編輯??梢杂萌魏我环N編輯軟件將在紙上編寫好的C語言程序輸入計算機,并將C語言源程序文件*.c以純文本文件形式保存在計算機的磁盤上(不能設(shè)置字體、字號等)。2.編譯。編譯過程使用C語言編譯程序?qū)⒕庉嫼玫脑闯绦蛭募?.c”,翻譯成二進制目標代碼文件“*.obj”。編譯程序?qū)υ闯绦蛑鹁錂z查語法錯誤發(fā)現(xiàn)錯誤后,不僅會顯示錯誤的位置(行號),還會告知錯誤類型信息。我們需要再次回到編輯軟件修改源程序的錯誤,然后,再進行編譯,直至排除所有語法和語義錯誤。C程序的實現(xiàn)過程

3.鏈接。程序編譯后產(chǎn)生的目標文件是可重定位的程序模塊,不能直接運行。鏈接將編譯生成的各個目標程序模塊和系統(tǒng)或第三方提供的庫函數(shù)“*.lib”鏈接在一起,生成可以脫離開發(fā)環(huán)境、直接在操作系統(tǒng)下運行的可執(zhí)行文件“*.exe”。4.運行程序。如果經(jīng)過測試,運行可執(zhí)行文件達到預(yù)期設(shè)計目的,這個C語言程序的開發(fā)工作便到此完成了。如果運行出錯,這說明程序處理的邏輯存在問題,需要再次回到編輯環(huán)境針對程序出現(xiàn)的邏輯錯誤進一步檢查、修改源程序,重復(fù)編輯→編譯→鏈接→運行的過程,直到取得預(yù)期結(jié)果為止。C程序的結(jié)構(gòu)

#include"stdio.h"/*編譯預(yù)處理命令*/voidmain(){intiScore1,iScore2,iScore3;/*定義整型變量iScore1、iScore1、iScore1*/floatfAverage;/*定義單精度浮點型變量fAverage*/iScore1=86;/*給變量iScore1賦值86*/iScore2=79;/*給變量iScore2賦值79*/iScore3=92;/*給變量iScore3賦值92*/fAverage=(iScore1+iScore2+iScore3)/3.0;/*計算平均成績*/printf("Theaverageis%f\n",fAverage);/*輸出平均成績*/}例1-1班級一學(xué)習(xí)小組有三名同學(xué),C語言程序設(shè)計這門課程的成績分別為86、79、92,計算他們的平均成績,并輸出。說明:(1)#include是編譯預(yù)處理命令,放在源程序的最前面,編譯預(yù)處理命令后面不加分號。(2)main()為主函數(shù),其中main是函數(shù)的名字,“()”里是函數(shù)的參數(shù),此處為空。void是一種數(shù)據(jù)類型,空類型。函數(shù)是由函數(shù)頭和函數(shù)體組成的。函數(shù)頭包括函數(shù)的返回至類型、函數(shù)名和函數(shù)參數(shù),函數(shù)體是由一對“{}”括起來的用于完成某種功能的語句的集合。函數(shù)一般包括變量定義語句部分和執(zhí)行語句部分。(3)程序的變量在使用前需要先進行定義,在同一個函數(shù)中變量定義語句放在執(zhí)行語句的前面?!癷ntiScore1,iScore2,iScore3;”和“floatfAverage;”都是變量定義語句。說明:(4)從“iScore1=86;”語句開始,下面的全部是執(zhí)行語句部分,其中“iScore1=86;”、“iScore2=79;”、“iScore3=92;”這三條語句都是賦值語句,即分別將整數(shù)86、79、92給整型變量iScore1、iScore2和iScore3。(5)“fAverage=(iScore1+iScore2+iScore3)/3.0;”這條語句的作用是將變量iScore1、iScore2和iScore3的值相加,然后除以3,得到的結(jié)果賦值給單精度浮點型變量fAverage。(6)“printf("Theaverageis%f",fAverage);”是調(diào)用庫函數(shù)printf(),輸出相應(yīng)文本及fAverage的值。(7)“/*……*/”括起來的注釋部分,用來對程序進行說明,向用戶提示或解釋程序的意義。程序編譯時,計算機不會對注釋做任何處理,注釋可以出現(xiàn)在程序的任何位置,它的出現(xiàn)不會對程序的執(zhí)行有任何影響。注意:(1)在C程序中,每一條語句的最后都有一個分號“;”,表示一條語句的結(jié)束。(2)C程序中是區(qū)分大小寫的。(3)程序中的許多符號如逗號“,”、分號“;”、雙引號“""”都是英文狀態(tài)下的符號,輸入應(yīng)格外注意。任務(wù)1.2創(chuàng)建及運行第一個C程序

任務(wù)描述在VisualC++6.0環(huán)境下,創(chuàng)建及運行第一個C程序,計算機屏幕上輸出一行文本信息(項目名稱)“學(xué)生成績管理系統(tǒng)”。任務(wù)分析熟悉VisualC++6.0環(huán)境,能夠正確編輯、鏈接、運行C程序。算法設(shè)計與程序代碼算法與程序代碼參考任務(wù)1-1。2C程序的開發(fā)環(huán)境Part◎在VisualC++6.0集成開發(fā)環(huán)境下運行C程序◎C程序的開發(fā)環(huán)境C程序的開發(fā)環(huán)境

C語言的運行環(huán)境很多,有MicrosoftVisualC++、MicrosoftVisualStudio、DEVC++、BorlandC++、BorlandC++Builder、GNUDJGPPC++、HighC、TurboC、C-Free和Win-TC等等,每一種運行環(huán)境都有自身的特點,讀者可以根據(jù)自己的特點酌情選用。這里我們主要介紹MicrosoftVisualC++6.0。VisualC++6.0是微軟推出的一款編譯器,是一個功能強大的可視化軟件開發(fā)工具,它將程序代碼的編輯、編譯、連接和調(diào)試等功能集于一體。C程序的開發(fā)環(huán)境單擊【開始】按鈕,在打開的【開始】菜單中選擇【所有程序】,單擊【MicrosoftVisualStudio6.0】,選擇【MicrosoftVisualC++6.0】,或者雙擊桌面上的MicrosoftVisualC++6.0圖標,啟動VisualC++6.0,進入MicrosoftVisualC++6.0集成開發(fā)環(huán)境,如圖1-3所示。在VisualC++6.0集成開發(fā)環(huán)境下運行C程序

1.創(chuàng)建工程(1)選擇菜單中的【文件】命令,打開菜單,單擊菜單項【新建】,打開【新建】對話框,如圖1-4所示。在VisualC++6.0集成開發(fā)環(huán)境下運行C程序

1.創(chuàng)建工程(2)選擇菜單中的【文件】命令,打開菜單,單擊菜單項【新建】,打開【新建】對話框,如圖在【新建】對話框中,選擇【工程】選項卡,在左側(cè)列表中選擇“Win32ConsoleApplication”類型,VisualC++6.0將創(chuàng)建一個控制臺應(yīng)用程序。在右側(cè)【工程名稱】文本框中輸入工程名稱,如“MyAve”,單擊【位置】文本框右側(cè)的小按鈕,在彈出的對話框中選擇存儲位置,如“D:\MYC”,如圖1-5所示。在VisualC++6.0集成開發(fā)環(huán)境下運行C程序

1.創(chuàng)建工程(3)單擊【確定】按鈕,彈出【W(wǎng)in32ConsoleApplication-步驟】對話框,選擇默認單選項【一個空工程】,即創(chuàng)建一個空的工程,不包含任何的源文件,如圖1-6所示。在VisualC++6.0集成開發(fā)環(huán)境下運行C程序2.創(chuàng)建文件(1)單擊【確定】按鈕,彈出【W(wǎng)in32ConsoleApplication-步驟】對話框,選擇默認單選項【一個空工程】,即創(chuàng)建一個空的工程,不包含任何的源文件,如圖選擇菜單中的【文件】命令,打開菜單,單擊菜單項【新建】,打開【新建】對話框,如圖1-7所示。在VisualC++6.0集成開發(fā)環(huán)境下運行C程序2.創(chuàng)建文件(2)單擊【確定】按鈕,彈出【W(wǎng)in32ConsoleApplication-步驟】對話框,選擇默認單選項【一個空工程】,即創(chuàng)建一個空的工程,不包含任何的源文件,如圖(2)在【新建】對話框中,選擇【文件】選項卡,在左側(cè)列表中選擇“C++SourceFile”類型,在右側(cè)【文件】文本框中輸入文件名稱,如“LT1-1.c”,這里文件名必須以.c結(jié)尾,因為C程序源程序的擴展名為.c,如圖1-5所示,其他選項默認即可。其中默認將該文件添加到剛剛所建的工程MyAve中,位置是“D:\MYC\LT1-1.c”,如圖1-7所示。菜單中的【文件】命令,打開菜單,單擊菜單項【新建】,打開【新建】對話框,如圖1-7所示。在VisualC++6.0集成開發(fā)環(huán)境下運行C程序2.創(chuàng)建文件(3)單擊【確定】按鈕,則回到VisualC++6.0界面,同時打開代碼編輯窗口。打開【工作空間】窗口,在其下方選擇【FileView】選項卡,可以看到在SourceFiles文件夾中多了一個文件LT1-1.c,如圖1-8所示。在VisualC++6.0集成開發(fā)環(huán)境下運行C程序3.編輯C程序源文件在打開的代碼編輯窗口例1-1的程序代碼,如圖1-9所示。在VisualC++6.0集成開發(fā)環(huán)境下運行C程序4.編譯選擇菜單中的【組建】命令,打開菜單,單擊菜單項【編譯】,對C源程序進行編譯,同時在VisualC++6.0下部輸出窗口中顯示調(diào)試信息,如圖1-10所示。如果程序存在語法錯誤,那么讀者需要根據(jù)輸出窗口中的錯誤提示,返回代碼編輯窗口修改程序,然后再次進行編譯,直到提示無錯誤為止,如圖1-9所示。在VisualC++6.0集成開發(fā)環(huán)境下運行C程序5.鏈接選擇菜單中的【組建】命令,打開菜單,單擊菜單項【組建】,在VisualC++6.0下部輸出窗口中顯示調(diào)試信息,與編譯過程類似。如果程序存在錯誤,那么讀者需要根據(jù)輸出窗口中的錯誤提示,返回代碼編輯窗口修改程序,然后再次進行編譯、連接,直到提示無錯誤為止。在VisualC++6.0集成開發(fā)環(huán)境下運行C程序6.運行選擇菜單中的【組建】命令,打開菜單,單擊菜單項【!執(zhí)行LT1-1.exe】,可以看到屏幕中彈出一DOS輸出窗口,如圖1-11所示。注意:在VisualC++6.0環(huán)境下,編譯、鏈接和運行不僅可以用菜單命令進行操作還可以使用快捷鍵進行操作,編譯、鏈接和運行分別對應(yīng)的快捷鍵是Ctrl+F7、F7和Ctrl+F5。也可以使用命令按鈕進行操作,對應(yīng)的命令按鈕分別是、、。任務(wù)1.3運用算法描述問題

任務(wù)描述班級一學(xué)習(xí)小組有三名同學(xué),C語言程序設(shè)計這門課程的成績分別為86、79、92,計算他們的平均成績,并輸出。請利用流程圖描述法給出其算法。任務(wù)分析用流程圖或者NS流程圖圖描述算法。任務(wù)1.3運用算法描述問題

算法設(shè)計3程序算法基礎(chǔ)Part◎程序設(shè)計語言◎程序◎程序設(shè)計方法◎程序設(shè)計的一般步驟◎算法◎軟件編程規(guī)范程序

程序是程序設(shè)計中最為基本的概念,由有限的指令序列構(gòu)成,它的作用是告訴計算機當前的處理對象與處理步驟,使計算機完成相應(yīng)的任務(wù)。VisualC++6.0是微軟推出的一款編譯器,是一個功能強大的可視化軟件開發(fā)工具,它將程序代碼的編輯、編譯、連接和調(diào)試等功能集于這里的處理對象即數(shù)據(jù),包括數(shù)據(jù)的類型、數(shù)據(jù)的組織形式和數(shù)據(jù)之間的相互關(guān)系,可以被稱為“數(shù)據(jù)結(jié)構(gòu)”;而處理步驟指的是“操作”,也就是算法。換言之算法和數(shù)據(jù)結(jié)構(gòu)是程序的兩個重要方面。因此,著名的科學(xué)家沃思(NiklausWirth)提出過一個經(jīng)典的公式:

算法+數(shù)據(jù)結(jié)構(gòu)=程序程序設(shè)計語言程序設(shè)計語言是建立在一定語法規(guī)則之上、用于向計算機傳遞程序設(shè)計人員思想的一批特殊符號的集合。它能夠使程序設(shè)計人員準確地定義計算機所需要使用的數(shù)據(jù),并精確地定義在不同情況下所應(yīng)當采取的行動。自20世紀60年代以來,世界上公布的程序設(shè)計語言已有上千種之多,但是只有很小一部分得到了廣泛的應(yīng)用。從發(fā)展歷程來看,程序設(shè)計語言可以分為機器語言、匯編語言、高級語言、非過程化語言4代。C語言就是高級語言中的代表之一。程序設(shè)計方法

1.程序設(shè)計程序設(shè)計(Programming)是人們借助程序設(shè)計語言,將某一任務(wù)的處理對象、處理方法及處理步驟轉(zhuǎn)化為計算機能夠處理的符號序列(語句、命令、指令),以及指揮計算機完成相應(yīng)任務(wù)的過程。它是軟件構(gòu)造活動中的重要組成部分。程序設(shè)計方法

2.結(jié)構(gòu)化程序設(shè)計方法結(jié)構(gòu)化程序設(shè)計思想源于20世紀60年代,是至今仍被廣泛應(yīng)用的一種計算機軟件開發(fā)技術(shù)。所謂的結(jié)構(gòu)化程序設(shè)計方法指的是“按照一組能夠提高程序易讀性和易維護性的規(guī)則進行程序設(shè)計的方法”。其要點如下:原則:(1)程序的質(zhì)量標準是“清晰第一,效率第二”。(2)遵循自頂向下、逐步求精、模塊化設(shè)計的原則。自頂向下:指從問題的全局下手,把一個復(fù)雜的任務(wù)分解成許多易于控制和處理的子任務(wù),子任務(wù)還可能做進一步分解,如此重復(fù),直到每個子任務(wù)都容易解決為止。逐步求精:指在將抽象問題分解成若干個相對獨立的小問題時,要逐級地由抽象到具體、又粗到細、由表及里進行細化,直到將問題細化到可以用程序的3種結(jié)構(gòu)來實現(xiàn)為止。模塊化:指解決一個復(fù)雜問題是自頂向下逐層把軟件系統(tǒng)劃分成一個個較小的、相對獨立但又相互關(guān)聯(lián)的模塊的過程。程序設(shè)計方法

2.結(jié)構(gòu)化程序設(shè)計方法(3)使用順序、選擇、循環(huán)這三種基本結(jié)構(gòu)表示程序邏輯,即由這三種結(jié)構(gòu)組合或者嵌套而成,并且要滿足下面的條件。每個程序模塊只準許有一個入口和一個出口。沒有死語句(永遠執(zhí)行不到的語句)。沒有死循環(huán)(永遠不能終止的循環(huán))。程序設(shè)計方法

2.結(jié)構(gòu)化程序設(shè)計方法(4)程序的書寫必須,按照一定的規(guī)范和格式進行。不能隨便拼湊。(5)程序的設(shè)計風(fēng)格要以好的可讀性為標準,以使用程序的用戶為核心,外觀美觀,結(jié)構(gòu)流暢、語句簡潔。程序設(shè)計的一般步驟

(1)分析問題對于接受的任務(wù)要進行認真的分析,研究所給定的條件,分析最后應(yīng)達到的目標,找出解決問題的規(guī)律,選擇解題的方法,完成實際問題。(2)設(shè)計算法即設(shè)計出解題的方法和具體步驟。(3)編寫程序?qū)⑺惴ǚg成計算機程序設(shè)計語言,對源程序進行編輯、編譯和連接。程序設(shè)計的一般步驟

(4)運行程序,分析結(jié)果運行可執(zhí)行程序,得到運行結(jié)果。能得到運行結(jié)果并不意味著程序正確,要對結(jié)果進行分析,看它是否合理。不合理要對程序進行調(diào)試,即通過上機發(fā)現(xiàn)和排除程序中的故障的過程。(5)編寫程序文檔許多程序是提供給別人使用的,如同正式的產(chǎn)品應(yīng)當提供產(chǎn)品說明書一樣,正式提供給用戶使用的程序,必須向用戶提供程序說明書。內(nèi)容應(yīng)包括:程序名稱、程序功能、運行環(huán)境、程序的裝入和啟動、需要輸入的數(shù)據(jù),以及使用注意事項等。算法算法(Algorithm)是對特定問題求解方法與步驟的描述,是程序求解問題的核心內(nèi)容。1.算法的特征(1)有窮性:一個算法應(yīng)包含有限的操作步驟,而不能是無限的。(2)確定性:算法中的每一個步驟都應(yīng)當是確定的,而不應(yīng)當是含糊的、摸棱兩可的。即必須有明確的含義,不能存在二義性。(3)可行性(有效性):算法中的每一個步驟都應(yīng)當能有效地執(zhí)行,并得到確定的結(jié)果。(4)有零個或多個輸入。算法1.算法的特征(5)有一個或多個輸出。一個好的算法不僅要滿足上述特征,還應(yīng)當達到以下要求:正確性:運行該算法,能獲得正確的結(jié)果??勺x性:易于理解和交流健壯性:具有很好的適應(yīng)能力,具有很好的容錯能力。高效性:盡可能追求較少的時間與空間占用(越簡單越好)。算法1.算法描述(1)自然語言描述法自然語言即人類日常使用的語言,可以是中文、英文等。用自然語言描述的算法通俗易懂,不用專門的訓(xùn)練,較為靈活。但是,自然語言也有一些缺點。首先自然語言具有歧義性,容易導(dǎo)致算法執(zhí)行的不確定性;其次自然語言的語句一般較長,導(dǎo)致描述的算法太長;再者自然語言表示的算法不便翻譯成計算機程序設(shè)計語言。上面例1-2使用的即是自然語言描述法。算法1.算法描述(2)流程圖描述法流程圖是使用一組規(guī)定的符號、流程線和文字說明來表示各種操作、算法的方法。其優(yōu)點是清晰簡潔,直觀形象,容易表達選擇結(jié)構(gòu),不依賴于任何具體的計算機和計算機程序設(shè)計語言,從而有利于不同環(huán)境的程序設(shè)計。其缺點是占用篇幅較長,畫起來比較麻煩,而且使用流程線可以使流程任意轉(zhuǎn)向,不能保證算法的結(jié)構(gòu)化。會造成閱讀和修改上的困難,可以借助于專用的流程圖制作軟件來提升繪制和修改。ANSI規(guī)定了一些常用的流程圖符號,見表1-1所示。連接點算法

常用的流程圖符號符號符號名稱含義起止框算法的開始和結(jié)束輸入/輸出框輸入/輸出操作處理框?qū)騼?nèi)的內(nèi)容進行處理判斷框?qū)騼?nèi)的條件進行判斷流程線流程線的方向連接點常用于換頁處,表示兩個具有同一標記的“連接點”應(yīng)連接成一個點預(yù)先定義的進程預(yù)先定義的函數(shù)、子例程等算法

流程圖表示3中基本結(jié)構(gòu)圖1-13(a)順序結(jié)構(gòu)圖1-13(b)選擇結(jié)構(gòu)算法

流程圖表示3中基本結(jié)構(gòu)算法例1-2比較兩個人的身高,將個子較高的那個人的身高輸出到屏幕上。要想解決上面的問題,需要定義變量fTall1和fTall2分別存儲兩個人的身高,fMax存放身高的最大值,計算最大值即比較兩個數(shù)的大小。具體的步驟如下:(1)輸入2個人的身高分別存入變量fTall1和fTall2中。(2)比較2個人的身高,如果fTall1較大,則把第一個人的身高值賦值給fMax。否則,將第二個人的身高賦值給fMax。(3)輸出fMax的值,即個子較高的人的身高。

問題分析算法例1-3用流程圖描述法描述例1-2的算法如圖1-14所示。算法1.算法描述(3)N-S流程圖描述法N-S流程圖類似流程圖,也被稱為盒圖或NS圖(NassiShneiderman圖)。1972年,N-S流程圖由美國學(xué)者I.Nassi和B.Shneiderman提出(以兩個人的名字的頭一個字母組成)。它是一種在流程圖中完全去掉流程線,將全部算法寫在一個矩形陣內(nèi),在框內(nèi)還可以包含其他框的流程圖形式。即由一些基本的框組成一個大的框,N-S圖包括順序、選擇和循環(huán)三種基本結(jié)構(gòu)。其優(yōu)點是形象直觀,功能域明確,具有良好的可見度,很容易確定局部和全局數(shù)據(jù)的作用域,很容易表示嵌套關(guān)系及模塊的層次關(guān)系。其缺點是不可能任意轉(zhuǎn)移控制,修改需要重畫整個圖。算法N_S流程圖表示3中基本結(jié)構(gòu)圖1-15(a)順序結(jié)構(gòu)圖1-15(b)選擇結(jié)構(gòu)算法

流程圖表示3中基本結(jié)構(gòu)圖1-15(c)當型循環(huán)結(jié)構(gòu)

圖1-15(d)直到型循環(huán)結(jié)構(gòu)算法例1-4用N-S流程圖描述法描述例1-2的算法如圖1-16所示。算法1.算法描述(4)偽代碼描述法偽代碼描述法是使用介于自然語言與編程語言之間的文字和符號描述算法的方法。其優(yōu)點是回避了程序設(shè)計語言的嚴格、煩瑣的書寫格式,書寫方便,同時具備格式緊湊,易于理解,便于向計算機程序設(shè)計語言過渡。其缺點是偽代碼的種類繁多,語句不容易規(guī)范,有時會產(chǎn)生誤讀。算法例1-5用N-S流程圖描述法描述例1-2的算法如圖1-16所示。INPUTftall1,ftall2IFftall1>ftall2THENftall1-〉fmaxELSEftall2-〉fmaxPRINTfmax算法1.算法描述(5)程序設(shè)計語言描述法計算機是無法識別自然語言、流程圖和為代碼的。只有使用程序設(shè)計語言編寫的程序,經(jīng)過編譯、連接成可執(zhí)行程序后,才能被計算機執(zhí)行。因此,使用任何方法描述的算法,最終都要將其轉(zhuǎn)化成程序。其優(yōu)點是可被計算機識別并執(zhí)行。其缺點是必須嚴格遵循所使用的語言的語法規(guī)則。算法例1-6用程序設(shè)計語言描述法描述例1-2的算法如下所示。#include"stdio.h"voidmain(){floatftall1,ftall2,fmax;scanf("%f%f",&ftall1,&ftall2);if(ftall1>ftall2)fmax=ftall1;elsefmax=ftall2;printf("%f",fmax)

;}軟件編程規(guī)范1.程序的可讀性原則(1)編程規(guī)范概要①程序結(jié)構(gòu)清晰,簡單易懂,單個函數(shù)的程序行數(shù)不得超過100行。②打算干什么,要簡單,直截了當,代碼精簡,避免垃圾程序。③盡量使用標準庫函數(shù)和公共函數(shù)。④不要隨意定義全局變量,盡量使用局部變量。⑤使用括號以避免二義性。軟件編程規(guī)范1.程序的可讀性原則(2)可讀性要求①可讀性第一,效率第二。②主要變量(結(jié)構(gòu)、聯(lián)合、類或?qū)ο螅┒x或引用時,注釋能反映其含義。③常量定義(define)有相應(yīng)說明。④處理過程的每個階段都有相關(guān)注釋說明。⑤利用縮進來顯示程序的邏輯結(jié)構(gòu),縮進量一致,可以以Tab鍵為單位。⑥循環(huán)、分支層次不要超過五層。⑦適當?shù)氖褂米⑨?,注釋可以與語句在同一行,也可以在上行。⑧保持各種運算的標準形式,通過括號避免運算符的二義性。軟件編程規(guī)范2.匈牙利命名法匈牙利命名法是一種編程時的命名規(guī)范,以一個或者多個小寫字母開頭作為前綴,表示類型;前綴之后的是首字母大寫的一個單詞或多個單詞組合,該單詞要指明變量的用途。要基于容易記憶容易理解的原則。保證名字的連貫性是非常重要的。匈牙利命名法非常便于記憶,而且使變量名非常清晰易懂,這樣,增強了代碼的可讀性,方便各程序員之間相互交流代碼。其缺點是在使用匈牙利命名法時會產(chǎn)生冗余。匈牙利命名法有其優(yōu)點但也有缺點,這就需要在使用中揚長避短,合理應(yīng)用它。拓展案例案例1-1寫出下面問題的算法。問題描述比較三個人的身高,將個子較高的那個人的身高輸出到屏幕上。拓展案例

算法設(shè)計拓展案例案例1-2寫出下面問題的算法。問題描述本題是一個經(jīng)典的數(shù)學(xué)問題。對于一個大于2的正整數(shù),判斷它是不是一個素數(shù)。。拓展案例

算法設(shè)計拓展活動查資料對比國內(nèi)外軟件行業(yè)發(fā)展現(xiàn)狀,體會軟件發(fā)展對國力的重要性,認識“中國芯”,作為新時代的大學(xué)生,要認真學(xué)習(xí)計算機程序設(shè)計,奮發(fā)圖強,為祖國的騰飛,為實現(xiàn)中國夢而努力學(xué)習(xí)!

制造中國芯,實現(xiàn)中國夢項目小結(jié)本項目主要介紹了C語言的產(chǎn)生、發(fā)展和特點,C程序的實現(xiàn)過程和結(jié)構(gòu),VisualC++6.0開發(fā)環(huán)境,程序設(shè)計的思想、方法以及算法以及軟件編程的規(guī)范等。重點掌握在VisualC++6.0開發(fā)環(huán)境下,編輯、編譯、連接、運行C程序的過程,認識C程序的基本結(jié)構(gòu),能夠正確的寫出算法。實踐訓(xùn)練實踐1安裝MicrosoftVisualC++6.0。1下載MicrosoftVisualC++6.0直接在網(wǎng)絡(luò)中下載MicrosoftVisualC++6.0即可??梢缘玫綁嚎s文件,例如。VisualC++6.0的功能特色:(1)可以進行便捷靈活的類管理。(2)可自動生成程序框架,免去自己敲大量代碼的煩惱!(3)界面交互性很強,具有集成交互操作性。(4)提供多種運行組件,不再有程序缺少組件而無法運行的煩惱!(5)具有強大的代碼自動編寫功能,讓你省心省力!實踐訓(xùn)練2安裝MicrosoftVisualC++6.0(1)解壓縮之后雙擊SETUP.exe,進入安裝向?qū)Вc擊下一步繼續(xù),如圖1-19所示。實踐訓(xùn)練2安裝MicrosoftVisualC++6.0(3)此處的姓名和公司名字可以隨意填寫,點擊下一步即可,如圖1-21所示。實踐訓(xùn)練2安裝MicrosoftVisualC++6.0(4)選擇安裝VisualC++6.0中文企業(yè)版,點擊下一步,如圖1-22所示。實踐訓(xùn)練2安裝MicrosoftVisualC++6.0(5)可能出現(xiàn)兼容性問題,點擊運行程序,如圖1-23所示。實踐訓(xùn)練2安裝MicrosoftVisualC++6.0(6)接下里連續(xù)的三個窗口點擊【繼續(xù)】→【確定】→【是】,如圖1-24所示。實踐訓(xùn)練2安裝MicrosoftVisualC++6.0(7)點擊“Typical”繼續(xù)安裝,表示安裝同時還有其他相關(guān)軟件給你安裝進去,能夠使電腦更加融洽,如圖1-25所示。實踐訓(xùn)練2安裝MicrosoftVisualC++6.0(8)勾選之后點擊ok即可,如圖1-26所示。實踐訓(xùn)練2安裝MicrosoftVisualC++6.0(9)等待安裝當中,過程緩慢,請稍候,如圖1-27所示。實踐訓(xùn)練2安裝MicrosoftVisualC++6.0(10)點擊確定則VC++6.0成功安裝,如圖1-28所示。實踐訓(xùn)練2安裝MicrosoftVisualC++6.0(11)菜單中找到此軟件,運行程序即可,如圖1-29所示。實踐訓(xùn)練實踐2參照本章例題,編寫一個C程序,輸出以下內(nèi)容。******#include“stdio.h”voidmain(){printf("*\n");printf("**\n");printf("***\n");}參考代碼實踐訓(xùn)練執(zhí)行結(jié)果謝謝多一點努力,多一點實踐,多一點點就能創(chuàng)造奇跡!C語言程序設(shè)計創(chuàng)建第一個C語言程序項目1“學(xué)生成績管理系統(tǒng)”中相關(guān)數(shù)據(jù)設(shè)計及簡單處理項目2項目中學(xué)生成績的等級判定項目3項目中的設(shè)計數(shù)據(jù)處理及封面與菜單的初步項目4學(xué)生成績的分組匯總程序項目5利用數(shù)組完善項目中數(shù)據(jù)的處理項目6利用函數(shù)進行項目的整體框架設(shè)計項目7利用結(jié)構(gòu)體實現(xiàn)項目項目8利用指針優(yōu)化項目項目9利用文件完善項目項目10項目2“學(xué)生成績管理系統(tǒng)”中相關(guān)數(shù)據(jù)設(shè)計及簡單處理目標TARGET知識目標了解C語言的基本字符掌握C語言的標識符、關(guān)鍵字理解和掌握數(shù)據(jù)類型、常量和變量掌握運算符與表達式目標TARGET技能目標學(xué)會正確的定義變量、使用變量和常量能夠正確的運用各種運算符和表達式“學(xué)生成績管理系統(tǒng)”中的相關(guān)數(shù)據(jù)設(shè)計任務(wù)2.1學(xué)生成績總分及平均分的計算任務(wù)2.2任務(wù)2.1“學(xué)生成績管理系統(tǒng)”中的相關(guān)數(shù)據(jù)設(shè)計

任務(wù)描述完成“學(xué)生成績管理系統(tǒng)”,需要不同數(shù)據(jù)類型的數(shù)據(jù)。假設(shè)該系統(tǒng)需要完成學(xué)生三門課程的總分及平均分,確定該系統(tǒng)中所需數(shù)據(jù)。任務(wù)分析假設(shè)三門課程分別為數(shù)學(xué)、英語、語文,可以將定義為整型數(shù)據(jù),三門課程的總分也為整型數(shù)據(jù),而三門課程的平均分應(yīng)該為實型。任務(wù)2.1“學(xué)生成績管理系統(tǒng)”中的相關(guān)數(shù)據(jù)設(shè)計

算法設(shè)計(1)定義iMath、iEnglish、iChinese為int型,分別存儲數(shù)學(xué)、英語、語文成績。(2)定義iSum為int型,存儲三門課程的總分。(3)定義fAverage為float型,存儲三門課程的平均分。任務(wù)2.1“學(xué)生成績管理系統(tǒng)”中的相關(guān)數(shù)據(jù)設(shè)計

實現(xiàn)在線測試系統(tǒng)主頁面的布局和美化某班級需要一個學(xué)生成績管理系統(tǒng),該系統(tǒng)應(yīng)具有學(xué)生成績的添加、刪除、查詢、修改、插入和排序等處理功能,提供數(shù)字按鍵菜單操作方式,如圖0-1所示。程序代碼#include"stdio.h"/*編譯預(yù)處理命令*/voidmain(){intiMath,iEnglish,iChinise;/*定義整型變量iMath、iEnglish、iChinese*/intiSum;/*定義整型變量iSum*/floatfAverage;/*定義單精度實型變量fAverage*/……}/*main()主函數(shù)結(jié)束*/1基本數(shù)據(jù)及其運算Part◎C語言的數(shù)據(jù)類型◎常量和變量◎基本字符、標識符和關(guān)鍵字基本字符、標識符和關(guān)鍵字

1.基本字符C程序可以看作是由C語言的基本字符按一定的規(guī)則組成的一個序列。C程序中使用的基本字符包括:(1)大小寫英文字母ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz(2)十進制阿拉伯數(shù)字0123456789(3)下面29個符號!"#%&'()*+,-./:;<=>?[\]^_{|}~(4)5種空白符空格、水平制表符、垂直制表符、換行、換頁基本字符、標識符和關(guān)鍵字

1.基本字符(5)基本運行字符集還包括四個不可打印的字符:null字符(用做字符串終止符)、警報(alert)、退格(backspace)、回車(carriagereturn)為了在字母和字符串中表示這些字符,輸入反斜杠\加對應(yīng)的轉(zhuǎn)義序列(escapesequence)即可,例如,\0表示null字符(空字符),\a表示警報,\b表示退格,而\r表示回車。不同的C實現(xiàn)版本中,字符實際對應(yīng)的數(shù)值(字符碼)可能不同。C語言本身僅規(guī)定了以下規(guī)則:基本字符集中的每個字符必須用一個字節(jié)(byte)表示??兆址且粋€字節(jié),其所有的位(bit)都是0。0之后的每個十進制數(shù)字,編碼都要依次比前者大1?;咀址?、標識符和關(guān)鍵字

2.標識符和其他高級語言一樣,我們把用來標識變量名、函數(shù)名、符號常量名、數(shù)組名、結(jié)構(gòu)體名等的有效字符序列稱為“標識符”(Identifier),簡單的講,標識符就是一個名字。比如,我們在程序中使用了諸如a、abc、mn123這樣的名字,它們都是程序員自己起的,一般能夠表達出變量的作用,這就是標識符。不過,名字也不能隨便起,要遵守規(guī)范。C語言規(guī)定,標識符的命名規(guī)則為:(1)只能由字母(A~Z,a~z)、數(shù)字(0~9)和下劃線(_)組成;(2)只能以字母或下劃線開頭;(3)不能使用C語言中的關(guān)鍵字;(4)標識符的有效長度隨系統(tǒng)而異,但至少前8個字符有效;如果超長,則超長部分被舍棄?;咀址俗R符和關(guān)鍵字

根據(jù)C語言中標識符的命名規(guī)則可以做出如下判斷:(1)合法的標識符有:a,x,x3,BOOK_1,sum5,_f23,file_name(2)非法的標識符有:3s,s*T,-3x,bowy-1,int例2-1判斷下面標識符哪些是合法的,哪些是非法的。a,3s,x,x3,BOOK_1,s*T,-3x,sum5,_f23,bowy-1,int,file_name。說明:題目中3s以數(shù)字開頭,-3x出現(xiàn)非法字符*,-3x不能以減號(-)開頭,bowy-1出現(xiàn)非法字符減號(-),int是關(guān)鍵字。注意:(1)C語言雖然不限制標識符的長度,但是它受到不同編譯器的限制,同時也受到操作系統(tǒng)的限制。例如在某個編譯器中規(guī)定標識符前128位有效,當兩個標識符前128位相同時,則被認為是同一個標識符。(2)在標識符中,大小寫是有區(qū)別的,例如BOOK和book是兩個不同的標識符。(3)標識符雖然可由程序員隨意定義,但標識符是用于標識某個量的符號,因此,命名應(yīng)盡量有相應(yīng)的意義,以便于閱讀和理解,作到“見名知義”。(4)函數(shù)名、變量名一般用小寫,而符號常量一般為大寫。(5)不要使用函數(shù)中的庫函數(shù)名、預(yù)處理名等作為自定義的標識符。基本字符、標識符和關(guān)鍵字

3.關(guān)鍵字關(guān)鍵字(Keywords)是由C語言規(guī)定的具有特定意義的字符串,通常也稱為保留字,例如int、char、long、float、unsigned等。我們定義的標識符不能與關(guān)鍵字相同,否則會出現(xiàn)錯誤。你也可以將關(guān)鍵字理解為具有特殊含義的標識符,它們已經(jīng)被系統(tǒng)使用,我們不能再使用了?;咀址?、標識符和關(guān)鍵字

C語言關(guān)鍵字autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile說明:根據(jù)關(guān)鍵字的作用可以將關(guān)鍵字分為數(shù)據(jù)類型關(guān)鍵字、控制語句關(guān)鍵字、存儲類型關(guān)鍵字和其它關(guān)鍵字四類。(1)數(shù)據(jù)類型關(guān)鍵字(11.5個)基本類型:char,int,float,double修飾類型:short,long,signed,unsigned構(gòu)造類型:enum,union,struct其他類型:void(2)控制語句關(guān)鍵字(12個):循環(huán)語句:for,do,while,break,continue條件語句:if,else,goto開關(guān)語句:switch,case,default返回語句:return說明:(3)存儲類型關(guān)鍵字(6個):auto,extern,register,static,const,volatile(4)其它關(guān)鍵字(2.5個):void,sizeof,typedef減號(-),int是關(guān)鍵字。C語言的數(shù)據(jù)類型

數(shù)據(jù)類型決定數(shù)據(jù)的存儲空間的大小及表現(xiàn)形式、數(shù)據(jù)的取值范圍和運算方式。C語言提供的數(shù)據(jù)類型非常豐富,包括基本數(shù)據(jù)類型、構(gòu)造數(shù)據(jù)類型、指針類型和空類型四大類,具體如圖2-1所示。1.

C語言的數(shù)據(jù)類型分類C語言的數(shù)據(jù)類型

基本數(shù)據(jù)類型是C語言系統(tǒng)本身提供的,結(jié)構(gòu)比較簡單。構(gòu)造類型是由基本數(shù)據(jù)類型構(gòu)造而成的。指針類型是一種重要的數(shù)據(jù)類型,可以表示復(fù)雜的數(shù)據(jù)類型,使用起來非常靈活。本節(jié)只介紹基本數(shù)據(jù)類型,其余的數(shù)據(jù)類型在后面的章節(jié)中介紹。short、int、long、char、float、double這六個關(guān)鍵字代表C語言里的六種基本數(shù)據(jù)類型。在不同的系統(tǒng)上,這些類型占據(jù)的字節(jié)長度是不同的。在32位的系統(tǒng)上,這六種基本數(shù)據(jù)類型的所占字節(jié)長度和取值范圍如表2-2所示,具體可以用sizeof測試一下。1.

C語言的數(shù)據(jù)類型分類C語言的數(shù)據(jù)類型

C語言的數(shù)據(jù)類型的取值范圍名稱標識符占用內(nèi)存取值范圍字符型char1字節(jié)-128~127短整型short2字節(jié)-32768~32767整型int4字節(jié)-2-31~231-1長整型long4字節(jié)-2-31~231-1單精度型float4字節(jié)3.4*10-38~3.4*1038或者-3.4*1038~-3.4*10-38雙精度型double8字節(jié)1.7*10-308~1.7*10308或者-1.7*10308~-1.7*10-308C語言的數(shù)據(jù)類型

整型數(shù)據(jù)分為整型、短整型和長整型3大類,其中每一類又分為無符號(unsigned)和有符號(signed)兩種情況。整型數(shù)據(jù)是以二進制補碼的形式存儲的。對有符號數(shù)據(jù),則存儲單元的最高位為符號位,1表示負數(shù),0表示正數(shù)。對無符號數(shù),則沒有符號位,所有的存儲單元均為數(shù)據(jù)位。2.整型數(shù)據(jù)說明:整數(shù)有原碼、反碼和補碼3種表示方法。一個正數(shù)的原碼、反碼和補碼與原碼相同。負數(shù)的原碼就是把符號位數(shù)值化。負數(shù)的補碼就是在反碼的末位(最右端)加1。C語言的數(shù)據(jù)類型

實型數(shù)據(jù)也稱浮點數(shù),指帶有小數(shù)部分的非整數(shù)數(shù)值,在C語言中,實型數(shù)據(jù)分為單精度和雙精度。實型數(shù)據(jù)都是有符號數(shù)據(jù),沒有無符號實型數(shù)據(jù)。實型數(shù)據(jù)在計算機中是以指數(shù)形式存儲的,把它分為小數(shù)和指數(shù)兩個部分,其中小數(shù)部分的位數(shù)越多,數(shù)的有效位就越多,數(shù)的精度就越高,指數(shù)部分的位數(shù)越多,數(shù)的表示范圍就越大。實型數(shù)據(jù)通常在程序中用小數(shù)形式書寫,只是在數(shù)值很大或者很小時,才會使用指數(shù)形式。在用指數(shù)形式表示時,E前必須要有數(shù)字,E后是整數(shù)。3.實型數(shù)據(jù)C語言的數(shù)據(jù)類型

在內(nèi)存中,一個字符型數(shù)據(jù)占用一個字節(jié)(8bite),以ASCII碼的二進制形式存放。比如字符'a'的ASCII碼值是97,則'a'在內(nèi)存中的存放形式如圖2-2所示。4.字符型數(shù)據(jù)注意:常用字符數(shù)據(jù)的ASCII碼值可以參考附錄A“ASCII碼表”,表中列出了標準ASCII字符集128個字符,其編碼為0到127之間。'A'的ASCII碼值是65,'B'的ASCII碼值是66;'a'的ASCII碼值是97,'b'的ASCII碼值是98;其大小寫的ASCII碼相差32。'0'的ASCII碼值是48,'1'的ASCII碼值是49,只要記住'A'、'a'、'0'的ASCII碼值,就可以推算出其他字母和數(shù)字的ASCII碼值。字符型數(shù)據(jù)有時可以和整型數(shù)據(jù)通用,具體表現(xiàn)在:一個字符型變量可以賦以一個字符常量,也可以賦以一個整數(shù)。字符型數(shù)據(jù)在輸出時可以以字符格式輸出,也可以以整數(shù)格式輸出。以整數(shù)格式輸出時,ASCII碼值在1-127之間的字符輸出正數(shù),128-255之間的字符輸出負數(shù)。字符型數(shù)據(jù)可以進行算術(shù)運算,運算時以它們的ASCII碼值進行運算?;咀址?、標識符和關(guān)鍵字

#include"stdio.h"voidmain(){

intc1,c2;

//定義整型變量c1,c2

c1='a';//將字符常量附給變量c1

c2=97;//將97("a"的ASCII碼值)附給變量c2

printf("c1=%c,c2=%c\n",c1,c2);//用字符格式輸出變量c1,c2

printf("c1=%d,c2=%d\n",c1,c2);//用整數(shù)格式輸出變量c1,c2}例2-2字符型數(shù)據(jù)和整型數(shù)據(jù)通用舉例?;咀址俗R符和關(guān)鍵字

運行結(jié)果注意:變量c1、c2在內(nèi)存中的值都是97,輸出什么取決于格式說明符是%d還是%c。常量和變量

1.常量在程序的執(zhí)行過程中,其值不能被改變的量稱為常量。常量一般從其字面形式即可判別,不需要類型說明就可以直接使用,這種常量稱為普通常量或字面常量,其類型是由常量本身隱含決定的;常量也可以用標識符來代表,這種常量稱為符號常量。在C語言中,常量和變量都是可以用來存儲和表示數(shù)據(jù)的,常量值在程序執(zhí)行的過程中是不可變的,而變量是可變的。常量和變量

普通常量在程序的執(zhí)行過程中,其值不能被改變的量稱為常量。常量一般從其字面形式即可判別,不需要類型普通常量有4類:整型數(shù)值常量、實型數(shù)值常量、字符常量和字符串常量。(1)整型數(shù)值常量整型數(shù)值常量有三種表示方法:十進制(0-9十個數(shù)字構(gòu)成,逢10進1),如:1,200,3500十六進制(0-9十個數(shù)字,A-F六個字符構(gòu)成,逢16進1),以0x或0X開頭的數(shù)字序列,如:0x12,0X706A,0xF2B八進制(0-7八個數(shù)字構(gòu)成,逢8進1),以0開頭的數(shù)字序列,如:025,0706常量和變量

普通常量(2)實型數(shù)值常量實型數(shù)據(jù)也稱浮點數(shù),指帶有小數(shù)部分的非整數(shù)數(shù)值,實型數(shù)值常量有2種表示方法:小數(shù)形式:726.8,97.3,0.529指數(shù)形式:3.23E-5,1.5E2常量和變量

普通常量(3)字符型常量字符型常量有2種表示方法:用單引號引起來的單個字符,如'a','A','$'轉(zhuǎn)義字符表示法,如"\n","\105","\'\n','\105','\X7B'"這里的轉(zhuǎn)義字符是一種特殊的字符常量,通常用來表示一些比較特殊的字符,比如不可視,或者不能通過鍵盤輸入的都可以用轉(zhuǎn)義字符表示。轉(zhuǎn)義字符是以"\"開頭的字符序列,常用的轉(zhuǎn)義字符如表2-3所示。常量和變量

常用轉(zhuǎn)義字符轉(zhuǎn)義字符意義ASCII碼值(十進制)\a響鈴(BEL)007\b退格(BS),將當前位置移到前一列008\f換頁(FF),將當前位置移到下頁開頭012\n換行(LF),將當前位置移到下一行開頭010\r回車(CR),將當前位置移到本行開頭013\t水平制表(HT)(跳到下一個TAB位置)009\v垂直制表(VT)011\\代表一個反斜線字符''\'092\'代表一個單引號(撇號)字符039\"代表一個雙引號字符034\?代表一個問號063\0空字符(NUL)000\ooo1到3位八進制數(shù)所代表的任意字符\xhh十六進制所代表的任意字符說明:(1)表2-3中最后2行是用ASCII碼(八進制或是十六進制)表示一個字符。如:\101代表ASCII碼為65(十進制)的字符'A',\012代表ASCII碼為10(十進制)的字符\n,即換行符,字符\000或者\0代表ASCII碼為0(十進制)的控制符,即空字符。(2)轉(zhuǎn)義字符從書寫上看是一個字符序列,實際上是作為1個字符對待的,存儲時只占1個字節(jié)。常量和變量

普通常量(4)字符串常量字符串常量簡稱字符串,是用一對雙引號括起來的字符序列。例如"china","1","A","123"等。這里的雙引號只起定界的作用,它不屬于字符串中的字符。而且C語言會自動在字符串尾部加上一個轉(zhuǎn)義字符"\0"(空字符,其ASCII碼值為0)作為字符串的結(jié)束標記。因此,字符串在內(nèi)存中占用的存儲字節(jié)數(shù)要比字符串長度多1,即雙引號之間的字符個數(shù)加1,才是字符串存儲時的字節(jié)數(shù)。同時我們可以通過"\0"來判斷字符串是否結(jié)束。以字符串"china"為例,字符串的存儲形式如圖2-3所示。'c''h''i''n''a''\0'常量和變量

符號常量符號常量就是用標識符來表示常量。C語言中,可以用以下兩種方法定義符號常量。(1)使用編譯預(yù)處理命令define符號常量可以在文件的開始定義,其定義格式如下:#define常量名常量值如:

#definePI3.1415926#defineN100常量和變量

符號常量2)使用常量說明符constconst是C語言中32個關(guān)鍵字之一,可以用來定義符號常量,具體格式如下:const數(shù)據(jù)類型常量名=常量值如:constfloatpi=3.1415926定義了符號常量后,就可以在程序中用符號代替常量出現(xiàn),這不僅提高了程序的可讀性,也同時給程序的修改帶來了極大的方便。常量和變量

#definePI3.1415926/*定義符號常量PI代替圓周率*/#include"stdio.h"voidmain(){floatfR,fArea;fR=10;fArea=PI*fR*fR;printf("theareaofthiscircleis%0.2f\n",fArea);}例2-3符號常量的使用。說明:符號常量一般用大寫字母表示,方便與其他標識符區(qū)分。常量和變量

2.變量—變量的概念在程序執(zhí)行過程中,其值可以改變的量稱為變量。在C語言中,變量相當于存儲數(shù)據(jù)的容器,在內(nèi)存中占據(jù)一定的存儲單元,用于存放數(shù)據(jù),即變量值。我們可以使用變量來保存程序執(zhí)行過程中的輸入數(shù)據(jù)、中間結(jié)果和最終結(jié)果。每個變量都要用一個名字表示,即變量名。這個名字是由程序設(shè)計者命名,且一定要遵守標識符的命名規(guī)則。常量和變量

變量的定義變量在程序中負責(zé)存儲數(shù)據(jù),而數(shù)據(jù)具有整型、實型、字符型等不同的類型。因此,變量在定義時一定要有相應(yīng)的類型。變量必須先定義后使用,變量定義時必須提供兩個方面的信息:變量名和變量的類型。變量定義語句的一般形式是:類型標識符變量名列表;例如:inta,b;//定義了2個整型變量a、blongc;//定義了1個長整型變量cfloatr,s;//定義了2個單精度實型變量r、sdoublex;//定義了1個雙精度實型變量xcharch;//定義了1個字符型變量ch常量和變量

變量的初始化在定義變量的同時給變量賦一個初值,稱為變量的初始化。例如:intsum=0;floatf=123.45;charch='A';說明:(1)變量必須先定義再使用,否則程序無法為其分配存儲空間。(2)變量具有三個要素:變量名、類型和當前值。變量的值除了可以通過賦初值的方式獲取,還可以通過賦值的方法獲得和改變。首次使用變量時,變量必須要有確定的值,否則會導(dǎo)致運算錯誤。常量和變量

intiAge=20,iNum=201; charcSex='m';/*f:female(女),m:male(男)*/ floatfScore; fScore=580.5;例2-4按照問題定義適當?shù)淖兞俊P律雽W(xué)需要保存學(xué)生數(shù)據(jù),如年齡、學(xué)號、性別、入學(xué)分數(shù)?,F(xiàn)在定義整型變量存放年齡、學(xué)號,定義字符變量存放性別,定義浮點型變量存放入學(xué)分數(shù)。問題分析可以定義整型變量iAge、iNum分別存放年齡、學(xué)號,定義字符變量cSex存放性別,定義浮點型變量fScore存放入學(xué)分數(shù)。程序段任務(wù)2.2學(xué)生成績總分及平均分的計算

任務(wù)描述計算一名學(xué)生數(shù)學(xué)、英語、語文三門課程的總分及平均分。這名學(xué)生三門課程的成績分別為89、96、82。。任務(wù)分析熟悉VisualC++6.0環(huán)境,能夠正確編輯、鏈接、運行C程序已知這名學(xué)生的三門課程的成績,成績相加即可獲取該學(xué)生的總分,總分除以科目數(shù)即為平均分。任務(wù)2.2學(xué)生成績總分及平均分的計算

算法設(shè)計(1)定義iMath、iEnglish、iChinese和iSum為int型,分別存儲數(shù)學(xué)、英語、語文成績和總分,其中將iMath、iEnglish、iChinese分別賦值為89、96、82;定義fAverage為float型,存儲三門課程的平均分。(2)計算總分。(3)計算平均分。(4)輸出學(xué)生的總分和平均分。任務(wù)2.2學(xué)生成績總分及平均分的計算

程序代碼#include"stdio.h"/*編譯預(yù)處理命令*/voidmain(){intiMath=89,iEnglish=96,iChinese=82;/*定義整型變量iMath、iEnglish、iChinese,并分別賦值*/intiSum;/*定義整型變量iSum*/floatfAverage;/*定義單精度實型變量fAverage*/iSum=iMath+iEnglish+iChinese;fAverage=iSum/3.0;printf("該學(xué)生的總分為:%d,平均分為:%.2f\n",iSum,fAverage);}。任務(wù)2.2學(xué)生成績總分及平均分的計算

執(zhí)行結(jié)果2運算符和表達式Part◎賦值運算符和賦值表達式◎算術(shù)運算符和算術(shù)表達式◎逗號運算符和逗號表達式◎數(shù)據(jù)間的混合運算與類型轉(zhuǎn)換運算符和表達式

C語言運算符是說明不同運算的符號,運算符的操作對象稱為操作數(shù)或者運算數(shù)。運算符根據(jù)操作對象的個數(shù)可以分為單目運算符、雙目運算符和三目運算符。由運算符把操作數(shù)連接起來的一個有意義的式子叫做表達式。每種表達式都按照運算符所規(guī)定的運算規(guī)則進行運算,最終會得到一個結(jié)果,該結(jié)果被稱為表達式的值。C語言的運算符異常豐富,除了控制語句和輸入輸出以外的幾乎所有的基本操作都為運算符處理。運算符和表達式

優(yōu)先級運算符的運算優(yōu)先級共分為15級。15級最高,1級最低。在表達式中,優(yōu)先級較高的先于優(yōu)先級較低的進行運算。而在一個運算量兩側(cè)的運算符優(yōu)先級相同時,則按運算符的結(jié)合性所規(guī)定的結(jié)合方向處理。本書中附錄B“C語言運算符的優(yōu)先級和結(jié)合性”中的運算符表可以看到運算符的優(yōu)先級從1到15,15級優(yōu)先級最高,1級優(yōu)先級最低,(表中從上到下)依次遞減,最上面具有最高的優(yōu)先級,逗號操作符具有最低的優(yōu)先級。

結(jié)合性各運算符的結(jié)合性分為兩種,即左結(jié)合性(自左至右)和右結(jié)合性(自右至左)。這種自左至右的結(jié)合方向就稱為“左結(jié)合性”。而自右至左的結(jié)合方向稱為“右結(jié)合性”。算術(shù)運算符和算術(shù)表達式

1.基本算術(shù)運算符運算符名稱例子運算功能+加法運算x+y求x與y的和-減法運算x-y求x與y的差*乘法運算x*y求x與y的積/除法運算x/y求x除以y的商%模運算x%y求x除以y的余數(shù)說明:(1)對于除法運算符(/),如果兩個操作數(shù)全是整數(shù),結(jié)果為整數(shù);如果其中一個操作數(shù)為浮點數(shù),結(jié)果為浮點數(shù)。如3/5的值為0,5/3的值為1,3/5.0的值為0.6。(2)對于模運算符(%),兩個操作數(shù)必須為整數(shù)。如8%5的值是3,10%2的值是0,-14%5的值是-4。算術(shù)運算符和算術(shù)表達式

以上6種基本算術(shù)運算符都是雙目運算符,也就是需要2個操作數(shù)。其優(yōu)先級為13級和12級,由高到低為:“*、/、%”高于“+、-”。其結(jié)合性為左結(jié)合,即從左向右進行計算。用算術(shù)運算符將操作數(shù)連接起來,構(gòu)成算術(shù)表達式。在算術(shù)表達式中應(yīng)該先計算乘除模運算,再計算加減,若遇到同一級別的,則從左向右依次進行計算。2.算術(shù)表達式以上6種基本算術(shù)運算符都是雙目運算符,也就是需要2個操作數(shù)。其優(yōu)先級為13級和12級,由高到低為:“*、/、%”高于“+、-”。其結(jié)合性為左結(jié)合,即從左向右進行計算。用算術(shù)運算符將操作數(shù)連接起來,構(gòu)成算術(shù)表達式。在算術(shù)表達式中應(yīng)該先計算乘除模運算,再計算加減,若遇到同一級別的,則從左向右依次進行計算。算術(shù)運算符和算術(shù)表達式

例2-5從鍵盤輸入一個3位數(shù),求該數(shù)個位、十位、百位上的數(shù)的和。問題分析首先需要有一個變量存儲3位數(shù),在通過算術(shù)運算分別計算出這個3位數(shù)的個位、十位、百位,最后計算它們的和。算術(shù)運算符和算術(shù)表達式

算法設(shè)計(1)定義1個整型變量iNum存儲從鍵盤輸入的3位數(shù);(2)定義整型變量i1、i2、i3、iSum分別存儲個位、十位、百位上的數(shù)字及其和;(3)從鍵盤輸入一個3位整數(shù)存入變量iNum中;(4)用iNum%10求得個位上的數(shù)存入i1中;(5)用iNum/10%10求得十位上的數(shù)存入i2中;(6)用iNum/100求得百位上的數(shù)存入i3中;(7)求i1、i2、i3的和存入iSum中;(8)輸出iSum的值。算術(shù)運算符和算術(shù)表達式

#include"stdio.h" voidmain() { intiNum; inti1,i2,i3,iSum; printf("pleaseinputainteger(100-999):"); scanf("%d",&iNum); i1=iNum%10;/*求個位數(shù)*/ i2=iNum/10%10;/*求十位數(shù)*/ i3=iNum/100;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論