资源描述
学习必备欢迎下载100 个产品销售记录排序(此类共10 题)code:/*已知在文件 IN.DAT 中存有 100个产品销售记录 , 每个产品销售记录由产品代码dm(字符型 4 位 ), 产品名称 mc(字符型 10 位 ), 单价 dj(整型 ), 数量 sl(整型 ), 金额 je(长整型 )五部分组成。其中 :金额 =单价 * 数量计算得出。函数ReadDat( ) 读取这100 个销售记录并存入结构数组sell 中。请编制函数 SortDat( ), 其功能要求 :按金额从小到大进行排列 , 若金额相等 , 则按产品代码从小到大进行排列, 最终排列结果仍存入结构数组sell 中。最后 main( ) 函数调用函数 WriteDat() 把结果输出到文件 OUT1.DA T 中。注意 : 部分源程序存放在PROG1.C 中。请勿改动主函数main( ) 、读数据函数 ReadDat() 和输出数据函数 WriteDat() 的内容。*/#include #include #include #include #include #define MAX 100typedef struct char dm5 ; /*产品代码*/char mc11 ; /*产品名称*/int dj ; /*单价*/int sl ; /*数量*/long je ; /*金额*/PRO;PRO sellMAX ;void ReadDat() ;void WriteDat() ;void SortDat()/*/int i,j,k;PRO tt;for(i=0; i MAX-1; i+) k=i;for(j=i+1; j sellj.je)|(sellk.je=sellj.je)&(strcmp(sellk.dm, sellj.dm)0)k=j;if(k!=i) tt=sellk; sellk=selli; selli=tt;/*/void main()memset(sell, 0, sizeof(sell) ;学习必备欢迎下载ReadDat() ;SortDat() ;WriteDat() ;void ReadDat()FILE *fp ;char str80, ch11 ;int i ;fp = fopen(IN.DAT, r) ;for(i = 0 ; i 100 ; i+) fgets(str, 80, fp) ;memcpy(selli.dm, str, 4) ;memcpy(selli.mc, str + 4, 10) ;memcpy(ch, str + 14, 4) ; ch4 = 0 ;selli.dj = atoi(ch) ;memcpy(ch, str + 18, 5) ; ch5 = 0 ;selli.sl = atoi(ch) ;selli.je = (long)selli.dj * selli.sl ;fclose(fp) ;void WriteDat()FILE *fp ;int i ;fp = fopen(OUT1.DAT, w) ;for(i = 0 ; i sellj.je| (sellk.je=sellj.je) &(strcmp(sellk.dm, sellj.dm) 0)之三排序要求:按金额从大到小进行排列, 若金额相等 , 则按产品代码从小到大学习必备欢迎下载进行排列相应语句:if(sellk.je 0)之四排序要求:按金额从大到小进行排列 , 若金额相等 , 则按产品代码从大到小进行排列相应语句:if(sellk.je sellj.je)|(sellk.je=sellj.je)&(strcmp(sellk.dm,sellj.dm)0)|(strcmp(sellk.mc,sellj.mc)=0)&(sellk.jesellj.je)之六排序要求:按产品名称从小到大进行排列 , 若产品名称相同 , 则按金额从大到小进行排列相应语句:if(strcmp(selli.mc, sellj.mc)0 | (strcmp(selli.mc,sellj.mc)=0)&(selli.je sellj.je)之七排序要求:按产品名称从大到小进行排列 , 若产品名称相同 , 则按金额从小到大进行排列相应语句:if(strcmp(sellk.mc, sellj.mc) sellj.je)之八排序要求:按产品名称从大到小进行排列 , 若产品名称相同 , 则按金额从大到小进行排列相应语句:if(strcmp(sellk.mc, sellj.mc) 0)| (strcmp(sellk.mc,sellj.mc)=0)&(sellk.je 0)|(strcmp(sellk.dm,sellj.dm)=0)&(sellk.jesellj.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() 的内容。*/#include #include #include #include #include #define MAX 100typedef struct char dm5 ; /*产品代码 */char mc11 ; /*产品名称 */int dj ; /*单价 */int sl ; /*数量 */long je ; /*金额 */PRO;PRO sellMAX ;void ReadDat() ;void WriteDat() ;void SortDat()/*/int i,j;PRO tt;for(i=0; i MAX-1; i+)for(j=i+1; j MAX; j+) if(strcmp(selli.dm, sellj.dm) 0) tt=selli; selli=sellj; sellj=tt;if(strcmp(selli.dm, sellj.dm)=0)&(selli.je sellj.je) tt=selli; selli=sellj; sellj=tt;/*/学习必备欢迎下载void main()memset(sell, 0, sizeof(sell) ;ReadDat() ;SortDat() ;WriteDat() ;void ReadDat()FILE *fp ;char str80, ch11 ;int i ;fp = fopen(IN.DAT, r) ;for(i = 0 ; i 100 ; i+) fgets(str, 80, fp) ;memcpy(selli.dm, str, 4) ;memcpy(selli.mc, str + 4, 10) ;memcpy(ch, str + 14, 4) ; ch4 = 0 ;selli.dj = atoi(ch) ;memcpy(ch, str + 18, 5) ; ch5 = 0 ;selli.sl = atoi(ch) ;selli.je = (long)selli.dj * selli.sl ;fclose(fp) ;void WriteDat()FILE *fp ;int i ;fp = fopen(OUT10.DAT, w) ;for(i = 0 ; i 0,个数 cnt=cnt+1 。则该数满足条件存入数组b 中 ,且8129, 9-8-1-20,则该数不满足条件忽略。注意 : 部分源程序存在文件PROG1.C 文件中。程序中已定义数组: a300, b300,已定义变量 : cnt请勿改动数据文件IN.DA T 中的任何数据、主函数main() 、读函数 readDat() 和写函数 writeDat() 的内容。*/#include int a300, b300, cnt=0 ;jsvalue()/*/int i,j,k,t;for(i=0; i 0)bcnt+=ai;for(i=0; i cnt-1; i+) k=i;for(j=i+1; j cnt; j+)if(bk bj) k=j;if(k!=i) t=bk; bk=bi; bi=t; /*/main()int i ;readDat() ;jsvalue() ;writeDat() ;printf(cnt=%dn, cnt) ;for(i = 0 ; i cnt ; i+) printf(b%d=%dn, i, bi) ;readDat()FILE *fp ;int i ;fp = fopen(in.dat,r) ;for(i = 0 ; i 300 ; i+) fscanf(fp, %d, &ai) ;fclose(fp) ;writeDat()FILE *fp ;int i ;fp = fopen(out.dat,w) ;学习必备欢迎下载fprintf(fp, %dn, cnt) ;for(i = 0 ; i 0,则该数满足条件计算平均值pjz1,且个数 cnt=cnt+1 。9812, 9-8-1-20,则该数不满足条件计算平均值pjz2。注意 : 部分源程序存在文件 PROG1.C 文件中。程序中已定义数组: a300, 已定义变量 : cnt,pjz1,pjz2请勿改动数据文件IN.DA T 中的任何数据、主函数main() 、读函数 readDat() 和写函数 writeDat() 的内容。*/#includeint a300, cnt=0 ;double pjz1=0.0, pjz2=0.0 ;jsvalue()/*/int i;for(i=0; i 0) cnt+; pjz1+=ai; else pjz2+=ai; if(cnt) pjz1/=cnt; if(cnt300) pjz2/=300-cnt; /*/main()int i ;readDat() ;jsvalue() ;writeDat() ;printf(cnt=%dn 满足条件的平均值 pzj1=%7.2lfn 不满足条件的平均值 pzj2=%7.2lfn, cnt,pjz1,pjz2); 学习必备欢迎下载readDat()FILE *fp ;int i ;fp = fopen(in.dat,r) ;for(i = 0 ; i cd, ab 必须是偶数且能被5 整除 , cd 必须是奇数 ,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b 中 , 并要计算满足上述条件的四位数的个数cnt。最后main() 函数调用写函数writeDat( ) 把结果 cnt 以及数组b 中符合条件的四位数输出到OUT.DA T 文件中。注意 : 部分源程序存在文件PROG1.C 文件中。程序中已定义数组: a200, b200,已定义变量 : cnt 请勿改动数据文件IN.DAT 中的任何数据、主函数main() 、读函数 readDat() 和写函数writeDat() 的内容。*/#include #define MAX 200int aMAX, bMAX, cnt = 0 ;void jsVal()/*/int i,j,k,A,B,C,D;for(i=0; i 10*C+D) bcnt+=ai;for(i=0; i cnt-1; i+) k=i;for(j=i+1; j cnt; j+)if(bk bj) k=j;if(k!=i) A=bk; bk=bi; bi=A;/*/学习必备欢迎下载void readDat()int i ;FILE *fp ;fp = fopen(in.dat, r) ;for(i = 0 ; i MAX ; i+) fscanf(fp, %d, &ai) ;fclose(fp) ;void main()int i ;readDat() ;jsVal() ;printf( 满足条件的数=%dn, cnt) ;for(i = 0 ; i cnt ; i+) printf(%d , bi) ;printf(n) ;writeDat() ;writeDat()FILE *fp ;int i ;fp = fopen(out.dat, w) ;fprintf(fp, %dn, cnt) ;for(i = 0 ; i =10 且 ab-cd=0 且 ab-cd=10 且两个数均是奇数, 同时两个新数的十位数字均不为零 ,则将满足此条件的四位数按从大到小的顺序存入数组b 中 , 并要计算满足上述条件的四位数的个数cnt。out.dat 的内容应当为:583987996595443132311_老枪小于 200 个四位数之一 (共四题 )code:/*已知在文件IN.DAT 中存有若干个(个数 200)四位数字的正整数, 函数 ReadDat( )读取这若干个正整数并存入数组 xx 中。请编制函数Calvalue( ), 其功能要求 : 1. 求出这文件中共有多少个正整数totNum; 2. 求出这些数中的各位数字之和是奇数的数的个数totCnt, 以及满足此条件的这些的算术平均值totPjz 。最后main( )函数调用函数WriteDat() 把所求的结果输出到OUT.DAT 文件中。注意 : 部分源程序存放在PROG1.C 中。请勿改动数据文件IN.DA T 中的任何数据, 主函数 main() 、读数据函数ReadDat() 和输出数据函数WriteDat()的内容。*/#include #include #define MAXNUM 200int xxMAXNUM ;int totNum = 0 ; /*文件 IN.DA T 中共有多少个正整数*/int totCnt = 0 ; /*符合条件的正整数的个数*/double totPjz = 0.0 ; /*平均值*/int ReadDat(void) ;void WriteDat(void) ;void Calvalue(void)/*/while(xxtotNum) if(xxtotNum/1000+xxtotNum/100%10+xxtotNum/10%10+xxtotNum)%2) totCnt+; totPjz+=xxtotNum; 学习必备欢迎下载totNum+;if(totCnt) totPjz/=totCnt;/*/void main()int i ;clrscr() ;for(i = 0 ; i MAXNUM ; i+) xxi = 0 ;if(ReadDat() printf( 数据文件IN.DAT 不能打开 !007n) ;return ;Calvalue() ;printf( 文件 IN.DAT 中共有正整数 =%d 个 n, totNum) ;printf( 符合条件的正整数的个数printf( 平均值 =%.2lfn, totPjz) ;WriteDat() ;=%d个 n, totCnt) ;int ReadDat(void)FILE *fp ;int i = 0 ;if(fp = fopen(in.dat, r) = NULL) return 1 ;while(!feof(fp) fscanf(fp, %d, &xxi+) ;fclose(fp) ;return 0 ;void WriteDat(void)FILE *fp ;fp = fopen(OUT.DAT, w) ;fprintf(fp, %dn%dn%.2lfn, totNum, totCnt, totPjz) ;fclose(fp) ;in.dat 文件内容如下:6045,6192,1885,3580,8544,6826,5493,8415,3132,5841,6561,3173,9157,2895,2851,6082,5510,9610,5398,5273,3438,1800,6364,6892,9591,3120,8813,2106,5505,1085,5835,7295,6131,9405,6756,2413,6274,9262,5728,2650,6266,5285,7703,1353,1510,2350,4325,4392,7573,8204,7358,6365,3135,9903,3055,3219,3955,7313,6206,1631,5869,5893,4569,1251,2542,5740,2073,9805,1189,7550,学习必备欢迎下载4362,6214,5680,8753,8443,3636,4495,9643,3782,5556,1018,9729,8588,2797,4321,4714,9658,8997,2080,5912,9968,5558,9311,7047,6138,7618,5448,1466,7075,2166,4025,3572,9605,1291,6027,2358,1911,2747,7068,1716,9661,5849,3210,2554,8604,8010,7947,3685,2945,4224,7014,9058,6259,9503,1615,1060,7787,8983,3822,2471,5146,7066,1029,1777,7788,2941,3538,2912,3096,7421,9175,6099,2930,4685,8465,8633,2628,7155,4307,9535,4274,2857,6829,6226,8268,9377,9415,9059,4872,6072,out.dat 文件内容应当如下:160695460.51_老枪小于 200 个四位数之二 (共四题 )code:/*已知在文件IN.DAT 中存有若干个(个数 200)四位数字的正整数, 函数 ReadDat( )读取这若干个正整数并存入数组 xx 中。请编制函数Calvalue( ), 其功能要求 : 1. 求出这文件中共有多少个正整数 totNum; 2. 求出这些数中的各位数字之和是偶数的数的个数totCnt, 以及满足此条件的这些数的算术平均值 totPjz 。最后 main( ) 函数调用函数WriteDat() 把所求的结果输出到OUT.DAT 文件中。注意 : 部分源程序存放在PROG1.C 中。请勿改动数据文件IN.DA T 中的任何数据, 主函数 main() 、读数据函数ReadDat() 和输出数据函数WriteDat()的内容。*/#include#include#define MAXNUM 200int xxMAXNUM ;int totNum = 0 ; /*文件 IN.DA T 中共有多少个正整数int totCnt = 0 ; /*符合条件的正整数的个数*/*/double totPjz = 0.0 ; /*平均值*/int ReadDat(void) ;void WriteDat(void) ;void Calvalue(void)/*/for(; xxtotNum; totNum+)if(xxtotNum/1000+xxtotNum/100%10+xxtotNum/10%10+xxtotNum%10)%2=0) totCnt+; totPjz+=xxtotNum; if(totCnt) totPjz/=totCnt;/*/void main()int i ;clrscr() ;学习必备欢迎下载for(i = 0 ; i MAXNUM ; i+) xxi = 0 ;if(ReadDat() printf( 数据文件IN.DAT 不能打开 !007n) ;return ;Calvalue() ;printf( 文件 IN.DAT 中共有正整数 =%d 个 n, totNum) ;printf( 符合条件的正整数的个数printf( 平均值 =%.2lfn, totPjz) ;WriteDat() ;int ReadDat(void)FILE *fp ;int i = 0 ;=%d个 n, totCnt) ;if(fp = fopen(in.dat, r) = NULL) return 1 ;while(!feof(fp) fscanf(fp, %d, &xxi+) ;fclose(fp) ;return 0 ;void WriteDat(void)FILE *fp ;fp = fopen(OUT.DAT, w) ;fprintf(fp, %dn%dn%.2lfn, totNum, totCnt, totPjz) ;fclose(fp) ;out.dat 文件内容应当如下:160915517.1200 个四位数之三(共四题 )code:/*已知在文件 IN.DAT 中存有若干个 (个数 200)四位数字的正整数 , 函数 ReadDat( )读取这若干个正整数并存入数组 xx 中。请编制函数 Calvalue( ), 其功能要求 : 1. 求出这文件中共有多少个正整数 totNum;2. 求这些数右移1 位后 , 产生的新数是奇数的数的个数totCnt, 以及满足此条件的这些数(右移前的值 )的算术平均值totPjz 。最后 main() 函数调用函数WriteDat() 把所求的结果
展开阅读全文