请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
#include
double fun(double x)
{double f, t; int n;
/**********found**********/
f = 1.0+___1___;
t = x;
n = 1;
do {
n++;
/**********found**********/
t *= x/___2___;
/**********found**********/
f += ___3___;
} while (fabs(t) >= 1e-6);
return f;
}
main()
{double x, y;
x=2.5;
y = fun(x);
printf("\nThe result is :\n");
printf("x=%-12.6f y=%-12.6f \n", x, y);
}
解题答案:
/**********第一空**********/
f = 1.0+x;
/**********第二空**********/
t *= x/n;
/**********第三空**********/
f += t;
****************************************** [NextPage] 二、改错题:给定程序MODI1.C中函数fun的功能是: 计算n的5次方的值(规定n的值大于2、
小于8),通过形参指针传回主函数;并计算该值的个位、十位、百位上数字之和
作为函数值返回。
例如,7的5次方是16807, 其低3位数的和值是15。
请改正函数fun中指定部位的错误, 使它能得出正确的结果。
注意: 不要改动main函数, 不得增行或删行, 也不得更改程序的结构!
给定源程序:
#include
#include
int fun(int n ,int *value)
{int d,s,i;
/**************found**************/
d=0; s=0;
for(i=1; i<=5; i++) d=d*n;
*value=d;
for(i=1; i<=3; i++)
{s=s+d%10;
/**************found**************/
d=d\10;
}
return s;
}
main()
{int n, sum, v;
do
{printf("\nEnter n(2
while(n<=2||n>=8);
sum=fun(n,&v);
printf("\n\nThe result:\n value=%d sum=%d\n\n", v,sum);
}
解题答案:
/**************found**************/
d=1; s=0;
/**************found**************/
d=d/10;
******************************************
[NextPage] 三、程序题:请编写函数fun, 其功能是: 计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和。
例如, 给定数组中的9个元素依次为12.0、34.0、4.0、23.0、34.0、45.0、
18.0、3.0、11.0, 输出应为: s=35.951014。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
给定源程序:
#include
#include
double fun(double x[9])
{
}
main()
{double s,a[9]={12.0,34.0,4.0,23.0,34.0,45.0,18.0,3.0, 11.0};
int i;
printf("\nThe original data is :\n");
for(i=0;i<9;i++)printf("%6.1f",a[i]); printf("\n\n");
s=fun(a);
printf("s=%f\n\n",s);
NONO();
}
NONO()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
FILE *rf, *wf ; int i, j ; double s, a[9] ;
rf = fopen("in.dat","r");
wf = fopen("out.dat","w");
for(i = 0 ; i < 5 ; i++) {
for(j = 0 ; j < 9 ; j++) fscanf(rf, "%lf", &a[j]);
s = fun(a);
fprintf(wf, "%lf\n", s);
}
fclose(rf); fclose(wf);
}
参考答案:
double fun(double x[9])
{
int i ;
double avg=0.0,sum=0.0;
for (i=0;i<8;i++) {
avg=(x[i]+x[i+1])/2;
sum+=sqrt(avg);
}
return sum;
}
| 广告合作:400-664-0084 全国热线:400-664-0084 Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号 珠峰网 版权所有 All Rights Reserved
|