首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录有产品代码dm(字符型4位),产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)五部分组成。其中;金额一单价*数量计算得出。函数ReadDat()是读取这1
已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录有产品代码dm(字符型4位),产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)五部分组成。其中;金额一单价*数量计算得出。函数ReadDat()是读取这1
admin
2012-07-20
52
问题
已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录有产品代码dm(字符型4位),产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)五部分组成。其中;金额一单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存人结构数组sell中。请编制函数SortDat(),其功能要求;按金额从小到大进行排列,若金额相同,则按产品代码从大到小进行排列,最终结构仍存人结构数组sell中,最后调用函数WriteDat()把结构输出到文件OUT2.DAT中。
注意;部分源程序已给出。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
试题程序;
#include
#include
#include
#include
#define MAX 100
typedef struct
{
char dm[5];//产品代码
char mc[11];//产品名称
int dj;//单价
int sl; //数量
long je; //金额
}
PRO;
PRO sell[MAX];
void ReadDat();
void WriteDat();
void SortDat()
{
}
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<1 00;i++)
{
fgets(str,80,fp);
memcpy(sell
.dm,str,4);
memcpy(sell
.mc,str+4,10);
memcpy(ch,str+14,4);
ch[4]=0;
sell
.dj=atoi(ch);
memcpy(ch,str+18,4);ch[4]=0;
sell
.sl=atoi(ch);
sell
.je=(long)sell
.dj*sell
.sl;
}
fclose(fp);
}
void WriteDat(void)
{
FILE*fp;
int i;
fp=fopen("OUT2.DAT","w");
for(i=0;i<100;i++)
{
printf("%s%s%4d %5d%51d\n",sell
.dm,sell [1].mc,sell
.dj,sell
.sl,sell
.je);
fprintf(fp,"%s%s%4d%5d%51d\n",sell
.dm,sell
.mc,sell
.dj,sell
.sl,sell
.je);
}
fclose(fp);
}
选项
答案
void sortData() { PRODUCT temp; int i,j; memset(&temp,0,sizeof(temp)); for(i=0;i
sell[j].je||(sell[i].je==sell[j].je&&strcmp(sen[i].dm,sell[j].dm)<0)) { /*将以&sell[i]为起始地址大小为sizeof(temp)的内存中的内容复制到以&temp为起始地址的内存中*/ memcpy(&temp,&sell[i],sizeof(temp)); memcpy(&sell[i],&sell[j],sizeof(temp)); memcpy(&sell[j],&temp,sizeof(temp)); } }
解析
本题主要考查结构数组排序的问题。所谓结构数组排序就是以结构某一元素为依据对结构数组进行排序。排序的思想是(以从小到大为例);将当前数据与其后的各个数据相比较,如果当前的数据比其后的数据大,则将两数据进行交换,从而使得前面的数据小于后面的数据,达到从小到大排序的目的。由于结构不像变量那样可以通过简单的赋值来交换变量(如果要赋值的话需要对结构里的所有元素进行赋值替换,比较麻烦),所以在进行两个相邻结构交换时,用到内存拷贝函数来对内存的内容整体进行操作。
转载请注明原文地址:https://kaotiyun.com/show/C24Z777K
本试题收录于:
三级网络技术题库NCRE全国计算机三级分类
0
三级网络技术
NCRE全国计算机三级
相关试题推荐
文件服务器具有分时系统文件管理的全部功能,能够为用户提供完善的数据、文件和______。
URL(统一资源定位器)主要包括3部分:协议类型、【 】和路径及文件名。
计算机网络的安全是指
应用层DNS协议主要用于实现的网络服务功能是
按照路由选择算法,连接LAN的网桥通常分为透明网桥和
主板主要组成部分是
Ethernet交换机是利用“端/MAC地址映射表”进行数据交换的,交换机动态建立和维护端口/MAC地址映射表的方法是
在电子商务活动中,______是电子商务的高级阶段和最终目的。
公钥体制的两类安全基础是:基于大整数因子分解问题;另一类是基于【 】问题。
假设中国到美国的国际长途费为18.4元/分钟,市话费为0.34元/分钟,Internet使用费为10元/小时。如果国内的某Internet用户通过电话网接入本地ISP,浏览位于美国的一台WWW服务器,共访问了30分钟,那么用户需要支持的费用为多少?
随机试题
推销总结报告应包括()
女,35岁,不慎摔倒后左手撑地,手腕部肿胀,活动障碍,鼻烟窝部明显压痛。若急行X片检查未发现骨折,复查X片的最佳时机是
患者女,51岁。风湿性心瓣膜病二尖瓣狭窄并关闭不全20年,房颤4年。无高血压及高脂血症病史。3小时前在家做饭时突然跌倒在地伴失语。如该患者的心脏超声示左心房大小为60mm×70mm,对其房颤的治疗最恰当的是
患者,女,35岁,已婚。近半年感下腹部疼痛,痛及腰骶,经行加重,神疲乏力,食少纳呆,舌质黯红,苔白,脉弦涩无力。妇科检查:双附件轻度增厚,轻压痛。治疗应首选
下列哪种检查方法能准确判定二尖瓣狭窄的程度
鉴别甲型强心苷元与乙型强心苷元的反应是()。
题7~8:某厂房楼盖预制钢筋混凝土槽形板的截面及配筋如图2-3所示,混凝土强度等级C30,肋底部配置的HRB335级纵向受力钢筋为218(As=509mm2)。该预制槽形板自重标准值为10kN,制作时需设置4个吊环,吊环采用HPB235级钢筋制
号称“华中屋脊”的是()。
《黄金诏书》
AcupofteaisalmostasymbolofBritishculture.Asanation,wearewellknownforourstronglikingforthisparticularhot
最新回复
(
0
)