问答题 已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中。请编写函数jsVal(),其功能是:把千位数字和十位数字重新组成一个新的十位数ab(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的十位数cd(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的百位数字),如果ab<cd,ab必须是奇数且不能被5整除,cd必须是偶数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并计算满足上述条件的四位数的个数cnt。最后main()函数调用写函数writeDat(),把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。 注意:部分源程序已经给出。 程序中已定义数组:a[200],b[200];已定义变量:cnt。 请勿改动数据文件IN.DAT中的任何数据及主函数main()、读函数readDat()和写函数writeDat()的内容。 #include<stdio.h> #define MAX 200 int a[MAX],b[MAX],cnt=0; void jsVal() void readDat() int i; FILE *fp; fp=fopen("IN.DAT","r"); for(i=0;i<MAX;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 main() int i; readDat(); jsVal(); printf("满足条件的数=%d\n",cnt); for(i=0;i<cnt; i++) printf("%d",b[i]); printf("\n"); writeDat();
问答题 在in.dat文件中有200组数据,每组有3个数,每个数均是三位数。函数ReadDat()读取这200组数据并存放到结构数组aa中。请编写函数jsSort(),其功能是:要求在200组数据中找出条件为每组中的第二个数大于第一个数加第三个数之和,其中满足条件的组数作为函数jsSort()的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数据按照每组数据的第二个数加第三个之和的大小进行降序排列(第二个数加第三个数的和均不相等),排序后的结果仍重新存入结构数组bb中,最后调用函数WriteDat(),把结果bb输出到out.dat文件中。 注意:部分源程序已经给出。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 #include<stdio.h> #include<string.h> #include<conio.h> typedef struct int x1,x2,x3; data; data aa[200],bb[200]; int jsSort() void ReadDat() FILE *in; int i; in=fopen("in.dat","r"); for(i=0; i<200;i++) fscanf(in,"%d,%d,%d",&aa[i].x1,&aa[i].x2,&aa[i].x3); fclose(in); void WriteDat(int count) FILE *out; int i; out=fopen("out.dat","w"); for(i=0; i<count;i++) printf("%d,%d,%d第二个数+第三个数=%d\n",bb[i].x1,bb[i].x2,bb[i].x3,bb[i].x2+bb[i].x3); fprintf(out,"%d%d%d\n",bb[i].x1,bb[i].x2,bb[i].x3); fclose(out); void main() int count; ReadDat(); count=jsSort(); /*返回满足条件的个数*/ WriteDat(count);
问答题 现有一个10个人100行的选票数据文件IN.DAT,其数据存放的格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,以此类推;内容均为字符0或1,1表示此人被选中,0表示此人未被选中,若一张选票人数小于等于5个人时被认为无效的选票。给定函数ReadDat()的功能是把选票数据读入到字符串数组xx中。请编写函数CountRs()来统计每个人的选票数并把得票数依次存入yy[0]到yy[9]中。把结果yy输出到OUT.DAT文件中。 注意:部分源程序已经给出。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 #include<stdio.h> char xx[100][11]; int yy[10]; int ReadDat(void); void WriteDat(void); void CountRs(void) void main() int i; for(i=0;i<10;i++) yy[i]=0; if(ReadDat()) printf("选票数据文件IN.DAT不能打开!\n\007"); return; CountRs(); WriteDat(); int ReadDat(void) FILE *fp; int i; if((fp=fopen("IN.DAT","r"))==NULL) return 1; for(i=0; i<100; i++) if(fgets(xx[i],12,fp)==NULL) return 1; 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);