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

下載本文檔

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

文檔簡介

1、C語言程序設(shè)計(jì)(第三版)習(xí)題庫1、設(shè)圓半徑r=1.5 ,圓柱高h(yuǎn)=3,求圓周長、圓面積、圓球表面積、圓球體積、圓柱體積。用scanf輸入數(shù)據(jù),輸出計(jì)算結(jié)果,輸出時(shí)要求文字說明,取小數(shù)點(diǎn)后兩位數(shù)字。請編程序。#include <stdio.h>main()float r,h,C1,Sa,Sb,Va,Vb;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=%.2f

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

3、in()int x,y;printf(" 輸入 x:");scanf("%d",&x);if(x<1) /* x<1 */y=x;printf("x=%3d, y=x=%dn",x,y); else if (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

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

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

6、*x-11;# include "stdio.hmain()int x,y;scanf("%d",&x);if(x<1) y=x;else if(x>=1 && x<10) y=2*x-1;elsey=3*x-11;printf("%d",y);,y);4、給定一個(gè)不多于5位的正整數(shù),要求:求它是幾位數(shù);按逆序打印出各位數(shù)字。例如原數(shù)為321,應(yīng)輸出123。#include <stdio.h>main()long int num,m=0;int i=0;scanf("%ld&quo

7、t;,&num);while(num>0)i+; /* 統(tǒng)計(jì)長度*/m=m*10+num%10;num =num/10;printf(" 數(shù)字長度為:%d",i);printf(" 逆序數(shù)字為:%dn",m);5 、以下程序?qū)崿F(xiàn)的功能:求三個(gè)數(shù)的最大值 #include<stdio.h>main()int a,b,c,max;scanf("%d %d %d",&a,&b,&c); if(a>b)if( a>c) max=a;else max=c; elseif( b>

8、c) max=b; else max=c; printf("max= %d",max);#include <stdio.h>main()int x,y,z,t=0;scanf("%d %d %d",&x,&y,&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、輸入兩個(gè)正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。/*枚舉法 */#include<stdio.h>ma

9、in()long m,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;else j=n;for(;!(j%m=0&&j%n=0);j+);printf("s=%ld,j=%ldn",s,j);#include <stdio.h>main()int a,b,k,temp,i,p;scanf("%d,%d",&a,

10、&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);/*輾轉(zhuǎn)相除*/#include<stdio.h>main()int m,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!=

11、0 );printf("%d,%d",k,m*n/k);/*反復(fù)減法*/#include<stdio.h>main()int m,n,k,j,p,r=1;scanf("%d,%d",&m,&n);k= m>n? m:n;j= m>n?n:m;dop= k-j ;if(j>p) k=j; j=p;else k=p;while( p!=0 );printf("%d,%d",k,m*n/k);7 、輸入一行字符,分別統(tǒng)計(jì)出其中英文字母、空格、數(shù)字和其他字符的個(gè)數(shù)。#include"st

12、dio.h"main()char c;int i=0,j=0,k=0,l=0;while(c=getchar()!= n ) if( c>= A &&c<= Z |c>= a &&c<= z )i+; /英文字母統(tǒng)計(jì)else if( c>= 0 &&c<= 9 )j+; /數(shù)字統(tǒng)計(jì)else if( c= )k+; / 空格統(tǒng)計(jì)else l+;printf("i=%d,j=%d,k=%d,l=%dn",i,j,k,l);8、求 Sn=a+aa+aaa+- - +aa- - aaa (

13、有n個(gè)a)之值,其中a是一個(gè)數(shù) 字。例如 2+22+222+2222+22222( n=5) , n 由鍵盤輸入。#include <stdio.h>main()int a,n;long b=0,sum=0;scanf( “ %d %d ” ,&a,&n);for (i=1;i<=n;i+)b =b*10+a;sum = sum+b;printf (“ %ld ” ,sum);9 、 打印出所有" 水仙花數(shù)" , 所謂" 水仙花數(shù)" 是指一個(gè)三位數(shù),其各位數(shù)字立方和等于該本身。例如:153是一個(gè)水仙花數(shù),因?yàn)?53=13

14、+53+33?!境绦?1 】#include<stdio.h>main()int i,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<stdio.h>main()int i,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( “

15、 %d” ,i);10 、 一個(gè)數(shù)如果恰好等于它的因子之和,這個(gè)數(shù)就稱為" 完數(shù) " 。 例如, 6 的因子為1 、 2、 3,而 6=1+2+3,因此 6 是 "完數(shù)"。編程序找出1000 之內(nèi)的所有完數(shù),并按下面格式輸出其因子: 6 its factors are 1 、 2、 3#include <stdio.h>main() int a,i,m; for (a =1; a<=1000;a+) for (_i=1,m=0_; i <= a/2;i+)if (!(a%i) _m+=i_;if (m=a) printf(&quo

16、t;%4d” ,a);11、利用:44=1-1/3+1/5-1/7+.級(jí)數(shù)求n的值,直到最后一項(xiàng)的絕對值小于10-6為止。求絕對值的函數(shù)為 fabs()。# include<stdio.h>#include<math.h>main()int i=1,flag=1;double sum=0.0,s; dos=_1.0/(2*i-1)_;sum+=s*flag; i+;_ flag=-flag _;while(_fabs(s)>1e-6_);/*/printf("pi=%f",_4*sum_); 11、有一分?jǐn)?shù)序列:2/1,3/2,5/3, 求出這

17、個(gè)數(shù)列的前 20項(xiàng)之和。#include<stdio.h>#define N 20main()int i=1;double x=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次落地時(shí)共經(jīng)過多少米?第 10次反彈多高?#include <stdio.h>main()int i,n=10;double h=100,s=100;for(

18、i=2;i<=n;i+)h*=_ 0.5 一s=_ s+h*2 _;printf("s=%f,h=%fn",s,h);13、猴子吃桃問題。猴子第一天摘下若干個(gè)桃子,當(dāng)即吃了一半,還不過癮,又多吃了一 個(gè)。第二天早上又將剩下的桃子吃掉一半,又多吃一個(gè)。以后每天早上都吃了前一天剩下的一半零一個(gè)。到第10天早上想再吃時(shí),見只剩下一個(gè)桃子了。求第一天共摘多少桃子。#include <stdio.h>#define N 10main()int i=1,sum=1;while(i+<N)sum=_( sum+1)*2_;printf("sum=%dn&

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

20、#include _<math.h>_#define f(x) 2*x*x*x-4*x*x+3*x-6main()double x,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 -4x +3x6=0在(-10, 10)之間的根#include <stdio.h>#include <math.h>#define f(x) 2x*x*x-4*x*x+3*x-6main()doubl

21、e x1=-10,x2=10,x,y;dox=(x1+x2)/2;y=f(x);if(y<0) x1=x;else x2=x;while(fabs(y)>1e-6);printf("x=%gn",x);17、以下程序的功能是:輸入一個(gè)百分制成績,輸出一個(gè)五級(jí)制成績等級(jí)。例如輸入75,輸出Co請完成填空#include<stdio.h>main()int score;scanf("_%d_",&score);switch(_score/10 _)case 1:case 2:case 3:case 4:case 5:print

22、f( grade En "); break_;case 6: printf(grade Dn ");break;case 7: printf(gradeCn");break;case 8: printf(gradeBn");break;case 9: printf(gradeAn");break;_ default_:printf("Error input!n"); 18、該程序功能:對 x=1,2,.,10,求 f(x)=x*x-5*x+sin(x)的最大值。#include <stdio.h>#include

23、 <math.h>#define f(x) x*x-5*x+sin(x)void main() int x; float max;_ max=f(1) _;for(x=2;x<=10;x+)_ if(max<f(x) max=f(x)_;printf("%fn",max);19、程序功能:輸入整數(shù)a和b的值,若a2+b2大于100,則輸出a2+b2百位以上的數(shù)字,否則輸出兩數(shù)之和。#include<stdio.h>main()int a,b,s;scanf("%d%d",&a,&b);s=_a*a+b*

24、b _;if(s>100) printf("%d",_s/100 _);else printf("%d",_a+b_);20、有1020 個(gè)西瓜,第一天賣一半多兩個(gè),以后每天賣剩下的一半多兩個(gè),以下程序統(tǒng)計(jì)賣完所需的天數(shù)。#include <stdio.h>main()int day,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()i

25、nt i,x;scanf( “ %d” ,&x);i=1;for ( ; _i<=x/2 _;)if (x%i=0) printf(%d” ,i);i+;22、統(tǒng)計(jì)用數(shù)字0-9 可以組成多少個(gè)各位上的數(shù)字沒有重復(fù)的3 位偶數(shù)。#include <stdio.h>main()int n=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+)if (_j!=i&&j!=k _) n+;printf( “ n=%dn ”

26、,n); 23、用100元換成1、 2、 5 元的所有兌換方案。#include <stdio.h>main() int i,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*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() int n,

27、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個(gè)紅球、5個(gè)白球、6 個(gè)黑球中任意取出8 個(gè)球,且其中必須有白球,輸出所有可能的方案。#include <stdio.h>main() int i,j,k;for (i=0;i<=3;i+)for (_j=1 _; j<=5;j+) k = 8- i - j;if (_k>=0_)printf(“ %3d %3d %

28、3dn” ,i,j,k);26、以下程序的功能是:判斷一個(gè)四位數(shù)是否滿足這樣的條件:它的9 倍剛好是它的反序數(shù)。反序數(shù)是指整數(shù)各個(gè)位上的數(shù)字逆序所形成的整數(shù)。請完成程序的填空。#include<stdio.h>main()int i,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+d _;if(_m=i*9 _) _break_; printf("i=%d",i);27 、以下程序完成兩整數(shù)的交換。#include <stdio.h&

29、gt;main()int a,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()int year ;scanf(“ %d” ,&year);if (_year%400=0|year%4=0&&year%100!=0 _)

30、 printf( “ yes ” );else printf(“ No” );29、以下程序利用冒泡排序法對輸入的10 個(gè)數(shù)進(jìn)行排序。#include <stdio.h>#define N 10void main() int a N ;int i,j,t;printf( " input 10 numbers :n");for (i=0;i<N;i+)scanf("%d" , _ &ai _);printf("n");for(j=0;j<N-1;j+)for(i=0;i<_N-j-1 _;i+)if

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

32、 N (M+1)/2) /void main( ) int i,j,aN;a0 = 2;for(i=1;i<N-1;i+) /*ai = 2*i+1;for(i=1;i<N-1;i+) /*if(_ai!=0_)for(j=i+1;j<N;j+)奇數(shù)的個(gè)數(shù)if(_aj=0;初始數(shù)組實(shí)現(xiàn)第一步篩選*/第二步篩選*/倍數(shù)時(shí)置零篩去*/顯示得到素?cái)?shù)*/十個(gè)數(shù)換行*/aj%ai=0_) /*printf("nThe primer are 2-%d:n",M);for(i=0,j=0;i<N;i+) /*if(_ai!=0 _) printf("%5

33、d",ai);if(+j)%10=0) /* printf("n"); getch();31、用選擇法對10 個(gè)整數(shù)從小到大排序。#include <stdio.h>#define N 10main()int aN,i,j,k,t;for (i=0;i<N;i+) scanf(“ %d” ,&ai);for (i=0;i<N-1;i+)k=_i _;for(j=i+1;j<N;j+)if(aj<ak) k=_j _;if (_ai>ak_)t=ak; ak=ai;ai=t; for(i=0;i<N;i+) p

34、rintf(“ %d” ,ai);32、求一個(gè)N X N矩陣主對角線元素、次對角線之和。#define N 3#include <stdio.h>main() int i=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"

35、,s1,s2);33、已有一個(gè)已排好的數(shù)組今輸入一個(gè)數(shù)要求按原來排序的規(guī)律將它插入數(shù)組中。#define N 10#include <stdio.h>main() int i,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_;else break;ai+1= _ t_;for(i=0;i<10;i+)printf("%5d",ai);34、將一個(gè)數(shù)組的值按逆序重新存放,例如,原來順序?yàn)椋?, 6, 5, 4

36、, 1。要求改為:1,4, 5, 6, 8。#include <stdio.h>#define N 11main()int i,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、打印“魔方陣”,所謂魔方陣是指這樣的方陣,它的每一行、每一列和對角線之和均相等。例如,三階魔方陣為816357492要求打印出由1n

37、2的自然數(shù)構(gòu)成的魔方陣。#define N 3#include <stdio.h>main( ) int i,j,k,aNN;/* 初始化魔方陣 置為 0,作為有無數(shù)字的判斷*/for(i=0;i<N;i+)for(j=0;j<N;j+)aij= _0_;j=N/2;a0j=1; /*存放第一個(gè)數(shù)字*/* 存放 2 n*n */for(k=2;k<=N*N;k+) i-; /數(shù)存放前一數(shù)行數(shù)減1 、列數(shù)加1_ j+=1 _;if (i < 0 && j > N-1) /到達(dá)右上角的位置i=i+2; j-; else if(i<0)

38、i=_ n-1 _; / 上一數(shù)的行數(shù)為0,下一數(shù)的行數(shù)為n-1if(j>N-1)j=0;/ 上一數(shù)的列數(shù)為n-1 時(shí),下一數(shù)的列數(shù)為0if(_aij!=0_) /若下一數(shù)的位置上已經(jīng)有數(shù)字,/則下一數(shù)存到上一個(gè)數(shù)行數(shù)加1 的位置i=(i+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、找出一個(gè)二位數(shù)組中的鞍點(diǎn),即該位置上的元素在該行

39、上最大,在該列上最小,也可能沒有鞍點(diǎn)。#include <stdio.h> #define M 5 #define N 4 main()分別是用來記錄鞍點(diǎn)的位置int aMN,i,j,x,y,k,max,min;/x,yint flag=0; /用于指示是否存在鞍點(diǎn)for(i=0;i<M;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

40、(k=0;k<5;k+)if(min>aky) x=k; _if(_ i=k _)printf("a%d%d=%d flag=1;if (flag =0) printf(先默認(rèn)第一個(gè)數(shù)是最大值max=aik _;先默認(rèn)第一個(gè)數(shù)是最小值min=aky_;是鞍點(diǎn) n",x,y,axy);不存在鞍點(diǎn)n ” );37、有個(gè)15 數(shù)按由小到大順序存放在一個(gè)數(shù)組中,輸入一個(gè)數(shù),要求用折半查找法找出該數(shù)組中第幾個(gè)元素的值。如果該數(shù)不在數(shù)組中,則打印出" 無此數(shù) "#include <stdio.h>#define N 15main()int l

41、ow,high,mid,x;int aN=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;else if(amid<x) low=_mid+1_;else high=_mid-1 _;while(low<=high);if(low<=high) printf("x is the %dth numbern",mid+1);else printf(

42、"x not exist in the arrayn");38、輸入一行字符,統(tǒng)計(jì)其中有多少個(gè)單詞,單詞之間用空格分隔開。#include <stdio.h>void main() char string 81 ;int i , num=0 , word=0;char c;gets(string);for (i=0;(c=string i ) _ != 0 _;i+)if(c= ,) word=0;else if(word=0) word=_ 1_;num+;printf( " There are %d words in the line.n"

43、; , num);39、輸出10 行的楊輝三角形。11 11 2 11 3 3 1#include <stdio.h>#define N 10main()int i,n,k,aN=1;printf( “ %5dn ” ,a0);for(i=1;i<N;i+)for(j=i;j>=1;j-) aj= _aj+aj-1 printf("%d ", _ ai _ );for(j=0; _j<=i _;j+) printf(printf( “ n ” );40、以下程序的功能是:從鍵盤輸入一個(gè)整數(shù)依次輸出各個(gè)數(shù)組元素的值,然后找出最大值,并輸出。#in

44、clude<stdio.h>main()int a10,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+_ )%5d” ,aj);n (nW 10)和n個(gè)整數(shù),存入數(shù)組 a中,先 并輸出。printf("n");m

45、ax=_ a0 _ ;for(j=1;j<n;j+)if(ai>max) _max=ai _ ;printf(" 最大值:%dn",max);41、以下程序?qū)崿F(xiàn)的功能是:將字符串 s中所有的字符c刪除。請完成程序填充#include<stdio.h>#include<ctype.h>main()char s80;int i,j;gets(s);for(i=j=0; _si!= 0 _;i+)if(si!='c')sj=si;_ j+ _;sj='0'puts(s);42、以下程序的功能是:按順序讀入10名學(xué)

46、生 4門課程的成績,計(jì)算出每位學(xué)生的平均分并輸出,請完成程序填充。#include<stdio.h>#define N 10main()int n,k;float score,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、本程序的功能是:輸入一串字符,將字符串中的字符反序輸出。#include <stdio.h>#includ

47、e <_string.h _>main()int i,j,k;char str80;gets(str);for(i=0,j=_n-1 _;i<j;i+,j-)k=stri;stri=strj;strj=k;puts(_str _);44、求方程ax2+bx+c=0的根,用三個(gè)函數(shù)分別求當(dāng)b2-4ac大于0、等于0、和小于0時(shí)的根,并輸出結(jié)果。從主函數(shù)輸入a、 b、 c 的值。#include <stdio.h>#include <math.h>void doubleRoots(double a,double b,double c)double x1,x

48、2,delta;delta=_b*b-4*a*c _;x1=(-b+sqrt(delta)/(2*a);x2=(-b-sqrt(delta)/(2*a);printf("Equation has two different roots:n");printf("x1=%g,x2=%g",x1,x2);void SingleRoot(double a,double b,double c)double x1;x1= _-b/2/a _;printf("Equation has two equal roots:n");printf("

49、;x1=x2=%g",x1);void NoRoot(void)printf("No real root found for the equationn");main()double a,b,c,delta;scanf("%lf%lf%lf",&a,&b,&c);delta=b*b-4*a*c;if(delta>0) _doubleRoots(a,b,c) _;else if(delta<0) _NoRoot()_;else _ SingleRoot(a,b,c)_;45、寫一個(gè)判斷素?cái)?shù)的函數(shù),在主函數(shù)輸入一

50、個(gè)整數(shù),輸出是否是素?cái)?shù)的消息。#include <stdio.h>#include <math.h>void IsPrime(_int n _)int i;int k=sqrt(n);for(i=2; _i<=k _;i+)if(n%i=0) break;if(i>=k+1) printf("%dis Prime number'n",n); else printf("%d is not Prime numbern",n);main() int n; scanf("%d",&n);Is

51、Prime(_n_);系數(shù)a, b, c, d由主函數(shù)輸入。求 x在46、用牛頓迭代法求根。方程為ax3+bx2+cx+d=01附近的一個(gè)實(shí)根。求出后由主函數(shù)輸出。#include <stdio.h>#include <math.h>double EquationRoot(double a,double b,double c,double d) double x,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()double a

52、,b,c,d,x;scanf("%lf %lf %lf %lf",&a,&b,&c,&d);x=_EquationRoot(a,b,c,d)_;printf("x=%g",x);每個(gè)學(xué)生平均分;每門課的平均分;a =工Z x2 一(士L)2,其中 xi 為 nn47、輸入10個(gè)學(xué)生5門課的成績,分別用函數(shù)求:找出最高分所對應(yīng)的學(xué)生和課程;求平均分方差:一學(xué)生的平均分。#include <stdio.h>#define M 5#define N 10void EachStudentEverageMark(floa

53、t a叩,int m,int n)/*求每個(gè)學(xué)生的平均分。m-學(xué)生數(shù),n-課程數(shù)*/int i,j;float sum;for(i=0;i<m;i+)sum=0.0;for(j=0;j<n;j+)sum+=aji;printf("average mark of the %dth stu is%gn",i+1,sum/n);void EachCourseEverageMark(_float a_,int m,int n)/* 每門課的平均分*/int i,j;float sum;for(i=0;i<n;i+)sum=0.0;for(j=0;j<m;j+

54、)sum+=aij;printf("average mark of the %dth stu is%gn",i+1,sum/n);void MaxScore(float a,int m,int n)/* 找出最高分所對應(yīng)的學(xué)生和課程*/int i,j,s,t;float max=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 %dth course and the %dth stu has the maxn"

55、;,s,t);void AverageVariance(float a,int m,int n)/* 求平均分方差*/float delta,ave,avesq=0,avesum=0;int i,j;for(i=0;i<m;i+)ave=0;for(j=0;j<n;j+)ave+=aji;ave/=n;avesq+=ave*ave;avesum+=ave;delta=_avesq/n-avesum*avesum/n/n _;printf("variance of the%dth stu is %gn",i+1,delta);main()float aMN;int

56、 i,j;for(i=0;i<M;i+)for(j=0;j<N;j+)scanf("%f",&aij);EachStudentEverageMark(a,M,N);EachCourseEverageMark(a,M,N);MaxScore(a,M,N);AverageVariance(a,M,N);48、寫幾個(gè)函數(shù):輸個(gè)職工的姓名和職工號(hào);按職工號(hào)由小到大順序排序,姓名順序 也隨之調(diào)整;要求輸入一個(gè)職工號(hào),用折半法找出該職工的姓名,從主函數(shù)輸入要查找 的職工號(hào),輸出該職工姓名。#include <stdio.h>int num100; /職工

57、號(hào)char name100100; /職工姓名int count=0;void informationInput(void) /職工信息輸入int i,n;printf("how many do you want to input:n");scanf("%d",&n);printf("please enter the name and numbers:n");for(i=count;i<n;i+)printf("%d:",i-count);scanf("%s",namei);scanf("%d",&numi);count+=n;void sorting() /按職工號(hào)進(jìn)行排序int i,j,t;char str100;for(i=0;i<count;i+)for(j=0;j<count-

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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

提交評論