一个关于将满足给定条件的数据按顺序写到另一文件中的C语言函数。
已知数据文件IN37.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一个函数jsVal(),其功能是:如果一个4位数的千位数字上的值加十位数字上的值恰好等于百位数字上的值加上个位数字上的值,并且此4位数是偶数,则统计出满足此条件的数的个数cnt,并把这些4位数按从小到大的顺序存入数组b中。最后,调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT37.DAT文件中。
#include <stdio.h>#define MAX 200int a[MAX],b[MAX],cnt=0;void jsVal(){int k,q,f,s,g,temp,j;for(k=0;k<MAX;k++){q = a[k]/1000;f = (a[k]%1000)/100;s = (a[k]%100)/10;g = a[k]%10;if(((q+s) == (f+g))&&(g%2==0)){if(cnt==0)b[cnt++]=a[k];else{b[cnt]=a[k];j=cnt;while((b[cnt-1]>b[cnt])&&(cnt!=0)){temp=b[cnt-1];b[cnt-1]=b[cnt];b[cnt]=temp;cnt--;}cnt=j;cnt++;}}}}void readDat(){ int i; FILE *fp; fp=fopen("IN37.DAT","r"); for(i=0;i<MAX;i++) fscanf(fp,"%d",&a[i]); fclose(fp);}main(){ int i; readDat(); jsVal(); printf("满足条件的数=%d\n",cnt); for(i=0;i<cnt;i++) { printf("%d",b[i]); printf("\n"); } writeDat();}writeDat(){ FILE *fp; int i; fp=fopen("OUT37.DAT","w"); fprintf(fp,"%d\n",cnt); for(i=0;i<cnt;i++) fprintf(fp, "%d\n",b[i]); fclose(fp);}
博主 个人网站:http://henghui.web-126.com/