版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
C語言程序設(shè)計(jì)第一講基礎(chǔ)知識(shí)(第1章、第2章)第二講數(shù)據(jù)類型、運(yùn)算符和表達(dá)式(第3章、第4章、第7章)第三講程序的控制結(jié)構(gòu)(第5章、第6章)第四講數(shù)組(第8章)第五講函數(shù)(第9章)第六講指針的概念(第11章)第七講指針與數(shù)組(第12章、第13章)第八講結(jié)構(gòu)、聯(lián)合和枚舉(第16章)第九講指針的高級應(yīng)用(第17章)第十講程序結(jié)構(gòu)(第10章)第十一講文件操作(第22章)第十二講預(yù)處理與位運(yùn)算(第14章、第20章)知識(shí)回顧-指針變量1、定義與聲明指針概念->指針變量->指針聲明2、取地址運(yùn)算符&、指針初始化及指針的賦值
3、間接尋址運(yùn)算符*5、二級指針p=&a;int*p,*q;q=p;int*p=&x35yx1000 1500 20002000p*p=5;inta;int*p=&a;int**q=&p;知識(shí)回顧-指針變量6、指針與函數(shù)6.1、作為函數(shù)參數(shù)6.2、指針作為函數(shù)返回值7、指針與數(shù)組7.1指針的算術(shù)運(yùn)算具體包括:加、減一個(gè)整數(shù),自增、自減、關(guān)系、賦值7.2數(shù)組名作為指針使用可以用數(shù)組名作為指向數(shù)組第一個(gè)元素的指針!程序錯(cuò)誤CompileError:編譯出錯(cuò),源代碼中有語法錯(cuò)誤,比如使用某些函數(shù)需要的頭文件沒有包含,多了,少了符號(hào)。Logical
error:主要是算法上未能考慮周全,所產(chǎn)生的問題。PresentationError:輸出格式錯(cuò)誤,可能程序輸出中多(或少)輸出了空格,回車符等。1.編譯錯(cuò)誤1.查字典(有道,金山詞霸,在線翻譯),翻譯錯(cuò)誤2.上百度,將錯(cuò)誤信息敲入查詢解決方案編譯錯(cuò)誤之解決方法程序錯(cuò)誤CompileError:編譯出錯(cuò),源代碼中有語法錯(cuò)誤,比如使用某些函數(shù)需要的頭文件沒有包含。Logical
error:主要是算法上或者程序設(shè)計(jì)上未能考慮周全,所產(chǎn)生的問題。PresentationError:輸出格式錯(cuò)誤,可能程序輸出中多(或少)輸出了空格,回車符等。目標(biāo):
用于檢測程序中存在的邏輯性錯(cuò)誤方法:單步調(diào)試程序,跟蹤代碼的執(zhí)行過程,查看變量及表達(dá)式中的值,發(fā)現(xiàn)程序邏輯錯(cuò)誤并修正程序。意義:DEBUG技術(shù),對于發(fā)現(xiàn)程序隱含邏輯錯(cuò)誤,糾正編程思路及算法,快速提高編程能力有很大作用。Debug技術(shù)Debug技術(shù)分析:由上面右式,看出是多項(xiàng)連加,并且項(xiàng)的生成有規(guī)律,所以考慮用循環(huán)實(shí)現(xiàn)連加。解決思路:如果把1/1!看作第1項(xiàng),用變量a表示當(dāng)前要加的數(shù)的分母,當(dāng)a是第k項(xiàng)分母時(shí),則第k+1項(xiàng)分母可表達(dá)為:a*=k+1。由此得到下面流程圖。e=1,a=1,n=11/a>=1e-10e+=1/an++,a*=n輸出eNY程序如下:#include<stdio.h>intmain(){inta,n;doublee;e=1;a=n=1;while(1/a>=1e-10){e+=1/a;n++;a*=n;}printf("e=%.15lf",e);return0;}顯然結(jié)果是錯(cuò)誤的,下面我們進(jìn)行調(diào)試排錯(cuò)。第一步:斷點(diǎn)設(shè)置(選擇可能出現(xiàn)錯(cuò)誤的前一條語句)移到光標(biāo)至該位置,因?yàn)榍懊嬲Z句少,看起來好像沒有錯(cuò)誤。我們希望調(diào)試從下一句開始。第二步:啟動(dòng)Debug模式第三步:過程跟蹤查看變量和內(nèi)存窗口程序在此處掛起第四步:單步執(zhí)行第五步:查看變量及表達(dá)式的值不斷的點(diǎn)擊此按鈕(運(yùn)行到下一行指令),同時(shí)觀察Watches窗口中變量和表達(dá)式的值。我們發(fā)現(xiàn)a為整數(shù)是問題的關(guān)鍵。從而修改程序如下。2.6、程序修改及結(jié)果驗(yàn)證問題:Codeblocks調(diào)試出現(xiàn)問題,無法調(diào)試當(dāng)項(xiàng)目位置含中文或空格時(shí),調(diào)試有可能不能進(jìn)行!!!問題:粗暴關(guān)閉或野蠻關(guān)閉行為問題:有時(shí)安裝完成后,建立工程并寫了程序開始編譯運(yùn)行,但CodeBlocks沒有反應(yīng)。通常是編譯器路徑不對的問題。大家可以這樣修改。點(diǎn)擊Compileranddebugger…在Globalcompilersettings中點(diǎn)擊Resetdefault均點(diǎn)擊確定。這時(shí)它會(huì)自動(dòng)探測默認(rèn)編譯器的位置,從而就可以使用該編譯器。程序錯(cuò)誤CompileError:編譯出錯(cuò),源代碼中有語法錯(cuò)誤,比如使用某些函數(shù)需要的頭文件沒有包含。Logical
error:主要是算法上未能考慮周全,所產(chǎn)生的問題。PresentationError:輸出格式錯(cuò)誤,可能程序輸出中多(或少)輸出了空格,回車符等。格式錯(cuò)誤仔細(xì)排查錯(cuò)誤,從單詞和字符一一查看,看是否缺少符號(hào),是多給了一些符號(hào)。輸出格式錯(cuò)誤,可能程序輸出中多(或少)輸出了空格,回車符,中英文半角與全角問題等習(xí)題評講與程序調(diào)試(1)任意輸入n個(gè)整數(shù),分別統(tǒng)計(jì)奇數(shù)的和、奇數(shù)的個(gè)數(shù)、偶數(shù)的和、偶數(shù)的個(gè)數(shù)。intmain(){intn,i;inteven_sum,odd_sum,even_num,odd_num;scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&n);if(n/2==0){even_num++; even_sum+=n;}else{odd_num++; odd_sum+=n;}printf("%d%d%d%d\n",even_num,even_sum,odd_num,odd_sum);}}編譯能通過,結(jié)果不對,如何找出代碼中存在的問題?習(xí)題評講與程序調(diào)試(2)一天一只猴子摘下一堆桃子,吃了一半,覺得不過癮,又多吃了一個(gè),第2天接著吃了前一天剩下的一半,再多吃了一個(gè),以后每天如此,直到第10天,只剩下1個(gè)桃子,問猴子一共摘了多少桃子?要求輸入天數(shù)(跟蹤觀察x的變化)intmain(){intn,i,x=1;scanf("%d",&n);for(i=n-1;i>=1;i--)x=2*(x+1);printf("%d\n",x);return0;}習(xí)題評講與程序調(diào)試(2)猴子吃桃問題的遞歸解法intPeach(intn){if(n==10)return1;elsereturn2*(Peach(n+1)+1);}#include<stdio.h>#include<stdlib.h>intmain(){printf("%d\n",Peach(1));return0;}習(xí)題評講與程序調(diào)試(3)利用公式求sin(x)的近似值(精度為1.0e-4)sin(x)=x-x^3/3!+x^5/5!-x^7/7!+...(-1)^n*x^(2n+1)/(2n+1)!+...
注意:(1)求階乘容易越界;(2)如何保證精度?習(xí)題評講與程序調(diào)試(3)利用公式求sin(x)的近似值(精度為1.0e-4)sin(x)=x-x^3/3!+x^5/5!-x^7/7!+...(-1)^n*x^(2n+1)/(2n+1)!+...intmain(){doublex,item,y;intj=1;scanf("%lf",&x);item=x;y=x;… …while(fabs(item)>10e-5){j+=2;
item=-item*x*x/(j*(j-1));y+=item;}printf("%f\n",y);return0;}習(xí)題評講與程序調(diào)試(4)P127第14題:顛倒句子中單詞的順序。012345678910111213141516171819youcan,can‘tyou?chars[80],ch;inti=0;ch=getchar();while((ch!='.')&&(ch!='!')&&(ch!='?')){s[i]=ch;i++;ch=getchar();}句子的讀入習(xí)題評講與程序調(diào)試(4)P127第14題:顛倒句子中單詞的順序。012345678910111213141516171819youcan,can‘tyou?intj,k,start,end=i-1;for(j=i-1;j>=0;j--){if((s[j]=='')||(s[j]==',')){start=j+1;for(k=start;k<=end;k++){putchar(s[k]);}putchar(s[j]);end=start-2;}}句子的顛倒單詞次序的輸出for(j=0;j<=end;j++){putchar(s[j]);}putchar(ch);Debug實(shí)驗(yàn)自選題目練習(xí)Debug技術(shù)提交材料:PDF文檔:問題的描述與分析、源代碼(必須有注釋)代碼調(diào)試的演示視頻:wmv或avi格式,建議采用錄屏軟件進(jìn)行制作,并有相關(guān)字幕或聲音解說。題目選擇要有代表性,能反映出代碼調(diào)試從發(fā)現(xiàn)錯(cuò)誤到更正錯(cuò)誤的詳細(xì)步驟??啥嗳撕献魍瓿?,在視頻片頭中添加學(xué)號(hào)、姓名等信息。在實(shí)驗(yàn)內(nèi)容及過程中詳細(xì)說明斷點(diǎn)設(shè)置、過程跟蹤(內(nèi)存結(jié)構(gòu)、變量和表達(dá)式結(jié)果).復(fù)習(xí):數(shù)組名作為指針p[i]等同于*(p+i)a34145680210123456789p+i1000 1000p1007 1007復(fù)習(xí):數(shù)組名與指針區(qū)別常量指針第七章指針1、問題引入2、typedef的使用3、指針變量4、指針作為參數(shù)和返回值5、指針與數(shù)組6、動(dòng)態(tài)內(nèi)存分配7、指向函數(shù)的指針5.3指針與多維數(shù)組5.3.1二維數(shù)組的定義、初始化5.3.2二維數(shù)組的存儲(chǔ)5.3.3處理二維數(shù)組的行5.3.4處理二維數(shù)組的列5.3.5指針數(shù)組5.3.6對復(fù)雜指針的理解5.3.1二維數(shù)組的定義與初始化嵌套的for循環(huán)使用指針-將多維數(shù)組看成一維數(shù)組inta[NUM_ROWS][NUM_COLS];introw,col;for(row=0;row<NUM_ROWS;row++)for(col=0;col<NUM_COLS;col++)a[row][col]=0;int*p;for(p=&a[0][0];p<=&a[NUM_ROWS-1][NUM_COLS-1];p++)*p=0;&a[4][8]=a+(i*LEN+j)*數(shù)組元素的大小=0022ff00+((4*9+8)*4)10=0022ff00+(176)10=0022ffB0two_dimensional_array(inta[][LEN],intn)0022ff00a0022ffB05.3.2二維數(shù)組的地址C語言中按行優(yōu)先進(jìn)行存儲(chǔ)5.3.2二維數(shù)組的地址a[0][2]a[0][1]a[0][0]a[0][3]a[0]a[0]+1a[0]+2a[0]+3一維數(shù)組a[0]a[1][2]a[1][1]a[1][0]a[1][3]a[1]a[1]+1a[1]+2a[1]+3一維數(shù)組a[1]a[2][2]a[2][1]a[2][0]a[2][3]a[2]a[2]+1a[2]+2a[2]+3一維數(shù)組a[2]aa+1a+2一維數(shù)組aa[3][4]看作由3個(gè)一維數(shù)組組成,數(shù)組名是a[0]、a[1]、a[2]。行地址:a是一維數(shù)組的首地址,即a[0]的地址,即a是第1行的地址,a+1是第2行的地址,a[i]、a+i表示第i+1行的行地址每一行是一個(gè)一維數(shù)組,由4個(gè)元素組成,第1行對應(yīng)的數(shù)組名為a[0],即該一維數(shù)組的首地址,其元素為a[0][0]、a[0][1]、a[0][2]、a[0][3]元素地址:對于二維數(shù)組a,第i行第j個(gè)元素的地址為a[i]+j、*(a+i)+j元素:a[i][j]元素為*(*(a+i)+j)二維數(shù)組分解5.3.2二維數(shù)組的地址inta[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};a200020022004200620082010201220142016201820202022a(2000)a+1(2008)a+2(2016)a[0]a[0]+1a[0]+2a[0]+3一維數(shù)組名a[0][0]a[0][1]a[0][2]a[0][3]a[0]a[1]a[2]a二維數(shù)組名二維數(shù)組是數(shù)組的數(shù)組,a代表二維數(shù)組首元素的地址,該元素是由4個(gè)整型元素所組成的一維數(shù)組,因此a代表的是第0行的首地址,a+1代表第1行首地址,即a[1]行指針與列指針a[i]特別說明5.3.3下標(biāo)與指針的等價(jià)形式(1)a:二維數(shù)組的首地址,第0行的地址(2)a+i:第i行的地址(3)*(a+i)等價(jià)于a[i]:第i行第0列的地址(4)*(a+i)+j等價(jià)于a[i]+j:第i行第j列的地址(5)*(*(a+i)+j)即a[i][j]:第i行第j列的元素5.3.3下標(biāo)與指針的等價(jià)形式元素a[i][j]的地址的等價(jià)引用方式&a[i][j]a[i]+j*(a+i)+j&(*(a+i))[j]5.3.3下標(biāo)與指針的等價(jià)形式元素a[i][j]的等價(jià)引用方式a[i][j]*(a[i]+j)*(*(a+i)+j)(*(a+i))[j]5.3.4處理二維數(shù)組的行初始化數(shù)組第i行元素for(p=a[i];p<a[i]+4;p++)*p=0;為了訪問二維數(shù)組中第i行的元素,可以初始化指針p=&a[i][0];等價(jià)于:p=a[i];a[i]為數(shù)組每一行第0列的地址inta[3][4]5.3.5處理二維數(shù)組的列int(*p)[4],a[3][4];/*注意小括號(hào)的使用*/*p是塊指針(指向數(shù)組的指針):指向長為4的整型數(shù)組的指針*/初始化數(shù)組第i列元素for(p=a;p<a+3;p++)
(*p)[i]=0;
類型說明(*指針名稱)[整型常數(shù)]若指針p指向二維數(shù)組a的第i行,即p=a+i,則p++使p指向下一行,p--使p指向上一行main(){ inta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int(*p)[4],i,j; p=a; for(i=0;i<3;i++) {for(j=0;j<4;j++) printf("a[%d][%d]=%-5d",i,j,*(*(p+i)+j)); printf("\n"); }}塊指針示例5.3.6指針數(shù)組如果數(shù)組的每個(gè)元素都是指針,則該數(shù)組為指針數(shù)組,即:
類型說明*數(shù)組名[數(shù)組長度]voidmain(){inti,x[5]={1,2,3,4,5};int*p1[3];int**p2;for(i=0;i<3;i++) p1[i]=&x[2*i];for(p2=p1;p2<=p1+2;p2++) printf("%5d",**p2);}12345x&x[0]&x[2]&x[4]p1p2&p1[1]x[0]x[1]x[2]x[3]x[4]p1[0]p1[1]p1[2]字符串冒泡排序#defineN5intmain(){char*str[5]={"Pascal","Basic","Fortran", "Java","VisualC++"};char*temp;inti,j;intbSwaped=1;for(i=0;i<N-1;i++)printf("%s,",str[i]);printf(
溫馨提示
- 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)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智慧社區(qū)車位共享管理服務(wù)合同范本3篇
- 2024跨境教育服務(wù)合作合同
- 2025年度住宅小區(qū)車位租賃押金退還及違約責(zé)任合同4篇
- 2025年度校園窗簾設(shè)計(jì)與施工一體化服務(wù)合同3篇
- 2025年度物流金融承運(yùn)商合作協(xié)議范本8篇
- 2025年度特種物品儲(chǔ)藏安全管理合同4篇
- 2025年度工業(yè)遺產(chǎn)保護(hù)與拆遷補(bǔ)償協(xié)議3篇
- 2025年度智慧農(nóng)業(yè)監(jiān)測系統(tǒng)采購合同4篇
- 2024版門面精裝修產(chǎn)權(quán)轉(zhuǎn)讓協(xié)議
- 2025年員工辭退后債權(quán)債務(wù)處理協(xié)議3篇
- 2024版?zhèn)€人私有房屋購買合同
- 2025年山東光明電力服務(wù)公司招聘筆試參考題庫含答案解析
- 2024爆炸物運(yùn)輸安全保障協(xié)議版B版
- 《神經(jīng)發(fā)展障礙 兒童社交溝通障礙康復(fù)規(guī)范》
- 2025年中建六局二級子企業(yè)總經(jīng)理崗位公開招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024年5月江蘇省事業(yè)單位招聘考試【綜合知識(shí)與能力素質(zhì)】真題及答案解析(管理類和其他類)
- 注漿工安全技術(shù)措施
- 《食品與食品》課件
- 2024年世界職業(yè)院校技能大賽“食品安全與質(zhì)量檢測組”參考試題庫(含答案)
- 讀書分享會(huì)《白夜行》
- 2023上海高考英語詞匯手冊單詞背誦默寫表格(復(fù)習(xí)必背)
評論
0/150
提交評論