资源描述:
《三级网络分类汇总》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、计算机等级考试三级C上机题型分类汇总 第一种:产品销售记录问题: /*已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。其中: 金额=单价*数量计算得出。函数ReadDat()读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按金额从小到大进行排列,若金额相等,则按产品代码从小到大进行排列,最终排列结果仍存入结构数组sell中。最后main()函数调
2、用函数WriteDat()把结果输出到文件OUT1.DAT中。注意:部分源程序存放在PROG1.C中。以下是引用片段: #define MAX 100 typedef struct { char dm[5] ; /* 产品代码 */ char mc[11] ; /* 产品名称 */ int dj ; /* 单价 */ int sl ; /* 数量 */ long je ; /* 金额 */ } PRO ; 函数解析://if((sell.je>sell[j].je)
3、
4、(sell.je==sell[j].je)&&
5、(strcmp(sell.dm, sell[j].dm)>0))是此题的精华所在理解它就理解了这道题的编程道理 首先sell.je>sell[j].je如果金额大小成立的话,就条件成立,把两个数据换位置,如果前者不成立,就判定金额是否相等,如果相等的话,代码还有大小的话,按从小到大的顺序排列。 这种函数的编程方法,适用于有一定基础的编程者,如果是初学者的话建议用以下函数来表达,此方法是按照题意一部一部来分析的,是比较保守的编程方法。以下是引用片段: void SortDat() { int i,j; PRO swap;
6、 for(i=0; i < MAX-1; i++) { for(j=i+1; j < MAX; j++) if(sell.je>sell[j].je) {swap=sell; sell=sell[j]; sell[j]=swap;} else if((sell.je==sell[j].je)&&(strcmp(sell.dm,sell[j].dm)>0)) {swap=sell; sell=sell[j]; sell[j]=swap;} } 100个产品销售记录排序其余9题说明 1)in.dat内容完全相同。 2)
7、程序也基本雷同,仅排序的要求不一样。 3)考生应熟悉strcmp()函数,否则有的题相当不好处理。 试题变化: 排序要求: 按金额从小到大进行排列,若金额相等,则按产品代码从大到小进行排列相应语句: if((sell.je>sell[j].je)
8、
9、((sell.je==sell[j].je)&&(strcmp(sell.dm,sell[j].dm)<0))) 排序要求:按金额从大到小进行排列,若金额相等,则按产品代码从小到大进行排列相应语句:if((sell.je10、
11、(sell.je==sell
12、[j].je)&&(strcmp(sell.dm,sell[j].dm)>0)) 排序要求: 按金额从大到小进行排列,若金额相等,则按产品代码从大到小进行排列相应语句: if((sell.je13、
14、(sell.je==sell[j].je)&&(strcmp(sell.dm,sell[j].dm)<0)) 排序要求: 按产品名称从小到大进行排列,若产品名称相同,则按金额从小到大进行排列 if((strcmp(sell.mc,sell[j].mc)>0)
15、
16、(strcmp(sell.mc,sell[j
17、].mc)==0)&&(sell.je>sell[j].je)) 排序要求: 按产品名称从小到大进行排列,若产品名称相同,则按金额从大到小进行排列 if(strcmp(sell.mc,sell[j].mc)>0
18、
19、(strcmp(sell.mc,sell[j].mc)==0)&&(sell.je20、
21、(strcmp(sell.mc,sell[j].m
22、c)==0)&&(sell.je>sell[j].je)) 排序要求: 按产品名称从大到小进行排列,若产品名称相同,则按金额从大到小进行排列 if((strcmp(sell.mc,sell[j].mc)<0)
23、
24、(strcmp(