




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
C語言程序設(shè)計(jì)主講:牟艷教材、參考書教材丁海軍等編著,程序設(shè)計(jì)基礎(chǔ)(C語言),北京航空航天大學(xué)出版社參考書C語言程序設(shè)計(jì)教程譚浩強(qiáng)高等教育出版社C++程序設(shè)計(jì)教程
錢能清華大學(xué)出版社課程要求課前請做好預(yù)習(xí)保持課堂安靜,頭腦清醒,思維活躍認(rèn)真、獨(dú)立、按時(shí)完成并提交作業(yè)重視上機(jī)實(shí)踐,有效利用寶貴的上機(jī)時(shí)間實(shí)踐!實(shí)踐!再實(shí)踐?。?!學(xué)習(xí)方法熟悉用C語言編程的基本過程多上機(jī)實(shí)踐程序是調(diào)試出來的--調(diào)試工具的使用讀別人的程序不要相信自已的記憶,隨時(shí)帶上語言參考書準(zhǔn)備一本簡明英語小詞典。以便于編程時(shí)讀懂每一個(gè)錯(cuò)誤信息熟記C語言的基本概念(語法、句法)熟悉VC6.0上機(jī)操作環(huán)境會(huì)讀、會(huì)編、會(huì)調(diào)試C程序?qū)W會(huì)算法分析和算法設(shè)計(jì)課程目標(biāo):與我聯(lián)系muy@計(jì)算機(jī)系辦公室實(shí)驗(yàn)樓304#電話:85191955第一章C語言程序設(shè)計(jì)概念C語言程序概念概念C語言程序組成要素算法與程序設(shè)計(jì)方法學(xué)C程序上機(jī)步驟計(jì)算機(jī)語言、程序與軟件的區(qū)別軟件#include<stdio.h>main(){
printf(“hello,world\n”);}語言語言計(jì)算機(jī)語言是編寫程序、制作軟件的工具程序計(jì)算機(jī)語言、程序與軟件的區(qū)別計(jì)算機(jī)語言:是規(guī)則和符號的集合,是與計(jì)算機(jī)交流的工具程序:求解問題的指令序列軟件:程序的集合學(xué)習(xí)語言設(shè)計(jì)程序制作軟件人與計(jì)算機(jī)的對話兩個(gè)說不同母語的人的對話方式:一方學(xué)另一方的語言雙方都學(xué)習(xí)一種第三方語言人與計(jì)算機(jī)的對話方式:計(jì)算機(jī)學(xué)習(xí)人的語言(自然語言理解)人學(xué)習(xí)計(jì)算機(jī)的語言學(xué)習(xí)第三方語言計(jì)算機(jī)能讀懂的語言?機(jī)器語言(MachineLanguage)由一系列二進(jìn)制0和1組成機(jī)器語言編寫的1+1程序低級語言101110000000000100000000000001010000000100000000像不像天書?#include<stdio.h>voidmain(){
printf("%d\n",1+1);}人與計(jì)算機(jī)進(jìn)行交流的語言C語言編寫的1+1程序既不是英語,也非機(jī)器語言但更像英語高級語言比寫機(jī)器語言程序容易,但比使用英語難程序設(shè)計(jì)語言
(programminglanguage)?
高級語言的魅力易學(xué)、易用、易讀、易懂、強(qiáng)大、可移植百家爭鳴,據(jù)不完全統(tǒng)計(jì)2500種,絕大多數(shù)是高級語言http:///~nkinners/LangList/Extras/langlist.htm可看到其列表和簡介影響最大、壽命最長的是C語言流行語言應(yīng)用編程語言機(jī)器語言匯編語言BasicPascalCC++JavaC#
專項(xiàng)編程語言LotusNotesPowerBuilder
Web編程語言HTMLXMLPHPASPJSPJavaScriptVBScript
其他perlPython…….C程序設(shè)計(jì)語言是一種高級語言高級語言并不是“高級”,只是相對低級語言,在一個(gè)高的級別上進(jìn)行編程歷史悠久,戰(zhàn)勛卓著誕生于上世紀(jì)70年代初,成熟于80年代(C89),修訂于90年代(C99)很多重量級軟件都是用C寫的上天入地,無所不能幾乎沒有不能用C寫出來的軟件,沒有不支持C的系統(tǒng)很多流行語言、新生語言都借鑒了它的思想、語法從C++,到Java,再到C#,還有php等如何讓計(jì)算機(jī)讀懂
程序設(shè)計(jì)語言?編譯程序(編譯器,Compiler)的功能讀入高級語言編寫的程序源代碼,將其翻譯成在邏輯上與之等價(jià)的目標(biāo)程序,即轉(zhuǎn)換成機(jī)器代碼(可執(zhí)行程序)一種程序設(shè)計(jì)語言對應(yīng)一種編譯器C語言可執(zhí)行程序編譯器1.1.1認(rèn)識C語言從這里開始例1.1打印單詞“Hello,World”/*example1.1ThefirstCProgram*/#include<stdio.h>main(){
printf("Hello,World!");}>注釋編譯預(yù)處理函數(shù)語句運(yùn)行結(jié)果:模仿例1.1寫一個(gè)輸出:“學(xué)習(xí)C語言,其實(shí)并不難!”的程序Hello,World!例1.2/*example1.2calculatethesumofaandb*/#include<stdio.h>/*Thisisthemainprogram*/main(){
int
a,b,sum;
a=10;
b=24;
sum=add(a,b);
printf("sum=%d\n",sum);}/*Thisfunctioncalculatesthesumofxandy*/int
add(int
x,int
y){
int
z;
z=x+y;
return(z);}運(yùn)行結(jié)果:sum=34函數(shù)語句預(yù)處理命令注釋>..sum=add(a,b)..main函數(shù)add函數(shù)格式特點(diǎn)習(xí)慣用小寫字母,大小寫敏感不使用行號,無程序行概念可使用空行和空格常用鋸齒形書寫格式<>main(){
……………….………………
…………..…………..
……………….
………………………….
……………….………………..}main(){
inti,j,sum;sum=0;for(i=1;i<10;i++){for(j=1;j<10;j++){sum+=i*j;}}
printf(“%d\n”,sum);}優(yōu)秀程序員的素質(zhì)之一:使用TAB縮進(jìn){}對齊有足夠的注釋有合適的空行結(jié)構(gòu)特點(diǎn)函數(shù)與主函數(shù)(C程序是由函數(shù)構(gòu)成的)程序由一個(gè)或多個(gè)函數(shù)組成必須有且只能有一個(gè)主函數(shù)main()程序執(zhí)行從main開始,在main中結(jié)束,其它函數(shù)通過嵌套調(diào)用得以執(zhí)行。程序語句C程序由語句組成用“;”作為語句終止符注釋/**/為注釋,不能嵌套//單行注釋將注釋文字放在//后面
不產(chǎn)生編譯代碼編譯預(yù)處理命令<>1.2算法與程序設(shè)計(jì)方法學(xué)程序=算法+數(shù)據(jù)結(jié)構(gòu)算法是用計(jì)算機(jī)解題的精確描述,算法就是逐步(Step-by-step)執(zhí)行某類計(jì)算的方法,一個(gè)算法描述的是有窮的動(dòng)作的序列或步驟。數(shù)據(jù)結(jié)構(gòu):數(shù)據(jù)的組織方式1.什么是算法互換例將藍(lán)、黑兩墨水瓶中的墨水互換。思路:1.將藍(lán)倒入白瓶中;2.將黑倒入原藍(lán)瓶中;3.將原白倒入原黑瓶中。ABC完成一項(xiàng)任務(wù)的具體步驟1什么是算法例計(jì)算M(x)的值M(x)=bx+a2x≤aa(c-x)+c2x>a思路:1.將a、b、c、x輸入到計(jì)算機(jī)中;
2.判斷x≤a,是轉(zhuǎn)3,否則轉(zhuǎn)4;
3.計(jì)算bx+a2,轉(zhuǎn)5;
4.計(jì)算a(c-x)+c2,轉(zhuǎn)5;
5.輸出M(x)的值。
求二個(gè)正整數(shù)m和n的最大公約數(shù)思想方法:設(shè)m=na0+r1(0≤r1
<n)就是說m是n的a0倍還多r1,那么m和n的最大公約數(shù)與r1的最大公約數(shù)相同。若r1=0,則n就是m和n的最大公約數(shù)若r1≠0,則再對n和r1重復(fù)上面的操作,直到求出rn=0為止。例輾轉(zhuǎn)相除法歐幾里德算法求525和231的最大公約數(shù)525231×26363×34242×12121×20525與231的最大公約數(shù)是21例求兩個(gè)自然數(shù)的最大公約數(shù)的算法S1.輸入兩個(gè)自然數(shù)M、NS2.求M除以N的余數(shù)RS3.使M=N,即用N代換MS4.使N=R,即用R代換NS5.若R≠0,則重復(fù)執(zhí)行S2、S3、S4(循環(huán)),否則轉(zhuǎn)S6S6.輸出M,M即為M和N的最大公約數(shù)M=N*a+R2算法的結(jié)構(gòu)
無論多么復(fù)雜的算法,都可以用下面三種流程控制結(jié)構(gòu)來描述
順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)3算法的表示用流程圖來表示算法用程序設(shè)計(jì)語言表示算法用偽代碼表示算法(自然語言+程序設(shè)計(jì)語言)3算法的表示開始acbacb輸入a,b結(jié)束輸出a,b順序結(jié)構(gòu)將藍(lán)、黑兩墨水瓶中的墨水互換用流程圖來表示算法3算法的表示開始輸入a,b,c,x輸出m結(jié)束x≤aYbx+a2→ma(c-x)+c2→mN選擇結(jié)構(gòu)例如:計(jì)算M(x)的值M(x)=bx+a2x≤aa(c-x)+c2x>a用流程圖來表示算法開始例:求兩個(gè)自然數(shù)的最大公約數(shù)算法的流程圖輸入M,N求R=MMODNM=NN=RR≠0?輸出M結(jié)束是否循環(huán)結(jié)構(gòu)用流程圖來表示算法3算法的表示Main(){
inta,b,c,m,x;
scanf(“%d”,x);a=6;b=30;c=15;if(x<=a)m=b*x+a*a;elsem=a*(c-x)+c*c;
printf(“m=%d\n”,m;}
例如:計(jì)算M(x)的值M(x)=bx+a2x≤aa(c-x)+c2x>a用程序設(shè)計(jì)語言表示算法3算法的表示Main(){
inta,b,c,m,x;
輸入x;a=6;b=30;c=15;if(x<=a)m=b*x+a*a;elsem=a*(c-x)+c*c;
輸出m;}
例如:計(jì)算M(x)的值M(x)=bx+a2x≤aa(c-x)+c2x>a用偽代碼表示算法
算法的特征
1、有窮性
2、確定性
3、有零個(gè)或多個(gè)輸入
4、有一個(gè)或多個(gè)輸出
5、有效性例1:1×2×3×4×5S1:p=1S2:i=2S3:p×ipS4:i+1iS5:i<=5轉(zhuǎn)到S3,否則輸出p的值,終止算法。1.2.2算法設(shè)計(jì)的原則和步驟原則:自頂向下,逐步求精一般步驟明確算法的輸入、輸出數(shù)據(jù)自頂向下,逐步求精模塊結(jié)構(gòu)1.2.3算法設(shè)計(jì)基本方法與策略算法設(shè)計(jì)主要有以下的一些策略和方法和策略:窮舉策略;遞推與遞歸策略;分而治之策略;回溯策略;貪心策略;動(dòng)態(tài)規(guī)劃策略。1.2.4編程解決問題的一般步驟1.分析問題2.概要設(shè)計(jì)3.詳細(xì)設(shè)計(jì)4.算法實(shí)現(xiàn)、調(diào)試與測試5.整理、編寫文檔例:求一元二次方程ax2+bx+c=0的實(shí)根求根公式輸入數(shù)據(jù)是什么?方程系數(shù):a,b,c
輸出數(shù)據(jù)是什么?如果有實(shí)根:x1,x2如果沒有實(shí)根:提示信息a,b,cx1,x2輸入處理輸出1.問題分析1.輸入a,b,c2.數(shù)據(jù)變換3.輸出x1,x22-1.計(jì)算判別式d2-2.根據(jù)d的值進(jìn)行不同處理
2-2-1:ifd>0x1=…x2=…2-2-2:ifd=0x1=x2=…2-2-3:ifd<0….2.概要設(shè)計(jì)3.詳細(xì)設(shè)計(jì)輸入a,b,cd=sqrt(b*b-4*a*c)if(d>0)
輸出
x1=(-b+d)/(2*a)x2=(-b-d)/(2*a)elseif(d==0)
輸出
x1=x2=-b/(2*a)else
輸出:無實(shí)根提示信息自然語言描述的算法#include<stdio.h>voidmain(){floata,b,c,d,x1,x2;
scanf(“%d%d%d”,&a,&b,&c);d=b*b-4*a*c;if(d>0){x1=(-b+sqrt(d))/(2*a);x2=(-b-sqrt(d))/(2*a);
printf(“x1=%f,x2=%f\n”,x1,x2);}elseif(d==0){x1=-b/(2*a);printf(“重根x=%f\n”,x1);}elseprintf(“無實(shí)根\n“);}4算法實(shí)現(xiàn)思考或問答題:1、C程序中是否一定包含注釋,注釋的作用是什么?2、每個(gè)程序至少包含一個(gè)什么函數(shù)?3、程序中main函數(shù)可以含兩個(gè)以上嗎?4、程序的執(zhí)行次序是怎樣的?5、語句的標(biāo)記是什么?6、C程序的上機(jī)步驟?7、什么叫算法8、表示算法的基本結(jié)構(gòu)是哪三種?9、編程解決問題的一般步驟是什么?1、C程序中是否一定包含注釋,注釋的作用是什么?答案:不一定,是方便閱讀程序的。2、每個(gè)程序至少包含一個(gè)什么函數(shù)?答案:主函數(shù)main3、程序中main函數(shù)可以含兩個(gè)以上嗎?答案:不能,有且只能有一個(gè)。4、語句的標(biāo)記是什么?答案:是結(jié)尾用分號即:“;”5、程序的執(zhí)行次序是怎樣的?答案:從主函數(shù)main開始執(zhí)行,在主函數(shù)結(jié)尾結(jié)束。中間可以調(diào)用其他函數(shù)6、C程序的上機(jī)步驟?答案:編輯、編譯、連接、執(zhí)行7、什么叫算法?答案:算法就是解決問題的步驟;8、表示算法的基本結(jié)構(gòu)是哪三種?答案:順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)9、編程解決問題的一般步驟是什么?答案:1.分析問題2.概要設(shè)計(jì)3.詳細(xì)設(shè)計(jì)4.算法實(shí)現(xiàn)、調(diào)試與測試5.整理、編寫文檔編輯鏈接編譯執(zhí)行C程序的開發(fā)過程<>程序代碼的錄入,生成源程序*.c或.cpp語法分析查錯(cuò),翻譯生成目標(biāo)程序*.obj與其它目標(biāo)程序或庫鏈接裝配,生成可執(zhí)行程序*.exeC程序的開發(fā)過程1.編輯2.編譯
(1)編輯指編輯創(chuàng)建源程序是將編寫好的C語言源程序代碼錄入到計(jì)算機(jī)中,形成源程序文件。(2)本課程用VisualC++6.0環(huán)境提供的全屏幕編輯器。(3)在VC6.0環(huán)境中的源程序文件,其擴(kuò)展名為.cpp。(1)編譯源程序就是由C系統(tǒng)提供的編譯器將源程序文件的源代碼轉(zhuǎn)換成目標(biāo)代碼的過程。(2)編譯過程主要進(jìn)行詞法分析和語法分析,在分析過程中如果發(fā)現(xiàn)錯(cuò)誤,將錯(cuò)誤信息顯示在屏幕上通知用戶。經(jīng)過編譯后的目標(biāo)文件的擴(kuò)展名為.obj。
C程序的開發(fā)過程3.連接4.運(yùn)行
(1)連接過程是將編譯過程中生成的目標(biāo)代碼進(jìn)行連接處理,生成可執(zhí)行程序文件的過程。(2)在連接過程中,時(shí)常還要加入一些系統(tǒng)提供的庫文件代碼。經(jīng)過連接后生成的可執(zhí)行文件的擴(kuò)展名為.exe。運(yùn)行可執(zhí)行文件的方法很多,可在C系統(tǒng)下執(zhí)行“運(yùn)行”命令。也可以在操作系統(tǒng)下直接執(zhí)行可執(zhí)行文件。可執(zhí)行的程序文件運(yùn)行后,將在屏幕上顯示程序執(zhí)行的結(jié)果。[例1.1]程序演示單擊運(yùn)行輸入源程序彈出運(yùn)行結(jié)果窗口運(yùn)行結(jié)果返回例題返回本節(jié)目錄1.1.1C程序?qū)嵗?)2.C程序?qū)嵗?【例1.2】輸入兩個(gè)整數(shù),輸出它們的和。程序名為l1_2.cpp。#include"stdio.h" /*文件包含*/main() /*主函數(shù)*/{inta,b,c; /*聲明定義變量a,b和c*/
scanf("%d%d",&a,&b); /*輸入變量a和b的值*/c=a+b; /*計(jì)算c等于a與b的和值*/
printf("c=%d\n",c); /*輸出變量c的值*/}運(yùn)行程序輸入:90<CR>7<CR>程序結(jié)果:C=97返回本節(jié)目錄程序演示[例1.2]程序演示單擊運(yùn)行輸入源程序彈出運(yùn)行結(jié)果窗口運(yùn)行結(jié)果輸入90和7,并以回車作分隔符和輸入結(jié)束符。返回例題返回本節(jié)目錄1.1.1C程序?qū)嵗?)3.C程序?qū)嵗?【例1.3】輸入兩個(gè)整數(shù),通過調(diào)用函數(shù)計(jì)算它們的和,然后輸出和值。程序名為l1_3.cpp。#include"stdio.h" /*文件包含*/int
sum(int
x,inty) /*定義sum函數(shù)*/{intz; /*聲明定義變量z*/z=x+y; /*計(jì)算z等于x與y的和值*/return(z); /*將z的值返回,通過sum帶回調(diào)用處*/}main() /*主函數(shù)*/{inta,b,c; /*聲明定義變量a,b和c*/
scanf("%d%d",&a,&b); /*輸入變量a和b的值*/c=sum(a,b); /*調(diào)用sum函數(shù),將得到的值賦給c*/
printf("c=%d\n",c); /*輸出變量c的值*/}運(yùn)行程序輸入:907<CR>程序結(jié)果:C=97返回本節(jié)目錄程序演示[例1.3]程序演示單擊運(yùn)行輸入源程序彈出運(yùn)行結(jié)果窗口返回例題運(yùn)行結(jié)果輸入90和7,并以空格作間隔符,以回車作輸入結(jié)束符。返回本節(jié)目錄VisualC++6.0集成環(huán)境返回本節(jié)目錄1.啟動(dòng)VisualC++6.0環(huán)境2.編輯源程序文件3.編譯和連接4.執(zhí)行利用VisualC++6.0集成環(huán)境開發(fā)C程序的過程如下:VisualC++6.0集成環(huán)境返回本節(jié)目錄1.啟動(dòng)VisualC++6.0環(huán)境
方法:單擊“開始”-“程序”-“MicrosoftVisualstudio6.0”-“MicrosoftVisualC++6.0”命令,啟動(dòng)VisualC++,VC6主窗口如下:菜單欄項(xiàng)目工作區(qū)標(biāo)題欄輸出區(qū)工具欄狀態(tài)欄文件編輯區(qū)返回VisualC++6.0集成環(huán)境返回本節(jié)目錄2.編輯源程序文件(1)建立新工程項(xiàng)目①單擊“文件”-“新建”,彈出“新建”對話框。②單擊“工程”選項(xiàng)卡;單擊“Win32ConsoleApplication”選項(xiàng);“工程”文件框中輸入項(xiàng)目名,如“gc1”和“位置”框輸入或選擇新項(xiàng)目所在位置,單擊“確定”按鈕。
彈出“Win32ConsoleApplicationStep1of1”對話框。③單擊“
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 達(dá)人視界官加盟合同協(xié)議
- 民間借袋協(xié)議書
- 酒店經(jīng)營加盟合同
- 吊頂裝飾安裝工程承包合同書
- 曼聯(lián)簽約協(xié)議書
- 牧雞治蝗協(xié)議書
- 道路糾紛協(xié)議書范本
- 足療商鋪?zhàn)赓U合同協(xié)議
- 超市聯(lián)營租賃合同協(xié)議
- 雙方自愿離婚協(xié)議書樣例
- 四川2025年02月四川省巴中市市屬事業(yè)單位度公開選調(diào)39名工作人員筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 急診科主任的職責(zé)與醫(yī)療質(zhì)量提升
- 2025年安徽交控集團(tuán)界阜蚌公司招聘筆試參考題庫含答案解析
- 《裝配式施工技術(shù)》課件-5.3 外墻板縫防水
- 2025年國家電力安全知識競賽題庫及答案(共50題)
- ZHXXX數(shù)據(jù)治理咨詢項(xiàng)目投標(biāo)文件
- 市政道路工程施工方案方案
- 花鍵計(jì)算公式DIN5480
- 2024年第三季度意識形態(tài)分析研判報(bào)告5篇
- DB11T 1320-2023 危險(xiǎn)場所電氣防爆安全檢測技術(shù)規(guī)范
- 施工場地治安保衛(wèi)管理計(jì)劃
評論
0/150
提交評論