c語(yǔ)言上機(jī)實(shí)驗(yàn)題_第1頁(yè)
c語(yǔ)言上機(jī)實(shí)驗(yàn)題_第2頁(yè)
c語(yǔ)言上機(jī)實(shí)驗(yàn)題_第3頁(yè)
c語(yǔ)言上機(jī)實(shí)驗(yàn)題_第4頁(yè)
c語(yǔ)言上機(jī)實(shí)驗(yàn)題_第5頁(yè)
已閱讀5頁(yè),還剩37頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

2、three numbers is %d",max); /*1,2,5 max of the three numbers is 5*/2.請(qǐng)編程序,對(duì)從鍵盤(pán)上輸入的x值,根據(jù)以下函數(shù)關(guān)系計(jì)算出相應(yīng)的y值(設(shè)x,y均為整型量)。xyx<000<=x<10x10<=x<201020<=x<40-5x+20#include<stdio.h>main() int x,y; scanf("%d",&x); if(x<0) y=0; else if(x>=0&&x<=10) y=x;

3、 else if(x>=10&&x<=20) y=10; else y=-5*x+20; printf("%d",y);3. 寫(xiě)程序計(jì)算下列各表達(dá)式的值:1)2)3)#include<stdio.h>#include<math.h>main()float a,b,c; a=2.0/(4.0/5+3)+1; b=sqrt(13-pow(2.24-pow(0.24,2),2)/3.68); c=2*3.14159*sqrt(13+exp(2); printf("%fn%fn%f",a,b,c);4.寫(xiě)程序計(jì)

4、算5x2+2x+6的兩個(gè)實(shí)根。考慮用合適的方式輸出。(提示:可先計(jì)算出判別式b2-4ac的值)#include<stdio.h>#include<math.h>main() float a,b,c,x1,x2,p,q,disc; printf("input a,b,c:"); scanf("%f%f%f",&a,&b,&c); disc=b*b-4*a*c; if(disc>=0) p=-b/(2*a); q=sqrt(disc)/(2*a); x1=p+q; x2=p-q; printf("

5、;%fn%fn",x1,x2); elseprintf("No Answer");5.從鍵盤(pán)上任意輸出一個(gè)年份year,判別該年是否為閏年,如是輸出“yes”,否則輸出“no”。提示:如果變量year的值是閏年年份,那么這個(gè)值應(yīng)該是4的部數(shù)但又不是100的倍數(shù),或者它是400的倍數(shù)。#include<stdio.h>void main()int year;scanf("%d",&year);if(year%4=0&&year%100!=0|year%400=0)printf("yes");

6、elseprintf("no");6.從鍵盤(pán)上輸入float型數(shù),判斷這三個(gè)數(shù)能否構(gòu)成三角形,若能則求該三角形面積,否則輸出不能構(gòu)成三角形的信息。#include<stdio.h>#include <math.h>void main() float a,b,c,p,area; printf("input three integers:"); scanf("%f %f %f",&a,&b,&c);if(a+b>c&&a+c>b&&b+c>a

7、) p=(a+b+c)/2.0; area=sqrt(p*(p-a)*(p-b)*(p-c); printf("%fn",area); else printf("inputs are wrong!");7.下列程序想求出滿(mǎn)足如下條件的三位數(shù)n:(1)n除以11(整數(shù)相除)所得到的商等于n的各位數(shù)字的平方和;(2)n中至少有二位數(shù)字相同。如:131除以11的商為11,131各位數(shù)字的平方和為11,131中有二位數(shù)字相同,故131是所要求出的三位數(shù)中的一個(gè);又如550,也是滿(mǎn)足條件的三位數(shù)。源程序中有些錯(cuò)誤,請(qǐng)你改正并最終使程序得到如下的運(yùn)行結(jié)果:131 5

8、50 900【含有錯(cuò)誤的源程序】#include <stdio.h>void main() int n , a , b , c; for(n=1; n<1000; 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)>=2) printf("%5d",n); #include"stdio.h"void main() int a,b,c,n;for(n=100;n<1000;n+) a=n/100;b=n/10%10;c=n%10;if(n/11=a

9、*a+b*b+c*c&&(a=b|a=c|b=c)/*或n/11=a*a+b*b+c*c&&(a=b)+(a=c)+(b=c)>=1 */printf("%5d",n);8. 請(qǐng)編程序,實(shí)現(xiàn)從鍵盤(pán)上輸入任意一個(gè)整數(shù)n,求出n的各位數(shù)字之和。例如,當(dāng)n為263時(shí),各位數(shù)字之和為11。下面是一個(gè)可以實(shí)現(xiàn)逐位數(shù)字累加功能的程序段,試?yán)斫夂髴?yīng)用到自己的程序中。#include"stdio.h"void main() int n,k;scanf("%d",&n);k=0 ;dok+=n%10;n/=

10、10;while (n);printf("%d",k);getch();9.試找出符合下列條件的正整數(shù):(1)該數(shù)是一個(gè)三位數(shù);(2)該數(shù)是37的倍數(shù);(3)該數(shù)循環(huán)左移后得到的另兩個(gè)數(shù)也是37的倍數(shù)。例如148是37的倍數(shù),481和814也是37的倍數(shù)。#include"stdio.h"void main() int n,a,b; for(n=100;n<1000;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("%5

11、d",n); getch();10.請(qǐng)編輯調(diào)試下列程序,觀(guān)察其運(yùn)行結(jié)果,理解函數(shù)定義、函數(shù)調(diào)用的基本方法,并理解函數(shù)調(diào)用時(shí)形參和實(shí)參之間數(shù)據(jù)的傳遞方式。(1)請(qǐng)將下列源程序進(jìn)行調(diào)試,觀(guān)察運(yùn)行結(jié)果,盡量想明白為什么得到如此運(yùn)行結(jié)果后再看題后的評(píng)注:【源程序】#include <stdio.h>void main() int i=2,x=5,j=7; fun(j,6); printf(“i=%d,j=%d,x=%dn”, i , j , x); int fun(int i ,int j) int x=7; printf(“i=%d,j=%d,x=%dn”, i , j ,x)

12、;(2)評(píng)注:該題想要使大家明白,函數(shù)調(diào)用時(shí)是實(shí)參單向值傳遞給形參的,函數(shù)的形參是隨著該函數(shù)被調(diào)用而分配空間,調(diào)用結(jié)束系統(tǒng)要回收空間;當(dāng)執(zhí)行main函數(shù)中的語(yǔ)句fun(j,6)時(shí),其中的j是main函數(shù)中的量j,這次調(diào)用等價(jià)于fun(7,6),即將7和6分別傳輸給形參變量i和j;當(dāng)執(zhí)行fun函數(shù)時(shí),fun有其自身的內(nèi)部變量x,fun函數(shù)中的輸出語(yǔ)句中,i,j,x的值分別為7,6,7;執(zhí)行流程遇fun函數(shù)中的函數(shù)體閉封符“”返回主函數(shù),在主函數(shù)中輸出時(shí),i,j,x的值分別2,7,5。2(實(shí)驗(yàn)報(bào)告上的題2)請(qǐng)按如下步步驟設(shè)計(jì)程序:(1)編輯并運(yùn)行下列程序:#include <stdio.h&

13、gt;void main() char i; float x; printf("enter x:"); scanf("%f",&x); printf("1. To calculate e to the power xn"); printf("2. To calculate logx to the base 10n"); printf("3. To calculate lnx n"); printf("4. To calculate square root of xn"

14、); printf("n"); printf("enter your choice:1/2/3/4"); scanf("%1s",&i); /* 表示截取輸入字符串中的1個(gè)字符,因?yàn)檩斎氪谢剀?chē)也算1個(gè)字符的*/ switch(i) /* i必須視作字符量,這由它的類(lèi)型及輸入的數(shù)據(jù)所決定*/ case '1': fexp(); break; case '2': flog10();break; case '3': flog();break; case '4': fs

15、qrt();break; default: printf("Sorry, can' t do for you!n"); break; getch(); fexp()flog10() flog()fsqrt()評(píng)注:這個(gè)程序既然能運(yùn)行了,輸入測(cè)試數(shù)據(jù),試著走走所有的分支路徑,看看能不能都走得通(當(dāng)然有些是不可能有結(jié)果的,因?yàn)檩o助功能函數(shù)都是空的),一定要走喲,并且弄清楚所走路徑中分別執(zhí)行什么語(yǔ)句,得到什么結(jié)果。(2)試著將下面的功能函數(shù)的首部作修改(加上形參和返回值類(lèi)型,一定要注意到喲):#include <stdio.h>void main() char

16、 i; float x; printf("enter x:"); scanf("%f",&x); printf("1. To calculate e to the power xn"); printf("2. To calculate logx to the base 10n"); printf("3. To calculate lnx n"); printf("4. To calculate square root of xn"); printf("n&q

17、uot;); printf("enter your choice:1/2/3/4"); scanf("%1s",&i); switch(i) case '1': fexp(x); break; case '2': flog10(x);break; case '3': flog(x);break; case '4': fsqrt(x);break; default: printf("Sorry, can' t do for you!n"); break; g

18、etch();float fexp(float x)float flog10(float x) float flog(float x)float fsqrt(float x)評(píng)注:注意到了嗎?這個(gè)程序不能通過(guò)編譯,錯(cuò)誤的原因是“與'fexp'聲明中的類(lèi)型不匹配”等類(lèi)的錯(cuò)誤,還記得我課堂上講了3個(gè)重要的概念,它們分別是函數(shù)的定義(目的是為了描述具體的功能,但不實(shí)現(xiàn))、函數(shù)的調(diào)用(目的是實(shí)現(xiàn)函數(shù)所定義的功能)和函數(shù)的聲明(目的是為了使一個(gè)存在的函數(shù)允許被調(diào)用,原則上是不能違背先定義后使用的原則,但當(dāng)被定義的函數(shù)返回值為int類(lèi)型時(shí),被調(diào)用函數(shù)可以放在調(diào)用函數(shù)的后面而在調(diào)用之前缺省聲

19、明,這也就是第一步中程序能運(yùn)行的原因)。這個(gè)程序中,輔助函數(shù)的返回值類(lèi)型均改為了float型,函數(shù)聲明就不可以再缺省,有兩種方法可以處理好這一問(wèn)題,一是將后面的幾個(gè)函數(shù)搬到main函數(shù)的前面,編譯預(yù)處理命令的后面(自己試試吧);另一種辦法是在編譯預(yù)處理后面加函數(shù)的聲明語(yǔ)句,如下列程序所示:#include <stdio.h>float fexp(float); /*函數(shù)聲明*/float flog10(float); /*函數(shù)聲明*/float flog(float);/*函數(shù)聲明*/float fsqrt(float);/*函數(shù)聲明*/void main() char i; fl

20、oat x; printf("enter x:"); scanf("%f",&x); printf("1. To calculate e to the power xn"); printf("2. To calculate logx to the base 10n"); printf("3. To calculate lnx n"); printf("4. To calculate square root of xn"); printf("n");

21、 printf("enter your choice:1/2/3/4"); scanf("%1s",&i); switch(i) case '1': fexp(x); break; case '2': flog10(x);break; case '3': flog(x);break; case '4': fsqrt(x);break; default: printf("Sorry, can' t do for you!n"); break; getch()

22、;float fexp(float x)float flog10(float x) float flog(float x)float fsqrt(float x)評(píng)注:很神奇(這是編譯系統(tǒng)的功勞,你要記住喲),程序又能執(zhí)行了,跟(1)一樣,可以走遍所有的路徑了。(3)下面我們?cè)囍鴮⒁恍┕δ芴砑拥胶瘮?shù)中(當(dāng)然,如果你有能力,可以添加足夠復(fù)雜的功能,這也是我之希望:例如,求素?cái)?shù)、黑洞數(shù)、反素?cái)?shù)可逐一添加到你的程序中,你想要某一模塊干啥就去干啥):#include <stdio.h>float fexp(float); /*函數(shù)聲明*/float flog10(float); /*函數(shù)聲

23、明*/float flog(float); /*函數(shù)聲明*/float fsqrt(float); /*函數(shù)聲明*/void main() char i; float x; printf("enter x:"); scanf("%f",&x); printf("1. To calculate e to the power xn"); printf("2. To calculate logx to the base 10n"); printf("3. To calculate lnx n"

24、); printf("4. To calculate square root of xn"); printf("n"); printf("enter your choice:1/2/3/4"); scanf("%1s",&i); switch(i) case '1': fexp(x); break; case '2': flog10(x);break; case '3': flog(x);break; case '4': fsqrt(x);br

25、eak; default: printf("Sorry, can' t do for you!n"); break; getch();float fexp(float x) printf("exp(%f)=%en",x,exp(x); /*exp(x)表示求ex */float flog10(float x) printf("log10(%f)=%en",x,log10(x); /*log10(x)表示求log10x */ float flog(float x) printf("log(%f)=%en",x

26、,log(x); /* log10(x)表示求logex */float fsqrt(float x) printf("sqrt(%f)=%en",x,sqrt(x); 評(píng)注:注意上列源程序中的注釋喲,幫助你了解更多的數(shù)學(xué)庫(kù)函數(shù)。調(diào)試上述程序輸入測(cè)試數(shù)據(jù)(x為0,選擇做操作1),這是什么結(jié)果?這2個(gè)測(cè)試數(shù)據(jù)輸入,應(yīng)該求的是e啊,e的值誰(shuí)都知道啊,怎么就不是這個(gè)值呢?這一點(diǎn),我想請(qǐng)你自己想辦法了11水仙數(shù) 水仙花數(shù)是指一個(gè)3位數(shù),其各位數(shù)字的立方和等于該數(shù)本身。完善函數(shù)int daffodil(int n),其功能是判斷整數(shù)n是否為水仙花數(shù),如是,則該函數(shù)返回值,否

27、則返回值。#include<stdio.h>int daffodil(int n)int i,k,j;i=n/100;k=n/10%10;j=n%10;if(n=i*i*i+k*k*k+j*j*j) return 1;else return 0;main() int m,i=0; for(m=100;m<1000;m+) if(daffodil(m)=1) printf("%5d",m); i+; if(i%5=0)printf("n"); getch(); 12冰雹數(shù).設(shè)n0是一個(gè)給定的正整數(shù)。對(duì)于i=0,1,2,定義:若ni是偶數(shù),

28、則ni+1=ni/2;若ni是奇數(shù),則ni+1=3ni+1;若ni是1,則序列結(jié)束。用這種方法產(chǎn)生的數(shù)稱(chēng)為冰雹數(shù)。請(qǐng)編寫(xiě)一個(gè)函數(shù)void hailstones(int n),其功能是顯示由n產(chǎn)生的所要求的序列,按每行6個(gè)數(shù)輸出該數(shù)列中的所有數(shù)。編寫(xiě)main函數(shù),在main函數(shù)中定義一個(gè)整型變量n,從鍵盤(pán)上輸入值77賦給n,用n作為實(shí)參調(diào)用函數(shù)hailstones。測(cè)試數(shù)據(jù):77輸出結(jié)果:Hailstones generated by 77:77 232 116 58 29 8844 22 11 34 17 5226 13 40 20 10 516 8 4 2 1Number of hailst

29、ones generated:23#include<stdio.h> int i=0;void hailstones(int n) while(n!=1) if(i%6=0) printf("n");printf("%5d",n);if(n%2=0) n=n/2;else n=3*n+1;i+;printf("%5d",n);i+;main()int n;scanf("%d",&n);printf("Hailstones generated by %dn",n); hails

30、tones(n); printf("nNumber of hailstones generated:%d",i);13判斷質(zhì)數(shù).從鍵盤(pán)上輸入一個(gè)正整數(shù)x,判斷x是否為質(zhì)數(shù),如果是則輸出“TURE”,否則輸出“FALSE”。#include<stdio.h>#include<math.h>main() int x,k,i; scanf("%d",&x); for(i=2;i<=(k=sqrt(x);i+) if(x%i=0) break; if(i>k) printf("TRUE"); els

31、e printf("FALSE");14孿生質(zhì)數(shù)對(duì)53題.請(qǐng)按要求編寫(xiě)程序。編程要求:(1)編寫(xiě)函數(shù)int twinborn(int m,int n),其功能是判斷整數(shù)m和n是否為孿生質(zhì)數(shù)對(duì)(相差為2的兩個(gè)質(zhì)數(shù)稱(chēng)為孿生質(zhì)數(shù)),如是,則函數(shù)返回值,否則返回值。(2)編寫(xiě)main函數(shù),求出10,99內(nèi)的所有孿生質(zhì)數(shù)對(duì),使得程序的運(yùn)行結(jié)果為:   11,   13   17,   19   29,   31   41,  

32、 43   59,   61   71,   73#include<stdio.h>#include<math.h>int prime(int m)int n;for(n=2;n<=sqrt(m);n+) if(m%n=0) return 0; return 1;int twinborn(int m,int n) if(prime(m)+prime(n)=2) return 1; else return 0;main() int m,n;for(n=10;n<=97;n+) m=

33、n+2;if(twinborn(m,n)=1)printf("%5d,%5dn",n,m);53孿生質(zhì)數(shù)對(duì). 請(qǐng)編寫(xiě)函數(shù)int twinborn(int a2,int m,int n),其功能是找出m,n中的所有孿生質(zhì)數(shù)對(duì)(相差為2的兩個(gè)質(zhì)數(shù)稱(chēng)為孿生質(zhì)數(shù)),并依次將每對(duì)孿生質(zhì)數(shù)寫(xiě)到a指向的二維數(shù)組的每一行中。編寫(xiě)main函數(shù),聲明一個(gè)100×2的二維數(shù)組a,并從鍵盤(pán)上輸入m和n的值,用a、m、n作為實(shí)在參數(shù)調(diào)用函數(shù)twinborn,將結(jié)果數(shù)組以行為單位輸出至屏幕。例如,測(cè)試數(shù)據(jù)和運(yùn)行結(jié)果如下:input two numbers:10 100 11, 13 17,

34、19 29, 31 41, 43 59, 61 71, 73#include<stdio.h>#include<math.h>int prime(int i)int k;for(k=2;k<sqrt(i);k+)if(i%k=0)return 0;return 1;int twinborn(int a2,int m,int n) int k=0,i;for(i=m;i<=n-2;i+=1)if(prime(i)&&prime(i+2)ak0=i,ak1=i+2,k+;return k; main() int a1002,m,n,i; prin

35、tf("input two numbers:"); scanf("%d%d",&m,&n); m=twinborn(a,m,n); for(i=0;i<m;i+) printf("%5d,%5dn",ai0,ai1); getch(); 15.以下程序欲實(shí)現(xiàn)從鍵盤(pán)輸入一個(gè)較大的整數(shù)n(n>=6),然后驗(yàn)證6到n之間的所有偶數(shù)都可以分解為兩個(gè)質(zhì)數(shù)之和。但程序有些錯(cuò)誤,請(qǐng)改正這些錯(cuò)誤以達(dá)到要求的功能?!竞绣e(cuò)誤的源程序】#include "stdio.h"void main() int k,

36、j,n,limit; do printf("Input a number>=6:"); scanf("%d",&limit); while(limit<6); for(n=6;n<=limit;n+=2) for(k=3;k<=n/2;k+=2) if(prime(k) j=n-k; if(prime(j) printf("%d=%d+%dn",n,k,j); continue; int prime(int m) int g,h; h=sqrt(m); for(g=2;g<=h;g+) if(m%

37、g=0)return 0; else return 1; #include "stdio.h"#include<math.h>void main() int k,j,n,limit; do printf("Input a number>=6:"); scanf("%d",&limit); while(limit<6); for(n=6;n<=limit;n+=2) for(k=3;k<=n/2;k+=2) if(prime(k) j=n-k; if(prime(j) printf("

38、;%d=%d+%dn",n,k,j); continue; getch();int prime(int m) int g,h; h=sqrt(m); for(g=2;g<=h;g+) if(m%g=0) return 0; return 1;16回文數(shù).請(qǐng)編寫(xiě)程序,找出滿(mǎn)足如下條件的整數(shù)m:(1)該數(shù)在11,999之內(nèi);(2) m、m2、m3均為回文數(shù)。例如m=11,m2=121,m3=1331,11、121、1331皆為回文數(shù),故m=11是滿(mǎn)足條件的一個(gè)數(shù)。請(qǐng)?jiān)O(shè)計(jì)函數(shù)int value(long m),其功能是判斷m是否是回文數(shù),如是,該函數(shù)返回值1,否則返回值0。編寫(xiě)mai

39、n函數(shù),求出11,999內(nèi)滿(mǎn)足條件的所有整數(shù)。#include<stdio.h>int value(long m);void main() long m,n; for(n=11;n<=999;n+) m=n; if(value(m) m=n*n; if(value(m) m=n*n*n; if(value(m) printf("%ldn",n); getch(); int value(long m) long a=0,b; b=m; while(m) a=a*10+m%10; m=m/10; if(a=b) return 1; return 0; 54回文

40、數(shù). 請(qǐng)編寫(xiě)函數(shù)int palindrome(long *a,long m,long n),其功能是找出m,n內(nèi)的所有回文數(shù)(回文數(shù):順讀倒讀其值都相同的數(shù),例如12321),函數(shù)返回m,n內(nèi)回文數(shù)的個(gè)數(shù)。編寫(xiě)main函數(shù),聲明一個(gè)長(zhǎng)度為1000的長(zhǎng)整型數(shù)組a,從鍵盤(pán)輸入長(zhǎng)整型數(shù)m和n,用a、m、n作為實(shí)在參數(shù)調(diào)用函數(shù)palindrome,將結(jié)果數(shù)組輸出至屏幕,并輸出符合條件數(shù)的個(gè)數(shù)。例如,若m=100 n= 500,則輸出結(jié)果為: 101 111 121 131 141 151 161 171 181 191 202 212 222 232 242 252 262 272 282 292 3

41、03 313 323 333 343 353 363 373 383 393 404 414 424 434 444 454 464 474 484 494count=40#include<stdio.h>int palindrome(long *a,long m,long n) long x,y,i=0,k; for(x=m;x<=n;x+) k=0; y=x; while(y) k=k*10+y%10; y=y/10; if(k=x) ai+=x; return i;main() long a1000,m,n,i,count; printf("input m&a

42、mp;n"); scanf("%ld %ld",&m,&n); count=palindrome(a,m,n); for(i=0;i<count;i+) printf("%5d",ai); if(i+1)%5=0) printf("n"); printf("count=%ld",count); getch();17. 請(qǐng)按要求編寫(xiě)程序。編程要求:(1)編寫(xiě)函數(shù)long Fibonacci(int n),其功能是:求Fibonacci數(shù)列中大于t 的最小的一個(gè)數(shù),函數(shù)返回該數(shù)。下列數(shù)列

43、為Fibonacci數(shù)列:1,1,2,3,5,8,13,21,,即從第3項(xiàng)開(kāi)始,每一項(xiàng)均為前兩項(xiàng)的和。(2)編寫(xiě)main函數(shù),從鍵盤(pán)上輸入一個(gè)整數(shù)t,用t作為實(shí)在參數(shù)調(diào)用Fibonacci函數(shù),并輸出調(diào)用結(jié)果。例如,當(dāng)t=1000時(shí),輸出為1597。#include<stdio.h>long Fibonacci(long int n);main()long int n; scanf("%ld",&n); Fibonacci(n); getch();long Fibonacci(long int n) long int x=1,y=0; while(x&l

44、t;=n) x=x+y; y=x-y ; printf("%ld",x) ;18.下列給定程序中,函數(shù)fun的功能是:計(jì)算如下公式直到,并且把計(jì)算結(jié)果作為函數(shù)值返回。例如,若形參e的值為1e-3,則函數(shù)返回值為0.551690。請(qǐng)?jiān)谙庐?huà)線(xiàn)處填入正確的內(nèi)容并將下畫(huà)線(xiàn)刪除,使程序得出正確的結(jié)果。注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include <stdio.h>double fun(double e) int i, k;double s, t, x;s=0; k=1; i=2;x=_1_/4;while( _2_ ) s=s+k*x;k=-k;t=2*i

45、;x=_3_/(t*t);i+;return s;main() double e=1e-3;printf("nThe result is: %fn",fun(e);#include <stdio.h>double fun(double e) int i, k;double s, t, x;s=0; k=1; i=2;x=3,0/4;while( x>e ) s=s+k*x;k=-k;t=2*i;x=(t+1.0)/(t*t);i+;return s;main() double e=1e-3;printf("nThe result is:%fn&q

46、uot;,fun(e);getch();19.下列給定程序中,函數(shù)fun的功能是:將形參n中,各位上為偶數(shù)的數(shù)取出,并按原來(lái)從高位到低位相反的順序組成一個(gè)新數(shù),作為函數(shù)值返回。例如,輸入一個(gè)整數(shù)27638496,函數(shù)返回值為64862。#include<stdio.h>#include<math.h>unsigned long fun(unsigned n);main()unsigned long n; fun(n); getch();unsigned long fun(unsigned n) int b; unsigned long a; a=0; printf(&q

47、uot;Enter an integer:"); scanf("%ld",&n); while(n%10!=0) b=n%10; if(b%2=0) a=a*10+b; n=n/10; printf("%ld",a); getch();20最大公約數(shù)和最小公倍數(shù).請(qǐng)編寫(xiě)程序求出從鍵盤(pán)上輸入的兩個(gè)正整數(shù)a和b的最大公約數(shù)和最小公倍數(shù)。#include<stdio.h>main() int p,r,n,m,temp; scanf("%d,%d",&n,&m); if(n<m) temp=

48、n;n=m;m=temp; p=n*m; while(m) r=n%m;n=m;m=r; printf("%d,%dn",n,p/n);21.請(qǐng)編寫(xiě)程序利用下列公式為公式求的近似值。公式為: 要求:先求出前2n項(xiàng)的值,再求出2n+2項(xiàng)的值,直至兩者之差小于10-5為止。#include<stdio.h> 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("%12f%12f",2*a,

49、2*b); getch(); 22.請(qǐng)編寫(xiě)程序計(jì)算1!+2!+3!+n!的前10項(xiàng)之和。#include<stdio.h>main() int n,i; long s,t; s=0, t=1; printf("input n="); scanf("%d",&n); for(i=1;i<=n;i+) t=i*t; s=s+t; printf("sum=%ldn",s); getch(); 23.請(qǐng)編寫(xiě)程序求出滿(mǎn)足如下條件的一個(gè)四位整數(shù),它的9倍恰好是其反序數(shù)(所謂反序數(shù)是指正讀和倒讀相同的數(shù)。例如,1234和4

50、321互為反序數(shù))。#include<stdio.h>main() int i,j,a; for(i=1001;i<10000;i+) a=i;j=0;j是a反序數(shù) while(a) j=j*10+a%10; a=a/10; if(j=i*9) printf("%d",i); getch(); 24.請(qǐng)編寫(xiě)程序求出滿(mǎn)足如下條件的四位數(shù)n:(1) n的范圍為5000,8000;(2) n千位上的數(shù)減百位上的數(shù)減十位上的數(shù)減個(gè)位上的數(shù)大于零。編程要求:以每行10個(gè)輸出滿(mǎn)足條件的數(shù)及該類(lèi)數(shù)的個(gè)數(shù)。#include<stdio.h>main() int

51、 n,a,b,c,d,s,i=0; for(n=5000;n<=8000;n+) a=n/1000; b=n%1000/100; c=n%100/10; d=n%10; s=a-b-c-d; if(s>0) i+; printf("%dt",n); if(i%10=0) printf("n"); printf("sum=%d",i); getch(); 25牛頓迭代法.用牛頓迭代法求方程3x3-3x2+x-1=0在x0=2附近的實(shí)根。要求:(1)用函數(shù)float newtoon(float x)求方程在x附近的根;(2)用

52、函數(shù)float F(float x)求x處的函數(shù)值,用函數(shù)float F1(float x)求f(x)在x處的導(dǎo)數(shù);(3)在主函數(shù)中輸入x0,調(diào)用函數(shù)求得方程的近似根(精度要求為10-5),并輸出結(jié)果。請(qǐng)完善下列程序,使之完成上述功能。并請(qǐng)以注釋的方式在程序的最后給出你在運(yùn)行該程序時(shí)所選用的測(cè)試數(shù)據(jù)及在該測(cè)試數(shù)據(jù)下的運(yùn)行結(jié)果?!驹闯绦颉?include <stdio.h>#include <math.h>float F(float x) return 3*x*x*x-3*x*x+x-1; float F1(float x) return _; float newtoon

53、(float x) float f,f1,x0; do _; f=F(x0); f1=F1(x0); x=_; while(_); return x; void main() float x0; scanf("%f ",&x0); printf("The result =%.2fn ",_);測(cè)試數(shù)據(jù):2運(yùn)行結(jié)果:The result =1.00#include <stdio.h>#include <math.h>float F(float x) return 3*x*x*x-3*x*x+x-1; float F1(float x) return 9*x*x-6*x+1; float newtoon(float x) float f,f1,x0; do x0=x; f=F(x0); f1=F1(

溫馨提示

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

評(píng)論

0/150

提交評(píng)論