版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第一章C語(yǔ)言基本概念目錄/Contents計(jì)算機(jī)語(yǔ)言和程序算法、算法表示、算法優(yōu)化C語(yǔ)言編程C程序的結(jié)構(gòu)常量定義標(biāo)識(shí)符問(wèn)題的提出為什么要學(xué)習(xí)計(jì)算機(jī)語(yǔ)言?需求:人與計(jì)算機(jī)交流需要人和計(jì)算機(jī)雙方都能接受和理解的語(yǔ)言。特點(diǎn):規(guī)則和嚴(yán)謹(jǐn),缺少靈活性。輾轉(zhuǎn)相除法求最大公約數(shù)問(wèn)題的提出什么是計(jì)算機(jī)程序?概念:被連續(xù)執(zhí)行的一條條指令的集合稱(chēng)為計(jì)算機(jī)程序。功能:為完成某種工作,人們將其解題步驟用指令的形式描述出來(lái),并把這些指令存放在計(jì)算機(jī)內(nèi)存中,然后向計(jì)算機(jī)發(fā)出命令,計(jì)算機(jī)就會(huì)自動(dòng)逐條順序執(zhí)行指令,執(zhí)行完全部指令就能得到想要的結(jié)果。。問(wèn)題的提出什么是程序?
程序是用特殊的編程語(yǔ)言寫(xiě)出來(lái)的表達(dá)如何解決問(wèn)題的過(guò)程或步驟。它不是用編程語(yǔ)言和計(jì)算機(jī)交談的,而是描述要求它如何做事情的過(guò)程或方法。編程語(yǔ)言的歡迎度為什么是C語(yǔ)言C語(yǔ)言仍然是編寫(xiě)操作系統(tǒng)的不二之選工業(yè)界最受歡迎的語(yǔ)言存在大量的函數(shù)庫(kù)有些地方對(duì)程序的運(yùn)行效率有苛求-設(shè)備驅(qū)動(dòng)程序,高性能、實(shí)時(shí)中間件,嵌入式領(lǐng)域,并發(fā)程序設(shè)計(jì)等要繼承和維護(hù)早期的C語(yǔ)言系統(tǒng)交流、筆試、面試時(shí)最常見(jiàn)的語(yǔ)言程序設(shè)計(jì)步驟程序要做什么?可執(zhí)行文件擴(kuò)展名為.exe的文件
需求分析(Analysis)設(shè)計(jì)(Design)編碼(Write)編輯(Edit)編譯(Compile)連接(Link)運(yùn)行(Run)調(diào)試(Debug)程序怎么做?擴(kuò)展名為.c的文件(對(duì)C語(yǔ)言而言)語(yǔ)法分析差錯(cuò),翻譯生成擴(kuò)展名為.obj的文件設(shè)計(jì)算法編寫(xiě)程序源代碼把自己的意圖寫(xiě)入源代碼編輯源程序編譯和連接調(diào)試程序
直到改正了所有的編譯錯(cuò)誤和運(yùn)行錯(cuò)誤運(yùn)行程序C程序開(kāi)發(fā)步驟C程序編譯環(huán)境VisualC++6.0Windows平臺(tái)上最流行的C/C++集成開(kāi)發(fā)環(huán)境之一Dev-C++,)是一個(gè)Windows環(huán)境下C&C++開(kāi)發(fā)工具功能沒(méi)有VisualC++6.0強(qiáng)大,但是體積小,輕便C程序編譯環(huán)境-VisualC++C程序編譯環(huán)境-VisualC++C程序編譯環(huán)境-VisualC++C程序編譯環(huán)境-VisualC++C程序編譯環(huán)境-Dev-C++C程序編譯環(huán)境-Dev-C++C程序編譯環(huán)境-Dev-C++算法的概念算法:是計(jì)算機(jī)解決問(wèn)題的核心和靈魂。1.概念:解決一個(gè)特定問(wèn)題而采取的方法和步驟。
利用計(jì)算機(jī)解決問(wèn)題就是告訴計(jì)算機(jī)如何進(jìn)行計(jì)算的步驟,計(jì)算機(jī)所做的所有事情都叫計(jì)算。2.生活中的算法:樂(lè)譜、菜譜、訂票、安檢。例1:如何交換A瓶中的白酒和B瓶中的紅酒?算法描述步驟:①準(zhǔn)備一個(gè)空瓶C;②A倒入C;③B倒入A;④C倒入B。算法舉例如何交換變量a=5,b=10的值?算法舉例例2:計(jì)算正整數(shù)M、N(M>N)的最大公約數(shù)。算法描述步驟:①用N除M得整數(shù)R,R必須小于N;②若R=0,算法結(jié)束,輸出結(jié)果為N;否則繼續(xù)步驟③;③將M更新為N,N更新為R,并返回①繼續(xù)進(jìn)行算法的特征◆
有窮性:執(zhí)行有限個(gè)操作后終止。◆確定性:算法中每一步的含義必須是明確的,不存在二義性?!粲行裕核惴ㄖ忻恳徊讲僮鞅仨毮苡行?zhí)行,不能執(zhí)行的操作是無(wú)效的?!粲辛銈€(gè)或多個(gè)輸入:執(zhí)行算法時(shí),從外界獲得必要信息?!粲幸粋€(gè)或多個(gè)輸出:算法的解(結(jié)果)就是輸出。
算法的性能評(píng)價(jià)時(shí)間復(fù)雜度:通常以算法中基本操作重復(fù)執(zhí)行的頻度n作為時(shí)間度量標(biāo)準(zhǔn)。 T(n)=O(f(n))空間復(fù)雜度:算法執(zhí)行時(shí)存儲(chǔ)空間需求的度量。S(n)=O(f(n))如何設(shè)計(jì)一個(gè)好的算法◆正確性:合法的輸入數(shù)據(jù)都能得到滿足要求的結(jié)果?!艨勺x性:算法應(yīng)該易于閱讀和理解。◆健壯性:當(dāng)輸入數(shù)據(jù)非法時(shí),能作出反應(yīng)或進(jìn)行相應(yīng)處理?!舾咝Ш偷痛鎯?chǔ)空間:對(duì)于相同規(guī)模的問(wèn)題,執(zhí)行時(shí)間短,占用空間少。小結(jié)是計(jì)算機(jī)解決問(wèn)題的核心和靈魂,設(shè)計(jì)正確的算法是計(jì)算機(jī)解決問(wèn)題的前提。算法的表示方法算法的表示方法:◆自然語(yǔ)言◆流程圖◆N-S圖◆偽代碼◆自然語(yǔ)言例1:求三個(gè)整數(shù)(a,b,c)中的最小數(shù)的算法?①比較前兩個(gè)數(shù);②將①中較小數(shù)與第三個(gè)數(shù)進(jìn)行比較;③步驟②中較小數(shù)即為所求的數(shù)?!袅鞒虉D例2:用流程圖表示兩個(gè)數(shù)的交換的算法。算法的表示方法◆N-S圖例3:用N-S圖表示求三個(gè)數(shù)最大數(shù)的算法。算法的表示方法算法的表示方法◆偽代碼ProcSumInputn0=>sumwhilei<=n{i+sum=>sumi+1=>i}PrintsumEnd流程圖和N-S圖基本圖素開(kāi)始與結(jié)束框輸入/輸出圖框處理框圖分支圖框
N-S盒
流程圖循環(huán)圖框流程圖和N-S圖基本圖素舉例【例1.1】求ax2+bx+c=0之根(a<>0)◆自然語(yǔ)言表示①輸入方程的3個(gè)系數(shù)a,b,c;②計(jì)算delta=b2-4ac,根據(jù)計(jì)算結(jié)果做出求解結(jié)果的判斷和處理。若delta<0,執(zhí)行⑥,若delta=0,執(zhí)行⑤,否則delta>0,執(zhí)行③。③根據(jù)求根公式計(jì)算兩個(gè)實(shí)根x1,x2;④輸出x1,x2;轉(zhuǎn)⑦⑤輸出兩個(gè)相等實(shí)根;轉(zhuǎn)⑦⑥打印“無(wú)實(shí)根”;⑦結(jié)束?!袅鞒虉D表示算法舉例◆N-S圖表示:舉例【例1.2】輸入年份,判斷是否閏年。舉例舉例算法的優(yōu)化【例1.4】將任意大小的三個(gè)數(shù)a,b,c按從大到小的順序排序。問(wèn)題的提出算法設(shè)計(jì)算法流程改進(jìn)的設(shè)計(jì)算法流程◆判斷次數(shù):5次、3次◆輸出語(yǔ)句個(gè)數(shù):6:1算法比較◆算法是解題步驟,其設(shè)計(jì)取決于人的創(chuàng)造;◆實(shí)際問(wèn)題需要首先對(duì)問(wèn)題進(jìn)行分析->抽象->建模,才能設(shè)計(jì)算法;◆算法有5個(gè)特征,設(shè)計(jì)時(shí)必須滿足;◆基于計(jì)算機(jī)的問(wèn)題求解和數(shù)學(xué)方法有很大不同,需要計(jì)算思維;◆算法需要用工程化的方法表達(dá);◆算法有很大的優(yōu)化空間,體現(xiàn)人的智慧而不是機(jī)器的智慧。算法小結(jié)結(jié)構(gòu)化程序設(shè)計(jì)方法◆程序設(shè)計(jì)采用什么方法呢?結(jié)構(gòu)化程序設(shè)計(jì)方法的主要內(nèi)容:①為了使程序具有良好的結(jié)構(gòu),編程時(shí)只采用三種基本結(jié)構(gòu);②采用自頂向下的程序設(shè)計(jì)方法;③用流程圖表示算法。結(jié)構(gòu)化程序設(shè)計(jì)方法特征①以三種基本結(jié)構(gòu)的組合來(lái)描述程序。②整個(gè)程序采用模塊化結(jié)構(gòu)。③限制使用轉(zhuǎn)移語(yǔ)句。在迫不得已的情況下,也要十分謹(jǐn)慎,并且只能在一個(gè)結(jié)構(gòu)內(nèi)部跳轉(zhuǎn),不允許從一個(gè)結(jié)構(gòu)跳到另一個(gè)結(jié)構(gòu)。這樣可縮小程序的靜態(tài)結(jié)構(gòu)和動(dòng)態(tài)執(zhí)行過(guò)程中之間的差異,避免人們誤解程序的功能。④以控制結(jié)構(gòu)為單位,每個(gè)結(jié)構(gòu)只有一個(gè)入口、一個(gè)出口,各單位之間接口簡(jiǎn)單,邏輯清晰。⑤采用結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言編寫(xiě)程序,并采用一定的書(shū)寫(xiě)格式使程序結(jié)構(gòu)清晰,易于閱讀。⑥培養(yǎng)良好的程序設(shè)計(jì)風(fēng)格。結(jié)構(gòu)化程序設(shè)計(jì)方法總體思想采用模塊化結(jié)構(gòu),自頂向下,逐步求精
模塊化程序設(shè)計(jì)問(wèn)題分析和求解:采用自上而下、逐步求精的設(shè)計(jì)方法。程序完成:采用自底向上、逐步集成的設(shè)計(jì)方法,將自頂向下分解的模塊單獨(dú)設(shè)計(jì)、調(diào)試、測(cè)試完成后,再組裝成高級(jí)模塊或更復(fù)雜模塊,實(shí)現(xiàn)對(duì)復(fù)雜問(wèn)題的自動(dòng)化計(jì)算。方程根的算法可以分解成三個(gè)小問(wèn)題:輸入問(wèn)題、求根問(wèn)題、輸出問(wèn)題。這三個(gè)小問(wèn)題就是求方程根的三個(gè)功能模塊:輸入模塊M1、求根計(jì)算模塊M2和輸出模塊M3。其中M1模塊負(fù)責(zé)輸入方程的系數(shù),M2模塊根據(jù)算法解方程求根,M3模塊負(fù)責(zé)將所得結(jié)果顯示或打印出來(lái)。分解出來(lái)的三個(gè)模塊從總體上為順序結(jié)構(gòu)。結(jié)構(gòu)化程序設(shè)計(jì)方法舉例【例1.5】求一元二次方程ax2+bx+c=0的根。圖1-22
M2模塊的細(xì)化圖圖1-23
M22模塊流程圖結(jié)構(gòu)化程序設(shè)計(jì)方法舉例結(jié)構(gòu)化程序設(shè)計(jì)方法舉例圖1-24求一元二次方程根的整體流程圖C語(yǔ)言編程【例1.6】要求在屏幕上輸出以下一行信息。
Hello,World!解題思路:
在主函數(shù)中用printf函數(shù)原樣輸出以上文字。#include<stdio.h>intmain(){
printf(”Hello,World!\n”);return0;}函數(shù)的名字,表示主函數(shù)C程序必須有一個(gè)main函數(shù)主函數(shù)類(lèi)型C語(yǔ)言編程#include<stdio.h>intmain(){
printf(”Hello,World!\n”);return0;}
函數(shù)體輸出函數(shù)輸出語(yǔ)句C語(yǔ)言編程#include<stdio.h>intmain(){
printf(”Hello,World!\n”);return0;}
換行符當(dāng)main函數(shù)執(zhí)行結(jié)束前將整數(shù)0作為函數(shù)值表示語(yǔ)句結(jié)束用到函數(shù)庫(kù)中的輸入輸出函數(shù)時(shí)C語(yǔ)言編程C語(yǔ)言編程C語(yǔ)言允許用兩種注釋方式://:?jiǎn)涡凶⑨尶蓡为?dú)占一行可出現(xiàn)在一行中其他內(nèi)容的右側(cè)/*……*/:塊式注釋可包含多行C語(yǔ)言程序的結(jié)構(gòu)特點(diǎn)C語(yǔ)言程序的結(jié)構(gòu)特點(diǎn):1.一個(gè)程序由一個(gè)或多個(gè)源程序文件組成小程序往往只包括一個(gè)源程序文件例1.6只有一個(gè)函數(shù)有的程序有兩個(gè)以上函數(shù)只包括一個(gè)源程序文件一個(gè)源程序文件中可以包括三個(gè)部分:預(yù)處理指令全局聲明函數(shù)定義#include<stdio.h>等在函數(shù)之外進(jìn)行的數(shù)據(jù)聲明每個(gè)函數(shù)用來(lái)實(shí)現(xiàn)一定的功能C語(yǔ)言程序的結(jié)構(gòu)特點(diǎn)C語(yǔ)言程序的結(jié)構(gòu)特點(diǎn)2.函數(shù)是C程序的主要組成部分一個(gè)C程序是由一個(gè)或多個(gè)函數(shù)組成的必須包含一個(gè)main函數(shù)(只能有一個(gè))每個(gè)函數(shù)都用來(lái)實(shí)現(xiàn)一個(gè)或幾個(gè)特定功能被調(diào)用的函數(shù)可以是庫(kù)函數(shù),也可以是自己編制設(shè)計(jì)的函數(shù)C語(yǔ)言程序的結(jié)構(gòu)特點(diǎn)C語(yǔ)言程序的結(jié)構(gòu)特點(diǎn):3.一個(gè)函數(shù)包括兩個(gè)部分:函數(shù)首部intmax(intx,inty)函數(shù)類(lèi)型函數(shù)名參數(shù)類(lèi)型參數(shù)名函數(shù)的第1行C語(yǔ)言程序的結(jié)構(gòu)特點(diǎn)3.一個(gè)函數(shù)包括兩個(gè)部分:函數(shù)首部intmax(intx,inty)若函數(shù)無(wú)參,在括弧中寫(xiě)void或空括弧intmain(void)或intmain()C語(yǔ)言程序的結(jié)構(gòu)特點(diǎn)3.一個(gè)函數(shù)包括兩個(gè)部分:函數(shù)體聲明部分定義在本函數(shù)中所用到的變量對(duì)本函數(shù)所調(diào)用函數(shù)進(jìn)行聲明執(zhí)行部分:由若干個(gè)語(yǔ)句組成,指定在函數(shù)中所進(jìn)行的操作可以沒(méi)有聲明部分C語(yǔ)言程序的結(jié)構(gòu)特點(diǎn)3.一個(gè)函數(shù)包括兩個(gè)部分:函數(shù)體voiddump(){}可以是空函數(shù)C語(yǔ)言程序的結(jié)構(gòu)特點(diǎn)4.程序總是從main函數(shù)開(kāi)始執(zhí)行5.C程序?qū)τ?jì)算機(jī)的操作由C語(yǔ)句完成C程序書(shū)寫(xiě)格式是比較自由的一行內(nèi)可以寫(xiě)幾個(gè)語(yǔ)句一個(gè)語(yǔ)句可以分寫(xiě)在多行上為清晰起見(jiàn),習(xí)慣上每行只寫(xiě)一個(gè)語(yǔ)句C語(yǔ)言程序的結(jié)構(gòu)特點(diǎn)6.數(shù)據(jù)聲明和語(yǔ)句最后必須有分號(hào)7.C語(yǔ)言本身不提供輸入輸出語(yǔ)句8.程序應(yīng)當(dāng)包含注釋?zhuān)黾涌勺x性程序設(shè)計(jì)的任務(wù)1.問(wèn)題分析對(duì)于接手的任務(wù)要進(jìn)行認(rèn)真的分析研究所給定的條件分析最后應(yīng)達(dá)到的目標(biāo)選擇解題的方法找出解決問(wèn)題的規(guī)律1.問(wèn)題分析2.設(shè)計(jì)算法
設(shè)計(jì)出解題的方法和具體步驟程序設(shè)計(jì)的任務(wù)1.問(wèn)題分析2.設(shè)計(jì)算法3.編寫(xiě)程序4.對(duì)源程序進(jìn)行編輯、編譯和連接5.運(yùn)行程序,分析結(jié)果結(jié)果錯(cuò)了,程序肯定錯(cuò)結(jié)果對(duì)了,程序未必對(duì)程序設(shè)計(jì)的任務(wù)1.問(wèn)題分析2.設(shè)計(jì)算法3.編寫(xiě)程序4.對(duì)源程序進(jìn)行編輯、編譯和連接5.運(yùn)行程序,分析結(jié)果6.編寫(xiě)程序文檔程序設(shè)計(jì)的任務(wù)變量、表達(dá)式和賦值floatF; /*F表示華氏溫度*/floatC; /*C表示攝氏溫度*/intage; /*age表示人的年齡*/floatweight; /*weight表示人的體重*/F=50.0;age=18;weight=65.0;變量【例1.7】給定圓的半徑,計(jì)算這個(gè)圓的面積和周長(zhǎng)。/*circle.c*//*計(jì)算一個(gè)圓的面積和周長(zhǎng)*/#include<stdio.h>
intmain(void){ floatradius=3.0,area,perimeter; /*變量radius、area和perimeter分別表示圓的半徑、面積和周長(zhǎng)*/ area=3.1415926*radius*radius; perimeter=2*3.1415926*radius; printf("area:%.2fperimeter:%.2f",area,perimeter);/*格式符%.2f表示保留小數(shù)點(diǎn)后兩位有效數(shù)字或精確到0.01*/ return0; }變量、表達(dá)式和賦值表達(dá)式表達(dá)式從鍵盤(pán)讀取輸入scanf("%d",&a);scanf("%f",&radius);【例1.8】下面的程序是計(jì)算圓的面積和周長(zhǎng)的改進(jìn)版,允許用戶(hù)自行輸入圓的半徑。/*Computestheareaandperimeterofacirclefrominputprovidedbytheuser*/#include<stdio.h>#definePI3.1415926intmain(void){ floatradius,area,perimeter; scanf("%f",&radius);/*從鍵盤(pán)輸入圓的半徑*/ area=3.1415926*radius*radius; perimeter=2*3.1415926*radius; printf("area:%.2fperimeter:%.2f",area,perimeter); return0; }scanf()從鍵盤(pán)讀取輸入常量定義宏常量【例1.9】下面的程序提示用戶(hù)輸入球的半徑,然后輸出球的體積。/*ball.c*//*Computesthevolumeofaballfrominputprovidedbytheuser*/#include<stdio.h>#definePI3.1415926 /*定義宏常量PI,它代表圓周率*/#defineSCALE_FACTOR(4.0/3.0)/
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖北大學(xué)《貨幣金融學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 金華浙江金華義烏市中心醫(yī)院基建總務(wù)科非編人員招聘筆試歷年參考題庫(kù)附帶答案詳解
- 2025至2030年中國(guó)大功率電池?cái)?shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 吉林省長(zhǎng)春市五中2022-2023學(xué)年高一上學(xué)期期末生物試題
- 2024年星級(jí)評(píng)定復(fù)習(xí)測(cè)試卷
- 鋼軌探傷星級(jí)評(píng)定練習(xí)試題附答案
- 貨檢中級(jí)工理論題庫(kù)專(zhuān)項(xiàng)測(cè)試題(一)
- 防雷專(zhuān)項(xiàng)測(cè)試題及答案
- 通信安全復(fù)習(xí)測(cè)試卷附答案
- 2025年木制平板車(chē)項(xiàng)目可行性研究報(bào)告
- 《鋼鐵是怎樣練成的》閱讀任務(wù)單及答案
- 新人教版高中數(shù)學(xué)必修第二冊(cè)第六章平面向量及其應(yīng)用教案 (一)
- 期末 (試題) -2024-2025學(xué)年教科版(廣州)英語(yǔ)四年級(jí)上冊(cè)
- 解讀國(guó)有企業(yè)管理人員處分條例課件
- 湖南省長(zhǎng)沙市一中2024-2025學(xué)年高一生物上學(xué)期期末考試試題含解析
- 碳纖維增強(qiáng)復(fù)合材料在海洋工程中的應(yīng)用情況
- 公司市場(chǎng)分析管理制度
- 焊接材料制造工-國(guó)家職業(yè)標(biāo)準(zhǔn)(2024版)
- 江西省2024年中考數(shù)學(xué)試卷(含答案)
- 榆神礦區(qū)郭家灘煤礦(700 萬(wàn)噸-年)項(xiàng)目環(huán)評(píng)
- 2024年200MW-400MWh電化學(xué)儲(chǔ)能電站設(shè)計(jì)方案
評(píng)論
0/150
提交評(píng)論