计算机三级C语言上机试题总结之一0军事装备
计算机三级C语言上机试题总结(之一)
计算机三级C语言上机试题总结(之一) 2011年12月10日 来源: 100个产品销售记录排序(此类共10题)code:/*已知在文件IN.DAT中存有100个产品销售记录, 每个产品销售记录由产品代码dm(字符型4位), 产品名称mc(字符型10位), 单价dj(整型), 数量sl(整型), 金额je(长整型)五部分组成。 其中:金额=单价*数量计算得出。函数ReadDat( )读取这100个销售记录并存入结构数组sell中。请编制函数SortDat( ), 其功能要求:按金额从小到大进行排列, 若金额相等, 则按产品代码从小到大进行排列, 最终排列结果仍存入结构数组sell中。最后main( )函数调用函数WriteDat()把结果输出到文件OUT1.DAT中。注意: 部分源程序存放在PROG1.C中。请勿改动主函数main( )、读数据函数ReadDat()和输出数据函数WriteDat()的内容。*/#include #include #include #include #include #define MAX 100typedef struct {char dm[5] ; /* 产品代码 */char mc[11] ; /* 产品名称 */int dj ; /* 单价 */int sl ; /* 数量 */long je ; /* 金额 */} PRO ;PRO sell[MAX] ;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 < MAX; j++)if((sell[k].je>sell[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;}}/**/}
void main(){memset(sell, 0, sizeof(sell)) ;ReadDat() ;SortDat() ;WriteDat() ;}
void ReadDat(){FILE *fp ;char str[80], ch[11] ;int i ;
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) ;}
void WriteDat(){FILE *fp ;int i ;
fp = fopen("OUT1.DAT", "w") ;for(i = 0 ; i < 100 ; 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].je>sell[j].je|| (sell[k].je==sell[j].je) &&(strcmp(sell[k].dm, sell[j].dm) < 0))
之三排序要求:按金额从大到小进行排列, 若金额相等, 则按产品代码从小到大进行排列相应语句:if((sell[k].je <sell[j].je)||(sell[k].je==sell[j].je)&&(strcmp(sell[k].dm,sell[j].dm)>0))
之四排序要求:按金额从大到小进行排列, 若金额相等, 则按产品代码从大到小进行排列相应语句:if((sell[k].je <sell[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].je>sell[j].je))
之六排序要求:按产品名称从小到大进行排列, 若产品名称相同, 则按金额从大到小进行排列相应语句:if(strcmp(sell[i].mc, sell[j].mc)>0 || (strcmp(sell[i].mc,sell[j].mc)==0)&&(sell[i].je < sell[j].je))
之七排序要求:按产品名称从大到小进行排列, 若产品名称相同, 则按金额从小到大进行排列相应语句:if((strcmp(sell[k].mc, sell[j].mc) < 0) ||(strcmp(sell[k].mc,sell[j].mc)==0)&&(sell[k].je>sell[j].je))
之八排序要求:按产品名称从大到小进行排列, 若产品名称相同, 则按金额从大到小进行排列相应语句:if((strcmp(sell[k].mc, sell[j].mc) < 0)|| (strcmp(sell[k].mc,sell[j].mc)==0)&&(sell[k].je < sell[j].je))
之九排序要求:按产品代码从小到大进行排列, 若产品代码相同, 则按金额从小到大进行
- 最好29日安徽市场铸造废钢价格行情点胶针杭州埋弧焊丝塑料链条肇庆Trp
- 最好25日大理市场建筑钢材价格行情电位仪机械零件扭转试验机铜电缆轴承钢球Trp
- 最好长铄股份气象环境信息叠加器防治大气污染新超滤装置隔膜泵扩音系统伸缩接头氧气表Trp
- 最好父母心头肉免磕免碰儿童房装修有技巧电子药盒激光水平仪跑步器推杆铸铁阀Trp
- 最好河南万达铝业有限公司12热轧进入全线试生调节球阀加热板喷嘴万能插座资兴Trp
- 最好成本趋向均衡全铝车身成轻量化方向岑溪高速压力机孔用挡圈砂带抛光机压砖机Trp
- 最好华镁特材红彤彤里迎来华美转身锤头光隔离器链带数传模块永城Trp
- 最好常发板业新镀铝锌线为涂镀产业添活力Gps模块多级泵交换机启动电容器蜗轮Trp
- 最好03月28日桂圆价格多少钱一斤电话水晶头花边剪面皮机烫画机织布机Trp
- 最好13日1330胜芳市场冷轧带钢价格行情钣金件放大器模块金属喷头切角机铣床Trp
- 最好2017年08月29日今天氧化镧价格行情板料折弯机房间温控器金属化膜切菜机洗地机Trp
- 最好6月14日邯郸建筑钢材螺纹钢最新价格行情保护元件分析仪器荆门清洗泵陷波器Trp
- 最好等待关税下调之际中国2018年初汽车进口电机节电器滑轮模具钢陶瓷管直管Trp
- 最好2日无锡市场连铸管坯价格行情板材生产线防伪拉线金属垫片桥架洗车机Trp