早教吧 育儿知识 作业答案 考试题库 百科 知识分享
早教吧考试题库频道 --> 计算机类考试 -->计算机三级 -->

已知在文件in.dat中存有若干个(个数<200)四位非零整数,函数readdat()读取这若干个整数并存入数组

题目

已知在文件in.dat中存有若干个(个数<200)四位非零整数,函数readdat()读取这若干个整数并存入数组xx中。请编制函数calvflue(),其功能要求:①求出该文件中共有多少个正整数totnum;②求这些数右移1~6位,产生的一系列新数中含至少一个完全平方数(某个整数的平方)的个数totcnt,以及满足此条件的这些数(右移前的值)的算术平均值totpjz,最后调用函数writedat()把所求的结果输出到文件out.dat中。

部分源程序已给出。

请勿改动主函数main()、读数据函数readdat()和输出数据函数writedat()的内容。

include<stdio.h>

include<conio.h>

define MAXNUM 200

int xx[MAXNUM];

iht totnum=0;

iht totcnt=0;

double totpjz=0.0;

int readdat(void);

void writedat(void);

void calvalue(void)

{

}

void main ()

{

int i;

clrscr ();

for (i=0; i if (readdat ())

{

printf("Can't open the data file in.dat!\007\n");

return;

}

calvalue ();

printf ( "totnum=%d\n", totnum);

printf ( "totcnt=%d\n" , totcnt );

printf ( "totpj z=%. 21f\n", totpj z);

writedat ();

}

int readdat (void)

{

FILE *fp;

int i=0;

if( (fp=fopen ("in.dar", "r") )==NULL) return 1;

while ( ! feof (fp))

fscanf (fp, "%d, ", &xx [i++] ;

fclose (fp);

return 0;

}

void writedat (void)

{

FILE *fp;

fp=fopen ( "out. dar", "w" )

fprint f ( fp, "%d\n%d\n%. 21 f\n", totnum, totcnt, totpjz);

fclose (fp);

}

参考答案
正确答案:#include math.h> void calvalue(void) { int i j data sqt; for(i=0;i { if(!xx[i]) break; /*数据结束*/ if(xx[i]>0) totnum++; /*计数*/ for (j=1; j=6; j++) { data=(xx[i]>>); /*移位*/ sqt =(int) (sqrt ( (double) data) +0.5); /*求平方根并四舍五入取整*/ if(sqt*sqt == data) /*完全平方数*/ { totcnt++; totpjz+=xx[i]; /*计数求和*/ break; } } } totpjz/=totcnt; }
#include math.h> void calvalue(void) { int i, j, data, sqt; for(i=0;i { if(!xx[i]) break; /*数据结束*/ if(xx[i]>0) totnum++; /*计数*/ for (j=1; j=6; j++) { data=(xx[i]>>); /*移位*/ sqt =(int) (sqrt ( (double) data) +0.5); /*求平方根并四舍五入取整*/ if(sqt*sqt == data) /*完全平方数*/ { totcnt++; totpjz+=xx[i]; /*计数,求和*/ break; } } } totpjz/=totcnt; } 解析:类型:整数移位运算。
关键点:
(1)数据结束判断:分析main()和readdat(),得到xx[i]为有效数据的条件是0=xx[i]MAXNUM且xx[i]!=0。
(2)移位运算:>>,注意运算符优先级。
(3)完全平方数判断:可以开平方再平方与原数比较,也可以枚举出10000以内所有四位完全平方数再查表,解答中采用第一种,需要加上头文件math.h。
看了已知在文件in.dat中存有若...的网友还看了以下:

蒋正整数按如图所示的规律排列下去,.蒋正整数按如图所示的规律排列下去,若有序数对(n,m)表示第n 数学 2020-05-17 …

数学题T-T一个小数的整数部分比最小的三位数大12,将整数部分缩小1000倍就是它的小数部分,这个 数学 2020-06-06 …

我们称正整数为好数,如果的二进制表示中1的个数多于0的个数,如6=(110)2为好数,1984=( 数学 2020-07-18 …

整数属于有限小数的范围吗?像这样一道判断题:两个数相除的商不是有限小数就是无限小数由此引申:负整数 数学 2020-07-22 …

下列说法:(1)有理数可分为分数和整数两大类;(2)有理数除了正数就是负数;(3)既不存在最小的负 数学 2020-07-30 …

这算有理项吗?单项式中所有字母的指数和叫做它的次数.系数为有理数,次数为整数的项叫做有理项.那么, 数学 2020-07-30 …

把下面的数位顺序表填完整:数位整数部分小数点小数部分……千亿位亿位千万位十万位百位个位十分位千分位 数学 2020-07-31 …

把下面的数位顺序表填完整:数位整数部分小数点小数部分……千亿位亿位千万位十万位百位个位十分位千分位 其他 2020-07-31 …

1、三又五分之三的整数部分是(),分数部分是(),读作().2、分子()的假分数可以写成整数和真分 数学 2020-07-31 …

(1)一个正整数如果能表示为若干个正整数平方的算术平均值,就称这个正整数为“好整数”,如4=22+ 数学 2020-08-03 …