- 相關(guān)推薦
9月計算機三級網(wǎng)絡(luò)技術(shù)上機模擬題及答案
已知在文件IN100.DAT中存有N個實數(shù)(N<200),函數(shù)ReadDat( )讀取這N個實數(shù)并存入數(shù)組xx中。請編制程序CalValue( ),其功能要求:
(1)求出這N個實數(shù)的平均值aver。
(2)分別求出這N個實數(shù)的整數(shù)部分值之和sumint及其小數(shù)部分之和sumdec,最后調(diào)用函數(shù)WriteDat( )把所求的結(jié)果輸出到文件OUT100.DAT中。
注意:部分源程序已給出。
請勿改動主函數(shù)main( )、讀函數(shù)ReadDat( )和寫函數(shù)WriteDat( )的內(nèi)容。
試題程序:
#include
#include
#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( )
{
system("CLS");
if(ReadDat( ))
{
printf("數(shù)據(jù)文件IN100.DAT不能打開!\007\n");
return;
}
CalValue ( );
printf("文件IN100.DAT中共有實數(shù)%d個\n",N);
printf("平均值=%.2lf\n",aver);
printf("整數(shù)部分之和=%.2lf\n",sumint);
printf("小數(shù)部分之和=%.2lf\n",sumdec);
WriteDat( );
}
int ReadDat()
{
FILE *fp;
if((fp=fopen( "in100.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("OUT100.DAT","w");
fprintf(fp,"%d\n%.2lf\n%.2lf\n%.2lf\n",N,aver,sumint,sumdec);
fclose(fp);
}
【參考答案】
void CalValue( )
{
int i; /*定義循環(huán)控制變量*/
double sum=0.0; /*定義存儲所有數(shù)的和值的變量*/
for(i=0;i {
sumint+=(int)xx[i]; /*求整數(shù)部分之和*/
sumdec+=(xx[i]-(int)xx[i]); /*求小數(shù)部分之和*/
sum=sum+xx[i]; /*求N個數(shù)之和*/
}
aver=sum/N; /*求N個數(shù)的平均數(shù)*/
}
【解析】要將一個實數(shù)的整數(shù)部分和小數(shù)部分分開,這里使用的方法是強制類型轉(zhuǎn)換法。強制類型轉(zhuǎn)換是按照要求將表達式的值轉(zhuǎn)換成指定的類型。將一個實數(shù)強制轉(zhuǎn)換成整型數(shù)之后,其小數(shù)部分被去掉(不是四舍五入,而是直接刪除)。用該實數(shù)減去轉(zhuǎn)換后的整數(shù),就得到了小數(shù)部分的值。
在本題中,通過一個for循環(huán)分別計算整數(shù)和小數(shù)部分的累加和,以及這N個實數(shù)的和。最后求出這N個實數(shù)的平均值。
【9月計算機三級網(wǎng)絡(luò)技術(shù)上機模擬題及答案】相關(guān)文章:
9月計算機三級網(wǎng)絡(luò)技術(shù)模擬題及答案06-24
計算機三級網(wǎng)絡(luò)技術(shù)上機模擬題及答案10-12
2015年9月計算機三級網(wǎng)絡(luò)技術(shù)上機試題及答案09-08
最新2016計算機三級網(wǎng)絡(luò)技術(shù)上機模擬題及答案09-10
2016年3月計算機三級網(wǎng)絡(luò)技術(shù)上機題及答案09-19
2017年9月計算機三級網(wǎng)絡(luò)技術(shù)模擬題(含答案)08-01
計算機三級網(wǎng)絡(luò)技術(shù)上機題庫及答案05-13