右移1位,奇数
别妄想泡我
722次浏览
2020年07月30日 14:59
最佳经验
本文由作者推荐
破损的英语-威胁是什么意思
注意:部分源程序已给出。
请勿改动主函数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)
{
int i; /*定义循环控制变量*/
int data; /*用于保存处理后产生的新数*/
for(i=0;i<200;i++) /*逐个取数组xx中的数进行统计*/
if(xx[i]>0) /*判断是否正整数*/
{
totNum++; /*统计正整数的个数*/
data=xx[i]>>1; /*将数右移一位*/
if(data%2==1) /*如果产生的新数是奇数*/
{
totCnt++;
totPjz+=xx[i];
}
} /*统计这些数的个数,并将满足条件的原数求和*/
totPjz/=totCnt; /*求满足条件的这些数(右移前的值)的算术平均值*/
}
void main()
{
int i;
system("CLS");
for(i=0;i
if(ReadDat())
{
printf("数据文件不能打开!007
");
return;
}
CalValue();
printf("文件中共有正整数=%d个
",totNum);
printf("符合条件的正整数的个数=%d个
",totCnt);
printf("平均值=%.2lf
",totPjz);
WriteDat();
}
int ReadDat(void)
{
FILE *fp;
int i=0;
if((fp=fopen("","r"))==NULL) return 1;
while(!feof(fp))
{
fscanf(fp,"%d",&xx[i++]);
}
fclose(fp);
return 0;
}
void WriteDat(void)
{
FILE *fp;
fp=fopen("","w");
fprintf(fp,"%d
%d
%.2lf
",totNum,totCnt,totPjz);
fclose(fp);
}