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

下載本文檔

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

文檔簡介

C語言程序設(shè)計(第三版)習(xí)題庫1、設(shè)圓半徑r=1.5,圓柱高h(yuǎn)=3,求圓周長、圓面積、圓球表面積、圓球體積、圓柱體積。用scanf輸入數(shù)據(jù),輸出計算結(jié)果,輸出時要求文字說明,取小數(shù)點后兩位數(shù)字。請編程序。#include<stdio.h>main(){floatr,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=%.2fSb=%.2fVa=%.2fVb=%.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);}3、有一函數(shù):寫一程序,輸入x值,輸出y值。#include<stdio.h>main(){intx,y;printf("輸入x:");scanf("%d",&x);if(x<1){/*x<1*/y=x;printf("x=%3d,y=x=%d\n",x,y);}elseif(____x<10_______){/*1≤x-10*/_____y=2*x-1_______;printf("x=%3d,y=2*x-1=%d\n",x,y);}else{/*x≥10*/y=3*x-11;printf("x=%3d,y=3*x-11=%d\n",x#include"stdio.h"main(){intx,y;scanf("%d",&x);if(x<1) {y=x;}elseif(x>=1&&x<10) {y=2*x-1;}else {y=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;}else {y=3*x-11;}printf("%d\n",y);}#include"stdio.h"main(){intx,y;scanf("%d",&x);if(x<1) {y=x;}elseif(x>=1&&x<10) {y=2*x-1;}else {y=3*x-11;}printf("%d",y);}scanf("%d",&x);if(x<1) {y=x;}elseif(x>=1&&x<10) {y=2*x-1;}else {y=3*x-11;}#include"stdio.h"main(){intx,y;scanf("%d",&x);if(x<1) y=x;elseif(x>=1&&x<10) y=2*x-1;else y=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ù)字為:%d\n",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; else max=c; }else{ if(b>c) max=b; else max=c; } printf("max=%d",max);}#include<stdio.h>main(){ intx,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("%d\n",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=n;for(;!(j%m==0&&j%n==0);j++);printf("s=%ld,j=%ld\n",s,j);}#include<stdio.h>main(){ inta,b,k,temp,i,p; scanf("%d,%d",&a,&b);if(a>b) temp=b; else temp=a; for(i=2;i<=temp;i++) {if(a%i==0&&b%i==0)k=i; } printf("%d\n",k);p=a*b/k;printf("%d\n",p);}/*輾轉(zhuǎn)相除*/#include<stdio.h>main(){intm,n,k,j,p,r=1;scanf("%d,%d",&m,&n);k=m>nm:n;j=m>nn:m;do{r=k%j;k=j;j=r;}while(r!=0);printf("%d,%d",k,m*n/k);}/*反復(fù)減法*/#include<stdio.h>main(){intm,n,k,j,p,r=1;scanf("%d,%d",&m,&n);k=m>nm:n;j=m>nn:m;do{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++;//英文字母統(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=%d\n",i,j,k,l);}8、求Sn=a+aa+aaa+…+aa…aaa(有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);for(i=1;i<=n;i++){b=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<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<=1000;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;do{s=__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,求出這個數(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("%f\n",sum);}12、一球從100米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第10次落地時共經(jīng)過多少米?第10次反彈多高?#include<stdio.h>main(){inti,n=10;doubleh=100,s=100;for(i=2;i<=n;i++){h*=__0.5__; s=__s+h*2__;}printf("s=%f,h=%f\n",s,h);}13、猴子吃桃問題。猴子第一天摘下若干個桃子,當(dāng)即吃了一半,還不過癮,又多吃了一個。第二天早上又將剩下的桃子吃掉一半,又多吃一個。以后每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘多少桃子。#include<stdio.h>#defineN10main(){inti=1,sum=1;while(i++<N)sum=__(sum+1)*2__;printf("sum=%d\n",sum);}14、用迭代法求。求平方根的迭代公式為:要求前后兩次求出的得差的絕對值少于0.00001。#include<stdio.h>#include<math.h>main(){floatx0,x1,a;scanf("%f",&a);x1=a/2;do{x0=x1;x1=__(x0+a/x0)/2__;}while(__x1>1e-5__);printf("%g\n",x1);}15、用牛頓迭代法求方程在1.5附近的根。#include<stdio.h>#include__<math.h>__#definef(x)2*x*x*x-4*x*x+3*x-6main(){doublex,y;x=__1.5__;do{y=f(x);x=x-y/(6*x*x-8*x+3);}while(fabs(y)>1e-6);printf("x=%.3f\n",x);}16、用二分法求方程在(-10,10)之間的根#include<stdio.h>#include<math.h>#definef(x)2x*x*x-4*x*x+3*x-6main(){doublex1=-10,x2=10,x,y;do{x=(x1+x2)/2;y=f(x);if(y<0)x1=x;elsex2=x;}while(fabs(y)>1e-6);printf("x=%g\n",x);}17、以下程序的功能是:輸入一個百分制成績,輸出一個五級制成績等級。例如輸入75,輸出C。請完成填空#include<stdio.h>main(){intscore;scanf("__%d__",&score);switch(__score/10__){ case1:case2:case3:case4:case5: printf(“gradeE\n”);___break__; case6:printf(“gradeD\n”);break; case7:printf(“gradeC\n”);break; case8:printf(“gradeB\n”);break; case9:printf(“gradeA\n”);break;__default__:printf("Errorinput!\n");}}18、該程序功能:對x=1,2,...,10,求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)__; for(x=2;x<=10;x++) __if(max<f(x))max=f(x)__; printf("%f\n",max);}19、程序功能:輸入整數(shù)a和b的值,若a2+b2大于100,則輸出a2+b2百位以上的數(shù)字,否則輸出兩數(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__);}20、有1020個西瓜,第一天賣一半多兩個,以后每天賣剩下的一半多兩個,以下程序統(tǒng)計賣完所需的天數(shù)。#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可以組成多少個各位上的數(shù)字沒有重復(fù)的3位偶數(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++)if(__j!=i&&j!=k__)n++;printf(“n=%d\n”,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*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.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%3d\n”,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+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”,&year);if(__year%400==0||year%4==0&&year%100!=0__)printf(“yes”);elseprintf(“No”);}29、以下程序利用冒泡排序法對輸入的10個數(shù)進(jìn)行排序。#include<stdio.h>#defineN10voidmain(){inta[N];inti,j,t;printf(″input10numbers:\n″);for(i=0;i<N;i++)scanf("%d",__&a[i]__);printf("\n");for(j=0;j<N-1;j++)for(i=0;i<__N-j-1__;i++)if(__a[i]>a[i+1]__){t=a[i];a[i]=a[i+1];a[i+1]=t;}printf(″thesortednumbers:\n″);for(i=0;i<N;i++)printf(″%d″,a[i]);printf(″\n″);}30、用篩法求100之內(nèi)的素數(shù)。篩法素數(shù)的思想是:1、取最小的數(shù)2,并聲明它是素數(shù),同時篩去它及它的倍數(shù)。2、取未篩去數(shù)中最小的數(shù),并聲明它是素數(shù),同時篩去它及它的倍數(shù)。3、重復(fù)步驟2至篩中無數(shù),得到所有的素數(shù)。#include<stdio.h>

#defineM100//范圍#defineN((M+1)/2)//奇數(shù)的個數(shù)voidmain(){

????inti,j,a[N];

????a[0]=2;

????for(i=1;i<N-1;i++)?/*初始數(shù)組實現(xiàn)第一步篩選*/

?????????a[i]=2*i+1;

????for(i=1;i<N-1;i++)?/*第二步篩選*/

?????????if(__a[i]!=0__)??????????????for(j=i+1;j<N;j++)

???????????????????if(__a[j]%a[i]==0__)/*倍數(shù)時置零篩去*/

????????????????????????a[j]=0;????printf("\nTheprimerare[2-%d]:\n",M);

????for(i=0,j=0;i<N;i++){??/*顯示得到素數(shù)*/

?????????if(__a[i]!=0__)?{

??????????????printf("%5d",a[i]);

??????????????if((++j)%10==0)?/*十個數(shù)換行*/

???????????????????printf("\n");

?????????}

????}

????getch();

}31、用選擇法對10個整數(shù)從小到大排序。#include<stdio.h>#defineN10main(){inta[N],i,j,k,t;for(i=0;i<N;i++)scanf(“%d”,&a[i]);for(i=0;i<N-1;i++){k=__i__;for(j=i+1;j<N;j++)if(a[j]<a[k])k=__j__;if(__a[i]>a[k]__){t=a[k];a[k]=a[i];a[i]=t;}}for(i=0;i<N;i++)printf(“%d”,a[i]);}32、求一個N×N矩陣主對角線元素、次對角線之和。#defineN3#include<stdio.h>main(){inti=0,j=0,a[N][N],s1=0,s2=0;for(i=0;i<N;i++)for(j=0;j<N;j++)scanf("%d",&a[i][j]);for(i=0;i<N;i++)for(j=0;j<N;j++){if(__i==j__)s1+=a[i][j];//主對角線if(__i+j==N-1__)s2+=a[i][j];//次對角線}printf("s1=%d,s2=%d\n",s1,s2);}33、已有一個已排好的數(shù)組今輸入一個數(shù)要求按原來排序的規(guī)律將它插入數(shù)組中。#defineN10#include<stdio.h>main(){inti,t,a[N]={1,7,8,17,23,24,59,62,101};scanf("%d",&t);for(i=N-2;i>0;i--){if(t<a[i])__a[i]=a[i-1]__;elsebreak;a[i+1]=__t__;for(i=0;i<10;i++)printf("%5d",a[i]);}34、將一個數(shù)組的值按逆序重新存放,例如,原來順序為:8,6,5,4,1。要求改為:1,4,5,6,8。#include<stdio.h>#defineN11main(){inti,a[N],tmp;for(i=0;i<N;i++)scanf("%d",&a[i]);for(i=0;__i<N/2__;i++){tmp=a[i];a[i]=__a[N-i-1]__;__a[N-i-1]__=tmp;}for(i=0;i<N;i++)printf("%5d",a[i]);}35、打印“魔方陣”,所謂魔方陣是指這樣的方陣,它的每一行、每一列和對角線之和均相等。例如,三階魔方陣為816357492要求打印出由1~n2的自然數(shù)構(gòu)成的魔方陣。#defineN3

#include<stdio.h>main(){

??inti,j,k,a[N][N];/*初始化魔方陣——置為0,作為有無數(shù)字的判斷*/

for(i=0;i<N;i++)?

????for(j=0;j<N;j++)

??????????a[i][j]=__0__;

j=N/2;

a[0][j]=1;/*存放第一個數(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)

?????????? i=__n-1__;//上一數(shù)的行數(shù)為0,下一數(shù)的行數(shù)為n-1if(j>N-1)

?????????? j=0;//上一數(shù)的列數(shù)為n-1時,下一數(shù)的列數(shù)為0

}?????????if(__a[i][j]!=0__){//若下一數(shù)的位置上已經(jīng)有數(shù)字,//則下一數(shù)存到上一個數(shù)行數(shù)加1的位置i=(i+2)%N;

?????? j=(j-1+N)%N;

? } a[i][j]=__k__;//填數(shù)

}for(i=0;i<N;i++)?{//輸出魔方陣

??printf("");

??for(j=0;j<N;j++)

?????printf("%4d",a[i][j]);

??printf("\n\n");

}}36、找出一個二位數(shù)組中的鞍點,即該位置上的元素在該行上最大,在該列上最小,也可能沒有鞍點。#include<stdio.h>#defineM5#defineN4main(){?inta[M][N],i,j,x,y,k,max,min;//x,y分別是用來記錄鞍點的位置intflag=0;//用于指示是否存在鞍點for(i=0;i<M;i++)?for(j=0;j<N;j++)scanf("%d",&a[i][j]);for(i=0;i<M;i++)?{max=a[i][0];y=0;//先默認(rèn)第一個數(shù)是最大值for(k=1;k<N;k++)?????if(max<a[i][k])?{y=k;__max=a[i][k]__;}?min=a[i][y];x=i;//先默認(rèn)第一個數(shù)是最小值?for(k=0;k<5;k++)??????if(min>a[k][y]){x=k;__min=a[k][y]__;}if(__i==k__){printf("a[%d][%d]=%d是鞍點\n",x,y,a[x][y]);flag=1;}}if(flag==0)printf(“不存在鞍點\n”);}37、有個15數(shù)按由小到大順序存放在一個數(shù)組中,輸入一個數(shù),要求用折半查找法找出該數(shù)組中第幾個元素的值。如果該數(shù)不在數(shù)組中,則打印出"無此數(shù)"#include<stdio.h>#defineN15main(){intlow,high,mid,x;inta[N]={1,4,9,13,21,34,55,89,144,233,377,570,671,703,812};low=0,high=N-1;scanf("%d",&x);do{mid=__(low+high)/2__;if(a[mid]==x)break;elseif(a[mid]<x)low=__mid+1__;elsehigh=__mid-1__;}while(low<=high);if(low<=high)printf("xisthe%dthnumber\n",mid+1);elseprintf("xnotexistinthearray\n");}38、輸入一行字符,統(tǒng)計其中有多少個單詞,單詞之間用空格分隔開。#include<stdio.h>voidmain(){charstring[81];inti,num=0,word=0;charc;gets(string);for(i=0;(c=string[i])__!=’\0’__;i++)if(c==′′)word=0;elseif(word==0){word=__1__;num++;}printf(″Thereare%dwordsintheline.\n″,num);}39、輸出10行的楊輝三角形。1111211331……#include<stdio.h>#defineN10main(){inti,n,k,a[N]={1};printf(“%5d\n”,a[0]);for(i=1;i<N;i++){for(j=i;j>=1;j--)a[j]=__a[j]+a[j-1]__;for(j=0;__j<=i__;j++)printf(“%5d”,a[j]);printf(“\n”);}}40、以下程序的功能是:從鍵盤輸入一個整數(shù)n(n≤10)和n個整數(shù),存入數(shù)組a中,先依次輸出各個數(shù)組元素的值,然后找出最大值,并輸出。#include<stdio.h>main(){ inta[10],n,i,j,__max__; printf("輸入n="); scanf("%d",&n); printf("輸入各數(shù)組元素:"); for(i=0;i<n;i++) scanf("%d",__&a[i]__); printf("輸出各數(shù)組元素:"); for(__i=0;i<n;i++__) printf("%d",__a[i]__); printf("\n"); max=__a[0]__;for(j=1;j<n;j++)if(a[i]>max)__max=a[i]__;printf("最大值:%d\n",max);}41、以下程序?qū)崿F(xiàn)的功能是:將字符串s中所有的字符c刪除。請完成程序填充#include<stdio.h>#include<ctype.h>main(){chars[80];inti,j;gets(s);for(i=j=0;__s[i]!=’\0’__;i++)if(s[i]!='c'){s[j]=s[i];__j++__;}s[j]='\0';puts(s);}42、以下程序的功能是:按順序讀入10名學(xué)生4門課程的成績,計算出每位學(xué)生的平均分并輸出,請完成程序填充。#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:%f\n",n,ave);}}43、本程序的功能是:輸入一串字符,將字符串中的字符反序輸出。#include<stdio.h>#include<__string.h__>main(){inti,j,k;charstr[80];gets(str);for(i=0,j=__n-1__;i<j;i++,j--){k=str[i];str[i]=str[j];str[j]=k;}puts(__str__);}44、求方程ax2+bx+c=0的根,用三個函數(shù)分別求當(dāng)b2-4ac大于0、等于0、和小于0時的根,并輸出結(jié)果。從主函數(shù)輸入a、b、c的值。#include<stdio.h>#include<math.h>voiddoubleRoots(doublea,doubleb,doublec){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/a__;printf("Equationhastwoequalroots:\n");printf("x1=x2=%g",x1);}voidNoRoot(void){printf("Norealrootfoundfortheequation\n");}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ù)的消息。#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("%disnotPrimenumber\n",n);}main(){intn;scanf("%d",&n);;IsPrime(__n__);}46、用牛頓迭代法求根。方程為ax3+bx2+cx+d=0,系數(shù)a,b,c,d由主函數(shù)輸入。求x在1附近的一個實根。求出后由主函數(shù)輸出。#include<stdio.h>#include<math.h>doubleEquationRoot(doublea,doubleb,doublec,doubled){doublex,y;x=1;do{y=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,&b,&c,&d);x=__EquationRoot(a,b,c,d)__;printf("x=%g",x);}47、輸入10個學(xué)生5門課的成績,分別用函數(shù)求:①每個學(xué)生平均分;②每門課的平均分;③找出最高分所對應(yīng)的學(xué)生和課程;④求平均分方差:,其中xi為一學(xué)生的平均分。#include<stdio.h>#defineM5#defineN10voidEachStudentEverageMark(floata[][],intm,intn){/*求每個學(xué)生的平均分。m-學(xué)生數(shù),n-課程數(shù)*/inti,j;floatsum;for(i=0;i<m;i++){sum=0.0;for(j=0;j<n;j++)sum+=a[j][i];printf("averagemarkofthe%dthstuis%g\n",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+=a[i][j];printf("averagemarkofthe%dthstuis%g\n",i+1,sum/n);}}voidMaxScore(floata[][],intm,intn){/*找出最高分所對應(yīng)的學(xué)生和課程*/inti,j,s,t;floatmax=a[0][0];s=0,t=0;for(i=0;i<n;i++)for(j=0;j<m;j++){if(max<a[i][j]){max=a[i][j];s=i;t=__j__;}}printf("the%dthcourseandthe%dthstuhasthemax\n",s,t);}voidAverageVariance(floata[][],intm,intn){/*求平均分方差*/floatdelta,ave,avesq=0,avesum=0;inti,j;for(i=0;i<m;i++){ave=0;for(j=0;j<n;j++){ave+=a[j][i];}ave/=n;avesq+=ave*ave;avesum+=ave;}delta=__avesq/n-avesum*avesum/n/n__;printf("varianceofthe%dthstuis%g\n",i+1,delta);}main(){floata[M][N];inti,j;for(i=0;i<M;i++)for(j=0;j<N;j++)scanf("%f",&a[i][j]);EachStudentEverageMark(a,M,N);EachCourseEverageMark(a,M,N);MaxScore(a,M,N);AverageVariance(a,M,N);}48、寫幾個函數(shù):①輸個職工的姓名和職工號;②按職工號由小到大順序排序,姓名順序也隨之調(diào)整;③要求輸入一個職工號,用折半法找出該職工的姓名,從主函數(shù)輸入要查找的職工號,輸出該職工姓名。#include<stdio.h>intnum[100];//職工號charname[100][100];//職工姓名intcount=0;voidinformationInput(void){//職工信息輸入inti,n;printf("howmanydoyouwanttoinput:\n");scanf("%d",&n);printf("pleaseenterthenameandnumbers:\n");for(i=count;i<n;i++){printf("%d:",i-count);scanf("%s",name[i]);scanf("%d",&num[i]);}count+=n;}voidsorting(){//按職工號進(jìn)行排序inti,j,t;charstr[100];for(i=0;i<count;i++)for(j=0;j<count-i-1;j++){if(num[j]>num[j+1]){t=num[j];strcpy(str,__name[j]__);num[j]=num[j+1];strcpy(name[j],__name[j+1]__);num[j+1]=t;strcpy(name[j+1],str);}}}voidsearch(intnb){//用職工號找出該職工的姓名intlow,high,mid;low=0;high=count-1;do{mid=(low+high)/2;if(num[mid]>nb)high=mid-1;elseif(num[mid]<nb)low=mid+1;elsebreak;}while(__low<=high__);if(low>high)printf("employeenotexist\n");elseprintf("%sisfound\n",name[mid]);}main(){intk;informationInput();sorting();printf("numtofind:");scanf("%d",&k);search(k);}49、寫一函數(shù),輸入一個十六進(jìn)制數(shù),輸出相應(yīng)的十進(jìn)制數(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(hex[i]>='0'&&hex[i]<='9')dec=__dec*16+(hex[i]-48)__;elseif(hex[i]>='a'&&hex[i]<='f')dec=__dec*16+hex[i]-‘a(chǎn)’+10__;elseif(hex[i]>='A'&&hex[i]<='F'

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論