首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
文件IN.DAT中存有200个销售记录。每个记录均由产品代码ID(字符型4位)、产品名称name(字符型10位)、单价price(整型)、数量amount(整型)、金额value(长整型)几部分组成。其中:金额=单价×数量.函数ReadData()负责将I
文件IN.DAT中存有200个销售记录。每个记录均由产品代码ID(字符型4位)、产品名称name(字符型10位)、单价price(整型)、数量amount(整型)、金额value(长整型)几部分组成。其中:金额=单价×数量.函数ReadData()负责将I
admin
2021-06-16
46
问题
文件IN.DAT中存有200个销售记录。每个记录均由产品代码ID(字符型4位)、产品名称name(字符型10位)、单价price(整型)、数量amount(整型)、金额value(长整型)几部分组成。其中:金额=单价×数量.函数ReadData()负责将IN.DAT中的数据读到结构数组sell[-]中。请编制函数sortData(),将各个记录按金额从小到大进行排列,若金额相同,则按产品代码从大到小进行排列,并将排列后的结果存放到sell[]中。函数WriteData()负责将sell[]中的数据输出到文件OUT.DAT中。
注意:部分源程序已给出。
请勿改动主函数main()、读函数ReadData()和写函数WriteData()的内容。
试题程序:
#include
#include
#include
#include
#define MAX 200
typedef struct
{
char ID[5]; //产品代码
char name[11];//产品名称
int price; //单价
int amount; //数量
long value; //金额
}
PRODUCT;
PRODUCT sell[MAX];
void ReadData();
void WriteData();
void sortData()
{
}
void ReadData()
{
FILE*fp;
char str[80],ch[11];
int i;
fp=fopen(“IN.DAT”,“r”);
for(j=0;i
{
fgets(str.80,fp);
memcpy(sell
.ID,str,4);
memcpy(sell
.name,str+4,10);
memcpy(ch.str+14.4);ch[4]=’\0’;
sell
.price=atoi(ch);
memcpy(ch,str+18,4); ch[4]=’\0’;
sell
.amount=atoi(ch);
sell
.value=(10ng)sell
,price * sellEi3.a
mount;
}
fclose(fp);
}
void WriteData()
{
FILE*fp;
int i;
fp=fopen(“OUT.DAT”,“W”);
for(i=0;i
{
printf(“%s%s%4d%4d%101d\n”,sell
.
ID,sell
.name,sell
.price,sell
.amount,
sell
.value);
fprintf(fp,“%S%S%4d%4d%101d\n”,sell
.ID,sell
.name,sell
.price,sell
.a
mount,sell
.value);
}
fclose(fp);
}
void main()
{
memset(sell.0,sizeof(sell));
ReadData();
sortData();
WriteData();
}
选项
答案
void sortData() { PRODUCT temp ; int i,j; memset(temp,0;sizeof(temp)); for(i=0;i
sen[j].value||(sell[i].value= =sell[j].value&&stremp(sell[i].ID,sell[j].ID)< 0)) { memepy(&temp,&sell[i].sizeof(temp)); //将以&selll,i]为起始地址、大小为sizeof(temp) 的内存中的内容复制到以&temp为起始地址 的内存中*/ memcpy(&sell[i],&sell[j],sizeof(temp)); memepy(&sell[j[,&temp,sizeof(temp)); } }
解析
本题主要考查结构数组排序的问题。
所谓结构数组排序就是以结构某一元素为依据对结构数组进行排序。排序的思想是(以从小到大为例):将当前数据与其后的各个数据相比较,如果当前的数据比其后的数据大,则将两数据进行交换,从而使得前面的数据小于后面的数据,达到从小到大排序的目的。但是由于结构不像变量那样可以通过简单的赋值来交换变量(如果要赋值的话需要对结构里的所有元素进行赋值替换。比较麻烦),所以在进行两个相邻结构交换时。用到内存拷贝函数来对内存的内容整体进行操作。
转载请注明原文地址:https://kaotiyun.com/show/NfOZ777K
本试题收录于:
三级网络技术题库NCRE全国计算机三级分类
0
三级网络技术
NCRE全国计算机三级
相关试题推荐
将内部专用IP地址转换为外部公用IP地址的技术是()。
下列关于Windows2003系统下WWW服务器的描述中,错误的是()。
在一台主机上用浏览器无法访问到域名为www.pku.edu.cn的网站,并且在这台主机上执行ping命令时有如下信息C:\>pingwww.pku.edu.cnPingingwww.pku.edu.cn[162.105.131.11
下列关于CiscoAironet1100进入快速配置步骤的描述中,错误的是()。
下列关于SNMP的描述中,错误的是()。
将Cisco6500第4模块第1端口的通信方式设置为半双工,第2~24端13的通信方式设置为全双工,以下交换机的端口配置,正确的是()。
请根据下图所示网络结构回答下列问题。如果将172.19.52.128/26划分3个子网,其中前两个子网分别能容纳10台主机,第三个子网能容纳20台主机。要求网络地址从小到大依次分配给3个子网,这3个子网的掩码分别为_________、________
请根据下图所示网络结构回答下列问题。如果该网络内服务器群的IP地址为172.19.52.100.172.19.52.126和172.19.53.100.172.19.53.200,要求用一种设备对服务器群提供如下保护:检测发送到服务器群的数据包,如果
下列关于集线器的描述中,正确的是()。
随机试题
在Word编辑时,文字下面出现红色波浪下划线表示()。
甲公司2013年度利润表中利润总额为6000万元,该公司适用的所得税税率为25%。递延所得税资产及递延所得税负债不存在期初余额。与所得税核算有关的情况如下:(1)2013年1月开始计提折旧的一项固定资产,成本为3000万元,使用年限为10年,净残值为0
青年女性患者,颈前部渐增大增粗,且不对称,超声见甲状腺肿大,内见多个结节,彩色多普勒显示血流丰富,应提示
患者,女,36岁。两大腿内侧患有钱币形红斑2枚,自觉瘙痒,边界清楚,中央有自愈趋向,多在夏季加重。其诊断是
属于磷酸戊糖通路的酶是属于糖异生的酶是
根据《进口药材管理办法》,以下关于“进口药材批件”的说法,错误的是
有下列( )情形之一的,人民法院裁定终结执行。
企业集体化阶段的主要危机表现为()。
三级价格歧视即对于同一商品或相似的商品,垄断厂商根据不同市场上顾客的需求量对价格变动的反应程度的差别,而实施不同的价格,以攫取更多的利益。根据上述定义,下列企业的行为与实施三级价格歧视无关的是:
深圳常被人“误读”的最主要原因是:给本文选择一个合适的标题:
最新回复
(
0
)