已知文件IN.DAT中存有300个四位数,并已调用读函数readDat( )把这些数存入数组a中,请编制一个函数isValue( ),其功能是:求出所有这些四位数是素数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序。最后main( )函数调用写函数writeDat( )把数组b中的数输出到OUT.DAT文件。
例如,5591是素数,则该数满足条件存入数组b中,且个数cnt=cnt+1。
9812是非素数,则该数不满足条件忽略。
注意:部分源程序存在文件PROG1.C文件中。程序中已定义数组:a[300],b[300],已定义变量:cnt。请勿改动数据文件IN.DAT中的任何数据、主函数main( )、读函数readDat( )和写函数writeDat( )的内容。
[试题程序]
#include
int a[300],b[300],cnt=0;
void readDat( );
void writeDat( );
void jsValue( );
int isP(int m)
int i;
for(i=2;i<m;i++)
if(m%i==0)return 0;
return 1;
void jsValue( )
void main( )
int i;
readDat( );
jsValue( );
writeDat( );
printf("cnt=%d/n",cnt);
for(i=0;i<cnt;i++)
printf(“b[%d]=%d/n”,i,b[i]);
void readDat( )
FILE *fP;
int i;
fp=fopen(“in.dat”,"r");
for(i=0;i<300;i++)
fscanf(fp,“%d,”,&a[i]);
fclose(fp);
void writeDat( )
FILE *fp;
int i;
fp=fopen("out.dat","w");
fprintf(fp,"%d/n",cnt);
for(i=0;i<cnt;i++)
fprintf(fp,"%d/n",b[i]);
fclose(fp);
void jsValue()
{int i,j; /*定义变量*/
int temp;
for(i=0;i<C00;i++) /*统计筛选*/
if(isP(a[i]))
b[cnt++]=a[i];
for(i=0;i<cnt-A;i++) /*选择法排序*/
for(j=i+A;j<cnt;j++)
if(b[i]>b[j])
{ temp=b[i];
b[i]=b[j];
b[j]=temp;
}
}[解析] 本题要求统计已知数中素数的个数并对这些素数进行排序。依据题意,应依次从数组a中取出每一个四位数,用isP()函数判断其是否是素数,如果是素数,那么存入数组b中,同时计数器变量cnt加1,最后对数组b进行用选择法进行排序。
对10个候选人进行选举,现有一个100条记录的选票数据文件IN.DAT,其数据存放的格式是每条记录的长度均为10位,第一位表示第一个候选人的选中情况,第二位表示第二个候选人的选中情况,依次类推。每一位内容均为字符“0”或“1”,“1”表示此人被选中,“0”表示此人未被选中,若一张选票选中人数大于5时被认为无效的选票则不作统计。给定函数ReadDat( )的功能是把选票数据读入字符串数组XX。请编制函数CountRs( )来统计每个候选人的选票数并把得票数依次存入yy[0]到yy[9]中,即第一个候选人的得票数存入yy[0]中,依次类推。最后调用函数WriteDat( )把结果yy输出到文件OUT.DAT中。
注意:部分源程序存放在PROG1.C中。请勿改动主函数main( )、读函数ReadDat( )和输出函数WriteDat( )的内容。
[试题程序]
#include
#include
char XX[100][11];
int yy[10];
int ReadDat(void);
void WriteDat(void);
void CountRs(void)
/*每一条记录的选票情况已作为字符串存入XX[i]为起始地址的存储单元内*/
/*例如,第10条记录的第一个候选人的选中情况的条件是if(xx[9][0]=’1’)*/
/*该提示仅供解题参考,考生也可用其他方法解题*/
void main( )
int i;
for(i=0;i<10;i++)yy[i]=0;
if(ReadDat( ))
printf("选票数据文件IN.DAT不能打开!/007/n");
return;
CountRs( );
WriteDat( );
int ReadDat(void)
FILE *fp;
int i;
char tt[13];
if((fp=fopen("in dac","r"))==NULL)
return 1;
for(i=0;i<100;i++)
if(fgets(tt,13,fp)==NULL)return 1;
memcpy(xx[i],tt,10);
XX[i][10]=0;
fclose(fp);
return 0;
void WriteDat(void)
FILE *fp;
int i;
fp=fopen("out.dat","w");
fori=0;i<10;i++)
fprintf(fp,"%d/n",yy[i]);
printf("第%d个人的选票数=%d/n",i+1,yy[1]);
fclose(fp);
void CountRs(void)
{int i,j,cnt; /*定义变量*/
for{i=0;i<100;i++) /*逐张处理选票*/
{ cnt=0;
for(j=0;j<10;j++) /*统计选中人数*/
if(xx[i][j]==’l’)
cnt++;
if(cnt>5) /*判断条件*/
continue;
for(j=0;j<10;j++) /*统计得票*/
if(xx[i][j]==’l’)
yy[j]++;
}
}
函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中;请编制函数CharConvA( ),其函数的功能是:以该文章中的行为单位把字符串中的最后一个字符的ASCⅡ值右移4位二进制位,高位补0后加最后第二个字符的ASCⅡ值,得到最后一个新的值,最后第二个字符的ASCⅡ值右移4位二进制位,高位补0后加最后第三个字符的ASCⅡ值,得到最后第二个新的值,依次类推一直处理到第二个字符。注意:第一个新的值与上述处理不同,第一个字符的ASCⅡ值加原最后一个字符的ASCⅡ值,得到第一个新的值。得到的新值分别存放在原字符串对应的位置上,之后把已处理的字符串仍按行重新存入数组xx中。最后main( )函数调用函数WriteDat( )把结果XX输出到OUT.DAT文件中。原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格,并也按它的ASCⅡ值作以上处理。
注意:部分源程序存放在PROG1.C中。请勿改动主函数main( )、读数据函数ReadDat( )和输出数据函数WriteDat( )的内容。
[试题程序]
#include
#include
char XX[50][80];
int maxline=0;/*文章的总行数*/
int ReadDaf(void);
void WriteDat(void);
void CharConvA(void)
void main( )
if(ReadDat( ))
prinff(“数据文件IN.DAT不能打开!/n/007”);
return;
CharConvA( );
WriteDat( );
int ReadDat(void)
FILE *fp;
int i=0;
char *p;
if((fp=fopen("in.dat","r"))==NULL)
return 1;
while(fgets(xx[i],80,fp)!=NULL)
p=strchr(xx[i],’/n’);
if(p) *p=0;
i++;
maxline=i;
fclose(fp);
return 0;
void WriteDat(void)
FILE *fp;
int i;
fp=fopen("out.dat","w");
for(i=0;i<maxline;i++)(
printf("%s/n",xx[i]);
fprintf(fp,"%s/n",xx[i]);
fclose(fp);
void CharConvA(void)
{int i,j; /*定义变量*/
int temp;
for(i=0;i<maxline;i++)
{ temp=xx[i][strlen(xx[i])-A];
/*字符替代*/
for(i=strlen(xx[i])-A;j>0;j--)
xx[i][j]=(xx[i][j]>>D)+xx[i][j-A];
xx[i][0]+=temp;
}
}[解析] 本题要求将一篇英文文章中的每个字符移位后,再按一定的步骤进行处理。依据题意,应逐行逐字取得英文文章中的所有字符,将其ASCⅡ值按规定的步骤(ASCⅡ值右移4位二进制位,高位补0后加前一个字符的ASCⅡ值,得到一个新的值,其中第一个字符移位后加上本行最后一个字符的值)处理后替代原来的字符。
函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章,存到字符串数组XX中;请编制函数encryptChar( ),按给定的替代关系对数组XX中的所有字符进行替代,仍存入数组XX对应的位置上,最后调用函数WriteDat( )把结果XX输出到文件OUT.DAT中。替代关系:f(p)=P*13mod 256,mod为取余运算,P是数组XX中某一个字符的ASCⅡ值,f(p)是计算后的无符号整型值(注意:中间变量定义成整型变量),如果计算后f(p)值小于等于32或是偶数,则该字符不变,否则用f(p)替代所对应的字符。
注意:部分源程序存放在PROG1.C中,原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格,并也按此替代关系进行处理。请勿改动主函数main( )、读函数ReadDat( )和输出函数WriteDat( )的内容。
[试题程序]
#include
#include
#include
unsigned char XX[50][80];
int maxline=0;/*文章的总行数*/
int ReadDat(void);
void WriteDat(void);
void encryptChar( );
void main( )
if (ReadDat( ))
printf("数据文件INDAT不能打开!/n/007");
return;
encryptChar( );
WriteDat( );
int ReadDat(void)
FILE *fp;
int i=0;
unsigned char *p;
if((fp=fopen("in.dat","r"))==NULL)
return 1;
while(fgets(xx[i],80,fp)!=NULL)
p=strchr(xx[i],’/n’);
if (p) *P=0;
i++;
maxline=i;
fclose(fp);
return 0;
void WriteDat(void)
FILE *fp;
int i;
fp=fopen("out.dat","w");
for(i=0;i<maxline;i++)
printf("%s/n",xx[i]);
fprintf(fp,"%s/n",xx[i]);
fclose(fp);
void encryptChar()
{int i,j,val; /*定义变量*/
for(i=0;i<maxline;i++) /*替代字符*/
for(j=0;j<H0;j++)
{val=XX[i][j]*AC%BEF; /*替代关系*/
if(vab≤CB||val%B==0)/*判断条件*/
continue;
else XX[i][j]=val;
}
}[解析] 本题要求逐行逐字将一篇英文文童进行处理,将其中的部分字符按照一定的判断条件进行替代。依据题意,应按照题目中给出的(p*13 mod 256)表达式依次计算每个字符对应的值f(p),符合判断条件(计算后f(p)值小于等于32或为偶数,即val≤32||val%2==0)的字符不变,其他字符替换为f(p)。注意,为保证计算结果不溢出,中间变量必须定义为整型变量或无符号字符型变量。
已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat( )读取这100个销售记录并存入结构数组sell中。请编制函数SortDat( ),其功能要求:按产品名称从大到小进行排列,若产品名称相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中。最后main( )函数调用函数WritDat( )把结果输出到文件OUT.DAT中。
提示:若中间变量为PRO temp,则可以直接使用结构赋值语句进行解题;产品名称比较请用函数strcmp进行解题。
例如,sell[i]=temp。
注意:部分源程序存放在PROG1.C中。请勿改动主函数main( )、读函数ReadDat( )和输出函数WriteDat( )的内容。
[试题程序]
#include
#include
#include
#define MAX 100
typedef struct
char dm[5];/*产品代码*/
char mc[11];/*产品名称*/
int dj; /*单价*/
int sl; /*数量*/
long je; /*金额*/
PRO;
PRO sell[MAX];
void ReadDat( );
void WriteDat( );
void SortDat( )
void main( )
memset(sell,0,sizeof(sell));
ReadDat( );
SortDat( );
WriteDat( );
void ReadDat( )
FILE *fp;
char str[80],ch[11];
int i;
fp=fopen("in.dat","r");
for(i=0;i<100;i++)
fgets(str,80,fp);
memcpy(sell[i].dm,str,4);
memcpy(sell[i].mc,str+4,10);
memcpy(ch,str+14,4);ch[4]=0;
sell[i].dj=atoi(ch);
memcpy(ch,str+18,5);ch[5]=0;
sell[i].sl=atoi(ch);
sell[i].je=(long)sell[i].dj*sell[i].sl;
fclose(fp);
void WriteDat( )
FILE *fp;
int i;
fp=fopen("out.dat","w");
for(i=0;<100;i++)(
fprintf(fp,"%s%s%4d%5d%10ld/n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);
fclose(fp);
void SortDat()
{int i; /*定义变量*/
PRO temp;
for(i=0;i<MAX-1;i++) /*选择法排序*/
for(j=i+1;j<MAX;j++)
if(strcmp(sell[i].mc,sell[j].mc)<0
llstrcmp(sell[i].mc,sell[j].mc)==(0&&sell[i].je<sell[j].je)/*判断条件*/
{temp=sell[i];
sell[i]=sell[j];
sell[j]=temp;
}
}
已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型,10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数Readdat( )读取这100个销售记录并存入结构数组sell中。请编制函数SortDat( ),其功能要求:按金额从大到小进行排列,若金额相等,则按产品代码从大到小进行排列,最终排列结果仍存入结构数组sell中。最后main( )函数调用函数Writedat( )把结果输出到文件OUT.DAT中。
提示:若中间变量为PRO temp,则可以直接使用结构赋值语句进行解题;产品代码比较请用函数strcmp进行解题。
例如,sell[i]=temp。
注意:部分源程序存放在PROG1.C中。请勿改动主函数msin( )、读函数ReadDat( )和输出函数WriteDat( )的内容。
[试题程序]
#include
#inchlde
#include
#define MAX 100
typedef struct
char dm[5];/*产品代码*/
char mc[11];/*产品名称*/
int dj; /*单价*/
int sl; /*数量*/
long je; /*金额*/
PRO; .
PRO sell[MAX];
void ReadDat( );
void WriteDat( );
void SortDat( )
void main( )
memsetlsell,0,sizeof(sell));
ReadDat( );
SortDat( );
WriteDat( );
void ReadDat( )
FILE *fp;
char str[80],ch[11];
int i;
fp=fopen("in.dat","r");
for(i=0;i<100;i++)
fgetsstr,80,fp);
memcpy(sell[i].dm,str,4);
memcpy(sell[i].mc,str+4,10);
memcpy(ch,str+14,4);ch[4]=0;
sell[i].dj=atoi(ch);
memcpy(ch,str+18.5);ch[5]=0;
sell[i].sl=atoi(ch);
sell[i].je=(long)sell[i].dj*sell[i].sl;
fclose(fp);
void WriteDat( )
FILE *fp;
int i;
fp=fopen("out.dat","w");
for(i=0;i<100;i++)
fprintf(fp,"%s%s%4d%5d%10ld/n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);
fclose(fp);
void SortDat()
{int i,j; /*定义变量*/
PRO temp;
for(i=0;i<MAX-A;i++) /*选择法排序*/
for(i=i+j;j<MAX;j++)
if(sell[i].je<sell[j].je
llsell[i].je==sell[j].je&&strcrmp(sell[i].dm,sell[j].dm)<0) /*判断条件*/
{temp=sell[i];
sell[i]=sell[j];
sell[j]=temp;
}
}[解析] 本题是结构体排序题。结构体即由一系列数据构成的数据集合,可以将其当做通用的数据类型进行处理,如两个结构体之间可以用“=”直接赋值,用“.”号可以直接调用结构体中封装的数据。本题中的单价、数量、金额都是数值,可以直接比较;而名称和代码则是字符串,要使用函数strcmp进行比较。本题要进行双重排序,在使用选择法或冒泡法进行排序时,在一次循环中可以通过合适的判断条件完成该排序。根据题意,可以使用如下判断语句:
if(sell[i].je<sell[j].jellsell[i].je==sell[j].je&&strcmp(sell[i].dm,sell[i].dm<0)
函数ReadDat( )实现从文件IN.DAT中读取一篇英文文童,存到无符号字符串数组XX中;请编制函数encryptChar( ),按给定的替代关系对数组XX中的所有字符进行替代,其替代值仍存人数组XX所对应的位置上,最后调用函数WriteDat( )把结果XX输出到文件OUT.DAT中。替代关系:f(p)=P*11 mod 256,mod为取余运算,P是数组XX中某一个字符的ASCⅡ值,f(p)是计算后无符号的整型值(注意:中间变量定义成整型变量),如果原字符是数字字符0~9或计算后f(p)值小于等于32,则该字符不变,否则用f(p)替代所对应的字符。
注意:部分源程序存放在PROG1.C中,原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格,并也按此替代关系进行处理。请勿改动主函数main( )、读数据函数ReadDat( )和输出数据函数WriteDat( )的内容。
[试题程序]
#include
#include
#include
unsigned char XX[50][80];
int maxline=0;/*文章的总行数*/
int ReadDat(void);
void WriteDat(void);
void encryptChar( );
void main( )
if(ReadDat( ))
printf("数据文件IN.DAT不能打开!/n/007");
return;
encryptChar( );
WriteDat( );
int ReadDat(void)
FILE *fP;
int i=0;
unsigned char *p;
if((fp=fopen("in.dat","r"))==NULL)
return 1;
while(fgets(xx[i],80,fp)!=NULL)
P=strchr(xx[i],’/n’);
if(p) *P=0;
i++;
maxline=i;
fclose(fp);
return 0;
void WriteDat(void)
FILE *fp;
int i;
fp=fopen("out.dat","fw");
for(i=0;i<maxline;i++)
printf("%s/n",xx[i]);
fprintf(fp,"%s/n",xx[i]);
fclose(fp);
void encryptChar()
{int i,j,val; /*定义变量*/
for(i=0;i<maxline;i++) /*替代字符*/
for(j=0;j<H0;j++)
{val=xx[i][j]*AA%BEF; /*替代关系*/
if(xx[i][j]≥’0’&&xx[i][j]≤’I’||val≤CB) /*判断条件*/
continue;
else xx[i][j]=val;
}
}[解析] 本题要求逐行逐字将一篇英文文章进行处理,将其中的部分字符按照一定的判断条件进行替代。依据题意,应按照题目中给出的(p*11 mod 256)表达式依次计算每个字符对应的值f(p),符合判断条件(原字符是0~9或计算后f(p)值小于等于32,即xx[i][j]≥’0’&&xx[i][j]≤’9’||val≤32)的字符保持不变,其他字符替换为f(p)。注意,为保证计算结果不会溢出,中间变量必须定义成整型变量或无符号字符型变量。
函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章,存入到字符串数组XX中;请编制函数encryptChar( ),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx对应的位置上,最后调用函数WriteDat( )把结果XX输出到文件OUT.DAT中。替代关系:f(p)=p*11 mod 256,mod为取余运算,P是数组XX中某一个字符的ASCⅡ值,f(p)是计算后的无符号整型值(注意:中间变量定义成整型变量),如果原字符的ASCⅡ值是偶数或计算后f(p)值小于等于32,则该字符不变,否则用f(p)替代所对应的字符。
注意:部分源程序存放在PROG1.C中,原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格,并也按此替代关系进行处理。请勿改动主函数main( )、读函数ReadDat( )和输出函数WriteDat( )的内容。
[试题程序]
#include
#include
#include
unsigned char XX[50][80];
int maxline=0;/*文章的总行数*/
int ReadDat(void);
void WriteDat(void);
void encryptChar( );
void main( )
if(ReadDat( ))
printf("数据文件IN.DAT不能打开!/n/007");
return;
encryptChar( );
WriteDat( );
int ReadDat(void)
FILE *fp;
int i=0;
unsigned char *p;
if((fp=fopen(“in.dat”,“r”))==NULL)
return 1;
while(fgets(xx[i],80,fp)!=NULL)(
P=strchr(xx[i],’/n’);
if(p) *P=0;
i++;
maxline=i;
fclose(fp);
return 0;
void WriteDat(void)
FILE *fp;
int i;
fp=fopen(“out.dat”,“w”);
for(i=0;i<maxline;i++)
print("%s/n",xx[i]);
fprintf(fp,"%s/n",xx[i]);
fclose(fp);
void encryptChar()
{int i,j,val; /*定义变量*/
for(i=0;i<maxline;i++) /*替代字符*/
for(j=0;j<H0;j++)
{ val=xx([i][j]*AA%BEF; /*水替代关系*/
if(xx[i][j]%B==0||val≤CB) /*判断条件*/
continue;
else xx[i][j]=val;
}
}[解析] 本题要求逐行逐字将一篇英文文章进行处理,将其中的部分字符按照一定的判断条件进行替代。依据题意,应按照题目中给出的(p*|| mod 256)表达式依次计算每个字符对应的值f(p),符合判断条件(原字符的ASCⅡ值为偶数或计算后值f(p)小于等于32,即xx[i][j]%2==0||val≤32)的字符不变,其他字符替换为f(p)。注意,为保证计算结果不溢出,中间变量必须定义为整型变量或无符号字符型变量。
对10个候选人进行选举,现有一个100条记录的选票数据文件IN.DAT,其数据存放的格式是每条记录的长度均为10位,第一位表示第一个候选人的选中情况,第二位表示第二个候选人的选中情况,依次类推;每一位内容均为字符“0”或“1”,“1”表示此人被选中,“0”表示此人未被选中,全选或全不选(空选票)均为无效的选票则不作统计。给定函数ReadDat( )的功能是把选票数据读入到字符串数组xx中。请编制函数CountRs( )来统计每个候选人的选票数并把得票数依次存入yy[0]到yy[9]中,即第一个候选人的得票数存入yy[0]中,依次类推。最后调用函数WriteDat( )把结果YY输出到文件OUT.DAT中。
注意:部分源程序存放在PROG1.C中。请勿改动主函数main( )、读函数ReadDat( )和输出函数WriteDat( )的内容。
[试题程序]
#include
#include
char XX[100][11];
int yy[10];
int ReadDat(void);
void WriteDat(void);
void CountRs(void)
/*每一条记录的选票情况已作为字符串存入xx[i]为起始地址的存储单元内*/
/*例如,第10条记录的第一个候选人的选中情况的条件是if(xx[9][0]==’1’)*/
/*该提示仅供解题参考,考生也可用其他方法解题*/
void main( )
int i;
for(i=0;i<10;i++) YY[i]=0;
if(ReadDat( ))(
printf("选票数据文件IN.DAT不能打开!/007/n");
return;
CountRs( );
WriteDat( );
int ReadDat(void)
FILE *fp;
int i;
char tt[13];
if((fp=fopen("indat","r"))==NULL)
return 1;
for(i=0;i<100;i++)
if(fgets(tt,13,fp)==NULL) return 1;
memcpy(xx[i],tt,10);
XX[i][10]=0;
fclose(fp);
return 0;
void WriteDat(void)
FILE *fp;
int i;
fp=fopen(“out.dat”,“W”);
for(i=0;i<10;i++)(
fprintf(fp,“%d/n”,yy[i])=
printf(“第%d个人的选票数=%d/n”,i+1,yy[i]);
fclose(fp);
void CountRs(void)
{int i,j,cnt; /*定义变量*/
for(i=0;i<A00;i++) /*逐张处理选票*/
{ cnt=0;
for(j=0;j<A0;j++) /*统计选中人数*/
if(xx[i][j]==’A’)
cnt++;
if(cnt==A0||cnt==0) /*判断条件*/
cntinue;
for(j=0;j<A0;j++) /*统计得票*/
if(xx[i][j]==’A’)
yy[j]++;
}
}[解析] 本题要求按照一定的判断条件筛选出有效选票后,再统计各候选人的得票数。依据题意,应依次处理每张选票,先统计该选票选中的人数,再根据题目中的判断条件(全选或全不选,即cnt==10||cnt=0)筛选掉无效选票以后,依次将得票数存入数组yy[]中。
函数ReadDat( )实现从文件IN.DAT中读取1000个十进制整数到数组XX中,请编制函数Compute( )分别计算出XX中数值为奇数的个数odd、偶数的个数even、平均值aver和方差totfc的值,最后调用函数WriteDat( )把结果输出到OUT.DAT文件中。计算方差的公式如下: 原始数据文件存放的格式是:每行存放10个数,并用逗号隔开。(每个数均大于0且小于等于2000) 注意:部分源程序存放在PROG1.C中。请勿改动主函数main( )和输出数据函数WriteDat( )的内容。 [试题程序] #include #include #include #define MAX 1000 int XX[MAX],odd=0,even=0; double aver=0.0,totfc=0.0; Void WriteDat(void); int ReadDat(void) FILE *fp; int i; if((fp=fopen("in.dat","r"))==NULL) return 1; for(i=0;i<MAX;i++) fscanf(fp,"%d,",&xx[i]); fclose(fp); return 0; void Compute(void) void main( ) int i; for(i=0;i<MAX;i++) XX[i]=0; if(ReadDat( )) printf(“数据文件IN.DAT不能打开!/007/n"); return; Compute( ); printf("ODD=%d/nEVEN=%d/nAVER=%lf/nTOTFC=%lf/n",odd,even,aver,totfc); WriteDat( ); void WriteDat(void) FILE *fP; fp=fopen("out.dat","w"); fprintf(fp,"%d/n%d/n%lf/n%1f/n",odd,even,aver,totfc); fclose(fp);
Void Compute(void)
{int i; /*定义变量*/
for(i=0;i<MAX;i++) /*统计求和*/
{aver+=xx[i];
if(xx[i]%2==1)
odd++;
else
even++;
}
aver/=MAX; /*求平均值*/
for(i=0;i<MAX;i++) /*求方差值*/
totfc+={xx[i]-aver)*(xx[i]-aver)/MAX;
}
您可能感兴趣的题目