计算机等级考试三级编程解析八

文章作者 100test 发表时间 2007:03:10 18:23:11
来源 100Test.Com百考试题网


八、数字或字符移位后的计算

  已知在文件in.dat中存有若干个(个数<200)四位数字的正整数,函数readdat
()读取这若干个正整数并存入数组xx中。请编制函数calvalue(),其功能要求:1、求出
这文件中共有多少个正整数totnum;2、求这些数右移1位后,产生的新数是偶数的数的
个数totcnt,以及满足此条件的这些数(右移前的值)的算术平均值totpjz,最后调用
函数writedat()把所求的结果输出到文件out.dat中。
部分源程序已给出。
请勿改动主函数main()、读数据函数readdat()和输出数据函数writedat()的内容。
#include
#include
#define MAXNUM 200
int xx[MAXNUM].
int totnum=0.
int totcnt=0.
double totpjz=0.0.

int readdat(void).
void writedat(void).

void calvalue(void)
{

}

void main()
{
int i.
clrscr().
for(i=0.iif(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("totpjz=%.2lf\n",totpjz).
writedat().
}

int readdat(void)
{
FILE *fp.
int i=0.
if((fp=fopen("in.dat","r"))==NULL) return 1.
while(!feof(fp))
fscanf(fp,"%d,",&.xx[i ]).
fclose(fp).
return 0.
}

void writedat(void)
{
FILE *fp.
fp=fopen("out.dat","w").
fprintf(fp,"%d\n%d\n%.2lf\n",totnum,totcnt,totpjz).
fclose(fp).
}

/* 注:本题用if(!xx[i]) break.来判断xx[i]是否为0,若是则跳出循环。亦是较简单。*/
void calvalue(void)
{
int i,data.
for(i=0.i{if(!xx[i]) break.
if(xx[i]>0) totnum .
data=xx[i]>>1.
if(data%2==0)
{totcnt .
totpjz =xx[i].
}
}
totpjz/=totcnt.
}

相关文章


计算机等级考试三级编程解析七
计算机等级考试三级编程解析八
计算机等级考试三级编程解析六
计算机等级考试三级编程解析五
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛