版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第1章C語言程序的上機步 第2章TurboC2.0/3.0使用指 TurboC簡 TurboC2.0文件簡 TurboC2.0的啟 TurboC2.0集成開發(fā)環(huán)境的使 TurboC2.0的配置文 TurboC調試系 常見的錯誤類 程序調 第3章VisualC++環(huán)境下運行C程 啟動 新建/打開C程序文 第4章實驗概 第5章實驗項目和課程設 課程設計 課程設計 課程設計 課程設計 第6章主習題參考答 設計 設計 設計 設計 附錄一C語言常見錯誤總 一、編程的常見錯 二、連接時的常見錯 三、運行時的常見錯 附錄二C語言編譯常見錯誤信息及處理方 1C語法錯 連接錯 運行錯1.1C編譯錯誤通常是編程者了C語言的語則,如保留字輸入錯誤、花括號不匹配對于編譯連接錯誤,C語言編譯系統(tǒng)會提供出錯信息,包括出錯位置(行號、出錯提int型變量,那么在該整數(shù)為偶數(shù)時正確,奇數(shù)時就會錯誤,這些C語言提供的調試工具找出真正TurboC2.0VisualC++6.0C程序編譯、連2TurboC2.0/3.0TurboCTurboC是Borland公司的產(chǎn)品,Borland公司是一家專門從事軟件開發(fā)、研制的大公司。該公司相繼推出了Turbo系列軟件,如TurboBASIC,TurboPascal,TurboProlog,這些軟件很受用戶歡迎。該公司在1987年首次推出TurboC1.0產(chǎn)品,其中使用了全然一新的集大大方便了程序的開發(fā)。1988年,Borland公司又推出TurboC1.5版本,增加了圖形庫和文本窗口函數(shù)庫等,而TurboC2.0則是該公司 的。TurboC2.0在原來集成開發(fā)環(huán)境的基礎上增加了查錯功能,并可以在Tiny模式下直接生成“.COM”(數(shù)據(jù)、代碼和堆棧處Borland公司后來又推出了面向對象的程序軟件包TurboC++,它繼承發(fā)展了TurboC2.0的集成開發(fā)環(huán)境,并包含了面向對象的基本思想和設計方法。1991年為了適用公司的Windows3.0版本,Borland公司又將TurboC++進行了更新,即TurboC的新一代產(chǎn)品BorlandC++。TurboC2.0可運行于IBM-PC系列微機,包括XTAT及IBMDOS2.0它支持數(shù)學協(xié)處理器,也可進行浮點仿真,這將加快程序的執(zhí)行。INSTALL.EXE安裝程序文件TC.EXETCHELP.TCHTCHELP.TCH的駐留程序README關于TurboC的信息文件TCCONFIG.EXE配置文件轉換程序MAKE.EXE項目管理工具TCC.EXETLINK.EXETurboCC0?.OBJ不同模式啟動代碼C?.LIB不同模式運行庫GRAPHICS.LIB圖形庫FP87.LIB8087*.HTurboC*.BGI*.CTurboC例行程序(源文件MMedium(中型模式),LLarge(大模式),HHuge(巨大模式)。TurboC2.0安裝完畢的TurboC將在C盤根 中存放庫文件,INCLUDE子 中存放所有頭文件。運行TurboC2.0時,只要在TC子 下鍵入TC并回車TurboC2.0集成開發(fā)環(huán)境,如圖圖2.1TurboC2.0進入TurboC2.0集成開發(fā)環(huán)境后,屏幕顯示畫面如圖2.1其中頂上一行為TurboC2.0主菜單,中間窗口為編輯區(qū),接下來是信息窗口,最一行為參考行。這四個窗口構成了TurboC2.0TurboC2.0 Pick(選擇Writeto(存盤 Changedir(改 Oss(暫時退出C2.0所有菜單均采用這種方法進行操作,以下不再說明?;ɡㄌ杮和}尖括號<(方括號[和]/**/雙引號"單引號運行由Project/Projectname項指定的文件名或當前編輯區(qū)的文件。如果對上次編譯后的Programreset(程序重啟Gotocursor(運行到光標處Traceinto(進入在執(zhí)行一條調用其他用戶定義的子函數(shù)時,若用Traceinto項,則執(zhí)行長條將到該Stepover(單步執(zhí)行Userscreen(用戶屏幕按【】【】可進 CompiletoOBJ(編譯生成目標碼MakeEXEfile(生成執(zhí)行文件LinkEXEfile(連接生成執(zhí)行文件Buildall(建立所有文件PrimaryCfile(主C文件GetProjectname(項目名Breakmakeon(中止編譯Autodependencies(自動依賴Clearproject(清除項目文件 Defaultchartype:規(guī)定charJumpoptimization:通過去除多余的跳轉和調整循環(huán)與開關語句的辦法以Identifierlength:說明標識符有效字符的個數(shù),默認為32 Errorstopafter:多少個錯誤時停止編譯,默認為25Warningstopafter:多少個警告錯誤時停止編譯,默認為100Map Allfiles:所有文件錯誤C2.0的配置被改過,則所做的改動將存入配置文件中;選off時不存。Editautosave:是否在Run或S之前,自動編輯的源文件Tabsize:設置制表鍵大小,默認為8 TurboCdirectory:TurboC所在 Pickfilename:定義加載的pick文件名,如不定義則從currentpickfileSaveoptions(配置):保存所有選擇的編譯、連接、調試和項目到配置文件Callstack:在TurboCdebuggerFindfunction:在運行TurboCdebugger考有關TurboC手冊。信息??梢杂孟率龇椒ńurboC2.0的配置:就會按這個配置文件中的內容作為TurboC2.0若設置Options/Environment/Configautosave為on,則退出集成開發(fā)環(huán)境時,當前的設置會自動存放到TurboC2.0配置文件TCCONFIG.TC中。TurboC在啟動時會自動尋找這用TCINST設置TurboC的有關配置,并將結果存入TC.EXE中。TurboC在啟動時,TurboC2.0和TurboC3.0stdio.h、conio.hinclude這些問題是由于沒有設置好路徑引起的,目前的TC2和TC3按安裝分類大概有兩種圖2.2OPTION> ]/includeLIB: 擇DOSS進入DOS命令提示符狀態(tài)后,在命令行輸入“文件名.exe參數(shù)1參數(shù)2…”執(zhí)int{ printf("Themaxvalueis%d\n",printf("Thefirstbitofeachnumber變量max_value的初值應為32767,這是在微型機上整型變量的最小值,但語句中_value=32767TurboC提供了一個調試程序,專門用來對程序進行動態(tài)調試,以發(fā)現(xiàn)程序中的各種邏輯錯首先進入TurboC的集成開發(fā)環(huán)境,與程序調試有關的屏幕菜單有:圖2.3Break/watch項Addwatch允許鍵入一個變量名或一個表達式,調試程序把這個變量或表達式送入監(jiān)視窗希望監(jiān)視變量b[3],則可用Editwatch輸入b[3]并替換掉原監(jiān)視窗里的b[2]。選擇項Togglebreakpoint設置或去除一個斷點。為了設置一個斷點.首先把光標定在編輯窗口中某個語句所在行,然后選擇Togglebreakpoint項,調試程序就在這個圖2.4Debugc:顯示字符 顯示字符串d:顯示十六進制數(shù)f:圖2.5int{ printf("Themaxvalueprintf("Thefirstbitofeachnumber監(jiān)視和斷點菜單,選擇Togglebreakpoint,在第7行處設置一個斷點,并用Addwatch功能把 程序運行到第7個語句時停止,然后在運行菜單(【Alt】+【R】)中選擇Stepover或直接菜單里再一次使用Togglebreakpoint或使用Clearallbreakpoints清除斷點,并用Removeall3d",i+1,score[i]);i++;{}{inti,sum=0;{}fo語句的原意是輸出自然數(shù)1~0號,實際上printf()語句不受for控制。為了更清楚地說明這個問題,上述語句可寫成如下形式:;=={intx=0;{}}該程序原意是當x50x“=”,這樣,由于x賦了一個非零值,if語句的判定條件總是為真,每次循環(huán)都執(zhí)行pintf語句。只有將“=”改為“==錯信息“unexpectedend_offile”,以表示文件在不期望的情況下結束。這一信息為查找這 該語句段原意是將從鍵盤輸入的字符,只要不等于自定義的一個結束標志符號*,就高于賦值運算符。因此c的值由getchar()函數(shù)返回的值是否等于*而定,若不相等,c為1;在使用字符數(shù)組時,編譯器自動給字符串末尾加上一個字符串結束標志NULL(空字符),需要增加一個單元。例如:字符串“score”需要6個單元,而不是5個。{intx,y;}floata,b;{}{intcharfloatscore;scanf("%d%s%}{floatfloatdiv(float,float);scanf("%f%}floata,b;{}charTC提供了必要的調試和工具,下面按照使用過程予以介紹②按【Ctrl】+【F8】鍵或執(zhí)行菜單“Break/watch”中的“Togglebreakpoint”操作?!綜trl】+【F7】鍵或菜單“Break/watch”中的“Addwatch”操作,屏幕上將會彈出小窗口供輸入查看變量,如圖2.6所示,我們輸入了變量i進行查看。圖2.6行暫停,如圖2.7所示,查看(Watch)窗口中就會顯示查看變量i的當前值。綠色光條表圖2.7TC中通過“結束程序運行”(Programreset)來結束程序調試。按【Ctrl】+【F2】鍵或執(zhí)行菜單Run中的“Programreset”操作實現(xiàn)。下面用單步執(zhí)行功能來看一下for語句的執(zhí)行流程,如圖2.8所示。程序中把for(;;)分成三行,以便觀察執(zhí)行流程。先把光標移動到第四行,然后按【F4】鍵或執(zhí)行菜單Run中的“GotoCursor”操作,按【Ctrl】+【F7】鍵輸入查看變量i,由于此時i未賦過值,所以圖2.83章VisualC++C屬于VisualStudio集成開發(fā)套件中一個重要的部分。相對于傳統(tǒng)的開發(fā)環(huán)境,VisualC++能加上VisualC++比TC的可視化更加優(yōu)越,操作更加方便,調試方法更加多樣和靈活,使得開發(fā)語言為C++,但該工具同樣可以用C語言進行程序設計,下面我們就對VisualC++進行“VisualC++6.0”,可啟動VC++,或者直接雙擊桌面上的圖標“VisualC++6.0”,也可以啟動VC++,屏幕上將顯示,如圖3.1所示的窗口。圖3.1VC++菜單欄:包含了VisualC++6.0++:提供了VisualC++6.0最常用的一些功能,如“保存”、“打開”和“”編輯區(qū):進行程序編輯的主要區(qū)域,在新建一個Csourcefile后,用戶可以在該區(qū)域進圖3.2VC++ 在打開的VC++界面上,可直接在編輯區(qū)輸入程序,由于完全是Windows界面,輸入及修改可借助鼠標和菜單進行,十分方便。初學者可以參考本書部分第一章的部分簡單程會要求用戶保存程序,方法同上。如圖3.4所示。圖3.3圖3.4要生成可執(zhí)行文件,可使用VC++“編譯”菜單中的“構件”菜單項,如圖3.5所示,也可圖3.50error(s)0表示沒有任何錯誤和警告。需要初學者注意的是,程序有時會出現(xiàn)幾個警告性信息圖3.6假致命性錯誤(errors),如圖3.7所示,雙擊輸出窗口某行出錯信息,程序編輯項(或快捷鍵【Ctrl】+【F5)執(zhí)行程序。3.7閉該窗口(Pressanykeytocontinue。3.83.93.10圖3.11關閉工作區(qū)a.c;a.exe;在打開的“MS-DOS方式”窗口中輸入:a123.123.133、4i、sum的值是不正確的,因為他們還未被賦值。圖中左側的箭頭表示當前程3.14Into”按鈕或【F11】鍵。當想結束函數(shù)的單步執(zhí)行,可按“StepOut”按鈕或【Shift】3.15點所在行,再按“編譯微型條”中最右面的按鈕或【F9】鍵,該操作是一個開關,按一次菜單項,屏幕上會顯示“Breakpoints3.16所示,窗口下方列出了所有斷點,按“RemoveAll”按鈕,將取消所有斷點。斷點通常用于調試較長的程序,可以避免使用“RuntoCursor(運行程序到光標處暫停)或【Ctrl】+【F10】功能,因為該功能經(jīng)常要3.16VisualC++中主要的功能進行了介紹,對于其他的操作讀者可以自己試驗,或參考有關VisualC++手冊。4練地掌握C語言。5章CC語言源程序的特點:C程序的一般構造形式;C語言;第1章習題1.9;22.6;22.9;學時數(shù):433.4;33.7;學時數(shù):444.5;44.7;44.8;學時數(shù):4掌握C語言中定義函數(shù)的方法;55.6;55.9;66.2;66.5;學時數(shù):477.2;88.6。學時數(shù):499.2;99.4;99.9;學時數(shù):4和較復雜的算法,目的是進一步激發(fā)學生的程序開發(fā),提高學生的程序設計能力。名次運動員編號 第6章主習題參考答C語言具有哪些主要特點C語言的主要用途是什么已廣泛用于編寫各種應用領域的應用軟件,如數(shù)據(jù)庫管理軟件、CAD/CAM軟件、文字處答:CC程序都是由一個或多個函數(shù)組成,其中至少有一main()main()函數(shù)開始執(zhí)行,程序在執(zhí)行中可以調用由編譯系統(tǒng)提供的各種printf("firstsecondthird");printf("\nfirstsecondthird\n");printf("first\nsecond\nthird\n");{int printf("Pleaseinputthetwointegers:iand printf("Theresultofi*i+j*jis /*調用printf函數(shù)輸出結果}原因:int為C語言關鍵字;32data是由數(shù)字開頭;one_$含有'$',不合法。{ printf("\nPleaseinputafloatnumber:"); printf("\nThereciprocal }{ (x,y,z:\n"); printf("三個整數(shù)%d+%d+%d的和是:%d\n",x,y,z,sum);}TurboC{ TurboC }()初學者寫為%d或%x,詳細請參見主表2.7.1。1.9,scanf函數(shù)中,3個整數(shù)格式符%d3個整數(shù)時也應該用逗號分開,而不是空格等其他符號,否則會發(fā)生錯誤。詳細請參見主2.7.2小()()1.81.9中,printf()CC語言的語法和算法知識,還 將本次上機編程內容到該文件夾中。如果編程是在機進行,在下機時,應該將程序文件夾拷貝到U盤、移動硬盤等設備中帶走。規(guī)范有利于程序的修改和查找,構、聯(lián)合和枚舉。詳細請參見主2.1節(jié)。答:原因是:1.編譯系統(tǒng)會根據(jù)定義為變量分配內存空間,分配空間的大小與數(shù)據(jù)類型有關;2.系統(tǒng)可以根據(jù)變量的類型檢查對該變量的運算是否合法,這樣就給程序員調試程序帶來方便。詳細參見主2.3節(jié)。 答:合法的有:123,0892和0xabc是整型常量;3. 但0.618E—6不規(guī)范;'M'和'\n'是字符常量;"Morning!"是字符串常量。3.8e—3.14不合法。詳細參見主2.2節(jié)。 該單元中;而字符串常量是將字符,并自動在其末尾加上'\0'作為字符串結束標志, 符,\n為換行,\\為反斜杠字符,\064ASCII52的字符'4'。詳細參見主2.2。 {intb=10;} {intx=30+x=30*5%8;}charcl,int (4)char(5)int (6)Int (7)inta,x;floatINTint和float;②關鍵字和參數(shù)間應該空格,floatxcharif;錯誤,if是Cvoidmain(){}符N和十進制整數(shù)78轉換為八進制的整數(shù)116。voidmain(){chari=′a′;charj=′b′;chark=′c′;char}chari=′a′;charj=′b′;chark=′c′;charm=′\101′;charinti=′a′;intj=′b′;intk=99;intm=′\101′;int是八進制轉義字符,輸出的是ASCII碼為6578對應的控制字符'A'和'N'。為這些字符對應的ASCII碼。材2.5節(jié)。若(1(z>=y>=x)?1:0(1)0; (1)i小于jk(2)i和jk(3)i和jk(1<j||<k2i<k&&i<j3<k|jk4inmod(i,2)=1(6)i%j!=0 int { y=25;z=0;printf(″⑵%d\n″,x|y&~z);}1voidmain(){inti,j;floatk,m;scanf(″%f##%f″,&k,&m);}答:輸入:i=40**j=7856.89##2.3c1=′A′,c2=B′。請問在鍵盤上如何輸入?答 /*Thisisaprogramwithsomeerrors.*/#include″stdio.h″voidmain{intx,y;} main(){ } main(){ } {intx,y,z;printf(″(1)%d\n″,x<y?y:x);}
x>=y,結果是1,再求1>=x,所以結果為0。{float //定義area為面積,per }{float }2.52%{float printf("sumis}C語言的初學者在編程序的時候,都容易忘記()和{}的匹配,往往缺小寫等。C語言名規(guī)范也不唯一,讀者可以根據(jù)實際需要選擇不同名方式。{int);}
if(i%j),直接使用了運算結果進行temp=i%jtemp進{int}{floatelseif(weight<=nomalw5)}
100i(i1)…1 {intprintf("pleaseinputainteger:\n");elseif(i>10){}
printf("resultis}{intprintf("pleaseinputainteger:\n");{}{}
printf("resultis}結果分析:第一種算法較容易理解;第二種算法中,需要大家注意的是當(5<i<=10{int{}}初始值是32768int變量的取值范圍是什么?是3276832768。所以將max初始為32768max初始為main(){inti,y;printf(Pleaseinputafloatandainteger:");}{charch,operat;printf("pleaseinputadigitalexpression:");{{default:}}}main(){intn,i,j;double{for{}}}main(){int {}while(!(temp>=m));}以使用while、if等條件判斷語句完成,請讀者思考。{intnumber,digit;{}進該程序,使它在輸入負數(shù)時也能工作。例如,如果輸入的數(shù)是4567,則輸出7654。main(){intif(number<0)sign=1;{ }3.10我們已經(jīng)了解到了怎么樣求出一個整數(shù)的各位,在本題中該方main(){inti,j,k;staticint printf("Pleaseinputashorttypeinteger:");{ while { }}7k=k*10number能與十、百、千、萬……各輸入3567,輸出: 適合使用switch-case語句。main(){staticintcount;printf("Pleaseinputainteger:"); {{case0:printf("zero");case1:printf("one");case2:printf("two");case3:printf("three");case4:printf("four");case5:printf("five");case6:printf("six");case7:printf("seven");case8:printf("eight");case9:printf("nine} for(i=count;i<5;i++)printf("zero");}{{}}main(){inti=1;while(count<=10){{}}}main(){floatintsign;//printf("\nPleaseinputagroupofnumbers(endsign:0):");printf("Thefirstnumberis:%f\n",number);if(number<0)while{if((sign==1)&&(number<0)) printf("%9.3f",number); printf("%9.3f",number);}}main(){intintprintf("Pleaseinputtwointegers:");//{} {} //求出結}main(){intprintf("Pleaseinputtwointegers:");printf("Beingshiftednumberisi=0x%x\n",i);if(j>0){}{
printf("Circleleftshiftbits:%d\n",j); j=j;//需要先對j取絕對值printf("Circlerightshiftbits:%d\n",j);}printf("Aftershift:}main(){intint printf("Pleaseinputtwointegers:");printf("The%dthbitof%d}
printf("The%dthbitof%dwhiledo-while語句在用法上有區(qū)別,do-while語句需要用“;本章主要學習了各種控制語句的使用。在較為復雜的條件判斷語句中,if-else、case語語句進行不同長度的縮進,如case語句;對稱指一組相匹配的語句進行相同的縮進,比如1,6,4,5,8。解題思路:按照主的算法提示,我們只要枚舉數(shù)組的下標,從0到數(shù)組長度N的{inti;//定義循環(huán)變量{}{}}a[i]a[Ni1]N1,交換操作將進行兩次:①a[ia[Ni1],②a[i]←→a[Ni1],最終的結果將不變。很多同學在設計算法的時候temp=a;//將atemp //將bb=temp;//tempaN1NN1N依次編號。第一個人(1號)將燈全部打開,第二個人(2號)22的倍數(shù)的燈關閉。第三個人(3個人操作之后,哪幾盞燈是點亮的?試編程求解這個問題,N由鍵盤輸入。{intLamp[MaxN+1]={0};//初始化每盞燈的狀態(tài),0為關閉,1intn;//定義燈數(shù)量}運行結果為:請輸入燈數(shù)量1491、0分別表示燈的明滅;二是需要對哪些燈進行處理,這里使Lamp[j]=Lamp[j解題思路:首先主的算法提示按步分解數(shù)組下標為0的元素不排序數(shù);用數(shù)組a待排序元素,n待排序的元素的個數(shù)i1到n1a[i]a[n]中的最小值,使用以下的方法:令minValue表示最小值,初值為更換minValue和minNum。{inta[n+1]={0};//用數(shù)組待排序的inti;//intminValue=0;//最小值{}{{}a[0]=a[i];//以a[0]a[i]a[minNum]}}用中,用數(shù)組一個序列時,常采用這種方法,將下標0的元素空置不用,而用下標i對應第i個元素。當然,在定義數(shù)組長度時,其長度要比序列的長度大1。n21,2,3,…,n2這些數(shù)字放到這些格子里,使其每行的和、每列的和及兩條對角線的和都是一個相同的數(shù)。試編程由鍵盤輸入一個奇數(shù)n,輸出一個n階幻方。解題思路:首先主的算法提示按步分解填數(shù)字開始,k開始循環(huán),完成下面的(5)到(10;ka[i][j]ki,ji<0j<ni=n1,表示后一數(shù)放到與右上格同的下面,即i=1,j=n1;{intk=1;//定義賦值的數(shù),從1到25inti=0;{ {}{}}{}}AbcD,則輸出為DcbA。{charstr[100]="";//定義字符數(shù)組,字符inti;//定義循環(huán)變量printf("\n逆序輸出的結果是:");}{charstr[200];//定義字符數(shù)組,字符intintspace=0;//空格標志,0表示新空格,1{')//{{}}
}:%}并序判斷并輸出得到最高分的學生的信息。需注意的是結構數(shù)組的長度要大于學生人數(shù)的最大值,以免出現(xiàn)數(shù)組越界錯誤。struct 結構date{intyear; intmonth; intday; struct {charname[20]; int; structdate double double Cdouble constint void student int n為學生人數(shù),idoubleavgC=0,maxC=0,minC=100; C語言平均成績、最高分、最低分doubleavgCal=0,maxCal=0,minCal=100; printf("請輸入學生人數(shù)(<=%d):",MaxStudent);scanf("%d",&n); { printf("(1男0女 printf("\t年printf("\t月printf("\t日 printf("C語言成績:\t");scanf("%lf",&stus[i].C); 輸入C語言成績printf("微積分成績:\t");scanf("%lf",&stus[i].Calculous); 累加C的成績 統(tǒng)計C語言的最低分} printf("%10s\t\t%14s\t%8s\t%8s\n","","生日","C","微積分");printf("%10s\t%2d\t%4d年%2d月%2d日\t%8.4f\t%8.4f\n", printf("%10s\t\t%14s\t%8s\t%8s\n","","生日","C","微積分");printf("%10s\t%2d\t%4d年%2d月%2d日\t%8.4f\t%8.4f\n", }量橫坐標x和縱坐標y唯一確定這個點。{void{doubleelseif(fabs((p3.yp1.y)/(p3.xp1.x)p2.yp1.y)/(p2.yp1.y))<1e7)//直線方程}用一個數(shù)組存放的信息,每本書包含書名、作者、年月、、借出structBookInfo//定義一本書的信息{charcharpublisher[100];intbrownum;intvoid{inti;int{printf("日期:\n");printf(":\n");}{{}}{printf(":\t%s\n",books[i].publisher);}}{inta[n]={10,2,8,22,16,4,10,6,14,20};//初始化數(shù)組,用于戰(zhàn)士的inti,k=0;//{}間來進行,這樣不滿足C程序高效性和擴展性的特點。作者使用的這種算法只多用了一個整數(shù)單元,先將最后一位戰(zhàn)士的數(shù)保存下位保齡球計分問題。(以下省略10,則本輪得分即為兩次滾得的分數(shù)之和;否則,本輪得分與下一輪依次計算本輪前兩輪的得分及本輪的暫時得分和狀態(tài),當然如果本輪的狀態(tài)為normal,則constintspare=2;voidmain(){intgame[10]={0};//數(shù)組各輪得intstate1=0,state2=0;//inti,score,state;//i為循環(huán)變量,score當前得分,state為本輪狀{{}}{}else{}{}}constintnum=1898;//累加和的值voidmain(){intprimesum=0;//累加和{}{printf("%d與%d之間的素數(shù)差之和為}}個優(yōu)秀的算法才是設計一個完整的程序最重要的。面我們已經(jīng)了解到,程序錯誤主q=*p:q是指針,*p是指針p細內容請參考主5.1節(jié)。main{intchar}{char},pd,它由pd[0]~pd[3]4{char}{intintprintf("Thesumis}main{intint*p;for{}printf("Thesumis}main{chardata[]="Therearesomemistakesintheprogram";char*point;inti,length;}{chardata[]="therearesomemistakesintheprogram";char*point;inti,length;}string1string2string1stringl="thedaythemonththeyear";是同時進行的。string1開始循環(huán)后,string2string2的首string1中循環(huán)到的字母相同,如果相同,則兩個字符串開始同時循環(huán),并記錄string2可能多次出現(xiàn),所以需要一個數(shù)組來保存多{charstring1[100],string2[10];//定義數(shù)組兩個字符串,暫定第一個在100內,第二個在10內{{}{{}{}}printf("出現(xiàn)%d次,起始位置分別是:",i);}程序分析:q=string2q進行多次判斷,并且防止錯誤。例如:q和p123個不同,請定義一個指針變量*++point的值等于什么?{charlongintprintf("pleaseenterthebeginningandtheendaddrinhex\n");{{ }}}算法分析:判斷字母和數(shù)字的方法是依靠ASCII碼進行,所以對字符串中的每個{charstr[100];//定義一個數(shù)組字符charint{}char類型的變量,初學者往往理解為是不能直接比較大小的,實際上直接比較大{char{ int{}}答:輸出結果為:234234{char*p,*q;{
{}}}
原型:voidtran(intarray[5][3]))。intb[3][5];{inti,j;}{intint{}{}}void,且不需要再使用return返回結果。count(char*str))。intb[3];//定義外部變量,用于各種字符的個voidcount(char*str)//{{}}void{charprintf("字符串%s中",str);printf("\n字母個數(shù)}義一個字符數(shù)組str2[],用于判斷處理后的字符串。字符串str開始循環(huán)后,如果是字{inti=0;{{}{}}}void{char}3153=1+125+27。寫一個函數(shù),找出所有滿足條件的數(shù)。(參考函數(shù)原型:intfind(intn))intfind(intn){inti,j,k;//i表示百位,j表示十位,kreturn}void{int{}}運行結果 floatx1,x2;voids(inta,intb,int{ints;}{intif(a==0)//a0{}{}}
(通過調用對兩個正整數(shù)求最小公倍數(shù)的函數(shù)實現(xiàn))(參考函數(shù)原型:intfind(inti,intj))intfind(inti,int{int{}
{}{}
intprintf("5個整數(shù)的最小公倍數(shù)是jj的所有數(shù)進行循環(huán)。在每求需要注意是的,jjj的值賦給一個中間變量s,利用s來進行減操作,讓兩步操作不相互影響。intk[20];voidfind(int{inti,n,s;//i{{}}{}}{
int}約數(shù)(除了它本身以外)的和用函數(shù)實現(xiàn)(參考函數(shù)原型:intfactor(intj))。intk[40];intfactor(intj){for{{ 將每個因子賦給數(shù)組}for return}void{intfor(int{for(int{}}}函數(shù)實現(xiàn)將輸入的一組數(shù)據(jù)逆序輸出(參考函數(shù)原型:voidisort(inta[]))#defineN5voidisort(int{inti,temp;{}}{int}數(shù)原型:intmin(inta]),intminlocat(inta[])intmin(inta[])//{int{}return}intminlocat(inta[])//{int{{}}return}{intb,c;inti;}cmp(chars1[],chars2[]))。#defineN100intcmp(chars1[],char{v=s1[i]return}{intv;}copy(chars1[],chars2[]))voidcopy(chars1[],char{inti;}{chars1[100],s2[100];}分、最高分及平均成績利用子函數(shù)實現(xiàn)(參考函數(shù)原型:voidminmax(ints)#defineN10floatav;voidminmax(int{inti;{}}{int}np的情況下,計算并輸出結果(能輸出具體的組合情況則更好)(參考函數(shù)原型:floatf(intn))Cfloatf(intn){inti;{}return}{floatc;int{}}
01之間的實數(shù)(利用標1000個數(shù)據(jù)點做試驗(參考函數(shù)原型:floatpi(intn))。#defineN100floatpi(intn){long{;}}{float}(1rand()#defineN1000floatjf(intn){floatx,f,s=0,i;{}return}{float}定義比較兩個(假設均為18位,從第7到第14位代表出生年還是使用結構指針參數(shù)(以出生年月日比較兩個的參考函數(shù)原型:intcmpyyyymmdd(char*s1,char*s2))。intcmpyyyymmdd(char*s1,char{intchar{temps1[i]=*(s1+6);//714}returnflag;}{intflag;}
struct{intnum; floatscore;}參考函數(shù)原型:voidsort(structstustructstu{intnum; floatscore;}boy[5]={{101,"Liming",'M',45},{102,"Zhangvoidsort(structstu{intchartemp char{{{tempnum=(ps+j)>num;(ps+j)>num=(ps+i)>num;(ps+i)>num=tempnum;tempname=(ps+j)>name;(ps+j)>name=(ps+i)>name;(ps+i)>name=tempname; =(ps+j)> ;(ps+j)> =(ps+i)> ;(ps+i)> tempscore=(ps+j)>score;(ps+j)>score=(ps+i)>score;(ps+i)>score=tempscore;}}}}{inti;{printf("學號:%d,:%s,:%c,成績:%5.2f\n",ps>num,ps>name,ps> }}函數(shù)中進行錯誤查找和修改,同時也滿足了C語言模塊化開發(fā)的要求。20main()調用該函數(shù),并輸出結果。(要求:使用全局變量maxmin返回最大值和最小值)voidfun(intb[],intn){inti;}{int{}}intgysh,gbsh;//gysh為公約數(shù),gbshvoidfunc(inta,int{int{}}{int} {inti,j,k,temp,*p,n=10;{}}程序分析:本題也可以使用和習題7.3相似。文件一:主函數(shù)inta[10];{int}voidsort(){int{}}inta=10;void{externb;}intintx=100;inty=200;{intx=155;}#include<stdio.h>voidfun(inti,intj)voidmain(){voidfun(int,int);inti,j,k,l,x,y; }voidfun(inti,int{intx,y; }xy的值,在函數(shù)調用后,并不改變i和j的值。voidmain(){voidfloata=1.0,b=2.0,c=3.0;}void{intstaticintc=1;}inta;staticintb;void{staticintc;inte;}#defineSQUARE1(x)#defineSQUARE2(x)┆b=#defineMAX(a,b)(a>ba:b//二目運算{intprintf("請輸入3個整數(shù):");max=MAX(a,b);//求a,b的最大值max=MAX(max,c);//max和c的最大值}{float}#defineprintf_msprintf("Inputtwointegers:")#defineinput(a,b)scanf("%d,%d",&a,&b)#defineshang(a,b)((a)/(b)){int}成了演員不能完成的工作,同時也讓影片更加。在C語言當中,宏就扮演了一個unionbody{struct{unsignedcharunsignedintunionbodyswap(unionbody{unionbodyreturny;}{unionbody}改寫例8-15程序,將設置顯示器工作模式改為顯示器當前工作模式。15號功能為讀當前的顯示器工作模式。中斷服務后,AL中的返回int{intx;}{int}{union{{int
intinte.b=2;}enum{ half_dollar: {inti;} b11,b21,b30,b41modem{struct{unsignedb0:1;unsignedb1:1;unsignedb2:1;unsignedb3:1;unsigned}是程序設計的關鍵因一。{charch;elseif(argc>2)printf("Toomanyargumentsto{}{
{}}}“SoftwareEngineering”’寫入文件中去的程序。voidmain(){intFILE {}
{}}main(intargc,char{charch;int ifelseif(argc>2)elseif((fp=fopen(argv[1],"r"))==NULL){
}{count判斷后進行統(tǒng)計}printf("File--%shas%d}main(intargc,char{charch;ifelseif{}elseif{
}{{putc(ch,newf寫入新文件中}}}重寫主9-6.cpp程序,將由命令行參數(shù)指定的文件在顯示屏上輸出,計算并{charch;intifelseif(argc>2)printf("Toomanyargumentstoelseif{
}{{if(ch=='\n')}}printf("\nFile--%s:has%dlines,%dchars.\n",}{int}{charch;intifelseif(argc>2)elseif((fp=fopen(argv[1],"r"))==NULL){
}{{if(ch=='\n'){if}}}printf("Thelongestlinehas%dchars.\n",max1);}#defineMAX5main(intargc,char{charc1,c2;intcrow=0,cchar=0;inti=0;intifprintf("usage:linenumfilename\n");{}elseif{
{{while{if{}}}}printf("line%d:startpositionis%d\n",row[j][0],row[j][1]);}main(intargc,char{charch;ifprintf("usage:linenumfilename\n");{}elseif{
}}{charch;intm,n;ifelseif(argc>2)elseif((fp=fopen(argv[1],"r"))==NULL){
}{{if(ch=='\n')}}}果是其他字符,則顯示該文件的下20行內容。main(intargc,char{FILE*fp;intifelseif(argc>2)elseif((fp=fopen(argv[1],"r"))==NULL){
}{{if(c1=='\n'){}}}}參考程序{intintnCount,nRows,nCols,i,j,times; intGraphDriver=DETECT,GraphMode;for(i=0;i<100;i++) for(j=0;j<100;j++)initgraph(&GraphDriver,&GraphMode/*初始化屏幕顯示*/ for(times=1;times<200;times++){for{for{{case3:putpixel(nCols+210,120+nRows,BLACK);case2:resData[nRows][nCols]=orgData[nRows][nCols];}}}for}}struct{intintstruct{intfirst_num;intthird_num;intforth_num;intfifth_num;intsixth_num;inteighth_num;intninth_num;inttenth_num;NYNYadd添加、del刪除和save{charname[30];charmajor[30];charphone[20];charhome[30];}{{{printf("\noutofmemory");}inputs("entermajor",info>major,30);inputs("enterphone",info>phone,20);inputs("enterhome",info>home,30);}}inputs(char*prompt,char*s,intcount)//{{printf("\ntoo}voidsearch()//查找函數(shù),使用查{charstructaddress*info,*find();printf("not}
{structaddressFILE*fp;{printf("cannotopenfile");}}gStyle(1,2,2,1,2)=4表示與坐標(2,2)在第1個方向上的最近的空格數(shù)為4。ConstDIR_UP=ConstDIR_UPRIGHT=ConstDIR_RIGHT=ConstDIR_RIGHTDOWN=ConstDIR_DOWN=5ConstDIR_LEFT=7gStyle(2,4,4,1,1)=1在(4,4)點相鄰的上方白棋數(shù)為1;gStyle(1,4,4,3,1)=2在(4,4)點相鄰的右方黑棋數(shù)為2;Fn表示先手n個棋子的活棋型,如:F4表示先手活四;Fn'n個棋子的沖棋型,如:F4'表示先手沖四;Lnn個棋子的活棋型,如:L3表示后手活三;Lnn個棋子的沖棋型,如:L3'表示后手沖三。AI也就不一樣。最后我們把分值最小的L1'值定為1,則我們就得到了下面各種棋型的分值,由C語言表示為:F數(shù)組表示先手,第一個下標為0時表示沖型,第二個下標表示棋子數(shù),則F2'對應F[0][2];L0L2對應F[1][2]。棋型的分值關系確定好了以后,把每一個可下點的四個方向的棋型值相加(包樣電腦的AI就更高了。 附錄一C使用了未定義的變量。C語言中對變量應該先定義再使用,所有常量和變量必須float類型變量進行求余scanf輸入變量時忘記加地址運算符“&VC編譯器不能檢查,但scanf("%d,%d",&a,&b)3(空格)4,則會出現(xiàn)錯誤,應該輸入3,4。是n1,數(shù)組下標由0開始。floatdouble型遺漏或者沒有正確頭文件。應該使用#include語句進行①根據(jù)語則書寫雙精度數(shù)字。盡管C語言會自動把整型轉換成雙精度型,但書寫雙精度型是個好習慣,讓C語言做強行轉換效率不高,有可能導致轉換錯誤。②對二維或者數(shù)組定義和方法不對多個文件連接時,應該生成或者指定項目文件(.PRJ文件,否則編譯器無法查誤數(shù)目大于某一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版多房產(chǎn)離婚協(xié)議書-2025年度家庭財產(chǎn)分割實施流程2篇
- 二零二五年度餐飲業(yè)餐飲店裝修設計與施工服務合同2篇
- 二零二五版廣告牌廣告位租賃與廣告效果分析合同3篇
- 二零二五年度鋼板租賃及節(jié)能改造服務合同2篇
- 二零二五版房屋抵押借款合同及借款收據(jù)范本3篇
- 二零二五年度軟裝方案創(chuàng)意設計合同2篇
- 二零二五年度火鍋店原料采購及質量控制合同范本3篇
- 二零二五版跨境電商個人合伙退伙合同范本3篇
- 二零二五年度頂賬房買賣合同備案及注銷協(xié)議3篇
- 二零二五版綠色建筑項目墊資合同范本共3篇
- 《疥瘡的防治及治療》課件
- Unit4 What can you do Part B read and write (說課稿)-2024-2025學年人教PEP版英語五年級上冊
- 2025年MEMS傳感器行業(yè)深度分析報告
- 《線控底盤技術》2024年課程標準(含課程思政設計)
- 學校對口幫扶計劃
- 倉庫倉儲安全管理培訓課件模板
- 風力發(fā)電場運行維護手冊
- 《3-6歲兒童學習與發(fā)展指南》專題培訓
- 河道旅游開發(fā)合同
- 情人合同范例
- 建筑公司勞務合作協(xié)議書范本
評論
0/150
提交評論