小鸵鸟 发表于 2014-9-10 21:46:29

一本书里的C

文件IN.DAT中存有200个整数,函数read_dat(int inBuf)负责将这200个数读到数组inBuf[]中。请编制程序,要求:求出数组inBuf[]中最大数max及最大数的个数count和数组inBuf[]中能被3或7整除的数的算术平均值average(保留2位有效数字),结果输入到OUT.DAT中。

第一个不懂的是 fscanf(fp,"%d,",&inBuf);里面”%d,"   为什么d后面有逗号
第二个是执行不了,我有在桌面上建立一个IN.DAT文件啊,文件里面是这样的1,1,2,2,3,一共200个

不知怎么搞得
////////中间是我写的/////////


#include<stdlib.h>
#include<stdio.h>
#define MAX 200
void read_dat(int inBuf)
{
int i,j;
FILE * fp;
fp=fopen("IN.DAT","r");
for(i=0;i<20;i++)
{
for(j=0;j<10;j++)
{
   fscanf(fp,"%d,",&inBuf);
   printf("%d",inBuf);
}
printf("\n");
}
fclose(fp);
}
void main()
{
int count,inBuf,max;
float average;
FILE * fw;
int i,k;
long j;
system("CLS");
fw=fopen("OUT.DAT","w");
read_dat(inBuf);
average=0;count=0;max=0;j=0;
///////////////
max=inBuf;
for(i=1;i<200;i++)
{
if(inBuf>max)
   max=inBuf;
}
for(k=0;k<200;k++)
{
if(inBuf==max)
   count++;
}
int s=0;int t=0;
for(j=0;j<200;j++)
{
if(inBuf%3==0||inBuf%7==0)
{
   s=s+inBuf;
   t++;
}
}
average=s/t;
//////////////////
printf("\n\nmax=%d,count=%d,average=%6.2f\n",max,count,average);
fprintf(fw,"%d\n%d\n%6.2f\n",max,count,average);
fclose(fw);
}

漩涡鸣人 发表于 2014-9-10 21:46:30

%d后面逗号是为了读取通过逗号分隔的数字
按照您这么写,如果是用编程软件运行程序,IN.DAT得写在工程目录下,如果是直接执行exe,IN.DAT得放在exe同目录下,因为您写了相对路径。
如果IN.DAT放在桌面,这个exe也得放在桌面直接执行

選擇ゞ忘記 发表于 2014-9-10 22:01:29

{:1_1:}

澎儿 发表于 2014-9-11 19:28:15

强烈支持楼主ing……

少司命 发表于 2014-10-1 08:48:26

我新手
页: [1]
查看完整版本: 一本书里的C