C語言程序設(shè)計(第三版)習題庫答案_第1頁
C語言程序設(shè)計(第三版)習題庫答案_第2頁
C語言程序設(shè)計(第三版)習題庫答案_第3頁
C語言程序設(shè)計(第三版)習題庫答案_第4頁
C語言程序設(shè)計(第三版)習題庫答案_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C語言程序設(shè)計(第三版)習題庫1設(shè)圓半徑r=1.5,圓柱高h=3,求圓周長、圓面積、圓球表面積、圓球體積、圓柱體積。用scanf輸入數(shù)據(jù),輸出計算結(jié)果,輸出時要求文字說明,#include<stdio.h>main()floatr,h,C1,Sa,Sb,Va,Vb;取小數(shù)點后兩位數(shù)字。請編程序。scanf(_”f”_,&r);scanf("%d”,_&h_);;C1=2*3.14*r;Sa=3.14*r*r;Sb=4*Sa;Va=4*3.14*r*r*r/3;Vb=Sa*h;printf_”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.

2、2f”,Cl,Sa,Sb,Va,Vb);2、輸入一個華氏溫度,要求輸出攝氏溫度。公式為c=5(F-32)/9輸出要求有文字說明,取位2小數(shù)。#include<stdio.h>main()floatF,c;scanf("%f",&F);_c=5*(F-32)/9;printf("c=%.2f',c);xx3、有一函數(shù):y=2x11蘭xc10寫一程序,輸入x值,輸出y值。3x-11x-10#include<stdio.h>main()intx,y;printf("輸入x:");scanf("%d&q

3、uot;,&x);if(x<1)/*x<1*/y=x;printf("x=%3d,y=x=%dn",x,y);elseif(x<10)/*1<x-10*/y=2*x-1;printf("x=%3d,y=2*x-1=%dn",x,y);else/*x>10*/y=3*x-11;printf("x=%3d,y=3*x-11=%dn",x#include"stdio.h"main()intx,y;scanf("%d",&x);if(x<1)y=x;e

4、lseif(x>=1&&x<10)y=2*x-1;elsey=3*x-11;printf("%d",y);#include"stdio.h"main()intx,y;scanf("%d",&x);if(x<1)y=x;elseif(x>=1&&x<10)y=2*x-1;elsey=3*x-11;printf("%dn",y);#include"stdio.h"main()intx,y;scanf("%d",

5、&x);if(x<1)y=x;elseif(x>=1&&x<10)y=2*x-1;elsey=3*x-11;printf("%d",y);scanf("%d",&x);if(x<1)y=x;elseif(x>=1&&x<10)y=2*x-1;elsey=3*x-11;#include"stdio.h"main()intx,y;scanf("%d",&x);if(x<1)y=x;elseif(x>=1&&a

6、mp;x<10)y=2*x-1;elsey=3*x-11;printf("%d",y);,y);4、給定一個不多于5位的正整數(shù),要求:求它是幾位數(shù);按逆序打印出各位數(shù)字例如原數(shù)為321,應(yīng)輸出123。#include<stdio.h>main()longintnum,m=0;inti=0;scanf("%ld",&num);while(num>0)i+;/*統(tǒng)計長度*/m=m*10+num%10;num=num/10;printf("數(shù)字長度為:%d",i);printf("逆序數(shù)字為:%dn

7、",m);5 、以下程序?qū)崿F(xiàn)的功能:求三個數(shù)的最大值#include<stdio.h>main()inta,b,c,max;scanf("%d%d%d",&a,&b,&c);if(a>b)if(a>c)max=a;elsemax=c;elseif(b>c)max=b;elsemax=c;printf("max=%d",max);#include<stdio.h>main()intx,y,z,t=0;scanf("%d%d%d",&x,&y,&a

8、mp;z);if(x>y)t=y;y=x;x=t;if(x>z)t=z;z=x;x=t;if(y>z)t=z;z=y;y=t;printf("%dn",z);6 、輸入兩個正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。/*枚舉法*/#include<stdio.h>main()longm,n,i=1,j,s;scanf("%ld,%ld",&m,&n);for(;i<=m&&i<=n;i+)if(m%i=0&&n%i=0)s=i;if(m>=n)j=m;elsej

9、=n;for(;!(j%m=0&&j%n=0);j+);printf("s=%ld,j=%ldn",s,j);#include<stdio.h>main()inta,b,k,temp,i,p;scanf("%d,%d",&a,&b);if(a>b)temp=b;elsetemp=a;for(i=2;i<=temp;i+)if(a%i=0&&b%i=0)k=i;printf("%dn",k);p=a*b/k;printf("%dn",p);/*輾

10、轉(zhuǎn)相除*/#include<stdio.h>main()intm,n,k,j,p,r=1;scanf("%d,%d",&m,&n);k=m>n?m:n;j=m>n?n:m;dor=k%j;k=j;j=r;while(r!=0);printf("%d,%d",k,m*n/k);)/*反復減法*/#include<stdio.h>main()intm,n,k,j,p,r=1;scanf("%d,%d",&m,&n);k=m>n?m:n;j=m>n?n:m;do

11、P=k-j;if(j>P)k=j;j=P;elsek=p;while(p!=0);printf("%d,%d",k,m*n/k);7、輸入一行字符,分別統(tǒng)計出其中英文字母、空格、數(shù)字和其他字符的個數(shù)。#include"stdio.h"main()charc;inti=0,j=0,k=0,l=0;while(c=getchar()!='n')if(c>='A'&&c<='Z'|c>='a'&&c<='z')i+;英文

12、字母統(tǒng)計elseif(c>='0'&&c<='9')j+;數(shù)字統(tǒng)計elseif(c='')k+;空格統(tǒng)計elsel+;printf("i=%d,j=%d,k=%d,l=%dn",i,j,k,l);8、求Sn=a+aa+aaa+aaaaa(有n個a)之值,其中a是一個數(shù)字。例如2+22+222+2222+22222(n=5),n由鍵盤輸入。#include<stdio.h>main()inta,n;longb=0,sum=0;scanf("%d%d”,&a,&n)

13、;for(i=1;i<=n;i+)b*10+a;sum =sum+b;printf("ld”,sum);9、打印出所有“水仙花數(shù)二所謂"水仙花數(shù)”是指一個三位數(shù),其各位數(shù)字立方和等于該本身。例如:153是一個水仙花數(shù),因為153=13+53+33?!境绦?1#include<stdio.h>main()inti,m,n,k;for(i=100;i<1000;i+)m=_i%10_;n=_i/10%10一k=i/100;if(_m*m*m+n*n*n+k*k*k=i_)printf("%5d",i);【程序2】#include<

14、;stdio.h>main()inti,a,n,s;for(i=100;i<=999;i+)n=i;s=0;while(n>0)a=_n%10_;s+=a*a*a;n/=_10_;if(_s=i_)printf("d”,i);10、一個數(shù)如果恰好等于它的因子之和,這個數(shù)就稱為“完數(shù)"。例如,6的因子為1、2、3,而6=1+2+3,因此6是“完數(shù)"。編程序找出1000之內(nèi)的所有完數(shù),弁按下面格式輸出其因子:6itsfactorsare1、2、3#include<stdio.h>main()inta,i,m;for(a=1;a<=1

15、000;a+)for(_i=1,m=0_;i<=a/2;i+)if(!(a%i)_m+=i_;if(m=a)printf(“%4d”,a);11、利用:/4=1-1/3+1/5-1/7+.級數(shù)求的值,直到最后一項的絕對值小于10-6為止。求絕對值的函數(shù)為fabs()。#_include<stdio.h>_#include<math.h>main()inti=1,flag=1;doublesum=0.0,s;dos=_1.0/(2*i-1)_;sum+=s*flag;i+;flag=-flagwhile(_fabs(s)>1e-6_);/*/printf(&q

16、uot;pi=%f",_4*sum_);11、有一分數(shù)序列:2/1,3/2,5/3,求出這個數(shù)列的前20項之和。#include<stdio.h>#defineN20main()inti=1;doublex=1,y=2,sum=0;while(_i<=20_)sum=sum+_y/x_;y=x+y_;x=y-x_;i+;printf("%fn",sum);12、一球從100米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第10次落地時共經(jīng)過多少米?第10次反彈多高?#include<stdio.h>main()inti,n=

17、10;doubleh=100,s=100;for(i=2;i<=n;i+)h*=_0.5_;s=s+h*2printf("s=%f,h=%fn",s,h);13 、猴子吃桃問題。猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了一的一半零一個。第二天早上又將剩下的桃子吃掉一半,又多吃一個。以后每天早上都吃了前一天剩下個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘多少桃子。#inelude<stdio.h>#defineN10main()inti=1,sum=1;while(i+<N)sum=_(sum+1)*2_;printf(

18、"sum=%dn",sum);14 、用迭代法求。求平方根的迭代公式為:要求前后兩次求出的得差的絕對值少于0.00001。#inelude<stdio.h>#inelude<math.h>main()floatx0,x1,a;scanf("%f",&a);x仁a/2;dox0=x1;x1=_(x0+a/x0)/2_;while(_x1>1e-5_);printf("%gn",x1);15 、用牛頓迭代法求方程2x3-4x23x-6=0在1.5附近的根。# inelude<stdio.h>

19、;# include_<math.h>_# definef(x)2*x*x*x-4*x*x+3*x-6main()doublex,y;x=_1.5_;doy=f(x);x=x-y/(6*x*x-8*x+3);while(fabs(y)>1e-6);printf("x=%.3fn",x);3216、用二分法求方程2x-4x3八八0在(-10,10)之間的根# inelude<stdio.h># inelude<math.h>#definef(x)2x*x*x-4*x*x+3*x-6main()doublex1=-10,x2=10,x,

20、y;dox=(x1+x2)/2;y=f(x);if(y<0)x1=x;elsex2=x;while(fabs(y)>1e-6);printf("x=%gn",x);輸入 75,17 、以下程序的功能是:輸入一個百分制成績,輸出一個五級制成績等級。例如輸出C。請完成填空#inelude<stdio.h>main()intscore;scanf(”_%d_",&score);switeh(_score/10_)case1:case2:case3:case4:case5:printf(gradeEn”;break_;case 6: pri

21、ntf(“gradeDn”;break;case 7: printf(gradeCn”;break;case 8: printf(gradeBn”;break;case 9: printf(gradeAn”;break;_default_:printf("Errorinput!n");18 、該程序功能:對x=1,2,/。,求f(x)=x*x-5*x+sin(x)的最大值。#include<stdio.h>#include<math.h>#definef(x)x*x-5*x+sin(x)voidmain()intx;floatmax;_max=f(1

22、)_;for(x=2;x<=10;x+)_if(max<f(x)max=f(x)_;printf("%fn",max);則輸出 a2+b2 百位以上的數(shù)字,2219、程序功能:輸入整數(shù)a和b的值,若a2+b2大于100,否則輸出兩數(shù)之和。#include<stdio.h>main()inta,b,s;scanf("%d%d",&a,&b);s=_a*a+b*b_;if(s>100)printf("%d",_s/100_);elseprintf("%d",_a+b_);2

23、0、有1020個西瓜,第一天賣一半多兩個,以后每天賣剩下的賣完所需的天數(shù)。半多兩個,以下程序統(tǒng)計#include<stdio.h>main()intday,x1,x2;day=0;x1=1020;while(_x1>0_)x2=_x1/2-2_;x1=x2;day+printf(“day=%d”,day);21、找出整數(shù)的所有因子#include<stdio.h>main()inti,x;scanf(“%d”,&x);i=1;for(;_i<=x/2_;)if(x%i=0)printf(%d”,i);i+;22、統(tǒng)計用數(shù)字0-9可以組成多少個各位上的

24、數(shù)字沒有重復的#include<stdio.h>main()intn=0,i,j,k;for(i=1;i<=9;i+)for(k=0;k<=8;_k+=2_)if(k!=i)for(j=0;j<=9;j+)3位偶數(shù)。if(_j!=i&&j!=k_)n+;printf(“n=%dn”,n);23、用100元換成1、2、5元的所有兌換方案。#include<stdio.h>main()inti,j,k,l=0;for(i=0;i<=20;i+)for(j=0;j<=50;j+)k=_(100-i-2*j)/5_;if(_i+j*

25、2+k*5=100_)printf(“%2d%2d%2d”,i,j,k);l=l+1;if(l%5=0)printf(“n”);24、輸出1-100之間滿足每位數(shù)的乘積大于每位數(shù)的和的數(shù)#include<stdio.h>main()intn,k=1,s=0,m;for(n=1;n<=100;n+)k=1;s=0;_m=n_;while(_m>0_)k*=m%10;s+=m%10;_m/=10_;if(k>s)printf(“%d”,n);25、從3個紅球、5個白球、6個黑球中任意取出8個球,且其中必須有白球,輸出所有可能的方案。#include<stdio.

26、h>main()inti,j,k;for(i=0;i<=3;i+)for(_j=1_;j<=5;j+)k=8-i-j;if(_k>=0_)printf(“%3d%3d%3dn”,i,j,k);26、以下程序的功能是:判斷一個四位數(shù)是否滿足這樣的條件:它的9倍剛好是它的反序數(shù)。反序數(shù)是指整數(shù)各個位上的數(shù)字逆序所形成的整數(shù)。請完成程序的填空。#include<stdio.h>main()inti,a,b,c,d,m;for(i=1000;i+)a=_i%10_;b=i/10%10;c=i/100%10;d=i/1000;m=_a*1000+b*100+c*10+

27、d_;if(_m=i*9_)_break_;printf("i=%d",i);27、以下程序完成兩整數(shù)的交換。#include<stdio.h>main()inta,b;printf(“請依次輸入a,b的值:”);scanf(“%d,%d”,_&a,&b_);a=a+b;_b=a-b_;_a=a-b_;printf( “交換后: a=%d,b=%d,a,b);28、以下程序的功能是判斷輸入的年份是否為閏年,若是則輸出”yes”,否則輸出”No#include<stdio.h>main()intyear;scanf(“%d”,&

28、year);if(_year%400=0|year%4=0&&year%100!=0_)printf(“yes”);elseprintf(“No”);29、以下程序利用冒泡排序法對輸入的10個數(shù)進行排序。#include<stdio.h>#defineN10voidmain()intaN;inti,j,t;printf("input10numbers:n");for(i=0;i<N;i+)scanf("%d",_&ai_);printf("n");for(j=0;j<N-1;j+)for

29、(i=0;i<_N-j-1_;i+)if(_ai>ai+1_)t=ai;ai=ai+1;ai+1=t; printf( for(i=0;i<N;i+) printf(the sorted numbers :n"%d " ,a i );ff);printf()n );30、用篩法求100之內(nèi)的素數(shù)。篩法素數(shù)的思想是:同時篩去它及它的倍數(shù)。2、取未篩去數(shù)中最小的數(shù),1、取最小的數(shù)2,弁聲明它是素數(shù), 弁聲明它是素數(shù),同時篩去它及它的倍數(shù)。3、重復步驟2至篩中無數(shù),得到所有的素數(shù)。#include <stdio.h>#define M 100 /#d

30、efine N (M+1)/2) void main( ) 奇數(shù)的個數(shù)int i,j,aN;a0 = 2 ;for(i=1 ;i<N-1i+) /* ai=初始數(shù)組實現(xiàn)第一步篩選*/2*i+1第二步篩選*/for(i=1 ;i<N-1i+) /*if(_ai!=0 _)if(_aj=0printf("nTh e primer are 2-%d:n",M);aj%ai=0_) /*倍數(shù)時置零篩去*/顯示得到素數(shù)*/for(i=0,j=0;i<N;i+)/*if(_ai!=0_) 十個數(shù)換行*/#include <stdio.h>printf(&q

31、uot;%5d",ai);if(+j)%10=0)/*printf("n");getch();31、用選擇法對10個整數(shù)從小到大排序。#defineN10main()intaN,i,j,k,t;for(i=0;i<N;i+)scanf(for(i=0;i<N-1;i+)%d",&ai);k=i:7for(j=i+1;j<N;j+)if(aj<ak)k=_if(_ai>ak_)t=ak;ak=ai;ai=t;一for(i=0;i<N;i+)printf("d”,ai);32、 求一個NXN矩陣主對角線元

32、素、次對角線之和。#defineN3#include<stdio.h>main()inti=0,j=0,aNN,s1=0,s2=0;for(i=0;i<N;i+)for(j=0;j<N;j+)scanf("%d”,&aij);for(i=0;i<N;i+)for(j=0;j<N;j+)if(_i=j_)s1+=aij;/主對角線if(_i+j=N-1_)s2+=aij;/次對角線printf("s1=%d,s2=%dn",s1,s2);)33、 已有一個已排好的數(shù)組今輸入一個數(shù)要求按原來排序的規(guī)律將它插入數(shù)組中。#def

33、ineN10#include<stdio.h>main()inti,t,aN=1,7,8,17,23,24,59,62,101;scanf("%d",&t);for(i=N-2;i>0;i-)if(t<ai)ai=ai-1_;elsebreak;ai+1=_t_;for(i=0;i<10;i+)printf("%5d",ai);1,34、將一個數(shù)組的值按逆序重新存放,例如,原來順序為:8,6,5,4,1。要求改為:4,5,6,8。#include<stdio.h>#defineN11main()inti,

34、aN,tmp;for(i=0;i<N;i+)scanf("%d”,&ai);for(i=0;_i<N/2_;i+)tmp=ai;ai=_aN-i-1_;_aN-i-1_=tmp;for(i=0;i<N;i+)printf("%5d",ai);35、打印“魔方陣”,所謂魔方陣是指這樣的方陣,它的每一行、每一列和對角線之和均相O例三階魔方陣為%16357492要求打印出由1?n2的自然數(shù)構(gòu)成的魔方陣。#defineN3#include<stdio.h>main()inti,j,k,aNN;/*初始化魔方陣置為0,作為有無數(shù)字的判斷

35、*/for(i=0;i<N;i+)for(j=0;j<N;j+)aij=_0_;j=N/2;a0j=1;/*存放第一個數(shù)字*/*存放2n*n*/for(k=2;k<=N*N;k+)i-;/數(shù)存放前一數(shù)行數(shù)減1、列數(shù)加1_j+=1_;if(i<0&&j>N-1)/到達右上角的位置i=i+2;j-;elseif(i<0)i=_n-1_;/上一數(shù)的行數(shù)為0,下一數(shù)的行數(shù)為n-1if(j>N-1)j=0;/上一數(shù)的列數(shù)為n-1時,下一數(shù)的列數(shù)為0if(_aij!=0_)/若下一數(shù)的位置上已經(jīng)有數(shù)字,/則下一數(shù)存到上一個數(shù)行數(shù)加1的位置i=(i+

36、2)%N;j=(j-1+N)%N;aij=_k_;/填數(shù)for(i=0;i<N;i+)/輸出魔方陣printf("");for(j=0;j<N;j+)printf("%4d",aij);printf("nn");36、找出一個二位數(shù)組中的鞍點,即該位置上的元素在該行上最大,在該列上最小,也可能沒有鞍點。#include<stdio.h>#defineM5#defineN4main()intaMN,i,j,x,y,k,max,min;/x,yintflag=0;/用于指示是否存在鞍點for(i=0;i<M;

37、i+)for(j=0;j<N;j+)分別是用來記錄鞍點的位置scanf("%d",&aij);for(i=0;i<M;i+)max=ai0;y=0;/for(k=1;k<N;k+)if(max<aik)y=k;_min=aiy;x=i;/for(k=0;k<5;k+)if(min>aky)x=k;_if(_i=k_)先默認第一個數(shù)是最大值max=aik_;先默認第一個數(shù)是最小值min=aky_;是鞍點n",x,y,axy);printf("a%d%d=%dflag=1;if(flag=0)printf(不存在鞍

38、點n”);37、有個15數(shù)按由小到大順序存放在一個數(shù)組中,輸入一個數(shù),要求用折半查找法找出該數(shù)組中第幾個元素的值。如果該數(shù)不在數(shù)組中,則打印出"無此數(shù)"#include<stdio.h>#defineN15main()intlow,high,mid,x;intaN=1,4,9,13,21,34,55,89,144,233,377,570,671,703,812;low=0,high=N-1;scanf("%d",&x);domid=_(low+high)/2_;if(amid=x)break;elseif(amid<x)low=

39、_mid+1_;elsehigh=_mid-1_;while(low<=high);if(low<=high)printf("xisthe%dthnumbern",mid+1);elseprintf("xnotexistinthearrayn");38、輸入一行字符,統(tǒng)計其中有多少個單詞,單詞之間用空格分隔開。#include<stdio.h>voidmain()charstring81;inti,num=0,word=0;charc;gets(string);for(i=0;(c=stringi)_!='0'_;

40、i+)if(c=,)word=0;elseif(word=0)word=_1_;num+;printf("Thereare%dwordsintheline.39、輸出10行的楊輝三角形。1111211331#include<stdio.h>#defineN10main()inti,n,k,aN=1;printf(“%5dn”,a0);for(i=1;i<N;i+)for(j=i;j>=1;j-)aj=_for(j=0;_j<=i_;j+)printf(printf(“n”);40、以下程序的功能是:從鍵盤輸入一個整數(shù)依次輸出各個數(shù)組元素的值#includ

41、e<stdio.h>main()n",num);aj+aj-1_;“%5d”,aj);,然后找出最大值,并輸出。n(nw10)和n個整數(shù),存入數(shù)組a中,先inta10,n,i,j,_max_;printf("輸入n=");scanf("%d",&n);printf("輸入各數(shù)組元素:");for(i=0;i<n;i+)scanf("%d",_&ai_);printf("輸出各數(shù)組元素:");for(_i=0;i<n;i+_)printf(&quo

42、t;%d",_ai_);printf("n");max=_a0_;for(j=1;j<n;j+)if(ai>max)_max=aiprintf("最大值:%dn",max);41、以下程序?qū)崿F(xiàn)的功能是:將字符串s中所有的字符c刪除。請完成程序填充#include<stdio.h>#include<ctype.h>main()chars80;inti,j;gets(s);for(i=j=0;_si!='0'_;i+)if(si!='c')sj=si;_j+_;sj='0&

43、#39;puts(s);42、以下程序的功能是:按順序讀入10名學生4門課程的成績,計算出每位學生的平均分并輸出,請完成程序填充。#include<stdio.h>#defineN10main()intn,k;floatscore,sum,ave;for(n=1;n<=N;n+)_sum=0_;for(k=1;k<=4;k+)scanf("%f",&score);_sum+=score_;_sum/=4_;printf("NO.%d:%fn",n,ave);43 、本程序的功能是:輸入一串字符,將字符串中的字符反序輸出。#

44、include<stdio.h>#include<_string.h_>main()inti,j,k;charstr80;gets(str);for(i=0,j=_n-1_;i<j;i+,j-)k=stri;stri=strj;strj=k;puts(_str_);2244 、求方程ax2+bx+c=0的根,用三個函數(shù)分別求當b2-4ac大于0、等于0、和小于0時的根,并輸出結(jié)果。從主函數(shù)輸入a、b、c的值。#include<stdio.h>#include<math.h>voiddoubleRoots(doublea,doubleb,do

45、ublec)doublex1,x2,delta;delta=_b*b-4*a*c_;x1=(-b+sqrt(delta)/(2*a);x2=(-b-sqrt(delta)/(2*a);printf("Equationhastwodifferentroots:n");printf("x1=%g,x2=%g",x1,x2);voidSingleRoot(doublea,doubleb,doublec)doublex1;x1=-b/2/aprintf("Equationhastwoequalroots:n");printf("x1

46、=x2=%g",x1);voidNoRoot(void)printf("Norealrootfoundfortheequationn");main()doublea,b,c,delta;scanf("%lf%lf%lf",&a,&b,&c);delta=b*b-4*a*c;if(delta>0)_doubleRoots(a,b,c)_;elseif(delta<0)_NoRoot()_;else_SingleRoot(a,b,c)_;45 、寫一個判斷素數(shù)的函數(shù),在主函數(shù)輸入一個整數(shù),輸出是否是素數(shù)的消息。#

47、include<stdio.h>#include<math.h>voidIsPrime(_intn_)inti;intk=sqrt(n);for(i=2;_i<=k_;i+)if(n%i=0)break;if(i>=k+1)printf("%disPrimenumber'n",n);elseprintf("%disnotPrimenumbern",n);main()intn;scanf("%d",&n);IsPrime(_n_);3246 、用牛頓迭代法求根。方程為ax+bx+cx+

48、d=0,系數(shù)a,b,c,d由主函數(shù)輸入。求x在1附近的一個實根。求出后由主函數(shù)輸出。#include<stdio.h>#inelude<math.h>doubleEquationRoot(doublea,doubleb,doublec,doubled)doublex,y;x=1;doy=a*x*x*x+b*x*x+c*x+d;x=x-y/(3*a*x*x+2*b*x+c);while(_fabs(y)>1e-6_);return_x_;main()doublea,b,c,d,x;scanf("%lf%lf%lf%lf",&a,&

49、b,&c,&d);x=_EquationRoot(a,b,c,d)_;printf("x=%g",x);47、輸入10個學生5門課的成績,分別用函數(shù)求:每個學生平均分;每門課的平均分;1亍X?找出最高分所對應(yīng)的學生和課程;求平均分方差:6=,瓦x2-(D)2,其中Xi為nn一學生的平均分。#include<stdio.h>#defineM5#defineN10voidEachStudentEverageMark(floata,intm,intn)/*求每個學生的平均分。m-學生數(shù),n-課程數(shù)*/inti,j;floatsum;for(i=0;i&

50、lt;m;i+)sum=0.0;for(j=0;j<n;j+)sum+=aji;printf("averagemarkofthe%dthstuis%gn",i+1,sum/n);voidEachCourseEverageMark(_floata_,intm,intn)/*每門課的平均分*/inti,j;floatsum;for(i=0;i<n;i+)sum=0.0;for(j=0;j<m;j+)sum+=aij;printf("averagemarkofthe%dthstuis%gn",i+1,sum/n);voidMaxScore(f

51、loata,intm,intn)/*找出最高分所對應(yīng)的學生和課程*/inti,j,s,t;floatmax=a00;s=0,t=0;for(i=0;i<n;i+)for(j=0;j<m;j+)if(max<aij)max=aij;s=i;t=_j_;printf("the%dthcourseandthe%dthstuhasthemaxn",s,t);voidAverageVariance(floata,intm,intn)/*求平均分方差*/floatdelta,ave,avesq=0,avesum=0;inti,j;for(i=0;i<m;i+)a

52、ve=0;for(j=0;j<n;j+)ave+=aji;ave/=n;avesq+=ave*ave;avesum+=ave;delta=_avesq/n-avesum*avesum/n/n_;printf("varianceofthe%dthstuis%gn",i+1,delta);main()floataMN;inti,j;for(i=0;i<M;i+)for(j=0;j<N;j+)scanf("%f",&aij);EachStudentEverageMark(a,M,N);EachCourseEverageMark(a,M

53、,N);MaxScore(a,M,N);AverageVariance(a,M,N);48、寫幾個函數(shù):輸個職工的姓名和職工號;按職工號由小到大順序排序,姓名順序也隨之調(diào)整;要求輸入一個職工號,用折半法找出該職工的姓名,從主函數(shù)輸入要查找的職工號,輸出該職工姓名。#include<stdio.h>intnum100;/職工號charname100100;/職工姓名intcount=0;voidinformationInput(void)/職工信息輸入inti,n;printf("howmanydoyouwanttoinput:n");scanf("%d

54、",&n);printf("pleaseenterthenameandnumbers:n");for(i=count;i<n;i+)printf("%d:",i-count);scanf("%s",namei);scanf("%d",&numi);count+=n;voidsorting()/按職工號進行排序inti,j,t;charstr100;for(i=0;i<count;i+)for(j=0;j<count-i-1;j+)if(numj>numj+1)t=n

55、umj;strcpy(str,_namej_);numj=numj+1;strcpy(namej,_namej+1_);numj+1=t;strcpy(namej+1,str);voidsearch(intnb)/用職工號找出該職工的姓名intlow,high,mid;low=0;high=count-1;domid=(low+high)/2;if(nummid>nb)high=mid-1;elseif(nummid<nb)low=mid+1;elsebreak;while(_low<=high_);if(low>high)printf("employeeno

56、texistn");elseprintf("%sisfoundn",namemid);main()intk;informationInput();sorting();printf("numtofind:");scanf("%d",&k);search(k);49、寫一函數(shù),輸入一個十六進制數(shù),輸出相應(yīng)的十進制數(shù)。#include<stdio.h>intHexToDecimal(char*hex)intlen,i,dec;if(hex=NULL)return0;len=strlen(hex);for(i=0,dec=0;i<len;i+)if(hexi>='0'&&hexi<='9')dec=_dec*16+(hexi-48)elseif(hexi>='a'&&hexi<='f')dec=dec*16+hexi-a'+10elseif(hexi>='A'&&hexi<='F')dec=_dec*1

溫馨提示

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

評論

0/150

提交評論