首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
已知在文件IN6.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型 10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。其中:金额=单价×数量。函数ReadDat()的功能是读取这
已知在文件IN6.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型 10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。其中:金额=单价×数量。函数ReadDat()的功能是读取这
admin
2009-02-15
68
问题
已知在文件IN6.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型 10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。其中:金额=单价×数量。函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品名称从小到大进行排列,若产品名称相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件 OUT6.DAT中。
注意:部分源程序已给出。
请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。
试题程序:
#include<stdio.h>
#include <mem.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
#define MAX 100
typedef struct
char dm[5]; /* 产品代码 */
char mc[ll]; /* 产品名称 */
int dj; /* 单价 */
int sl; /* 数量 */
long je; /* 金额 */
} PRO;
PRO sell [MAX];
void ReadDat();
void WriteDat();
void SortDat()
{
}
main()
{
memset(sell, 0, sizeof(sell));
ReadDat();
SortDat()
WriteDat ();
}
void ReadDat ()
{
FILE *fp;
char str[80], ch[11];
int i;
fp = fopen("IN6.DAT", "r");
for (i = 0; i < 100; i++)
{
fgets(str, 80, fp);
memcpy(sell
.dm, str, 4);
memcpy(sell
.mc, str+4, 10);
memcpy(ch, str + 14, 4); chi4] = 0;
sell
.dj = atoi(ch);
memcpy(ch, str +18, 5); chi5] = 0;
sell
.sl = atoi(ch);
sell
.je = (long)sell
.dj * sell
.sl;
}
fclose(fp);
}
void WriteDat()
{
FILE *fp;
int i;
fp = fopen("OUT6.DAT", "w");
for(i = 0; i < 100; i++)
{
fprintf(fp, "%s %s %4d %5d %1Old\n", sell
.dm, sell
.mc,
sell
.dj,sell
.sl, sell
.je);
}
fclose(fp);
}
选项
答案
void SortDat() { int i, j; PRO xy; for(i=0; i<99; i++) for(j=i+1; j<100; j++) if(strcmp(sell[i]. mc, sell[j]. mc)>0) /*按产品名称从小到大进行排列*/ {xy=sell[i]; sell [i]=sell[j]; sell[j]=xy; ) else if(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; ) }
解析
本题是有关结构体数组的排序问题,可以用选择法来实现。用第一个元素的产品名称依次和它后面的元素的产品名称进行比较,如果发现当前元素的产品名称比后面的某个元素的产品名称对应字符的ASCII码大(这里用到了字符串比较函数strcmp()),则交换这两个元素的位置,继续和后面的其他元素进行比较,最终在第一个元素中存放的是产品名称最小的元素。以此类推,就实现了从小到大排序的功能。注意:这里要进行交换的是两个结构体变量,而不是它们的某一个域,因此,要借助第三个结构体变量来充当中间容器。若产品名称相同,则要按照金额从小到大进行排序。
转载请注明原文地址:https://kaotiyun.com/show/YxfZ777K
本试题收录于:
三级信息管理技术题库NCRE全国计算机三级分类
0
三级信息管理技术
NCRE全国计算机三级
相关试题推荐
计算机网络从逻辑功能上可以分为()。
下列选项中,属于IPv6的主要特征是()。①IPv6地址的长度为128位②IPv6地址的长度为256位③有效的分级寻址④新的协议格式⑤内置的安全机制⑥地址自动配置⑦更好的支持QoS服务
在配置OSPF路由协议命令network192.168.10.10.0.0.0.63area0中,最后的数字0表示()。
运行OSPF协议的路由器每10s向它的各个接口发送Hello分组,接收到该分组的路由器就知道了邻居的存在。为了避免路由信息被重复发送,需要给路由信息包编号。假设每秒钟传一次路由信息,为确保路由信息包的编号在一年内不重复使用,则编号的最短长度应为()
路由信息协议RIP的跳数一般小于()。
下列路由选择协议中,属于在两个自治系统之间使用的路由选择协议是()。
按网络应用规模分类,网络服务器可分为()。①基础级服务器②工作组级服务器③企业级服务器④部门级服务器⑤高端服务器⑥中端服务器⑦低端服务器
确定网络层次结构及各层采用的协议是网络设计中______阶段的主要任务。
数据加密是一种保证数据安全的方法,数据解密则是逆变换,即______。
在设计点对点(AdhoC)模式的小型无线局域时,应选用的无线局域网设备是
随机试题
煤块在常温下不易着火,更不易发生爆炸,因此煤矿开采和加工一般不用防爆。()
甲状腺危象时,首先选用的药物是
政府投资主管部门根据需要委托符合资质要求的工程咨询单位对拟建项目的外部影响进行评估论证的是()。
背景资料:根据河流规划拟在A江建设一水利水电枢纽工程,该枢纽工程位于西南地区。工程以发电为主,同时兼有防洪、灌溉等任务。挡水建筑物为土石坝,水电站采用引水式开发方式。引水隧洞布置在右岸,在左岸设有开敞式溢洪道。该流域大部分为山地,山脉、盆地相互交错于其问
某社区活动中心工程,3层框架结构,无地下室,总建筑面积2417m2,层高均为4.5m,局部有1.2m深大截面梁。由于地质条件比较好,设计为放大基础加地连梁,房心填土后夯实,再做首层地面。在一层顶梁板施工时,钢筋制作安装、模板支设完毕,开始浇筑混凝土,当混
根据刑法的规定,在一定的条件下,对判处3年以下有期徒刑宣告缓刑的犯罪军人,可以戴罪立功,不以犯罪论处,所应具备的条件是()。
程序设计语言的定义一般包括______几个方面。
DothefollowingstatementsagreewiththeviewsofthewriterinReadingPassage2?Inboxes16-23onyouranswersheetwriteY
Whilemanycompaniesarespendingmoremoneyonsalespromotionthanonmediaadvertising,itisdifficulttosayjustwhatpe
ComputerCrimeAcomputercrimeisgenerallydefinedasonethatinvolvestheuseofcomputersandsoftwareforillegalpurp
最新回复
(
0
)