已知在数据文件in.dat中存有若干个(个数

admin2013-12-10  21

问题 已知在数据文件in.dat中存有若干个(个数<200)四位数字的正整数.函数ReadDat()读取这若干个正整数并存人数组xx中。请编写函数CalValue().其功能要求:①求出这个文件中共有多少个正整数totNum。②求这些正整数右移1位二进制位后,产生的新数是奇数的数的个数totCnt,以及满足此条件的这些正整数(右移前的值)的算术平均值totPjz。最后通过main()函数调用函数WriteDat().把所求的结果输出到文件out.dat中。
【试题程序】
    #include
    #define MAXNUM 200
    int xx[-MAXNUM];
    int totNum=0;    /*文件IN.DAT
中共有多少个正整数*/
    int totCnt=0;    /*符合条件的正
整数的个数*/
    double totPjz=0.0;  /*平均值*/
    int ReadDat(void),
    void WriteDat(void);
    void CalValue(void)
    {
    }
    void main()
    {
    int i;
    for(i=0;i=0;
    if(ReadDat()){
    printf(“数据文件IN.DAT不能打开!\007\n”);
    return;
    }
    CalValue();
    printf(“文件IN.DAT中共有正整数=%d个\n”,totNum);
    printf(”符合条件的正整数的个数=%d个\n”,totCnt);
    printf(”平均值=%.21f\n”.totPjz);
    WriteDat();
    }
    int ReadDat(void)
    {
    FILE*fp;
    int i=0;
    if((fp=fopen(“in.dat”。”r”))==N ULL)
    return 1;
    while(!feof(fp)){
    fscanf(fp。“%d,”,&xx[i++]);
    }
    felose(fp);
    return 0;
    }
    void WriteDat(void)
    {
    FILE*fp;
    fp=fopen(“out.dat”,“w”);
    fprintf(fp,“%d\n%d\n%.21f\n”,totNum,totCnt,totPjz);
    fclose(fp);
    }

选项

答案void CalValue(void) {int i; /*定义变量*/ for(i=0;i0) {totNum++; if((xxEi]>>1)%2一一1) {totCnt++; totPjz+=xxEi-1; } } totPjz/一totCnt; /*求平均值*/ }

解析
转载请注明原文地址:https://jikaoti.com/ti/Tr37FFFM
0

随机试题
最新回复(0)