| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 574 人关注过本帖
标题:一个c语言上机题目
只看楼主 加入收藏
wwwjw
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-12-28
结帖率:33.33%
收藏
 问题点数:0 回复次数:2 
一个c语言上机题目
这是一个c语言上机题目,大致如下:
在文件里存有4位数的整数<200个,编个函数实现
1.统计一下这些数字里面有多少个正整数,把数目存到totNum,
2.这些数右移一位后,有多少个偶数,并把符合条件的数目存到totCnt,再求一下符合条件的数的平均值,存到totPjz
源程序:
#include <stdio.h>
#include <conio.h>
#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;
 clrscr();
 for(i=0;i<MAXNUM;i++)xx[i]=0;
 if(ReadDat()){
   printf("数据文件IN.DAT不能打开!\007\n");
   return;
 }
 CalValue();
 printf("文件IN.DAT中共有正整数=%d个\n",totNum);
 printf("符合条件的正整数的个数=%d个\n",totCnt);
 printf("平均值=%.2f\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%6.2f\n",totNum,totCnt,totPjz);
fclose(fp);
}

在函数里面主要是编写
void CalValue(void)
{
}
这个函数实现,下面是我写的:
void CalValue(void)
{int i,ten;
for(i=0;i<MAXNUM;i++)
 { if(xx[i]>0)
    { totNum++;
      ten=xx[i]%100/10;
      if(ten%2==0) {totCnt++; totPjz=(totPjz+xx[i])/totCnt;}

     }
 }
}
,在win-tc里面编译显示成功,但交卷后却显示得分33,我不明白究竟是怎么回事,希望得到大家的指点!
搜索更多相关主题的帖子: c语言 int 整数 void 
2008-03-25 12:24
zhao8882407
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-1-10
收藏
得分:0 
楼主是怎么把这个数右移一位的呢
按位右移的话,
ten = xx[i]>>1;]
2008-03-25 15:49
zhao8882407
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-1-10
收藏
得分:0 
这样改看对不,呵呵
ten=xx[i]>>1;
  float temp;
  if(ten%2==0)
   {totCnt++;
    temp+=ten;
   }
for循环外计算totPjz
   totPjz=temp/totCnt;
2008-03-25 16:03
快速回复:一个c语言上机题目
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015833 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved