计算机二级C语言程序设计题

234 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情

计算机二级C语言程序设计题

题目:

请编写函数fun();其功能是:计算并输出给定10个数的方差:
e316ead9-d1ad-4ed8-b7e4-512f810da458.jpg 例如,给定的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括号中要用分号隔开。

引申:

  1. int是整数型,用于定义整数类型的数据 。
  2. float是单精度浮点型,能准确到小数点后六位 。
  3. double是双精度浮点型,能准确到小数点都十二位 。
  4. 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;
}

效果如下:

1.png

最后:

t01ffa78d80cfc10860.jpg