c语言绿皮书第三版第八章习题
1.习题8.1#includestdio.hvoidmain(){inta,b,t;intmax,min;intMaxgys(int,int);intMingbs(int,int);scanf(%d%d,a,b);if(ab){ta;ab;bt;}maxMaxgys(a,b);minMingbs(a,b);printf(max%d\nmin%d\n,max,min);}// 最大公约数intMaxgys(inta,intb){intresult;inti;for(i1;ib;i){if(a%i0b%i0)resulti;}returnresult;}// 最小公倍数intMingbs(inta,intb){intresult;inti;for(ia;!(i%a0i%b0);i);resulti;returnresult;}2.习题8.2#includestdio.h#includemath.hintmain(){doublea,b,c;// 求判别式doubledt;// 两个根相等doublef1(double,double);// 两个根不相等doublef2(double,double,double);voidf3();scanf(%lf%lf%lf,a,b,c);dtb*b-4*a*c;if(dt0.0)f1(a,b);elseif(dt0)f2(a,b,dt);elsef3();return0;}doublef1(doublea,doubleb){doublex1,x2;x1x2-b/(2*a);printf(x1x2%lf\n,x1);}doublef2(doublea,doubleb,doubledt){doublex1,x2;x1(-bsqrt(dt))/(2*a);x2(-b-sqrt(dt))/(2*a);printf(x1%lf\nx2%lf\n,x1,x2);}voidf3(){printf(No\n);}3.习题8.14#includestdio.hintmain(){doubleaa[10][5];voidrenpjf(doubleaa[][5],int);voidkepjf(doubleaa[][5],int);voidmax(doubleaa[][5]);inti,j;for(i0;i10;i)for(j0;j5;j)scanf(%lf,aa[i][j]);for(i0;i10;i){for(j0;j5;j)printf(%.2lf\t,aa[i][j]);putchar(\n);}printf(%d %d\n,i,j);renpjf(aa,10);kepjf(aa,5);max(aa);return0;}// 计算每个学生的平均分voidrenpjf(doubleaa[][5],intn){inti,j;voidfc(doublerp[],int);doublerp[10]{0};for(i0;i10;i)for(j0;j5;j)rp[i]aa[i][j]/5;fc(rp,10);printf(\nmei ge xue sheng ping jun fen:\n);for(i0;in;i)printf(rp[%d]%f\n,i,rp[i]);}// 计算每门课的平均分voidkepjf(doubleaa[10][5],intn){inti,j;doublekp[5]{0};for(i0;i10;i)for(j0;j5;j)kp[j]aa[i][j]/10;printf(mei men ke de ping jun fen:\n);for(i0;i5;i)printf(kp[%d]%f\n,i,kp[i]);}// 计算最高分voidmax(doubleaa[10][5]){inti,j;doublemax0;intstu,ke;for(i0;i10;i)for(j0;j5;j)if(maxaa[i][j]){maxaa[i][j];stui;kej;}printf(\n\nzui gao de cheng ji: %f\n,max);printf(xue sheng: %d\n,stu);printf(ke cheng: %d\n\n,ke);}// 计算方差voidfc(doublerp[10],intn){inti;doublesum10,sum20;doublefc;for(i0;i10;i)sum1rp[i];for(i0;i10;i)sum2rp[i]*rp[i];fcsum2/n-(sum1/n)*(sum1/n);printf(\nfang cha: %f\n,fc);}5.习题8.15#includestdio.hintmain(){inta[3];charb[3][50];inti;intgh;inttemp;voidghpaixu(inta[],charb[][50]);for(i0;i3;i){printf(Please input name: \n);scanf(%s,b[i]);printf(Please input gong hao: \n);scanf(%d,a[i]);}printf(Name\t\tGonghao\n);for(i0;i3;i){printf(%s,b[i]);printf(\t\t);printf(%d,a[i]);putchar(\n);}// 工号排序ghpaixu(a,b);printf(\n\n);for(i0;i3;i){printf(%s\t\t,b[i]);printf(%d,a[i]);printf(\n);}putchar(\n);printf(Please input gong hao:\n);// 输入要查询的工号scanf(%d,gh);for(i0;i3;i){if(gha[i]){tempi;break;}}printf(%s,b[temp]);printf(\nOK!!!\n);return0;}// 按照工号排序voidghpaixu(inta[],charb[][50]){intt;chartt;inti,j,k;for(i0;i2;i)for(j0;j2-i;j)if(a[j]a[j1]){ta[j];a[j]a[j1];a[j1]t;for(k0;k50;k){ttb[j][k];b[j][k]b[j1][k];b[j1][k]tt;}}}6.习题8.16#includestdio.h#includemath.hintmain(){inti,t,j0;voidzh(int,int);scanf(%x,i);ti;while(t){tt1;j;}if(j%40){jj/4;}else{jj/41;}zh(i,j);return0;}voidzh(inti,intj){intsum0;intt;while(j){ti/(int)ceil(pow(16,j-1));ii-t*(int)ceil(pow(16,j-1));tt*(int)ceil(pow(16,j-1));sumt;j--;}printf(sum%d\n,sum);}7.习题8.17#includestdio.h#includemath.hintmain(){intn;intwei;intfun(int);voidchange(int,int);printf(Please input number:\n);scanf(%d,n);printf(The number is %d\n,n);weifun(n);printf(wei:%d\n,wei);printf(character:\n);change(n,wei);putchar(\n);return0;}intfun(inta){inti0,j;inttemp;tempa;for(j1;temp/j!0;j*10){i;}returni;}voidchange(intx,inti){ints;sx/(int)pow(10,i-1);s48;printf(%c,s);if(i!1){change(x%(int)pow(10,i-1),i-1);}}