开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情
计算机二级C语言程序设计题
题目:
请编写函数fun();其功能是:计算并输出给定10个数的方差:
例如,给定的10个数为95.0、89.0、76.0、88.0、7.0、85.0、81.0、90.0、56.0,输出为s=11.730729.
#include <stdlib.h>
#include <math.h>
double fun(double x[10])
{
?
}
main()
{
void qwq();
double x[10]={95.0,89.0,76.0,65.0,88.0,72.0,85.0,81.0,90.0,56.0};
double s;
int i;
Printf("The original data is");
for(i=0; i<10; i++)
{
printf("%6.1f", x[i]);
}
printf("\n\n");
s=fun(x);
printf("s=%f\n\n", s);
printf("\n\n");
NONO();
system("pause");
}
void NONO()
FILE *rf, *wf;
int i, j;
double s, x[10];
rf=fopen("in.dat", "r");
wf=fopen("out.dat", "w");
for(i=0; i<8; i++)
{
for(j=0; j<10; j++)
{
fscanf(rf, "%lf", &x[j]);
}
s=fun(x);
fprintf(wf, "%lf\n", s);
}
fclose(rf);
fclose(wf);
}
题目要求:
在这道题中我们首先需要明白题目的要求:计算并输出给定10个数的方差.我们需要在?的地方用fun()函数写出具体的代码使得此题可以运行成功。
解题思路:
主函数qwq():通过调用子函数fun()来进行输出。子函数NONO():用于打开文件输入数据。 在fun()函数中:我们先用for循环计算出这10个数的相加的和然后计算出这10个数的平均数X’,平均数用avg();然后再利用for循环求取每个数减去平均数的平方的和,最后平方根用sqrt()求出这10个数的方差;
需注意的是:
题目给定的数字保留一位小数所以要用double并且初始值要保留一位小数.每一句代码写完用分号结束;for循环结束后不需要分号但for括号中要用分号隔开。
引申:
- int是整数型,用于定义整数类型的数据 。
- float是单精度浮点型,能准确到小数点后六位 。
- double是双精度浮点型,能准确到小数点都十二位 。
- char是字符型,用于定义字符类型的数据。
具体解题代码如下:
int i;
double avg=0.0, sum=0.0, abs=0.0, fc;
for(i=0; i<10; i++)
{
sum+=x[i];
}
avg=sum/10;
for(i=0; i<10;i++)
{
abs+=(x[i]-avg)*(x[i]-avg);
}
fc=sqrt(abs/10);
return fc;
}