C语言程序设计 - 第三版 - 谭浩强主编第6—8章课后习题答案(6)

2019-01-05 12:51

}

double f1(float a,float b,float c,double x) {

return 3*a*x*x+2*b*x+c; }

double root(float a,float b,float c,float d,double x) {

double x0; do

{ x0=x;

x=x0-f(a,b,c,d,x0)/f1(a,b,c,x0); }

while(fabs(x-x0)>1e-5); return x; }

void main() {

float a, b, c, d; double x;

a=1;b=2;c=3;d=4; x=1;

x=root(a,b,c,d,x);

printf (\}

8.13用递归方法求n阶勒让德多项式的值,递归公式为: #include \

double P(double x, int n) { if(n==0) return 1; if(n==1) return x;

if(n>1) return ((2*n-1)*x-P(x,n-1)-(n-1)*P(x,n-2))/n; }

void main()

{ double x; int n;

double P(double x, int n); scanf(\ printf(\

8.14输入10个学生5门课的成绩,分别用函数实现下列功能: (1)计算每个学生的平均分; (2)计算每门课的平均分;

(3)找出所有50个分数中的最高的分数所对应的学生和课程; (4)求出平均分方差;

其中, 为某一学生的平均分。

解:函数input_stu的执行结果是给全程变量学生成绩数组score各元素输入初值。

函数aver_stu的作用是计算每个学生的平均分,并将结果赋给全程变量数组a_stu中各元素。 函数aver_cour的作用是计算每门课的平均成绩,计算结果存入全程变量数组a_cour。 函数highest的返回值是最高分,r,c是两个全局变量,分别代表最高分所在的行,列号。 函数s_var的返回值是平均分的方差。 程序如下: 【程序一】

#include #include # define N 10 # define M 5

float s_var(float a_stu[N]);

void highest(int score[N][M]); /* 函数原型声明 */ void input_stu(int score[N][M]); /* 函数原型声明 */ void aver_stu(int score[N][M],float a_stu[N]); /* 函数原型声明 */ void aver_cour(int score[N][M],float a_cour[M]); /* 函数原型声明 */

void main() {

int score [N][M];

float a_stu [N],a_cour[M]; /*各个学生平均分,各门课程平均分*/ int i,j;

input_stu(score ); /* 函数调用,输入10个学生成绩 */ aver_stu(score,a_stu); /* 函数调用,计算10个学生平均成绩 */ aver_cour(score,a_cour); /* 函数调用,计算5门课平均成绩 */ printf(\ cour1 cour2 cour3 cour4 cour5 aver\ for (i=0;i

printf(\ /* 输出学生序号 */

for (j=0;j

printf(\ /* 输出某个学生的平均成绩 */ }

printf(\

for (j=0;j

highest(score); /* 调用函数,求最高分和它属于哪个学生,哪门课 */ printf(\ /* 调用函数,计算和输出方差 */ }

void input_stu(int score[N][M]) /* 输入10个学生成绩的函数 */ {

int i,j;

for (i=0;i

printf(\ /* 学生号从1开始 */ for (j=0;j

scanf(\ }}

void aver_stu(int score[N][M],float a_stu[N]) /* 计算各个学生平均成绩的函数 */ {

int i,j; float s;

for (i=0;i

s=0;

for (j=0;j

void aver_cour(int score[N][M],float a_cour[M]) /* 计算各门课的平均成绩的函数 */ {

int i,j; float s;

for (j=0;j

s=0;

for (i=0;i

void highest(int score[N][M]) /* 求最高分和它属于哪个学生,哪门课的函数 */ {

int high;

int i,j,row,column; high=score[0][0]; for (i=0;i

for (j=0;jhigh) {

high=score[i][j];

row=i+1; /* 数组行号i从0开始,学生号r从1开始,故row=i+1 */ column=j+1; /*数组列号j从0开始,学生号c从1开始,故column=j+1 */ }

printf(\}

float s_var(float a_stu[N]) /* 求方差的函数 */

{

int i,j;

float sumx,sumxn; sumx=0.0; sumxn=0.0;

for (i=0;i

sumx+=a_stu[i]*a_stu[i]; sumxn+=a_stu[i]; }

return (sumx/N-(sumxn/N)*(sumxn/N)); }【程序二】

#include #include

# define N 10 /*学生人数*/ # define M 5 /*课程数*/

void input_stu(int score[N+1][M+1]) /* 该函数的功能输入10个学生成绩 */ {

int i,j;

for (i=0;i

scanf(\ }

}void aver_stu(int score[N+1][M+1],int a_stu[N]) /* 该函数的功能:计算每个学生的平均成绩 */ {

int i,j;

for (i=0;i

score[i][M]=0; for (j=0;j

score[i][M]+=score[i][j]; score[i][M]=score[i][M]/M; a_stu[i]= score[i][M]; } }

void aver_cour(int score[N+1][M+1]) /* 该函数的功能:计算每门课的平均成绩 */ {

int i,j;

for (j=0;j

score[N][j]=0;

for (i=0;i

score[N][j]+=score[i][j]; score[N][j]=score[N][j]/N; } }

void highest(int score[N+1][M+1]) /* 求最高分和它属于哪个学生,哪门课的函数 */ {

int max;

int i,j,row,col; max=score[0][0]; for (i=0;i

for (j=0;jmax) {

max=score[i][j]; row=i+1; col=j+1; }

printf(\}

float s_var(int a_stu[N]) /* 求方差的函数 */ {

int i,j;

float sumx,sumxn; sumx=0.0; sumxn=0.0;

for (i=0;i

sumx+=a_stu[i]*a_stu[i]; sumxn+=a_stu[i]; }

return (sumx/N-(sumxn/N)*(sumxn/N)); }

void output_stu(int score[N+1][M+1]) {

int i,j;

printf(\ Students Reprot\\n \ /* 输出结果*/ for(i=0;i<33;i++) printf(\ printf(\

for(i=0;i<=N;i++) { for(j=0;j<=M;j++) if(i


C语言程序设计 - 第三版 - 谭浩强主编第6—8章课后习题答案(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:CAXA教案(改编) - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: