揚(yáng)州大學(xué)C語(yǔ)言上機(jī)作業(yè)1-9整理_第1頁(yè)
揚(yáng)州大學(xué)C語(yǔ)言上機(jī)作業(yè)1-9整理_第2頁(yè)
揚(yáng)州大學(xué)C語(yǔ)言上機(jī)作業(yè)1-9整理_第3頁(yè)
揚(yáng)州大學(xué)C語(yǔ)言上機(jī)作業(yè)1-9整理_第4頁(yè)
揚(yáng)州大學(xué)C語(yǔ)言上機(jī)作業(yè)1-9整理_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、;.答案僅供參考實(shí)驗(yàn)一4設(shè)計(jì)main函數(shù)實(shí)現(xiàn)從鍵盤上輸入兩個(gè)整型變量a、b的值,交換它們的值并輸出。#includevoid main()int a,b,c;printf(enter first integer : );scanf(%d,&a);printf(enter second integer : );scanf(%d,&b);c=a;a=b;b=c;printf(%d,%dn,a,b);getch();5設(shè)計(jì)main函數(shù)實(shí)現(xiàn)從鍵盤上輸入兩個(gè)整型變量a、b的值,并將b的值加入到a中,輸出a的值。 #includevoid main()int a,b,c;printf(enter firs

2、t integer : );scanf(%d,&a);printf(enter second integer : );scanf(%d,&b);c=a+b;a=c;printf(a=%d,b=%dn,a,b);getch();6從鍵盤輸入整數(shù)x的值,根據(jù)公式y(tǒng)=x3+3x2+x-10求y的值,輸出x和y的值。#includevoid main()int x,y;printf(enter first integer : );scanf(%d,&x);y=x*x*x+3*x*x+x-10;printf(x=%d,y=%dn,x,y);getch();實(shí)驗(yàn)二1 編寫程序,從鍵盤上輸入一個(gè)整數(shù)(例如5

3、60)表示分鐘,將其換算成用小時(shí)和分鐘表示,然后輸出至屏幕。#include void main() int a,b,hour,min; printf(enter first integer : ); scanf(%d,&a); b=60; hour=a/b; min=a%b; printf(hour=%d,min=%dn,hour,min); getch(); 2 編寫程序,輸入兩個(gè)整數(shù)(例如1500和350),求出它們的商和余數(shù)并進(jìn)行輸出。#include void main() int a,b,c,d; a=1500,b=350; c=a/b; d=a%b; printf(%d,%d,c

4、,d); getch();3.編寫程序,讀入3個(gè)整數(shù)給分別變量a,b,c,然后將a,b,c的值輸出到屏幕,再交換它們中的數(shù)值,把a(bǔ)中原來(lái)的值給b,把b中原來(lái)的值賦給c,把c中原來(lái)的值賦給a,然后再次輸出a,b,c的值到屏幕。#include void main() int a,b,c,d;printf(enter first integer : );scanf(%d,&a);printf(enter second integer : );scanf(%d,&b);printf(enter third integer : );scanf(%d,&c); printf(a=%d,b=%d,c=%d

5、n,a,b,c);d=c;c=b;b=a;a=d;printf(a=%d,b=%d,c=%d,a,b,c);getch();4編寫程序,讀入3個(gè)雙精度數(shù),求它們的平均值輸出到屏幕。#include void main() double sum=0; double a,b,c,d;printf(enter first integer : );scanf(%lf,&a);printf(enter second integer : );scanf(%lf,&b);printf(enter third integer : );scanf(%lf,&c);sum=a+b+c; d=sum/3.0; pr

6、intf(d=%lf,d); getch(); 5下列程序中,要求main函數(shù)實(shí)現(xiàn)如下功能:從鍵盤上輸入3個(gè)正整數(shù),求出它們中的最大值。請(qǐng)完善程序,并在程序最后用注釋的方式給出你的測(cè)試數(shù)據(jù)及在這組測(cè)試數(shù)據(jù)下的運(yùn)行結(jié)果。#include void main() int a ,b ,c ,d ,max; printf(“Enter three integers:”); scanf(“%d%d%d”,&a,&b,&c); if(ab) max=a; else max=b; if(cmax) max=c; printf(“max of the three numbers is %d”,max);grt

7、ch();6. 請(qǐng)編程序:對(duì)從鍵盤上輸入的x值,根據(jù)以下函數(shù)關(guān)系計(jì)算出相應(yīng)的y值(設(shè)x,y均為整型量)。x值的范圍計(jì)算y的公式x000=x10x10=x201020=x40-5x+20#include void main() int x,y; printf(x=); scanf(%d ,&x); if (x0) y=0; else if (x=0) y=x; else if (x=10&x=20&x40) y=(-5)*x+20; printf(%d ,y); getch(); 實(shí)驗(yàn)三1. 下列程序想求出滿足如下條件的三位數(shù)n:(1)n除以11(整數(shù)相除)所得到的商等于n的各位數(shù)字的平方和;(

8、2)n中至少有二位數(shù)字相同。如:131除以11的商為11,131各位數(shù)字的平方和為11,131中有二位數(shù)字相同,故131是所要求出的三位數(shù)中的一個(gè);又如550,也是滿足條件的三位數(shù)。源程序中有些錯(cuò)誤,請(qǐng)你改正并最終使程序得到如下的運(yùn)行結(jié)果:131 550 900#include void main() int n , a , b , c;for(n=1; n1000; n+) a=n/100; b=n/10%10; c=n%10;if(n/11=a*a+b*b+c*c&(a=b|a=c|b=c)printf(%dn,n); getch();2. 請(qǐng)編程序,實(shí)現(xiàn)從鍵盤上輸入任意一個(gè)整數(shù)n,求出n

9、的各位數(shù)字之和。例如,當(dāng)n為263時(shí),各位數(shù)字之和為11。下面是一個(gè)可以實(shí)現(xiàn)逐位數(shù)字累加功能的程序段,試?yán)斫夂髴?yīng)用到自己的程序中。k=0;n=263;do k+=n%10;n/=10; while(n);#include void main() int n,k; scanf(%d,&n); k=0; do k+=n%10; n/=10; while(n); printf(%d,k); getch(); 3. 試找出符合下列條件的正整數(shù):(1)該數(shù)是一個(gè)三位數(shù);(2)該數(shù)是37的倍數(shù);(3)該數(shù)循環(huán)左移后得到的另兩個(gè)數(shù)也是37的倍數(shù)。例如148是37的倍數(shù),481和814也是37的倍數(shù)。#inc

10、ludevoid main()int n,a,b;for(n=100;n1000;n+)if(n%37=0)a=n/10+n%10*100;b=n/100+n%100*10;if(a%37=0&b%37=0)printf(%dn,n);getch();4請(qǐng)編程序利用下列公式求的近似值。公式為:要求:先求出前2n項(xiàng)的值,再求出2n+2項(xiàng)的值,直至二者之差小于105為止。#includevoid main()int n;float a,b;a=1,b=4.0/3;n=1;while(b-a=1e-5)a=b;n+;b=b*4*n*n/(2*n-1)/(2*n+1);printf(%f,%f,2*a

11、,2*b);getch();5. 請(qǐng)編程序求出滿足如下條件的四位數(shù)n:(1)n的范圍為5000,8000;(2)n千位上的數(shù)減百位上的數(shù)減十位上的數(shù)減個(gè)位上的數(shù)大于零。編程要求:以每行5個(gè)輸出滿足條件的數(shù)及該類數(shù)的個(gè)數(shù)。#includevoid main()int n,a,b,c,d,k=0; for(n=5000;n0) printf(%5d,n);k+; if(k%5=0) printf(n); printf(k=%d,k); getch(); 6請(qǐng)編程序求出滿足如下條件的一個(gè)四位整數(shù),它的9倍恰好是其反序數(shù)(例如,1234與4321互為反序數(shù))。#includevoid main()in

12、t n,e,a,b,c,d; for(n=1000;n=9999;n+) a=n/1000;b=n/100%10;c=n/10%10;d=n%10;e=d*1000+c*100+b*10+a;if(9*n=e)printf(%d,n);getch();7請(qǐng)編程序求出從鍵盤上輸入的兩個(gè)正整數(shù)a和b的最大公約數(shù)和最小公倍數(shù)。#include void main() int m,n,r,x; scanf(%d,%d,&m,&n); x=m*n;while(n!=0) r=m%n; m=n; n=r; printf(%d %d,m,x/m);getch();8請(qǐng)編程序計(jì)算1!+2!+3!+n!的前10

13、項(xiàng)之和。#include void main() long sum,k; int i,j; sum=0; for(i=1;i=10;i+) for(j=1,k=1;j=i;j+) k*=j; sum+=k; printf(%ldn,sum); getch(); 實(shí)驗(yàn)四1. 反序數(shù)。例如,123的反序數(shù)是321。請(qǐng)?jiān)O(shè)計(jì)程序,從鍵盤上輸入一個(gè)整數(shù),求其反序數(shù)并輸出。#include stdio.hmain() int n,k;printf(n=);scanf(%d,&n);k=0;while(n!=0)k=k*10+n%10;n/=10;printf(k=%d,k);getch();2. 完備數(shù)。

14、完備數(shù)是一些特殊的自然數(shù),它所有的真因子(即除了自身以外的約數(shù))之和恰好等于該數(shù)本身。例如,6=1+2+3,故6是一個(gè)完備數(shù)。請(qǐng)?jiān)O(shè)計(jì)程序,找出500以內(nèi)的所有完備數(shù)。#include stdio.hvoid main() int n,i,k;for(n=1;n=500;n+) k=0;for(i=1;i=n-1;i+) if(n%i=0) k+=i; if(n=k) printf(%dn,n);getch();3. 回文數(shù)。一個(gè)數(shù)如果正讀和倒讀(即反序數(shù))相同,稱該數(shù)是回文數(shù)。例如,121、1331均為回文數(shù)。請(qǐng)?jiān)O(shè)計(jì)程序,找出200300之間的所有回文數(shù),并以每行8個(gè)數(shù)輸出至屏幕。#inclu

15、de stdio.hvoid main() int n,k,i,m=0; for(n=200;n=300;n+) k=0; i=n; while(i!=0) k=k*10+i%10; i/=10; if(n=k) m+; printf(%8d,n); if(m%8=0) printf(n); getch(); 4. 回文質(zhì)數(shù)。一個(gè)數(shù)如果是回文數(shù),同時(shí)又是質(zhì)數(shù),則該數(shù)被稱為回文質(zhì)數(shù)。請(qǐng)?jiān)O(shè)計(jì)程序,找出100500之間的所有回文質(zhì)數(shù),并以每行5個(gè)輸出至屏幕。#include stdio.h#include math.hvoid main() int n,k,i,m;for(n=100;n=500;n

16、+) k=0; i=n; while(i!=0) k=k*10+i%10; i/=10; if(n=k) for(m=2;msqrt(n) printf(%4d,n);account+;if(account%5=0)printf(“n”); getch();5. 絕對(duì)質(zhì)數(shù)。如果一個(gè)數(shù)和其反序數(shù)均為質(zhì)數(shù),則該數(shù)被稱為絕對(duì)質(zhì)數(shù)。如,13是質(zhì)數(shù),其反序數(shù)31也為質(zhì)數(shù),則13和31是一對(duì)絕對(duì)質(zhì)數(shù)。請(qǐng)?jiān)O(shè)計(jì)程序,找出200以內(nèi)的絕對(duì)質(zhì)數(shù)。#include stdio.h#include math.hvoid main() int n,k,i,m,a; for(n=1;n=200;n+) for(a=2;a

17、sqrt(n) i=n,k=0; while(i!=0) k=k*10+i%10; i/=10; for(m=2;msqrt(k) printf(%5d,n); getch(); 6. 平方鏡反數(shù)。如果一個(gè)數(shù)的平方數(shù),是其反序數(shù)的平方數(shù)的反序數(shù),則稱該數(shù)和其反序數(shù)是一對(duì)平方鏡反數(shù)。例如,12的平方數(shù)是144,其反序數(shù)為21,21的平方數(shù)是441,其反序數(shù)是12的平方數(shù)144,故12和21是一對(duì)平方鏡反數(shù)。請(qǐng)?jiān)O(shè)計(jì)程序找出200以內(nèi)的所有平方鏡反數(shù)對(duì)。#include stdio.h#include math.hvoid main() int n,k,i,a,b; for(n=1;n=200;n+

18、) k=0; i=n; while(i!=0) k=k*10+i%10; i/=10; a=k*k; b=0; while(a!=0) b=b*10+a%10; a/=10; if(b=(n*n) printf(%dn,n); getch(); 7黑洞數(shù)。黑洞數(shù)又稱陷阱數(shù),是類具有奇特轉(zhuǎn)換特性的整數(shù)。任何一個(gè)數(shù)字不全相同整數(shù),經(jīng)有限“重排求差”操作,總會(huì)得到某個(gè)數(shù),這些數(shù)即為黑洞數(shù)?!爸嘏徘蟛睢辈僮骷窗呀M成該數(shù)的數(shù)字重排后得到的最大數(shù)減去重排后得到的最小數(shù)。隨便造一個(gè)四位數(shù),如a1=1231,先把組成部分1231的四個(gè)數(shù)字由大到小排列得到a2=3211,再把1231的四個(gè)數(shù)字由小到大排列得a3

19、=1123,用大的減去小的a2-a1=3211-1123=2088。把2088按上面的方法再作一遍,由大到小排列得8820,由小到大排列得288,相減8820-288=8532。把8532按上面的方法再作一遍,由大到小排列得8532,由 小到大排列得2358,相減8532-2358=6174。如果再往下做,奇跡就出現(xiàn)了!7641-1467=6174,又回到6174。6174便是一個(gè)4位黑洞數(shù)。請(qǐng)編寫程序,用上述方法找出3位黑洞數(shù)。暫無(wú)答案實(shí)驗(yàn)五1. 有一張足夠大的紙,厚0.09毫米,問將它對(duì)折多少次后可以達(dá)到珠穆朗瑪峰的高度(8848米)?#include stdio.hvoid main()

20、double a=9e-2; int n=0;while(a=8848)a=a*2;n+; printf(a=%d,n);getch();2. 請(qǐng)?jiān)O(shè)計(jì)程序采用遞推法計(jì)算下列級(jí)數(shù)的近似值,當(dāng)n取某一值使得|x(2n+1)/n!|=1.0e-6) m=-m; p*=(x*x); q+=2; k+; n*=k; sum+=(m*p)/(q*n); printf(%lf,sum); getch(); 3. 請(qǐng)?jiān)O(shè)計(jì)程序,根據(jù)下列公式計(jì)算cos(x)的近似值。精度要求:當(dāng)通項(xiàng)的絕對(duì)值小于等于10-6為止。cos(x)=1-x2/2!+x4/4!-x6/6!+(-1)nx2n/(2n)!#include s

21、tdio.h#include math.hvoid main() double x,k,sum,term,a,b,m; printf(x=); scanf(%lf,&x); sum=1; m=1; a=0; k=1; b=1; term=1; while(fabs(term)1.0e-6) k*=(x*x); m=-m; a+=2; b*=(a*(a-1); sum+=(m*k)/b); term=(m*k)/b; printf(cos(x)=%lf,sum); getch(); 4. 請(qǐng)?jiān)O(shè)計(jì)程序采用遞推法計(jì)算的值。即求-+的值。其中x為鍵盤輸入的一個(gè)任意的單精度實(shí)數(shù)。#include std

22、io.hvoid main()int i,p;float x,m,q,sum;printf(x=);scanf(%f,&x);sum=x;m=x;p=1;q=1;for(i=1;i1.0e-6) k*=(x*x); m=-m; a+=2; b*=(a*(a-1); sum+=(m*k)/b); term=(m*k)/b; sum=(-1)*sum*cos(x)/x; sum+=3.14/2; printf(%lf,sum); getch(); 實(shí)驗(yàn)六3. 水仙花數(shù)是指一個(gè)3位數(shù),其各位數(shù)字的立方和等于該數(shù)本身。請(qǐng)完善下列程序中的函數(shù)int daffodil(int n),其功能是判斷整數(shù)n是否

23、為水仙花數(shù),如是,則該函數(shù)返回值,否則返回值。注意,不能更改main函數(shù)。#include int daffodil(int n) int k=0,m; m=n; do k+=(m%10)*(m%10)*(m%10); m/=10;while(m); if(n=k) return 1; else return 0;main() int m,i=0; for(m=100;m1000;m+) if(daffodil(m)=1) printf(%5d,m); i+; if(i%5=0)printf(n); getch();4. 請(qǐng)編寫程序,找出滿足如下條件的整數(shù)m:(1)該數(shù)在11,999之內(nèi);(2

24、) m、m2、m3均為回文數(shù)。例如m=11,m2=121,m3=1331,11、121、1331皆為回文數(shù),故m=11是滿足條件的一個(gè)數(shù)。請(qǐng)?jiān)O(shè)計(jì)函數(shù)int value(long m),其功能是判斷m是否是回文數(shù),如是,該函數(shù)返回值1,否則返回值0。編寫main函數(shù),求出11,999內(nèi)滿足條件的所有整數(shù)。#include int value(long m) long s,n; s=0; n=m; while(n) s=s*10+n%10; n/=10; if(s=m) return 1; else return 0;main() long m; for(m=11;m1000;m+) if(val

25、ue(m)=1&value(m*m)=1&value(m*m*m)=1) printf(%5ld,m); getch();5. 設(shè)n0是一個(gè)給定的正整數(shù)。對(duì)于i=0,1,2,定義:若ni是偶數(shù),則ni+1=ni/2;若ni是奇數(shù),則ni+1=3ni+1;若ni是1,則序列結(jié)束。用這種方法產(chǎn)生的數(shù)稱為冰雹數(shù)。請(qǐng)編寫一個(gè)函數(shù)void hailstones(int n),其功能是顯示由n產(chǎn)生的所要求的序列,按每行6個(gè)數(shù)輸出該數(shù)列中的所有數(shù)。編寫main函數(shù),在main函數(shù)中定義一個(gè)整型變量n,從鍵盤上輸入值77賦給n,用n作為實(shí)參調(diào)用函數(shù)hailstones。測(cè)試數(shù)據(jù):77輸出結(jié)果:Hailston

26、es generated by 77:77 232 116 58 29 8844 22 11 34 17 5226 13 40 20 10 516 8 4 2 1Number of hailstones generated:23#include void hailstones(int n);void main()int n; scanf(%d,&n); hailstones(n); getch(); void hailstones(int n) int i; printf(Hailstones generated by 77:n); i=0; while(n!=1) printf(%5d,n)

27、; i+; if(n%2=0) n=n/2; else n=3*n+1; if(i%6=0) printf(n); printf(%5dn,n); i+; printf(Number of hailstones generated:%5d,i); 6. 請(qǐng)按要求編寫程序。編程要求:(1) 編寫函數(shù)int twinborn(int m,int n),其功能是判斷整數(shù)m和n是否為孿生質(zhì)數(shù)對(duì)(相差為2的兩個(gè)質(zhì)數(shù)稱為孿生質(zhì)數(shù)),如是,則函數(shù)返回值,否則返回值。(2) 編寫main函數(shù),求出10,99內(nèi)的所有孿生質(zhì)數(shù)對(duì),使得程序的運(yùn)行結(jié)果為:11,1317,1929,3141,4359,6171,73#

28、include int prime(int m)int n; for(n=2;n=(m/2);n+) if(m%n=0) return 0; return 1; int twinborn(int m,int n) if(prime(m)+prime(n)=2)return 1;elsereturn 0; void main()int n,m; for(n=10;n=97;n+) m=n+2; if(twinborn(m,n)=1) printf(%d,%dn,n,m); getch(); 實(shí)驗(yàn)七1用牛頓迭代法求方程3x3-3x2+x-1=0在x0=2附近的實(shí)根。要求:用函數(shù)float newt

29、oon(float x)求方程在x附近的根;用函數(shù)float F(float x)求x處的函數(shù)值,用函數(shù)float F1(float x)求f(x)在x處的導(dǎo)數(shù);在主函數(shù)中輸入x0,調(diào)用函數(shù)求得方程的近似根,并輸出結(jié)果。請(qǐng)完善下列程序,使之完成上述功能。并請(qǐng)以注釋的方式在程序的最后給出你在運(yùn)行該程序時(shí)所選用的測(cè)試數(shù)據(jù)及在該測(cè)試數(shù)據(jù)下的運(yùn)行結(jié)果。#include #include float F(float x) return x*(3*x*(x-1)+1)-1; float F1(float x) return 9*x*x-6*x+1; float newtoon(float x) float

30、 f,f1,x0; do x0=x; f=F(x0); f1=F1(x0); x=x0-f/f1; while(fabs(x-x0)1e-5); return x;void main() float x0; scanf(%f,&x0); printf(The result =%.2fn,newtoon(x0); getch();2請(qǐng)?jiān)O(shè)計(jì)程序,用二分法求方程x3+1.1x2+0.9x-1.4=0在(0,1)內(nèi)的近似根。直到|f(x)|0.0001為止。#include #include float f(float x) return(x*x*x+1.1*x*x+0.9*x-1.4); void

31、main() float m=0,n=1,r; r=(m+n)/2.0; while(1) if(fabs(f(r)1e-4) break; if(f(m)*f(r)0) n=r; else m=r; r=(m+n)/2.0; printf(x=%f,r); getch(); 3以下程序的功能是從鍵盤上輸入10個(gè)整數(shù),并檢測(cè)整數(shù)3是否包含在這些數(shù)據(jù)中,若包含3,則顯示出第一個(gè)3出現(xiàn)的位置,程序有些錯(cuò)誤,試改正之。#include void main() int data10,j=0; while (j10) scanf(%d,&dataj); j+; for(j=0;j10;j+) if(da

32、taj=3) printf(3 is in the position of %dn ,j+1); break; if(j=10) printf(not found!n ); getch();4請(qǐng)編輯調(diào)試下列程序,觀察其運(yùn)行結(jié)果,理解數(shù)組名作為函數(shù)參數(shù)時(shí)的作用。該程序的功能是選出a數(shù)組中下標(biāo)為奇數(shù)的并大于10的項(xiàng)并且輸出滿足條件的個(gè)數(shù)?!驹闯绦颉?include int fun(int a,int b) int i,j=0; for(i=0;ai;i+) if(i%2=0)continue ; if(ai10) bj+=ai; return j;void main() int a10=3,15,

33、32,23,11,4,5,9,b10; int i,x; x=fun(a,b) ; for(i=0;ix;i+) printf(%dt,bi); printf(n%d,x);實(shí)驗(yàn)八1請(qǐng)編輯調(diào)試下列程序,觀察、理解其運(yùn)行結(jié)果,并敘述該程序的功能?!驹闯绦颉?include int fun(int a,int b) int i,j=0; for(i=0;ai;i+) if(i%2=0)continue ; if(ai10) bj+=ai; return j;void main() int a10=3,15,32,23,11,4,5,9,b10; int i=0,x=0; x=fun(a,b) ;

34、for(i=0;ix;i+) printf(%dt,bi); printf(n%d,x);該程序的功能:選出a數(shù)組中下標(biāo)為奇數(shù)的并大于10的項(xiàng)并且輸出滿足條件的個(gè)數(shù)。2以下程序在a數(shù)組中查找與x值相同的元素的所在位置。請(qǐng)完善程序?!驹闯绦颉?include void main() int a11 ,x , i; printf(Enter 10 Integers:n); for(i=1; i0)printf(%5d s position is %4dn,x,i); else printf(%d is not found!n,x); getch();3下列程序是利用插入排序法將n個(gè)數(shù)從大到小進(jìn)行排

35、序,插入排序的算法思想如下:從一個(gè)空表開始,將待排序的數(shù)一個(gè)接一個(gè)插入到已排好序的有序表中(空表視為有序),從而得到一個(gè)新的、記錄數(shù)增1的有序表。例如:當(dāng)n=7時(shí),待排序的數(shù)及每一趟有序表的變化情況如下:趟數(shù)有序表剩余待排序數(shù)初始狀態(tài)空49386597761327第1趟49386597761327第2趟49386597761327第3趟65493897761327第4趟97654938761327第5趟97766549381327第6趟97766549381327第7趟97766549382713空請(qǐng)完善下列程序并進(jìn)行調(diào)試。#include void main() int a10=10,9,8

36、,7,3,4,5,1,-3,0,i,j,t; sort(a,10); ; printf(nthere is 10 number: ); for(i=0; i=9; i+) printf(%4d,ai); getch();int sort(int a,int n) int i,j,t; for(i=1; i=0)&(taj) aj+1=aj; j-; aj+1=t ; 4請(qǐng)按下列要求設(shè)計(jì)程序:(1)請(qǐng)編寫void selsort(int a,int n)函數(shù),其功能是用選擇排序算法對(duì)a指向的長(zhǎng)度為n的數(shù)組進(jìn)行從小到大排序。(2)編寫main函數(shù),聲明一個(gè)一維數(shù)組并用下列測(cè)試數(shù)據(jù)初始化,調(diào)用sel

37、sort函數(shù)實(shí)現(xiàn)a3到a8元素從小到大排序。測(cè)試數(shù)據(jù)為:6 8 9 12 16 -3 90 -9 10 1。#includevoid selsort(int a,int n)int i,j,k,t;for(i=3;i=n-2;i+)k=i;for(j=i+1;jaj) k=j;t=ai;ai=ak;ak=t;void main()int a10=6,8,9,12,16,-3,90,-9,10,1,i;selsort(a,9);for(i=0;i10;i+)printf(%5d,ai);getch();5冒泡排序算法的C語(yǔ)言描述如下:void bb_sort(int a,int n) int i

38、,j,t; for(i=0;in-1;i+) for(j=0;jaj+1) t=aj; aj=aj+1; aj+1=t; 但這個(gè)算法對(duì)問題規(guī)模為n的待排序數(shù)組來(lái)說(shuō)要進(jìn)行n-1趟排序。事實(shí)上,對(duì)一些測(cè)試數(shù)據(jù),如2 1 5 6 7 8 9等7個(gè)數(shù)據(jù)來(lái)說(shuō),利用上述冒泡排序算法,在第2趟排序過(guò)程中已沒有元素的交換,亦即排序進(jìn)行2趟后就已經(jīng)有序。試修改上述冒泡算法,使之在已經(jīng)有序的情況下提前結(jié)束外循環(huán)以提高程序執(zhí)行效率。并利用題4的main函數(shù)調(diào)用改進(jìn)的函數(shù)實(shí)現(xiàn)對(duì)待排序數(shù)據(jù)的排序。#includevoid bbsort(int a,int n) int i,j,t,flag=1; for(i=0;in-

39、1&flag;i+) flag=0; for(j=0;jaj+1) t=aj; aj=aj+1; aj+1=t; flag=1; void main()int a7=2,1,5,6,7,8,9,i;bbsort(a,7);for(i=0;i7;i+)printf(%5d,ai);getch();實(shí)驗(yàn)九1請(qǐng)編輯調(diào)試下列程序,觀察其運(yùn)行結(jié)果,理解數(shù)組的聲明、數(shù)組元素的引用等基本概念?!驹闯绦颉?include void main() int a33=3,8,12,4,7,10,2,5,11, i,j,k,t; for(j=0;j3;j+) for(k=0;k2;k+) for(i=0;iai+1j) t=aij,ai

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論