C語言程序設(shè)計(jì)-實(shí)驗(yàn)報(bào)告_第1頁
C語言程序設(shè)計(jì)-實(shí)驗(yàn)報(bào)告_第2頁
C語言程序設(shè)計(jì)-實(shí)驗(yàn)報(bào)告_第3頁
C語言程序設(shè)計(jì)-實(shí)驗(yàn)報(bào)告_第4頁
已閱讀5頁,還剩101頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

等ザ科技火孚課程實(shí)驗(yàn)報(bào)告課程名稱: C語言程序設(shè)計(jì) 專業(yè)班級: 信息安全1302班學(xué)號: U201315130姓名:王超指導(dǎo)教師: 周時(shí)陽 報(bào)告日期: 2014年6月16日計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院目錄TOC\o"1-5"\h\z\o"CurrentDocument"!實(shí)驗(yàn)概述 3\o"CurrentDocument"2第一次實(shí)驗(yàn) 5\o"CurrentDocument"實(shí)驗(yàn)?zāi)康?5\o"CurrentDocument"實(shí)驗(yàn)內(nèi)容 5\o"CurrentDocument"實(shí)驗(yàn)小結(jié) 12\o"CurrentDocument"3第二次實(shí)驗(yàn) 13\o"CurrentDocument"實(shí)驗(yàn)?zāi)康?13\o"CurrentDocument"實(shí)驗(yàn)內(nèi)容 13\o"CurrentDocument"實(shí)驗(yàn)小結(jié) 174第三次實(shí)驗(yàn) 18\o"CurrentDocument"實(shí)驗(yàn)?zāi)康?18\o"CurrentDocument"實(shí)驗(yàn)內(nèi)容 18\o"CurrentDocument"實(shí)驗(yàn)小結(jié) 23\o"CurrentDocument"5第四次實(shí)驗(yàn) 23\o"CurrentDocument"1實(shí)驗(yàn)?zāi)康?23\o"CurrentDocument"實(shí)驗(yàn)內(nèi)容 23\o"CurrentDocument"實(shí)驗(yàn)小結(jié) 27\o"CurrentDocument"6第五次實(shí)驗(yàn) 28\o"CurrentDocument"!實(shí)驗(yàn)?zāi)康?28\o"CurrentDocument"實(shí)驗(yàn)內(nèi)容 28\o"CurrentDocument"實(shí)驗(yàn)小結(jié) 33\o"CurrentDocument"7第六次實(shí)驗(yàn) 33\o"CurrentDocument"1實(shí)驗(yàn)?zāi)康?33\o"CurrentDocument"實(shí)驗(yàn)內(nèi)容 33\o"CurrentDocument"實(shí)驗(yàn)小結(jié) 409實(shí)驗(yàn)總結(jié) 錯誤!未定義書簽。104參考文獻(xiàn)104.實(shí)驗(yàn)概述C語言作為ー種計(jì)算機(jī)的語言,我們學(xué)習(xí)它,有助于我們更好的了解計(jì)算機(jī),與計(jì)算機(jī)進(jìn)行交流,因此,c語言的學(xué)習(xí)對我們尤其重要。這幾個(gè)個(gè)星期里,我們專業(yè)的學(xué)生在專業(yè)老師的帶領(lǐng)下進(jìn)行了C語言程序?qū)嵺`學(xué)習(xí)。在這之前,我們已經(jīng)對C語言這門課程學(xué)習(xí)了一個(gè)學(xué)期,對其有了一定的了解,但是也僅僅是停留在了解的范圍,對里面的好多東西還是很陌生,的在運(yùn)用起來的時(shí)候還是感到很棘手,畢竟,萬事開頭難嘛。由于時(shí)間的關(guān)系,我們的這次實(shí)踐課程老師并沒有給我們詳細(xì)的介紹,只是給我們簡單的介紹了幾個(gè)比較重要的實(shí)際操作。包括了程序模塊處理.簡單界面程序.高級界面程序.程序的添加修改.用程序做一元線性回歸處理以及用C語言程序來畫粒度分布圖等這幾樣比較重要的時(shí)間操作。上機(jī)實(shí)驗(yàn)是學(xué)習(xí)程序設(shè)計(jì)語言必不可少的實(shí)踐環(huán)節(jié),特別是C語言靈活、簡潔,更需要通過編程的實(shí)踐來真正掌握它。對于程序設(shè)計(jì)語言的學(xué)習(xí)目的,可以概括為學(xué)習(xí)語法規(guī)定、掌握程序設(shè)計(jì)方法、提高程序開發(fā)能力,這些都必須通過充分的實(shí)際上機(jī)操作才能完成。學(xué)習(xí)C程序設(shè)計(jì)語言除了課堂講授以外,必須保證有不少于課堂講授學(xué)時(shí)的上機(jī)時(shí)間。因?yàn)閷W(xué)時(shí)所限,課程不能安排過多的統(tǒng)ー上機(jī)實(shí)驗(yàn),所以希望學(xué)生有效地利用課程上機(jī)實(shí)驗(yàn)的機(jī)會,盡快掌握用C語言開發(fā)程序的能力,為今后的繼續(xù)學(xué)習(xí)打下一個(gè)良好的基礎(chǔ)。為此,我們結(jié)合課堂講授的內(nèi)容和進(jìn)度,安排了6次上機(jī)實(shí)驗(yàn)。課程上機(jī)實(shí)驗(yàn)的目的,不僅僅是驗(yàn)證教材和講課的內(nèi)容、檢查自己所編的程序是否正確,課程安排的上機(jī)實(shí)驗(yàn)的目的可以概括為如下幾個(gè)方面:.加深對課堂講授內(nèi)容的理解課堂上要講授許多關(guān)于C語言的語法規(guī)則,聽起來十分枯燥無味,也不容易記住,死記硬背是不可取的。然而要使用C語言這個(gè)工具解決實(shí)際問題,又必須掌握它。通過多次上機(jī)練習(xí),對于語法知識有了感性的認(rèn)識,加深對它的理解,在理解的基礎(chǔ)上就會自然面然地掌握C語言的語法規(guī)定。對于ー些內(nèi)容自己認(rèn)為在課堂上聽懂了,但上機(jī)實(shí)踐中會發(fā)現(xiàn)原來理解的偏差,這是由于大部分學(xué)生是初次接觸程序設(shè)計(jì),缺乏程序設(shè)計(jì)的實(shí)踐所致。學(xué)習(xí)C語言不能停留在學(xué)習(xí)它的語法規(guī)則,而是利用學(xué)到的知識編寫C語言程序,解決實(shí)際問題。即把C語言作為工具,描述解決實(shí)際問題的步驟,由計(jì)算機(jī)幫助我們解題。只有通過上機(jī)才能檢驗(yàn)自己是否掌握C語言、自己編寫的程序是否能夠正確地解題。通過上機(jī)實(shí)驗(yàn)來驗(yàn)證自己編制的程序是否正確,恐怕是大多數(shù)同學(xué)在完成老師作業(yè)時(shí)的心態(tài)。但是在程序設(shè)計(jì)領(lǐng)域里這是一定要克服的傳統(tǒng)的、錯誤的想法。因?yàn)樵谶@種思想支配下,可能你會想辦法去"掩蓋"程序中的錯誤,而不是盡可能多地發(fā)現(xiàn)程序中存在的問題。自己編好程序上機(jī)調(diào)試運(yùn)行時(shí),可能有很多你想不到的情況發(fā)生,通過解決這些問題,可以逐步提高自己對C語言的理解和程序開發(fā)能力。.熟悉程序開發(fā)環(huán)境、學(xué)習(xí)計(jì)算機(jī)系統(tǒng)的操作方法ー個(gè)c語言程序從編輯、編譯、連接到運(yùn)行,都要在一定的外部操作環(huán)境下才能進(jìn)行。所謂"環(huán)境"就是所用的計(jì)算機(jī)系統(tǒng)硬件、軟件條件,只有學(xué)會使用這些環(huán)境,才能進(jìn)行程序開發(fā)工作。通過上機(jī)實(shí)驗(yàn),熟練地掌握C語言開發(fā)環(huán)境,為以后真正編寫計(jì)算機(jī)程序解決實(shí)際問題打下基礎(chǔ)。同時(shí),在今后遇到其它開發(fā)環(huán)境時(shí)就會觸類旁通,很快掌握新系統(tǒng)的使用。.學(xué)習(xí)上機(jī)調(diào)試程序完成程序的編寫,決不意味著萬事大吉。你認(rèn)為萬無一失的程序,實(shí)際上機(jī)運(yùn)行時(shí)可能不斷出現(xiàn)麻煩。如編譯程序檢測出一大堆錯誤。有時(shí)程序本身不存在語法錯誤,也能夠順利運(yùn)行,但是運(yùn)行結(jié)果顯然是錯誤的。開發(fā)環(huán)境所提供的編譯系統(tǒng)無法發(fā)現(xiàn)這種程序邏輯錯誤,只能靠自己的上機(jī)經(jīng)驗(yàn)分析判斷錯誤所在。程序的調(diào)試是一個(gè)技巧性很強(qiáng)的工作,對于初學(xué)者來說,盡快掌握程序調(diào)試方法是非常重要的。有時(shí)候ー個(gè)消耗你幾個(gè)小時(shí)時(shí)間的小小錯誤,調(diào)試高手一眼就看出錯誤所在。通過這次為數(shù)不多的幾天計(jì)算機(jī)實(shí)踐學(xué)習(xí),我們了解了一些關(guān)于c語言的知識,理解鞏固了我們C語言的理論知識,著對我們將來到社會工作將會有莫大的幫助。同時(shí)它讓我知道,只要你努力,任何東西都不會太難。2.第一次實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康?設(shè)計(jì)簡單的程序并完成簡單的計(jì)算任務(wù)。.掌握基本輸入輸出語句。.掌握C語言程序的編譯,運(yùn)行和鏈接。.2實(shí)驗(yàn)內(nèi)容-)設(shè)計(jì)ー個(gè)程序,在字符模式下,以某個(gè)字符拼出“王”漢字圖形,顯示輸出。程序代碼:#include<stdio.h>intmain(void)(printf("*****弟東*ホネ****米?*密*****、n'');printfC'***********************、n'‘);printf(M *** 、パ);printfC* *** \nH);printf(M *** \nf,);printf(''***********************\n'');printf("******求****************、n'').printf(M *** \nM);printf(M *** \nK);printfC'***********************\n'');printf(''米?**來*******歩?求??求求****、n'');return0;)

MXX1OOOOOO<XXJO<XXXXJ<XXXX輸出效果:輸出效果:(二)輸入ー個(gè)華氏溫度,要求輸出攝氏溫度。公式為c=5/9*(卜32)。程序代碼:#include<stdio.h>intmain(void)floatf,c;printf(Minputthetemperature\nM);printf(Mbyliuxvzhe\nM);scanf(M%fM,&f);c=5.0/9*(f-32);pnntf(M%fH,c);return0;)輸出效果:inputthetemperaturebyliuxuzhe12048.888889Pressanykeytocontinue思123*法法法

算算算算程序代碼算法1:思123*法法法

算算算算程序代碼算法1:尋找另ー變量作為中間變量完成交換。(空杯法)取a、b之間的差值對a和b進(jìn)行四則運(yùn)算,完成a、b的交換。根據(jù)ー數(shù)與另ー數(shù)異或兩次后仍得原數(shù)的規(guī)律,將a、b值進(jìn)行交換。#include<stdio.h>intmain(void)(inta,b,m;printf(inputtwonumbers,please);scanf("%d%d”,&a,&b);m=a;a=b;b=m;printf("a=%d,b=%d*,a,b);return0;}算法2:#include<stdio.h>intmain(void)(inta,b;printf(inputtwonumbers,please);scanf("%d%d”,&a,&b);a=b-a;b=b-a;a=a+b;printf("a=%d,b=%d”,a,b);return0;}算法3:#includeくstdio.h〉intmain(void){inta,b;printf(inputtwonumbers,please);scanf("%d%d”,&a,&b);a=a*b;b=a%;a二a%;printf("a=%d,b=%d”,a,b);return0;}輸出效果:inputtwonumbersplease154451=44^b=45Pressanykeytocontinue(四)設(shè)計(jì)ー個(gè)程序,完成如下功能:輸出ー個(gè)三位數(shù),將他反向輸出。如輸入123,輸出3210算法思想:利用整型數(shù)字除法的方法將三位數(shù)的百位,十位,個(gè)位數(shù)字

提取出來并交換位置,達(dá)到反向輸出的目的。程序代碼:#include<stdio.h>intmain(void)(inta,b,c,m;scanf("%d",&m);a=m/100;b=(m-a*100)/10;c=m-a*100-b*10;m=c*100+b*10+a;printf("%d\n”,m);return0;}輸出效果:222222222222(五)設(shè)計(jì)兩種完成計(jì)算max{x,y,z}(五)設(shè)計(jì)兩種完成計(jì)算max{x,y,z}的程序。算法思想:算法1:使用if語句。算法2:使用三目運(yùn)算語句0?():()進(jìn)行計(jì)算。程序代碼:算法1:#include<stdio.h>intmain(void){inta,b,c9m;printf(upleaseinputthreenumbers\nM);scanf(u%d%d%dM,&a,&b,&c);if(a>b)if(a>c)m=a;elsem=c;elseif(b>c)m=b;elsem=c;pnntf(Hmax=%d\n,',m);return0;}算法2:4include<stdio.h>intmain()(intx,y,z,max;printfCpleaseinputthreenumbers'n");scanf(*%d%d%d*,&x,&y,&z);max=x>y?(x>z?x:z):(y>z?y:z);printf("max{%d,%d,%d)=%d\n",x,y,z,max);return0;}輸出效果:?,E:\學(xué)習(xí)、C語§\liuxvzhe\Cproject5\Debug\Cproject5.epleaseinputthreenumbers123345456nax<123,345,456)=456Pressanykeytocontinue(六)設(shè)計(jì)ー個(gè)程序,完成計(jì)算三個(gè)數(shù)的居中數(shù)。程序代碼:#include<stdio.h>intmain(void)(inta,b,c,m;scanf("%d%d%d",&a,&b,&c);if(a>b)if(a>c)if(b>c)m=b;elsem=c;elsem=a;elseif(b>c)if(a>c)m=a;elsem=c;elsem=b;printf("middle=%d\n”,m);return0;)輸出效果:123234345middle=234Pressanykeytocontinue111111223middle=111Pressanykeytocontinue(七)設(shè)計(jì)計(jì)算一元二次方程組的根的程序。算法思想:根據(jù)所掌握的一元二次方程求解的數(shù)學(xué)知識,將其轉(zhuǎn)化為C語言進(jìn)行表達(dá),用求根公式進(jìn)行計(jì)算.注意用if語句考慮多種情況。調(diào)用math,h頭文件程序代碼:#includeくstdio.h>#include<math.h>intmain(void)(floata,b,c,x,xl,x2;scanf",&a,&b,&c);if(a=0&&b=0)(if(c=0)printf("xiseveryfigure\n*);elseprintfiinputiserror\n");}elseif(a==0&&b!=0){x=-(c/b);printf("x=%f\n”,x);}elseif((b*b-4*a*c)>=0)if((b*b-4*a*c)=0){x=(-b)/(2*a);printf("x=%f\n”,x);)else{xl=(-b+sqrt(b*b-4*a*c))/(2*a);x2=(-b-sqrt(b*b-4*a*c))/(2*a);printf(*xl=%f,x2=%f\n”,xl,x2);}elseprintf("xisnofigure\nつ;return0;)輸出效果:inputabc144x-2.000000Pressanykeytocontinueinputabc143xl-1.000000,x2—3.000000Pressanykeytocontinueinputabc111xisnofigurePressanykeytocontinui(A)根據(jù)任意三角形的面積公式(海倫公式):s=根號下p(p-a)(p-b)(p-c),其中,p=(a+b+c)/2,abc為三角形的三條邊,設(shè)計(jì)ー個(gè)程序計(jì)算任意三角形的面積。算法思想:首先用if語句對用戶輸入的三條邊長進(jìn)行判斷,判斷其是否可組成三角形,再編寫程序進(jìn)行計(jì)算。程序代碼:#include<stdio.h>#include<math.h>intmain(void)floata,b,c,p,s;scanf(*%f%f%f*,&a,&b,&c);if((a>=b+c)11(b>=a+c)||(c>=a+b))

printf(*inputiserror\n*);else{p=(a+b+c)/2;s=sqrt(p*(p-a)*(p-b)?(p-c));printf("s=%f",s);)return0;}輸出效果:■'E:ゝ學(xué)習(xí)XC語言Jiuxvzhe'Cproject8\Detinputthreenumbers*please345sa6.00Pressanykeytocontinue?°E:\學(xué)習(xí)ゝC語言Xliuxvzhe\Cproject8\Detinputthreenumbers,please115kinputiserrorPressanykeytocontinue2.3實(shí)驗(yàn)小結(jié)通過本次實(shí)驗(yàn),了解了C語言基本的輸入與輸出,掌握了最基本的C語言的語法知識,知道了一個(gè)問題可以用不同的算法來解決,有的方法簡單,有的方法復(fù)雜,我們所尋求的是效率最高的那種算法。要注意的是寫程序前最好先寫好算法步驟,這樣寫起程序來會事半功倍。3第二次實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康?學(xué)會使用do,if,while,dowhile一系列語句。.用c語言來解決實(shí)際問題。.通過網(wǎng)上搜索相關(guān)資料來完善程序設(shè)計(jì)。實(shí)驗(yàn)內(nèi)容(-)設(shè)計(jì)ー個(gè)計(jì)算個(gè)人所得稅的程序。算法思想:借助網(wǎng)絡(luò)了解最新的稅收方式,用簡單的表達(dá)式編寫計(jì)算所得稅的算法。程序代碼:#include<stdio.h>intmain(void)(floata,b,c,d;printf(,finputyoursalaryandyourIndividualpaypartofthesocialinsuranceandhousingaccumulationfund\nH);scanf(M%f%fn,&a,&b);c=a-b-3500;if(c<=0)d=0;elseif(c>0&&c<=1500)d=c*0.03;elseif(c>1500&&c<=4500)d=c*0.1-105;elseif(c>4500&&c<=9000)d=c*0.2-555;elseif(c>9000&&c<=35000)d=c*0.25-1005;elseif(c>35000&&c<=55000)d=c*0.3-2755;elseif(c>55000&&c<=80000)d=c*0.35-5505;else{d=c*0.45-13505;printf(M%f\nH,d);return0;)輸出效果:inputyoui*salaryandyourIndiuidu<ngaccumulationfund80001000245.000000Pressanykeytocontinue(二)計(jì)算兩個(gè)數(shù)的最大公約數(shù)和最小公倍數(shù)。算法思想:最大公約數(shù):從i=min(a,b)開始進(jìn)行對要求解的兩數(shù)進(jìn)行循環(huán)計(jì)算,計(jì)算兩數(shù)對i能否整除,若能,輸出i,結(jié)束循環(huán),否則,將i減1繼續(xù)計(jì)算,直到i能同時(shí)被兩數(shù)整除。最小公倍數(shù):最大公倍數(shù)與最小公約數(shù)的乘積等于兩個(gè)數(shù)的積,只要計(jì)算出最大公約數(shù)就可以直接得出最大公倍數(shù)。程序代碼:#include<stdio.h>intmain(void)(inta,b,c,d;/*c為最大公約數(shù),d為最小公倍數(shù)?/printf("inputtwonumbersyplease\nM);scanf(M%d%dH,&a,&b);if(a<=0&&b<=0)printf(Minputiserror\nM);elseif(a==l&&b==l)printf(Mmax=l,min=l\nM);elseif(a==l&&b!=l)printf(Mmax=l,min=%d\n,\b);elseif(a!=l&&b==l)printf(Mmax=l,min=%d\nM,a);else(if(a>=b)(c=b;while((a%c)||(b%c)){elsec=a;while((a%c)||(b%c)){d=a*b/c;printf(Hmax=%d,min=%d\nn,c,d);return0;)輸出效果:inputtwonumbers,please25672max=8-min=2304Pressanykeytocontinue(三)輸入一個(gè)數(shù)n(>=2),判定n是否為素?cái)?shù)。算法思想:從i=2開始進(jìn)行循環(huán)計(jì)算,計(jì)算n是否可以整除i若能,判斷1是否小于n,若小于,則n不是素?cái)?shù),若i小于n時(shí)不能被n整除,則n是素?cái)?shù)。程序代碼:#include<stdio.h>intmain(void){intn,a;printf("inputafigure\nn);scanf(M%dM,&n);if(n<2)printf("inputiserror");else{a=2;while(n%a)a++;if(a<n)printf("%disnotaprimenumber",n);elseprintf("%disaprimenumber",n);return0;inputaFigure163163isaprimenumberinputafigure9696isnotaprimenumbei輸出效果:(四)輸出2-100范圍內(nèi)的所有素?cái)?shù)。要求:不使用子函數(shù)。算法思想:用嵌套循環(huán),令外層對n進(jìn)行循環(huán),內(nèi)層用上題算法進(jìn)行判斷,若n是素?cái)?shù),則輸出。程序代碼:#include<stdio.h>intmain(void)(inta,b;for(a=2;a<=100;a++){b=2;while(a%b)b++;if(b<a)elseprintf(M%d\tM,a);}return0;)輸出效果:23571113171923293137414347535961677379838997Pressanykeytocontinue2J(五)輸出九九乘法口訣表。算法思想:對i*n的形式定義兩次循環(huán),首先對n進(jìn)行循環(huán),從1開始到9結(jié)束,再對i=l進(jìn)行循環(huán)直到i=n,并在每次對i循環(huán)時(shí)輸出ー個(gè)運(yùn)算式,每次對n進(jìn)行循環(huán)時(shí)換行。程序代碼:#include<stdio.h>intmain()intfor(i=l;i<10;i++)for(j=i;j<10;j++)mul=i*j;printf(M%d*%d=%d\tn,iJ,mul);}printf(M\nH);輸出效果:1*1=11*2=21*3=31*4=41*5=51*6=61*7=71*8=81*9=92*2=42*3=62*4=82*5=102*6=122*7=142*8=162*9=183*3=93*4=123*5=153*6=183*7=213*8=243*9=274*4=164*5=204*6=244*7=284*8=324*9=365*5=255*6=305*7=355*8=405*9=456*6=366*7=426*8=486*9=547*7=497*8=567*9=638*8=648*9=729*9=81Press.anykeyto?continue實(shí)驗(yàn)小結(jié)通過本次實(shí)驗(yàn),基本掌握了循環(huán)語句的使用方法,發(fā)現(xiàn)寫含有循環(huán)語句的程序需要很大的耐心和冷靜的細(xì)心,雖然有些不熟練,但只要堅(jiān)持寫,總會取得成功。同時(shí)我發(fā)現(xiàn)循環(huán)語句確實(shí)能夠解決很多實(shí)際問題,這展現(xiàn)了了C語言的無窮魅力,激發(fā)了自己更大的興趣。實(shí)驗(yàn)?zāi)康?了解道溢出的概念,嘗試解決溢出問題。.強(qiáng)化對循環(huán)語句的理解與應(yīng)用。.掌握嵌套語句。實(shí)驗(yàn)內(nèi)容(―)求n個(gè)數(shù)的最大值,最小值和平均值。要求:不使用數(shù)組。算法思想:在進(jìn)行計(jì)較時(shí)每次只取兩個(gè)數(shù),并對這兩個(gè)數(shù)進(jìn)行比較,取其中最大或最小值與下ー個(gè)數(shù)進(jìn)行比較,直到數(shù)據(jù)取完,數(shù)字的個(gè)數(shù)開始由用戶自己輸入。并在每次取數(shù)據(jù)時(shí)統(tǒng)計(jì)數(shù)據(jù)個(gè)數(shù)和計(jì)算總和,最終計(jì)算平均值。程序代碼:#include<stdio.h>intmain(void){floataver,max,min,sum=O,x;inti,n;printf(npleaseinputn\nM);scanf(M%du,&n);printf("pleaseinputthefirstnumber\nH);scanf(n%r*,&x);sum=sum+x;max=x;min=x;for(i=2;i<=n;i++)(printf(Mpleaseinputthenextnumber\nM);scanf(n%r\&x);sum=sum+x;if(x>max)max=x;elseif(x<min)min=x;printf(umin=%.2r\min);printf(Mmax=%.2r*,max);aver=1.0*sum/n;prmtf(,,aver=%.2f\n,\aver);}輸出效果:(二)依據(jù)!/1-1/3+1/5-1/7+1/9- =pi/4,計(jì)算圓周率pi,要求最后ー項(xiàng)<10ハー6。程序代碼:#include<stdio.h>intmain(void)(floatpi,n;inti;i=l;n=l;pi=0;while((l/n)>=0.000001){if((i%4)==l)pi+=(l/n);else{pi-=(l/n);)i+=2;n=i;pi=pi*4.0;printf(M%fH,pi);return0;輸出效果:□.141594Pi*essanykeytocontinue(三)完全數(shù)是ー種特殊的自然數(shù)。它所有的真因子(即除了自身以外的約數(shù))的和恰好等于它本身。試求出「1000范圍內(nèi)的所有完全數(shù)。程序代碼:#include<stdio.h>intmain(void){inti,n,m;for(n=l;n<=1000;n++){i=l;m=0;whi加(ivn){if((n%i)==0){m+=i;)i++;Iif(n==m)printf("%d\n",n);)return0;}輸出效果:(四)水仙花數(shù)是指ー個(gè)三位數(shù),它的每個(gè)位上的數(shù)字的三次幕之和等于它本身。例如:い3+5人3+3人3=153。試求出所有的水仙花數(shù)。算法思想:用for循環(huán)語句循環(huán)100到999的所有三位數(shù)。將n各個(gè)位數(shù)

相分離并進(jìn)行乘方和求和運(yùn)算,結(jié)果與n比較,若相等,輸出程序代碼:#include<stdio.h>intmain(void)intn,a,b,c;for(n=100;n<=999;n++){a=n/100;b=(n-a*100)/10;c=n-(a*100)-(b*10);if<(a*a*a+b*b*b+c*c*c)==n)printf(,,%d\n,\n);}return0;)輸出效果:?,E:\學(xué)習(xí)\C語言\Cproject4\Debug\Cf153370371407Pressanykeytocontinue(五)一個(gè)數(shù),其七進(jìn)制和九進(jìn)制均為3位數(shù),且三位數(shù)的數(shù)字正好相反,試求出這個(gè)數(shù)。算法思想:定義循環(huán)n,使其取得100到999的所有三位數(shù),并使其代表為欲求數(shù)的七進(jìn)制表示,將其各位數(shù)字反置,令所得數(shù)表示欲求數(shù)的九進(jìn)制,同時(shí)將七進(jìn)制和九進(jìn)制轉(zhuǎn)化為十進(jìn)制,若二者轉(zhuǎn)化所得的十進(jìn)制相等,則此十進(jìn)制數(shù)即為所求。程序代碼:#include<stdio.h>intmain(void)inta,b,c,§,n,tl,t2;for(s=100;s<=999;s++){a=s/100;b=(s-a*100)/10;c=s-a*100-b*10;n=c*100+b*10+a;tl=a*7*7+b*7+c;t2=c*9*9+b*9+a;if(tl==t2)printfC,%d\nH,tl);輸出效果:return0;輸出效果:return0;)(六)求解13へ13的尾數(shù)三位是什么。算法思想:ー個(gè)數(shù)的尾數(shù)與另ー個(gè)數(shù)的尾數(shù)相乘所得的數(shù)的尾數(shù)與這兩個(gè)數(shù)直接相乘所得的尾數(shù)相同,利用循環(huán)語句進(jìn)行13次循環(huán)即可得到結(jié)果程序代碼:#include<stdio.h>intmain(void)inta,i;a=13;for(i=l;i<13;i++){a=a*13;a=a%1000;}printf(M%d\nM,a);return0;)輸出效果:「53tressanykeytocontinue(七)求解100!尾數(shù)有多少個(gè)。.算法思想:統(tǒng)計(jì)100!中能整除25或者5的個(gè)數(shù),若能整除25,則必會產(chǎn)生兩個(gè)零,若不能整除25但能整除5,則會產(chǎn)生一個(gè)零。用循環(huán)語句來統(tǒng)計(jì)1到100中這些數(shù)的個(gè)數(shù)。程序代碼:#include<stdio.h>intmain(void)(inta=(),b=0,c,i;for(i=l;i<=100;i++)(if(i%25==0)a=a+2;elseif(i%25!=0&&i%5==0)b=b+l;)c=a+b;print*”100]的結(jié)果有%d個(gè)0\n",c);}輸出效果:的結(jié)果有可5Pressanykeytocontinue4.3實(shí)驗(yàn)小結(jié)通過本次實(shí)驗(yàn),解決了相對復(fù)雜的問題,可以合理解決會溢出的問題,對循環(huán)的理解更加深了,對于if語句來說,控制條件范圍是很重要的。雖然還是感覺有很大困難,但是通過上網(wǎng)搜索,還是能解決絕大部分問題,這培養(yǎng)了我獨(dú)自解決問題的能力。5第四次實(shí)驗(yàn)5.1實(shí)驗(yàn)?zāi)康?了解函數(shù)的聲明與調(diào)用。.運(yùn)用函數(shù)解決復(fù)雜問題。了解函數(shù)運(yùn)用的意義。.2實(shí)驗(yàn)內(nèi)容(七)斐波那契數(shù)列Fo=O,Fi=1,Fn=Fn-i+Fn.2(n>=2,nGN*),求Fn算法思想:定義變量a、b使a表示偶數(shù)項(xiàng),b表示奇數(shù)項(xiàng)。從fO和fl開始依次向后向后相加,直到fn。程序代碼:#include<stdio.h>intmain(void)(inta,b,i9n,fn;printf("pleaseinputthen:\nM);scanf(M%dM,&n);i=2;a=0;b=l;fn=a+b;while(i<n){if(i%2==0){a=a+b;fn=fn+b;}else(b=a+b;fn=fn+a;}i++;)printf("%d\n",fn);return〇;}輸出結(jié)果:pleaseinputthen:934Pressanykeytocontinuepleaseinputthen:206765Pressanykeytocontinue(二)計(jì)算多項(xiàng)式的值anxn+an-ixn'1+an.2Xn-2+...+a3x3+a2x2+aix1+a0

算法思想:利用牛頓迭代法求多項(xiàng)式的值,使計(jì)算的步驟減少,增加了

程序的有效性。其中ai,x和n由用戶自己輸入。程序代碼:#include<stdio.h>intmain(void)(inti,n,m;floata,b,x,sum;printf("輸入n和x以及從aO到an的值ハn”);scanf(M%d%r\&n,&x);scanf(M%fM,&a);sum=a;b=x;for(m=l;m<=n;m++){scanグ%『,&a);i=l;x=b;while(i<m){x=x*b;i++;}sum=sum+(a*x);}printf(n%.2f\nM,sum);return0;)輸入n和x以及從到an的值:5112345621.00Pressanykeytocontinue輸出效果:(三)設(shè)計(jì)ー個(gè)計(jì)算兩個(gè)x和y的最大值函數(shù)max(x,y),并利用該函數(shù)實(shí)現(xiàn)求n個(gè)數(shù)的最大值。算法思想:將max定義為子函數(shù),通過子函數(shù)傳參將上次求得的最大值和新值進(jìn)行運(yùn)算。程序代碼:#include<stdio.h>intmax(intx,inty);intmain()

intn,x,y,z,i;printf("lnputthenumberofyournunbers!\nM);scanf(M%dM,&n);if(n<2)(printf(MError!Pleaseinputmorethan2numbers!\nH);return1;)scanf(M%dM,&x);n=n-1;for(i=1;i<=n;i++)(scanf(M%dH,&y);x=max(x,y);)printf(M%dM,x);return0;)intmax(intx,inty)(if(x>y)returnx;elsereturny;)輸出效果:Inputthenumberofyoui*nunbers?512345623Pressanykeytocontinue程序代碼:(四)設(shè)計(jì)ー個(gè)判斷X是否是素?cái)?shù)的函數(shù)prime(x),并利用該函數(shù)實(shí)現(xiàn)輸出2—100范圍內(nèi)的所有素?cái)?shù)。程序代碼:#include<stdio.h>intprime(intx){inti;i=2;while(x%i)i++;if(i<x)return0;elsereturnx;}intmain(void)(inta;for(a=2;a<=100;a++){if(prime(a))printグ%3dゼ,a);else5.3實(shí)驗(yàn)小結(jié)通過本次實(shí)驗(yàn),了解函數(shù)的聲明與調(diào)用,掌握函數(shù)傳參的步驟,知道了正確使用函數(shù)會使程序結(jié)構(gòu)更加清晰,是程序修改變得更加簡單,降低發(fā)生錯誤的概率。但是函數(shù)的使用不是無節(jié)制的,小程序不必使用函數(shù)來增加難度。6第五次實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康?學(xué)會運(yùn)用遞歸的方式求解實(shí)際問題。.靈活運(yùn)用子函數(shù)的返回值與參數(shù)。.學(xué)習(xí)c語言中子函數(shù)的應(yīng)用,了解其定義形式和引用方法。實(shí)驗(yàn)內(nèi)容(-)設(shè)計(jì)ア個(gè)實(shí)現(xiàn)多個(gè)功能(如,N個(gè)數(shù)求最大數(shù)和一元二次方程求根等等)的演示系統(tǒng)。算法思想:在項(xiàng)目中定義多個(gè)子函數(shù)文件,在main函數(shù)中設(shè)計(jì)引用方式,并引用子文件進(jìn)行計(jì)算。程序代碼:#include<stdio.h>#include<math.h>floatequation();intmax();intgame();intmain()(chara;do(printf("這是ー個(gè)可以實(shí)現(xiàn)多功能的演示系統(tǒng),可以完成如下功能:\n");printf("l.如果希望解方程請輸入e\n");printf("2.如果想求最大數(shù)請輸入m\n");printf("3.如果想退出該系統(tǒng)請輸入Ctrl+c\n”);a=getchar();switch(a){case'e':equation();break;case'm':max();break;default:printf(Merror!\nM);break;)a=getchar();}while(a!=*0*);floatequation()inta,b,c;floatxl,x2;printfC'pleaseinputthreequotientstotheequation:");scanf(M%d%d%dM,&a,&b,&c);if(a==0){if(b==0)(if(c==0)printf(MTherearemanyresults.\nM);elseprintf(MThereisnoresultin'');)elsexl=x2=-c/b;}else(if((b*b-4*a*c)<0)printf(''Thereisnoresultin'');else(x2=sqrt(b*b-4*a*c);xl=(-b+x2)/(2*a);x2=(-b-x2)/(2*a);printf(MTheresultsare:\nxl=%f,x2=%f\nM,xl,x2);}}return;}intMAX(intx,inty);intmax(){intb,max;printfC'pleaseinput0toendyournumbers\n");scanf("%d",&b);max=b;while(b!=0){max=MAX(max,b);scanf("%d",&b);

}printf("max=%d\n",max);}intMAX(intx,inty)(x=x>y?x:y;returnx;}輸出效果:C

AcX入輸-EhEhEKEDDDー兄女女文pleaseinputthreequotientstotheequation:121heresultsare:レ!=-!?000000,x2=-1.000000這是ー個(gè)可以實(shí)現(xiàn)多功能的演示系統(tǒng),可以完成如下功能:.如果霜電解方程請輸.如臬想束最大藪請《侖.如果德強(qiáng)雷該系統(tǒng)請輸入Ctrl+cpleaseinputthreequotientstotheequation:202Thereisnoresult.因是一個(gè)可以實(shí)現(xiàn)多功能的演示系統(tǒng),可以完成如下功能:卜.如果希望落方卷請檢卜2.如果翌善最太謖潮!想5.如菓想送田該索統(tǒng)情輸入Ctrl+cpleaseinput0toendyournumbers12345662230nax=62區(qū)是ー個(gè)可以實(shí)現(xiàn)多功能的演示系統(tǒng),可以完成如下功能:.如果希望一.如果想不該系統(tǒng)請輸入Ctrl,c該系統(tǒng)請輸入Ctrl,c(二)設(shè)計(jì)ー個(gè)遞歸程序計(jì)算組合數(shù)C(n,m)=A(n,m)/m!。ci=1 (〃=o或〃寸)ci=C爲(wèi)+CL ((Xk〃時(shí))算法思想:將子函數(shù)定義為遞歸形式,循環(huán)調(diào)用,直到子函數(shù)中返回確定值。程序代碼:#include<stdio.h>intC(int,int);intmain(void)(intn9m;printf(Mpleaseinputmandn:\n°);scanf(M%d%dn,&m,&n);printf(HC(%d,%d)=%d\n,\m,n,C(m,n));return0;}intC(inty,intz)(intp;if(z==O||z==y)P=l;elseif(y==l)P=z;else{p=C(y-l,z-l)+C(y,z-l);}returnp;)輸出效果:pleaseinputmandn: fcleaseinputnandn:25 |22C<2,5)T0 |C<2,2>-1PressanykeytocontinueBPressanykeytocontinue(三)mccathy函數(shù)m(x)定義如下,編寫ー個(gè)遞歸程序計(jì)算給定x的m(x)的值。<x-I〇 x>1〇〇1))XW1OO程序代碼:#include<stdio.h>intmccathy(int);intmain(void)(intm;printf(upleaseinputx:\nM);scanf(M%dn,&m);printf(Mm(x)=%d\nM,mccathy(m));return0;}intmccathy(intx)(intn;if(x>100)n=x-10;elsen=mccathy(mccathy(x+ll));returnn;}pleaseinputx:6n<x>=91Pressanykeytocontinue輸出效果:(四)根據(jù)任意三角形的面積公式(海倫公式):S=Vp(p-a)(p-b)(p-c)!其中,p=(a+b+c)/2,a.b.c為三角形三邊,使用宏計(jì)算計(jì)算任意三角形的面積。算法思想:利用宏定義將復(fù)雜的海倫公式用一個(gè)簡單符號表示,用符號表示公式使主函數(shù)中求三角形面積變得更簡便程序代碼:#include<stdio.h>#include<math.h>#defineP((a+b+c)/2)#defineAREAarea=sqrt(P*(P-a)*(P-b)*(P-c));intmain(void)(floatarea,a,b,c;printf,請輸入三角形的三個(gè)邊長scanf(M%f%f%F',&a,&b,&c);if(a>=b+c||b>=a+c||c>=a+b)printfC'inputiserror\nn);else{AREAprintf(M%.2f\nM,area);return0;輸出效果:請輸入三角形的三個(gè)邊長:3333.90Pressanykeytocontinue6.3實(shí)驗(yàn)小結(jié)通過本次實(shí)驗(yàn),強(qiáng)化對子函數(shù)的使用,了解宏定義以及宏計(jì)算,學(xué)會使用遞歸函數(shù)解決ー些實(shí)際問題。除此之外,還培養(yǎng)了自己嚴(yán)謹(jǐn)認(rèn)真的編程風(fēng)格,避免因?yàn)椹`些小錯誤導(dǎo)致程序的錯誤。7第六次實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康?掌握數(shù)組的相關(guān)知識。.掌握數(shù)組在計(jì)算機(jī)中的存儲方式。,了解數(shù)組作為參數(shù)的傳遞過程。實(shí)驗(yàn)內(nèi)容(―)設(shè)計(jì)ー個(gè)函數(shù)reverse(a,n),將一維數(shù)組a的值逆置。如,逆置前,A:20、10、90、59、60、80、y0,逆置后,A:70、80、60、59、90、10、20。算法思想:在子函數(shù)中使用中間變量,將數(shù)組兩端的值進(jìn)行替換然后再將第二項(xiàng)和倒數(shù)第二項(xiàng)的值進(jìn)行替換,以此類推,直到數(shù)組中央所有值均替換完畢。程序代碼:#include<stdio.h>#defineN999voidreverse(inta[],intn);intmain(void)inta[N],n9i;printグ請輸入數(shù)組a的數(shù)值個(gè)數(shù):");scanf(,,%d'\&n);printf("輸入數(shù)組a的數(shù)值:");for(i=0;i<n;i++)scanグ%d”,&a[i]);reverse(a9n);return0;}voidreverse(inta|),intn){intj,k,m;for(j=0;j<n-l-j;j++){k=a[jl;a[j]=a[n-l-j];a|n-l-j]=k;1for(m=0;m<n;m++)printfC%d",a[m]);輸出效果:(二)設(shè)計(jì)ー個(gè)函數(shù)BubbleSort(a,n),采用冒泡排序算法,實(shí)現(xiàn)ー維數(shù)組的整數(shù)進(jìn)行排序的功能。算法思想:首先由用戶輸入需要排序的數(shù)組元素個(gè)數(shù),然后輸入數(shù)組具體數(shù)字,傳參給冒泡函數(shù)之后,冒泡函數(shù)對數(shù)組的元素進(jìn)行比較大小,將大的數(shù)移向最右邊,小數(shù)移向左邊,最后完成排序,輸出出相應(yīng)結(jié)果。程序代碼:#include<stdio.h>#defineN999voidBubbleSort(inta[],intn);intmain(void)inta[N],n,i;printf(“請輸入要進(jìn)行排序的元素個(gè)數(shù):'n");scanf(M%dM,&n);printf(”請輸入要進(jìn)行排序的元素:\n");for(i=0;i<n;i++)scanf(M%dM,&a[i]);BubbleSort(a,n);return0;}voidBubbleSort(inta[],intn)(intfor(k=l;k<n;k++){for(j=0;j<(n-l);j++){if(a[j]>=a[j+l]){t=a[j];a[j]=a[j+l];a[j+l]=t;}fora=0;j<n;j++)printf("%d",a[j]);}輸出效果:請輸A要進(jìn)行排序的元素個(gè)數(shù):請輸入要進(jìn)行排序的元素:(三)設(shè)計(jì)ー個(gè)一個(gè)函數(shù)Md(a,n,x),實(shí)現(xiàn)對在ー個(gè)數(shù)組的整數(shù)進(jìn)行查找功能。如果給定值x在數(shù)組a中,返回其所在的位置(即下標(biāo)值),否則返回ー1。算法思想:子函數(shù)將用戶輸入到數(shù)組中的元素ーー與用戶需要查找的元素進(jìn)行比較,沒比較一次,計(jì)數(shù)器加一,如果找到該數(shù)字,返回計(jì)數(shù)器記下的數(shù)字,如果沒找到,返回-1,通過if語句,將表達(dá)出“您查找的數(shù)值不在數(shù)組內(nèi)”程序代碼:#include<stdio.h>#defineN999intfind(inta[],intn,intx);intmain(void)intn,i,x,a[N],m;printf("請輸入數(shù)組a的數(shù)值個(gè)數(shù)n:\nM);scanf(,,%d'\&n);printf("請輸入數(shù)組a:\nH);for(i=0;i<n;i++)scanf(M%dH,&a[i]);printfT請輸入想要査找的數(shù)值ハザ);scanf(M%dn,&x);m=find(a,n,x);if(m!=(-l))printグ您査找的數(shù)字在數(shù)組的第%d位An”,(m+1));elseprintf("您査找的數(shù)值不在數(shù)組內(nèi)?'n”);return0;)intfind(inta[],intn,intx)(intj;for(j=0;j<n;j++){if(a[j]==x){break;)elseif(j<n-l)returnj;elsereturn-1;)輸出效果:請輸入數(shù)組a的數(shù)值個(gè)數(shù)n:儲輸入數(shù)組a:請輸入想要查找的數(shù)值:您查找的數(shù)字在數(shù)組的第5位.Pressanykeytocontinue(四) 輸入一個(gè)已經(jīng)按升序排序過的數(shù)組和一個(gè)數(shù)字,在數(shù)組中查找兩個(gè)數(shù),使得它們的和正好是輸入的那個(gè)數(shù)字。如果有多對數(shù)字的和等于輸入的數(shù)

字,輸出任意ー對即可。例如,輸入數(shù)組1、2、4、7、11、15和數(shù)字15。由于4+11=15,因此,輸出4和11。算法思想:設(shè)計(jì)ー個(gè)嵌套循環(huán)語句,內(nèi)層嵌套將數(shù)組的每ー個(gè)數(shù)與后面的所有數(shù)兩兩相加并與用戶輸入的數(shù)比較,外層嵌套循環(huán)數(shù)組中所有的數(shù),實(shí)現(xiàn)數(shù)組中所有數(shù)的兩兩求和,若得到相同的數(shù)就輸出結(jié)果程序代碼:#include<stdio.h>#defineN999intmain(void)(inta[N],x,n,ij,k,m;priMf("請輸入數(shù)組內(nèi)數(shù)字個(gè)數(shù):");scanf(M%dM,&n);printf("請輸入數(shù)組a:");for(i=0;i<n;i++)scanf(n%dH,&a[i]);printfV請輸入ー個(gè)數(shù)字:");scanf(”%d”,&x);m=0;for(j=0;j<n-ly++){for(k=l;j+k<n;k++){if((a[j]+a[j+k])==x){m=l;break;I)if(m==l)break;}if(m==l)printf(H%d%d\nn,a[j],a[j+k]);elseprintf("不存在這樣兩個(gè)數(shù)、n");return0;富!ど格黑4富!ど格黑46(Pressanykeytocontinue輸出效果:(五)檢驗(yàn)并打印魔方矩陣在下面的5x5階魔方矩陣中,每一行、每一列、每ー對角線上的元素之和都是相等的,試編寫程序?qū)⑷我?x5階矩陣中的元素存儲到ー個(gè)二維整型數(shù)組中,然后檢驗(yàn)其是否為魔方矩陣,并將其按如下格式顯示到屏幕上。TOC\o"1-5"\h\z17 24 1 8 1523 5 7 14 164 6 13 20 2210 12 19 21 311 18 25 2 9算法思想:用嵌套循環(huán)使二維數(shù)組儲存ー個(gè)5*5矩陣,將矩陣每一行,每一列,每一對角線元素相加,得到結(jié)果相比較,如果兩兩相等,則確認(rèn)為魔方矩陣。程序代碼:#include<stdio.h>intmain(void)(inta[5][5],w,sum,sumi,m;for(i=0;i<5;i++){printf("請輸入第%d行:”,i+1);for(j=0;j<5;j++)scanf(M%dH,&a[i][j]);}sum=0;m=0;for(j=0;j<5;j++)sum+=a[0][j];for(i=l;i<5;i++){sumi=0;for(j=0;j<5;j++)sumi+=a[i][j];if(sum==sumi)m=l;else{m=0;break;}if(m==0)break;lf(m==0)printf("輸入的矩陣不是魔方矩陣\n");else(for(j=0;j<5;j++){sumi=O;for(i=0;i<5;i++)sumi+=a[i][j];if(sum==sumi)m=l;else(m=0;break;}if(m==O)break;}if(m==O)printグ輸入的矩陣不是魔方矩陣\11つ;else(sumi=O;for(i=0J=0;(i+j)<(5*2-l);i++J++)sumi+=a[i][j];if(sum==sumi)m=l;elsem=0;if(m==O)printf("輸入的矩陣不是魔方矩陣'n");else(sumi=O;for(i=4J=0;j<5;i-J++)

sumi+=a[i]Lj];if(sum==sumi)m=l;elsem=0;if(m==l)printf("所輸入的矩陣是ー個(gè)魔方矩陣'n");for(i=0;i<5;i++){for(j=0;j<5;j++)printf("%3d"[叩]);printf("\n");

return0;}輸出效果:T入入入入入至冃主冃主冃主月主OE^F丁ー,1:丁希無123417return0;}輸出效果:T入入入入入至冃主冃主冃主月主OE^F丁ー,1:丁希無12341753222023161011是1312912125魔8123 5 7 14 16一丁一丁一丁一丁一丁^T12345艮1第第第第第矩1入入入入入的主冃主冃主冃主冃主冃ユ刖11矩51總1411TOC\o"1-5"\h\z22 3 4 19 2022 33 1 312 34 5 6 7 8anykeytocontinue7.3實(shí)驗(yàn)小結(jié)通過本次實(shí)驗(yàn),掌握了數(shù)組的定義與運(yùn)用,通過數(shù)組簡化解決以前ー些很復(fù)雜的問題,從而對C語言有了更深層次的理解。對數(shù)組運(yùn)行的細(xì)節(jié)有了更加深入的了解。9書本上的程序設(shè)計(jì)程序設(shè)計(jì)1熟悉c語言程序的開發(fā)環(huán)境ー、實(shí)驗(yàn)?zāi)康?1)熟悉Code::Blocks等C語言程序的開發(fā)環(huán)境。(2)掌握C程序的編輯、編譯、鏈接和運(yùn)行方法。(3)通過運(yùn)行簡單的C程序,學(xué)會在集成開發(fā)環(huán)境中調(diào)試程序的方法。ー實(shí)驗(yàn)任務(wù)上機(jī)輸入教材上的兩個(gè)源程序(詳見課本P41),然后進(jìn)行編譯、鏈接、運(yùn)行以及調(diào)試程序,使程序最終輸出正確結(jié)果。三、實(shí)驗(yàn)步驟及結(jié)果(要求給出源程序和程序運(yùn)行結(jié)果。另外,根據(jù)實(shí)驗(yàn)內(nèi)容,記錄編輯、編譯、鏈接、調(diào)試程序的操作過程和實(shí)驗(yàn)現(xiàn)象)1.源程序1實(shí)驗(yàn)步驟及結(jié)果。整個(gè)實(shí)驗(yàn)步驟包括建立工程、編輯源程序、編譯和運(yùn)行、調(diào)試程序。1) 創(chuàng)建一個(gè)工程(1)選擇"File/New/project…”菜單項(xiàng)。(2)點(diǎn)擊File下面的Newfile圖標(biāo),在選擇“Project…”選項(xiàng)。如圖:.FileEditViewSearchProjectBuildDebugFortranwxSmithToolsTools*Plugins(3)選擇Consoleapplication。如圖:NewfromtemplateProjectsBuildtargetsFdesCustomUsertempbtesCategory:<AIcategories*ARMProjectAVRProjectCode::BtockspluginConsoleappkationCancel可0圓DappbcationDrect/XDynamcUnkproject LbraryFLTKprojectFortranDLLFortranappbcatnnViewas?LargeconsObstTIP:Tryright-clicknganitemSelectawizardtypefirstontheleftSelectaspecificwizardfromthemanwndow(filterbycategoriesfneeded)PressGo(4)選擇Go,Next?選擇C,Next(5)輸入ProjectTitle以及Project保存位置(A)了解有關(guān)概念(1)工程(Project)〇(2)工作空間(Workspace)〇如圖:(B)査看物理文件夾查看已建立的工程,如圖:打開已存在的工程(1)選擇“File/Open”菜單項(xiàng),或按“Ctrl+0”。(2)點(diǎn)擊File下面的Open圖標(biāo)。(3)從Code::Blocks主界面中點(diǎn)擊〇penanexistingproject圖標(biāo)。如圖:2)編輯源文件和保存。如圖:3)編譯和運(yùn)行程序(A)設(shè)置編譯參數(shù)如圖:(B)編譯提示出錯信息結(jié)果如圖:E:\C_Pro]?ct\p...。E:\C_Pro]?ct\p...。フ?ut\p.--10E-ヽC_Poeい。 11B:\C_PEOjace\p...11X:'C_?ro;?cc\p...6t::8tocks-4Searchresults',Cccc-QBUdlog■1?BuMmessaoesxCppChedc, 'CppChedcmessages'GcopeQDebugger'IMesaage-Build.Debugiapc]licoapilex.GNUGCCCo^iler)Infunction'Min':?rrac'?イ??’un4?elac*dricatu?!nthiafunetlentnor?:eachundadazadxdantifxaxcaponedonlyoncafoxaachfunctionitappaaxainvamxs^r **'aatbutuseuaud!-Vusu*ad-bus-*?s-7arx*bl*JBuildfallad:2axxexia),1waxningO)<0BlnutaI?,1?aconda>>"■修改如下:1)在語句s=(a+b+c)/2后加上分號;2)將語句floata,b,c,s,t;改為floata,b,c,s,t,area;3)將語句printf("area=%d\n”,area);改為printf(*area=%g\n*,area);選擇E:\C_Project\prjl\obj\Debug.查看兩個(gè)文件:Iilprj1.exe 2014-4-11739 應(yīng)用租厚 29KB|-(1main.o 2014-4-117:39。文件 3KB(C)運(yùn)行使用F9編譯并運(yùn)行結(jié)果如圖:4)調(diào)試程序ーー單步執(zhí)行(A)光標(biāo)置于intmain()之前,使用F4RuntoCursor啟動調(diào)試器,并在Debug/Debuggingwindows/Watches菜單下打開Watches窗口,如圖:D(B)通過使用F7Nextline單步跟蹤,如圖:“回公…?3―(〇使用Shift+F8終止調(diào)試器5)調(diào)試程序ーー設(shè)置斷點(diǎn)(A)設(shè)置斷點(diǎn)通過F5在程序第9行及第11行設(shè)置斷點(diǎn),如圖:(B)啟動調(diào)試器使用F8啟動調(diào)試器(〇打開觀察窗口,如圖:(D)繼續(xù)執(zhí)行到下ー斷點(diǎn)如圖:停止調(diào)試,修改源程序如下:#include<stdio.h>#include<math.h>intmain()(floata,b,c,s,t,area;while(l)(printf(nInputthreeedgeofthetriangle\n");scanf(n%f%f%f',&a,&b,&c);if(a>0&&b>0&&c>0&&a+b>c&&a+c>b&&b+c>a)break;elseprintf(MError!Illegaledgesofatriangle!Pleasere-input!\n\n°);)s=(a+b+c)/2;t=s*(s-a)*(s-b)*(s-c);area=sqrt(t);printf("area"%g\n",area);return0;}運(yùn)行測試,交付Release目標(biāo)文件,重新編譯,編譯運(yùn)行結(jié)果如圖:6)編譯Release目標(biāo)文件debug文件:0prj1.exe 2014-4-117:44 應(yīng)用程序 29KBrelease文件:E3prj1.exe 2014-4-122:11 9KB2.源程序2實(shí)驗(yàn)步驟及要求1)創(chuàng)建一個(gè)工程如圖:2)編輯原文件和保存3)修正所有error、warning之后,編譯和運(yùn)行程序4)調(diào)試程序(A)啟動調(diào)試器(B)執(zhí)行到第11行、:cT8AE,???こ。サー,h?kttoi\n".9n:“切?ヽ:ゝ:“口茍っ(C)跟蹤進(jìn)sum函數(shù)(D)跳出sum函數(shù)(E)繼續(xù)運(yùn)行到程序結(jié)束(F)修改程序,將sum函數(shù)內(nèi)for語句后面的分號;刪除并F9編譯運(yùn)行四、實(shí)驗(yàn)體會在編寫較長的程序時(shí),能夠一次成功而不含任何錯誤是不容易的,這需要進(jìn)行長期大量的練習(xí),編寫的程序若已沒有編譯錯誤,可以成功運(yùn)行,但執(zhí)行結(jié)果不對時(shí),需要靈活地借助調(diào)試工具對程序進(jìn)行跟蹤調(diào)試,分析并查找出錯原因。通過對Code::blocks編輯源文件,編譯、鏈接,以及對調(diào)試器的使用,加深了對集成開發(fā)環(huán)境的理解,也可以更熟練地使用VC、Code::Blocks等集成開發(fā)環(huán)境進(jìn)行C語言程序的編寫調(diào)試及發(fā)布,對以后C語言的學(xué)習(xí)有了更大的幫助。程序設(shè)計(jì)2表達(dá)式和標(biāo)準(zhǔn)輸入與輸出實(shí)驗(yàn)ー、實(shí)驗(yàn)?zāi)康?1)熟練掌握各種運(yùn)算符的運(yùn)算功能,操作數(shù)的類型,運(yùn)算結(jié)果的類型及運(yùn)算過程中的類型轉(zhuǎn)換,中點(diǎn)是C語言特有的運(yùn)算符,例如位運(yùn)算符,問號運(yùn)算符,逗號運(yùn)算符等;熟記運(yùn)算符的優(yōu)先級和結(jié)合性。(2)掌握getchar,putchar,scanf和printf函數(shù)的用法。(3)掌握簡單C程序(順序結(jié)構(gòu)程序)的編寫方法。二、實(shí)驗(yàn)任務(wù)1、源程序改錯使用實(shí)驗(yàn)2.1的實(shí)驗(yàn)步驟對書上源程序進(jìn)行調(diào)試修改,使之能夠正確完成指定任務(wù)2、源程序修改替換刪除定義語句中的3修改書本劃線處語句,使之實(shí)現(xiàn)兩書對調(diào)的操作。3、程序設(shè)計(jì)(1)編寫ー個(gè)程序,輸入字符C,如果C是大寫字母,則C轉(zhuǎn)換成對應(yīng)的小寫,否則C的值不變,最后輸出C。(2)編寫ー個(gè)程序,輸入無符號短整數(shù)x,m,n(0<=m<=15,K=n<=16-m),取出x從第m位開始向左的n位(m從右至左編號為015),并使其向左端(第15位)靠齊。(3)IP地址通常是4個(gè)用句點(diǎn)分割的小整數(shù)(即點(diǎn)分十進(jìn)制),入32.55.1.102〇這些地址再機(jī)器中用無符號長整形表示。編寫ー個(gè)程序,以機(jī)器存儲的形式讀入ー個(gè)互聯(lián)網(wǎng)IP地址,對其譯碼,然后用常見的句點(diǎn)分隔的4部分的形式輸出。三、實(shí)驗(yàn)步驟及結(jié)果(要求給出源程序和程序運(yùn)行結(jié)果。另外,根據(jù)實(shí)驗(yàn)內(nèi)容,記錄編輯、編譯、鏈接、調(diào)試程序的操作過程和實(shí)驗(yàn)現(xiàn)象)1、源程序改錯修改后的程序代碼如下:#include<stdio.h>#definePI3.14159intmain()(intf,newint;shortp,k;doublec,r,s;/*fortask1*/printf("InputFahrenheit:");scanf("%d",&f);c=5.0/9*(f-32);printf("\n%d(F)=%.2f(C)\n\n",f,c);/*fortask2*/printf("inputtheradiusr:");scanf("%lf',&r);s=PI*r*r;printf("\nTheacreageis%.2f\n\n",s);/*fortask3*/printf("inputhexintk,p:");scanf("%hd%hd",&k,&p);newint=(p&0xff00)?8|(k&0xff)?8;printf("newint=%d\n\n",newint);return0;)2、源程序修改替換修改后的程序代碼如下:#include<stdio.h>voidmain(){inta,b;printf(nInputtwointergers:n);scanf(n%d%d';&a,&b);a=aAb;b=aAb;a=aAb;printf(M\na=%d,b=%dn,a,b);}3、程序設(shè)計(jì)#include<stdio.h>intmain()(charc;c=getchar();if(c>=,A,&&c<=,Z,)c-='A'-'a';printf(n%cn,c);return0;)#include<stdio.h>intmain()(unsignedshortx,m,n;printf("Inputthreeunsignedshortnumbers(0<=m<=15,1<=n<=16-m):\nM);scanf("%hu%hu%hu,,,&x,&m,&n);if(0<=x<=65535&&0<=m<=15,1<=n<=16-m){x=(x?m)?(16-n);printf("%hu”,x);)elseprintf(nInputeiror!\n”);return0;)#include<stdio.h>intmain()(unsignedlongx;printf("InputanIPaddress:\nM);scanf(n%lu",&x);printf(n%d.%d.%d.%d\(x?24)?24,(x?16)?24,(x?8)?24,x?24);return0;)四、實(shí)驗(yàn)體會通過對程序的修改和調(diào)試,了解了c語言的嚴(yán)謹(jǐn)性;以及對位運(yùn)算符的運(yùn)用,更加深了對位運(yùn)算的認(rèn)識;通過編寫簡單程序,加強(qiáng)了動手能力和對基本輸入輸出函數(shù)的認(rèn)識,同時(shí)增加了對C程序的認(rèn)識。程序設(shè)計(jì)3流程控制實(shí)驗(yàn)ー、實(shí)驗(yàn)?zāi)康模?)掌握復(fù)合語句、if語句、switch語句的使用,熟練掌握for、while、do-while三種基本的循環(huán)控制語句,掌握重復(fù)循環(huán)技術(shù),了解轉(zhuǎn)移語句與標(biāo)號語句。(2)熟練運(yùn)用for、while、do-while語句來編寫程序。(3)練習(xí)轉(zhuǎn)移語句和標(biāo)號語句的使用。(4)使用集成開發(fā)環(huán)境中的調(diào)試功能:單步執(zhí)行、設(shè)置斷點(diǎn)、觀察變量值。二、實(shí)驗(yàn)任務(wù)1、源程序改錯對源程序進(jìn)行修改,使之能夠正確完成求n的階乘。2、源程序修改替換(1)修改1中的源程序,并用while和do-while語句替換for語句。(2)修改1中的源程序,使之完成輸入“整數(shù)S”,輸出“滿足n!>=S的最小整數(shù)n”。3、程序設(shè)計(jì)(1)按照分段收稅的比例標(biāo)準(zhǔn),分別用if和switch語句編寫程序,輸入工資金額,輸出應(yīng)收稅金額。(2)編寫一個(gè)程序,將輸入的一行字符復(fù)制到輸出,復(fù)制過程中將一個(gè)以上的空格字符用ー個(gè)空格代替。(3)編寫ー個(gè)程序,打印楊輝三角。(4)編寫ー個(gè)程序,將用戶輸入的任意正整數(shù)逆轉(zhuǎn)。4、選做題用牛頓迭代法求方程近似根。三、實(shí)驗(yàn)步驟及結(jié)果(要求給出源程序和程序運(yùn)行結(jié)果。另外,根據(jù)實(shí)驗(yàn)內(nèi)容,記錄編輯、編譯、鏈接、調(diào)試程序的操作過程和實(shí)驗(yàn)現(xiàn)象)1、源程序改錯修改后的程序代碼如下:/include<stdio.h>intmain()(inti,n,s=l;printf("Pleaseentern:");scanf("%d",&n);for(i=l;i<=n;i++)s=s*i;printf("%d!=%d",n,s);return0;}2、源程序修改替換(1)while型:#include<stdio.h>intmain()(inti=l,n/s=l;printf(HPleaseentern:");scanf(”%d,&n);while(i<=n){)printf(',%d!=%d",n/s);return0;)do-while型:#include<stdio.h>intmain()(inti=l,nzs=l;

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論