问答题 在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);
问答题 函数ReadDat()实现从IN.DAT文件中读取一篇英文文章并存入字符串数组xx中。请编写函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代后,仍存入数组xx的对应位置上,最后调用函数WriteDat(),把结果xx输出到OUT.DAT文件中。 替代关系:f(p)=p*11mod 256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或f(p)对应的字符是小写字母,则该字符不变,否则将f(p)所对应的字符进行替代。 原始数据文件存放的格式是:每行的宽度均小于80个字符。 注意:部分源程序已经给出。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 #include<stdio.h> #include<string.h> #include<conio.h> #include<ctype.h> 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++) printf("%s\n",xx[i]); fprintf(fp,"%s\n",xx[i]); fclose(fp);