您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 计算机三级上机试题程序总结
已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat()读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按金额从小到大进行排列,若金额相等,则按产品代码从小到大进行排列,最终排列结果仍存入结构数组sell中。最后main()函数调用函数WriteDat()把结果输出到文件OUT1.DAT中。注意:部分源程序存放在PROG1.C中。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。*/#includestdio.h#includemem.h#includestring.h#includeconio.h#includestdlib.h#defineMAX100typedefstruct{chardm[5];/*产品代码*/charmc[11];/*产品名称*/intdj;/*单价*/intsl;/*数量*/longje;/*金额*/}PRO;PROsell[MAX];voidReadDat();voidWriteDat();voidSortDat(){/**/inti,j,k;PROtt;for(i=0;iMAX-1;i++){k=i;for(j=i+1;jMAX;j++)if((sell[k].jesell[j].je)||(sell[k].je==sell[j].je)&&(strcmp(sell[k].dm,sell[j].dm)0))k=j;if(k!=i){tt=sell[k];sell[k]=sell[i];sell[i]=tt;}}/**/}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;i100;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(OUT1.DAT,w);for(i=0;i100;i++){fprintf(fp,%s%s%4d%5d%10ld\n,sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);}fclose(fp);}100个产品销售记录排序其余9题说明1)in.dat内容完全相同。2)程序也基本雷同,仅排序的要求不一样。3)考生应熟悉strcmp()函数,否则有的题相当不好处理。之二排序要求:按金额从小到大进行排列,若金额相等,则按产品代码从大到小进行排列相应语句:if(sell[k].jesell[j].je||(sell[k].je==sell[j].je)&&(strcmp(sell[k].dm,sell[j].dm)0))之三排序要求:按金额从大到小进行排列,若金额相等,则按产品代码从小到大进行排列相应语句:if((sell[k].jesell[j].je)||(sell[k].je==sell[j].je)&&(strcmp(sell[k].dm,sell[j].dm)0))之四排序要求:按金额从大到小进行排列,若金额相等,则按产品代码从大到小进行排列相应语句:if((sell[k].jesell[j].je)||(sell[k].je==sell[j].je)&&(strcmp(sell[k].dm,sell[j].dm)0))之五排序要求:按产品名称从小到大进行排列,若产品名称相同,则按金额从小到大进行排列相应语句:if((strcmp(sell[k].mc,sell[j].mc)0)||(strcmp(sell[k].mc,sell[j].mc)==0)&&(sell[k].jesell[j].je))之六排序要求:按产品名称从小到大进行排列,若产品名称相同,则按金额从大到小进行排列相应语句:if(strcmp(sell[i].mc,sell[j].mc)0||(strcmp(sell[i].mc,sell[j].mc)==0)&&(sell[i].jesell[j].je))之七排序要求:按产品名称从大到小进行排列,若产品名称相同,则按金额从小到大进行排列相应语句:if((strcmp(sell[k].mc,sell[j].mc)0)||(strcmp(sell[k].mc,sell[j].mc)==0)&&(sell[k].jesell[j].je))之八排序要求:按产品名称从大到小进行排列,若产品名称相同,则按金额从大到小进行排列相应语句:if((strcmp(sell[k].mc,sell[j].mc)0)||(strcmp(sell[k].mc,sell[j].mc)==0)&&(sell[k].jesell[j].je))之九排序要求:按产品代码从小到大进行排列,若产品代码相同,则按金额从小到大进行排列相应语句:if((strcmp(sell[k].dm,sell[j].dm)0)||(strcmp(sell[k].dm,sell[j].dm)==0)&&(sell[k].jesell[j].jecode:/*已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat()读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中。最后main()函数调用函数WriteDat()把结果输出到文件OUT10.DAT中。注意:部分源程序存放在PROG1.C中。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。*/#includestdio.h#includemem.h#includestring.h#includeconio.h#includestdlib.h#defineMAX100typedefstruct{chardm[5];/*产品代码*/charmc[11];/*产品名称*/intdj;/*单价*/intsl;/*数量*/longje;/*金额*/}PRO;PROsell[MAX];voidReadDat();voidWriteDat();voidSortDat(){/**/inti,j;PROtt;for(i=0;iMAX-1;i++)for(j=i+1;jMAX;j++){if(strcmp(sell[i].dm,sell[j].dm)0){tt=sell[i];sell[i]=sell[j];sell[j]=tt;}if((strcmp(sell[i].dm,sell[j].dm)==0)&&(sell[i].jesell[j].je)){tt=sell[i];sell[i]=sell[j];sell[j]=tt;}}/**/}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;i100;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(OUT10.DAT,w);for(i=0;i100;i++){fprintf(fp,%s%s%4d%5d%10ld\n,sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);}fclose(fp);}老枪300个四位数问题(此类共10题)本类10题中,五题产生数组B,并对B按一定要求排序;其余五题是求平均值。我把它们分成两组五题来讨论。以下为产生数组B之题一:code:/*已知数据文件IN.DAT中存有300个四位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsvalue(),其功能是:求出个位数上的数减千位数上的数减百位数上的数减十位数上的数大于零的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从大到小的顺序进行排序。最后main()函数调用写函数writeDat()把数组b中的数输出到文件OUT.DAT。例如:1239,9-1-2-30,则该数满足条件存入数组b中,且个数cnt=cnt+1。8129,9-8-1-20,则该数不满足条件忽略。注意:部分源程序存在文件PROG1.C文件中。程序中已定义数组:a[300],b[300],已定义变量:cnt请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。*/#includestdio.hinta[300],b[300],cnt=0;jsvalue(){/**/inti,j,k,t;for(i=0;i300;i++)if(a[i]%10-a[i]/1000-a[i]/100%10-a[i]/10%100)b[cnt++]=a[i];for(i=0;icnt-1;i++){k=i;for(j=i+1;jcnt;j++)if(b[k]b[j])k=j;if(k!=i){t=b[k];b[k]=b[i];b[i]=t;}}/**/}main(){inti;readDat();jsvalue();writeDat();printf(cnt=%d\n,cnt);for(i=0;icnt;i++)printf(b[%d]=%d\n,i,b[i]);}readDat(){FILE*fp;inti;fp=fopen(in.dat,r);for(i=0;i300;i++)fscanf(fp,%d,,&a[i]);fclose(fp);}writeDat(){FILE*fp;inti;fp=fopen(out.dat,w);fprintf(fp,%d\n,cnt);for(i=0;icnt;i++)fprintf(fp,%d\n,b[i]);fclose(fp);}要求:求出所有这些四位数是素数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排
本文标题:计算机三级上机试题程序总结
链接地址:https://www.777doc.com/doc-4128727 .html