已知在文件IN42.DAT中存有N个实数(N<200),函数ReadDat()读取这N个实数并存入数组xx中。请编制程序CalValue(),其功能要求:
(1)求出这N个实数的平均值aver。
(2)分别求出这N个实数的整数部分值之和sumint及其小数部分之和sumdec,最后调用函数WriteDat()把所求的结果输出到文件OUT42.DAT中。
注意;部分源程序已给出。
请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。
试题程序:
include<stdio.h>
include<conio.h>
define MAXNUM 200
float xx[MAXNUM];
int N=0;
double aver=0.0;
double sumint=0.0;
double sumdec=0.0;
int ReadDat( );
void WriteDat( );
void CalValue
{
}
void main( )
{
clrscr( );
if(ReadDat( ))
{
printf ("数据文件IN42.DAT不能打开! \007\n");
return;
}
CalValue ( );
printf ("文件IN42.DAT中共有实数%d个\n", N);
printf ("平均值=%.21f\n", aver);
printf ("整数部分=%.21f\n", sumint);
printf ("小数部分之和=%.21f\n", sumdec);
WriteDat( );
}
int ReadDat()
{
FILE *fp;
int j;
if((fp=fopen("in42.dat","r"))==NULL)
return 1;
while(!feof(fp))
{
fscanf (fp, "%f", &xx [N] );
if (xx[N] >0.001) N++;
}
fclose(fp);
return 0;
}
void WriteDat()
{
FILE *fp;
fp=fopen("OUT42.DAT","w");
fprintf(fP,"%d\n%.21f\n%.21f\n%.21f\n",N,aver,sumint,sumdec);
fclose(fp);
}
发布时间:2024-05-07正确答案:void CalValue( ) { int i; double xsum=0; for(i=0;iN;i++) { sumint=sumint+(int)xx[i]; /*求整数部分之和*/ x=xx[i]-(int)xx[i]; /*求每个数的小数部分*/ sumdec=sumdec+x; /*求小数部分之和*/ sum=sum+xx[i]; /*求N个数之和*/ } aver=sum/N; /*求N个数的平均数*/ }
void CalValue( ) { int i; double x,sum=0; for(i=0;iN;i++) { sumint=sumint+(int)xx[i]; /*求整数部分之和*/ x=xx[i]-(int)xx[i]; /*求每个数的小数部分*/ sumdec=sumdec+x; /*求小数部分之和*/ sum=sum+xx[i]; /*求N个数之和*/ } aver=sum/N; /*求N个数的平均数*/ } 解析:本题考查的知识点如下:
(1)循环结构的使用。
(2)强制类型转换。
将一个实数的整数部分和小数部分分开,这里使用的方法是强制类型转换法。强制类型转换是按照要求将表达式的值转换成指定的类型。将一个实数强制转换成整型数之后,其小数部分被去掉(不是四舍五入,而是直接删除)。对数组中的200个实数求和及平均值,可以使用循环结构。
若定义函数int*func() 则函数func的返回值为()。 A)一个实
若定义函数int*func(),则函数func的返回值为()。A)一个实数B)一个指向整型变量的指针C)一个指向整型函数的指针D)一个整型函数的入口地址请帮忙给出
答案解析若定义函数int*func() 则函数func的返回值为()。 A)一个实
若定义函数int*func(),则函数func的返回值为()。A)一个实数B)一个指向整型变量的指针C)一个指向整型函数的指针D)一个整型函数的入口地址
答案解析计算机中的数值信息分成整数和实数(浮点数)。实数之所以能表示
计算机中的数值信息分成整数和实数(浮点数)。实数之所以能表示很大或很小的数,是由于使用了()。A 阶码B 反码C 补码D BCD码
答案解析如果x是一个正的实数 保留两位小数 将千分位四舍五入的表达式
如果x是一个正的实数,保留两位小数、将千分位四舍五入的表达式是A.0 01*Int(x+0 05)B.0 01*Int(100*(x+0 005))C.0 01*Int(x+0 005)D.0 01*Int(100*(x+0 05))
答案解析下列哪种变量类型不能作为 For循环中的循环变量?() A.字符
下列哪种变量类型不能作为 For循环中的循环变量?()A 字符B 枚举C 子界D 实数请帮忙给出正确答案和分析,谢谢!
答案解析(14)以下选项中可用作C程序合法实数的是A).1e0 B)3.0e0.2
(14)以下选项中可用作C程序合法实数的是A) 1e0B)3 0e0 2C)E9D)9 12E请帮忙给出正确答案和分析,谢谢!
答案解析要将正实数 X 保留两位小数 若采用 INT 函数完成 则表达式
要将正实数 X 保留两位小数,若采用 INT 函数完成,则表达式为 ____ 10 ____
答案解析(14)以下选项中可用作C程序合法实数的是A).1e0 B)3.0e0.2 C)E9 D)9.12E
(14)以下选项中可用作C程序合法实数的是A) 1e0B)3 0e0 2C)E9D)9 12E
答案解析请补充main函数 该函数的功能是求方程ax2+bx+c=0的两个实数根
请补充main函数,该函数的功能是求方程ax2+bx+c=0的两个实数根。方程的系数a、b、c从键盘输入,如果判别式 (disc=b2-4ac)小于0,则要求重新输入a、b、c
答案解析在下列代数系统<A *>中 不是群的为A.A={1 10} *为模11乘法B.
在下列代数系统中,不是群的为A A={1,10},*为模11乘法B A={1,3,4,5,9},*为模11乘法C A为实数
答案解析Copyright © 2016-2023 114题库网(114158.com)All Rights Reserved.  免责声明 豫ICP备19007809号-5