|
3鱼币
文件IN.DAT中存有200个整数,函数read_dat(int inBuf[MAX])负责将这200个数读到数组inBuf[]中。请编制程序,要求:求出数组inBuf[]中最大数max及最大数的个数count和数组inBuf[]中能被3或7整除的数的算术平均值average(保留2位有效数字),结果输入到OUT.DAT中。
第一个不懂的是 fscanf(fp,"%d,",&inBuf[i*10+j]);里面”%d," 为什么d后面有逗号
第二个是执行不了,我有在桌面上建立一个IN.DAT文件啊,文件里面是这样的1,1,2,2,3,一共200个
不知怎么搞得
////////中间是我写的/////////
#include<stdlib.h>
#include<stdio.h>
#define MAX 200
void read_dat(int inBuf[MAX])
{
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[i*10+j]);
printf("%d",inBuf[i*10+j]);
}
printf("\n");
}
fclose(fp);
}
void main()
{
int count,inBuf[MAX],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[0];
for(i=1;i<200;i++)
{
if(inBuf[i]>max)
max=inBuf[i];
}
for(k=0;k<200;k++)
{
if(inBuf[k]==max)
count++;
}
int s=0;int t=0;
for(j=0;j<200;j++)
{
if(inBuf[j]%3==0||inBuf[j]%7==0)
{
s=s+inBuf[j];
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);
}
|
最佳答案
查看完整内容
%d后面逗号是为了读取通过逗号分隔的数字
按照您这么写,如果是用编程软件运行程序,IN.DAT得写在工程目录下,如果是直接执行exe,IN.DAT得放在exe同目录下,因为您写了相对路径。
如果IN.DAT放在桌面,这个exe也得放在桌面直接执行
|