您的位置:首页 > 编程语言 > C语言/C++

一个关于将满足给定条件的数据按顺序写到另一文件中的C语言函数。

2012-09-11 20:02 323 查看
已知数据文件IN37.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一个函数jsVal(),其功能是:如果一个4位数的千位数字上的值加十位数字上的值恰好等于百位数字上的值加上个位数字上的值,并且此4位数是偶数,则统计出满足此条件的数的个数cnt,并把这些4位数按从小到大的顺序存入数组b中。最后,调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT37.DAT文件中。

#include <stdio.h>
#define  MAX  200
int 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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐