文件的操作

来源:互联网 发布:k30平板荷载试验算法 编辑:程序博客网 时间:2024/06/13 23:12

/*
练习四

在文件Source.txt中存有若干个(个数<200)四位的正整数。要求:
1、读取这若干个正整数并存入数组xx中;
2、求出这个文件中共有多少个正整数totNum;
3、求出这些数中的各位数字之和是奇数的数的个数totCnt,以及满足此条件的这些数的算术平均值totPjz;
4、最后把所求的结果输出到文件Dest.txt中。

以下数字是文件Source.txt中的数据

6045,6192,1885,3580,8544,6826,5493,8415,3132,5841,6561,3173,9 157,2895,2851,6082,5510,9610,5398,5273,3438,1800,6364,6892,95 91,3120,8813,2106,5505,1085,5835,7295,6131,9405,6756,2413,627 4,9262,5728,2650,6266,5285,7703,1353,1510,2350,4325,4392,7573, 8204,7358,6365,3135,9903,3055,3219,3955,7313,6206,1631,5869,5 893,4569,1251,2542,5740,2073,9805,1189,7550,4362,6214,5680,87 53,8443,3636,4495,9643,3782,5556,1018,9729,8588,2797,4321,471 4,9658,8997,2080,5912,9968,5558,9311,7047,6138,7618,5448,1466, 7075,2166
*/

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
/*此结构体定义了要从文件中取的数和逗号*/
struct node
{
 int num;
 char dou;

}shu;

int jishu()            //函数作用:判断该数是否为奇数,如果为奇数则返回数字1,以便于在主函数中判断
{

 int number_1 = 0;  //用于存储数字各位相加之和,初始化为0
 
 number_1=shu.num%10+(shu.num/100)%10+(shu.num/10)%100+(shu.num)/1000;
 if((number_1%2)==1)
 {
  return 1;
 }
 else
 return 0;

}

 

 int main()
{
 int number=0;       //奇数相加之和
 int totPjz=0;       //算数平均值
 int xx[200];        //存储数字的数组

 int i=0;            //文件中4位数字的个数
 int totCnt=0;       //奇数的个数
 FILE *fp=NULL;      //fp建立source.txt与内存的通道
 FILE *fstream=NULL; //fstream建立Desk.txt与内存的通道
 if((fp=fopen("c://Source.txt","r"))==NULL)
 {
  
  printf("can't open any file");
  getch();
  exit(1);

 }
 while(!feof(fp))
 {

  fscanf(fp,"%d%c",&shu.num,&shu.dou);
  xx[i]=shu.num;
  printf("%d",shu.num);
 

  
  if(jishu()==1)     /*jishu函数返回值为1为奇数*/
  {      
   totCnt++;     //用于计数
   number+=shu.num;   //算奇数的和用于接下来算平均值
  }
  
  i++;
 }
 totPjz=number/totCnt;    //计算奇数的算数平均值
 printf("一共有%d个正整数\n",i);
 printf("一共有%d个奇数\n",totCnt);
 printf("算数平均值是%d\n",totPjz);

 

 /*将输出的结果写入Desk.txt文件中*/
 if((fstream=fopen("c://Desk.txt","w"))==NULL)
 {
  printf("can't open any file");
  getch();
  exit(1);
 }
 

 fprintf(fstream,"%d,%d,%d",i,totCnt,totPjz);
    fclose(fp);
 fclose(fstream);

return 0;

}

原创粉丝点击