三级网络技术上机5180.docx
- 文档编号:17086245
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:76
- 大小:24.87KB
三级网络技术上机5180.docx
《三级网络技术上机5180.docx》由会员分享,可在线阅读,更多相关《三级网络技术上机5180.docx(76页珍藏版)》请在冰点文库上搜索。
三级网络技术上机5180
第五十一套
已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。
其中:
金额=单价*数量计算得出。
函数ReadDat()是读取这100个销售记录并存入结构数组sell中。
请编制函数SortDat(),其功能要求:
按金额从大到小进行排列,若金额相等,则按产品代码从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT3.DAT中。
部分源程序存在文件prog1.c中。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
/*参考答案*/
#include
#include
#include
#include
#defineMAX100
typedefstruct{
chardm[5];/*产品代码*/
charmc[11];/*产品名称*/
intdj;/*单价*/
intsl;/*数量*/
longje;/*金额*/
}PRO;
PROsell[MAX];
voidReadDat();
voidWriteDat();
voidSortDat()
{inti,j;
PROcell;
for(i=0;i<99;i++)
for(j=i+1;j<100;j++)
if(sell[i].je {cell=sell[i]; sell[i]=sell[j]; sell[j]=cell; } for(i=0;i<99;i++) for(j=i+1;j<100;j++) if((atoi(sell[i].dm)>atoi(sell[j].dm))&&(sell[i].je==sell[j].je)) {cell=sell[i]; sell[i]=sell[j]; sell[j]=cell; }} voidmain() { memset(sell,0,sizeof(sell)); ReadDat(); SortDat(); WriteDat(); } voidReadDat() { FILE*fp; charstr[80],ch[11]; inti; fp=fopen("IN.DAT","r"); for(i=0;i<100;i++){ fgets(str,80,fp); memcpy(sell[i].dm,str,4); memcpy(sell[i].mc,str+4,10); memcpy(ch,str+14,4);ch[4]=0; sell[i].dj=atoi(ch); memcpy(ch,str+18,5);ch[5]=0; sell[i].sl=atoi(ch); sell[i].je=(long)sell[i].dj*sell[i].sl; } fclose(fp); } voidWriteDat() { FILE*fp; inti; fp=fopen("OUT3.DAT","w"); for(i=0;i<100;i++){ printf("%s%s%4d%5d%5d\n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je); fprintf(fp,"%s%s%4d%5d%5d\n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je); } fclose(fp); } 第五十二套 已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。 其中: 金额=单价*数量计算得出。 函数ReadDat()是读取这100个销售记录并存入结构数组sell中。 请编制函数SortDat(),其功能要求: 按产品名称从小到大进行排列,若产品名称相等,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT5.DAT中。 部分源程序存在文件prog1.c中。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 /*参考答案*/ #include #include #include #include #defineMAX100 typedefstruct{ chardm[5];/*产品代码*/ charmc[11];/*产品名称*/ intdj;/*单价*/ intsl;/*数量*/ longje;/*金额*/ }PRO; PROsell[MAX]; voidReadDat(); voidWriteDat(); voidSortDat() {intI,j; PROxy; for(I=0;I for(j=I+1;j if(strcmp(sell[I].mc,sell[j].mc)>0) {xy=sell[I];sell[I]=sell[j];sell[j]=xy;} elseif(strcmp(sell[I].mc,sell[j].mc)==0) if(sell[I].je>sell[j].je) {xy=sell[I];sell[I]=sell[j];sell[j]=xy;} } voidmain() { memset(sell,0,sizeof(sell)); ReadDat(); SortDat(); WriteDat(); } voidReadDat() { FILE*fp; charstr[80],ch[11]; inti; fp=fopen("IN.DAT","r"); for(i=0;i<100;i++){ fgets(str,80,fp); memcpy(sell[i].dm,str,4); memcpy(sell[i].mc,str+4,10); memcpy(ch,str+14,4);ch[4]=0; sell[i].dj=atoi(ch); memcpy(ch,str+18,5);ch[5]=0; sell[i].sl=atoi(ch); sell[i].je=(long)sell[i].dj*sell[i].sl; } fclose(fp); } voidWriteDat() { FILE*fp; inti; fp=fopen("OUT5.DAT","w"); for(i=0;i<100;i++){ printf("%s%s%4d%5d%5d\n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je); fprintf(fp,"%s%s%4d%5d%5d\n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je); } fclose(fp); } 第五十三套 已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。 其中: 金额=单价*数量计算得出。 函数ReadDat()是读取这100个销售记录并存入结构数组sell中。 请编制函数SortDat(),其功能要求: 按产品名称从大到小进行排列,若产品名称相等,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT7.DAT中。 部分源程序存在文件prog1.c中。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 /*参考答案*/ #include #include #include #include #defineMAX100 typedefstruct{ chardm[5];/*产品代码*/ charmc[11];/*产品名称*/ intdj;/*单价*/ intsl;/*数量*/ longje;/*金额*/ }PRO; PROsell[MAX]; voidReadDat(); voidWriteDat(); voidSortDat() {intI,j; PROxy; for(I=0;I for(j=I+1;j if(strcmp(sell[I].mc,sell[j].mc)<0) {xy=sell[I];sell[I]=sell[j];sell[j]=xy;} elseif(strcmp(sell[I].mc,sell[j].mc)==0) if(sell[I].je>sell[j].je) {xy=sell[I];sell[I]=sell[j];sell[j]=xy;} } voidmain() { memset(sell,0,sizeof(sell)); ReadDat(); SortDat(); WriteDat(); } voidReadDat() { FILE*fp; charstr[80],ch[11]; inti; fp=fopen("IN.DAT","r"); for(i=0;i<100;i++){ fgets(str,80,fp); memcpy(sell[i].dm,str,4); memcpy(sell[i].mc,str+4,10); memcpy(ch,str+14,4);ch[4]=0; sell[i].dj=atoi(ch); memcpy(ch,str+18,5);ch[5]=0; sell[i].sl=atoi(ch); sell[i].je=(long)sell[i].dj*sell[i].sl; } fclose(fp); } voidWriteDat() { FILE*fp; inti; fp=fopen("OUT7.DAT","w"); for(i=0;i<100;i++){ printf("%s%s%4d%5d%5d\n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je); fprintf(fp,"%s%s%4d%5d%5d\n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je); } fclose(fp); } 第五十四套 已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。 其中: 金额=单价*数量计算得出。 函数ReadDat()是读取这100个销售记录并存入结构数组sell中。 请编制函数SortDat(),其功能要求: 按产品代码从小到大进行排列,若产品代码相等,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT9.DAT中。 部分源程序存在文件prog1.c中。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 #include #include #include #include #defineMAX100 typedefstruct{ chardm[5];/*产品代码*/ charmc[11];/*产品名称*/ intdj;/*单价*/ intsl;/*数量*/ longje;/*金额*/ }PRO; PROsell[MAX]; voidReadDat(); voidWriteDat(); voidSortDat() {inti,j; PROcell; for(i=0;i<99;i++) for(j=i+1;j<100;j++) if(atoi(sell[i].dm)>toi(sell[j].dm)) {cell=sell[i]; sell[i]=sell[j]; sell[j]=cell; } for(i=0;i<99;i++) for(j=i+1;j<100;j++) if((atoi(sell[i].dm)==atoi(sell[j].dm))&&(sell[i].je>sell[j].je)) {cell=sell[i]; sell[i]=sell[j]; sell[j]=cell; }} voidmain() { memset(sell,0,sizeof(sell)); ReadDat(); SortDat(); WriteDat(); } voidReadDat() { FILE*fp; charstr[80],ch[11]; inti; fp=fopen("IN.DAT","r"); for(i=0;i<100;i++){ fgets(str,80,fp); memcpy(sell[i].dm,str,4); memcpy(sell[i].mc,str+4,10); memcpy(ch,str+14,4);ch[4]=0; sell[i].dj=atoi(ch); memcpy(ch,str+18,5);ch[5]=0; sell[i].sl=atoi(ch); sell[i].je=(long)sell[i].dj*sell[i].sl; } fclose(fp); } voidWriteDat() { FILE*fp; inti; fp=fopen("OUT9.DAT","w"); for(i=0;i<100;i++){ printf("%s%s%4d%5d%5d\n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je); fprintf(fp,"%s%s%4d%5d%5d\n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je); } fclose(fp); } 第五十五套 函数ReadDat()实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS1.DAT中。 替代关系: f(p)=p*11mod256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或大于130,则该字符不变,否则将f(p)所对应的字符进行替代。 部分源程序存在文件prog1.c中。 原始数据文件存放的格式是: 每行的宽度均小于80个字符。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 /*参考答案*/ #include #include #include #include #include unsignedcharxx[50][80]; intmaxline=0;/*文章的总行数*/ intReadDat(void); voidWriteDat(void); voidencryptChar() {inti,j,f; for(i=0;i for(j=0;j<(int)strlen(xx[i]);j++) {f=xx[i][j]*11%256; if(f<=32||f>130) xx[i][j]=xx[i][j]; else xx[i][j]=f; } } voidmain() { system("cls"); if(ReadDat()){ printf("数据文件ENG.IN不能打开! \n\007"); return; } encryptChar(); WriteDat(); } intReadDat(void) { FILE*fp; inti=0; unsignedchar*p; if((fp=fopen("eng.in","r"))==NULL)return1; while(fgets(xx[i],80,fp)! =NULL){ p=strchr(xx[i],'\n'); if(p)*p=0; i++; } maxline=i; fclose(fp); return0; } voidWriteDat(void) { FILE*fp; inti; fp=fopen("ps1.dat","w"); for(i=0;i printf("%s\n",xx[i]); fprintf(fp,"%s\n",xx[i]); } fclose(fp); } 第五十六套 在文件in.dat中有200组数据,每组有3个数,每个数均是三位数。 函数ReadDat()读取这200组数据存放到结构数组aa中,请编制函数jsSort(),其函数的功能是: 要求在200组数据中找出条件为每组中的第二个数大于第一个数加第三个数的之和,其中满足条件的组数作为函数jsSort()的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数据按照每组数据的第二个数加第三个之和的大小进行降序排列(第二个数加第三个数的和均不相等),排序后的结果仍重新存入结构数组bb中,最后调用函数WriteDat()把结果bb输出到文件out.dat中。 部分源程序存在文件prog1.c中。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 /*参考答案*/ #include #include #include #include typedefstruct{ intx1,x2,x3; }data; dataaa[200],bb[200]; intjsSort() {intcnt,i,j,k; cnt=0; k=0; for(i=0;i<200;i++) if((aa[i].x1+aa[i].x3) {cnt++;bb[k]=aa[i];k++;} for(i=0;i for(j=i+1;j if((bb[i].x2+bb[i].x3)<(bb[j].x2+bb[j].x3)) {aa[0]=bb[i];bb[i]=bb[j];bb[j]=aa[0];} returncnt; } readDat() { FILE*in; inti; 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); } writeDat(intcount) { FILE*out; inti; out=fopen("out.dat","w"); system("cls"); for(i=0;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); } voidmain() { intcount; readDat(); count=jsSort();/*返回满足条件的个数*/ writeDat(count); } 第五十七套 函数ReadDat()实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS3.DAT中。 替代关系: f(p)=p*11mod256,mod为取余运算,p是数组xx中某一个字符的ASCII值,f(p)是计算后的无符号整型值(注意: 中间变量定义成整型变量),如果计算后f(p)值小于等于32或是奇数,则该字符不变,否则用f(p)替代所对应的字符。 注意: 部分源程序存放在prog1.c中,原始数据文件存放的格式是: 每行的宽度均小于80个字符,含标点符号和空格,并也按此替代关系进行处理。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 /*参考答案*/ #include #include #include #include #include unsignedcharxx[50][80]; intmaxline=0;/*文章的总行数*/ intReadDat(void); voidWriteDat(void); voidencryptCh
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 三级 网络技术 上机 5180