问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求2009计算机三级网络技术上机考试题库

发布网友 发布时间:2022-05-22 08:53

我来回答

1个回答

热心网友 时间:2024-03-07 17:35

已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。其中:金额=单价×数量。函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品名称从小到大进行排列,若产品名称相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT.DAT中。
注意:部分源程序已给出。请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。
【试题程序】
#include <stdio.h>
#include <memory.h>
#include <string.h>
#include <stdlib.h>
#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 < 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("OUT.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);
}

【考点分析】 本题考查结构体数组的排序。考查的知识点主要包括:结构体成员运算,字符串比较符,数组排序。
【解题思路】 此题属于销售记录排序类题型。此类题型主要考查对结构体数组的排序。解题时,应注意3个关键点:关键点1如何按产品名称从小到大排序;关键点2如果产品名称相同;关键点3如何按金额从小到大排列。
数组排序可以用起泡法实现,起泡法的思路是:将较小的值像空气泡一样逐渐"上浮"到数组的顶部,而较大的数值逐渐"下沉"到数组的底部。具体为第1趟用第1个记录和第2个记录进行比较,如果不符合要求,就进行交换,第2个记录和第3个记录比较,直到倒数第2个记录和最后1个记录比较完成;第2趟用第2个记录和第3个记录比较,然后第3个和第4个比较,依此类推。
本题在双循环中进行每次记录比较时,首先用字符串比较函数strcmp比较两个产品的名称,如果返回的值大于0,则这两个产品进行数据交换;如果返回值等于0,再比较两个产品的金额,如果前一个产品的金额大于后一个产品的金额,则这两个产品进行数据交换。
【参*】
void SortDat()
{
int i,j; /*定义循环控制变量*/
PRO temp; /*定义数据交换时的暂存变量(这里是结构体变量)*/
for(i=0;i<99;i++) /*利用起泡法进行排序*/
for(j=i+1;j<100;j++)
if(strcmp(sell[i].mc,sell[j].mc)>0)/*产品名称从小到大排列*/
{
temp=sell[i];
sell[i]=sell[j];
sell[j]=temp;
}
else if(strcmp(sell[i].mc,sell[j].mc)==0) /*若产品名称相同*/
if(sell[i].je>sell[j].je) /*则按金额从小到大进行排列*/
{
temp=sell[i];
sell[i]=sell[j];
sell[j]=temp;
}
}

模板一 销售记录排序
【模板速记】
记忆口诀:一定义二循环三比较。定义指定义变量,循环指循环语句,比较是比较记录成员大小及交换,详见模板一。做题时,需灵活应用模板,切勿死记硬背。
【易错提示】 结构型数据对成员的访问用"."成员运算符;两个字符串的比较用字符串比较函数strcmp。
【举一反三】 在实际考试中,可能会稍微变化一下来考查,如题目要求变为:按金额从大到小进行排列,若金额相同,则按产品代码从大到小进行排列。对照模板可知,只需在解题时的"条件1"、"假设"及"条件2"做相应变化即可。所以,对于本类题型,考生只需正确理解题目意思及相关算法,灵活应用本题所给模板。
与本题类型相同的题目有:达标篇的第21、22、23、61套,优秀篇的第71、72、73、74、75套。这些题目都可以使用模板一来解题。本题对应软件中视频串讲第1讲。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
电脑分辨率设置多少合适笔记本电脑分辨率多少最佳 各尺寸笔记本电脑的最佳分辨率 2022年高考480到510分能上山东科技大学吗 朋友借了我一万块钱,现在坐牢了怎么还钱? 天王星和海王星虽然看似一对姊妹星,但还是有区别 ...值得收藏吗?现在分别只都多少钱,照片上有一个铜币的 谁能告诉我这是一枚什么样的铜币,值不值钱? 有谁知道这铜币值不值钱,懂家告诉我一下!谢谢 有谁知道这个铜钱的来历 可以进行异地公积金贷款吗 qq上亲密关系显示有一人与我有亲密关系但是点进亲密关系后发现没有是... 长固定镜头是指时间长还是焦距长 固定镜头所形成的视觉效果是指 数码相机伸缩镜头和固定镜头有什么区别? 写剧本分镜头时,镜头不动背景不动只动人物是什么拍摄手法?帮忙在写作业。 这是个什么字呢~~~ 这是个什么字 求解 请问,这是个什么字? 这是个什么字呢?! 零下16度 听装成箱的珍珍和冰糖雪梨饮料放在车后备箱会冻吗?怕冻吗? 种水果5个人互相可以点满吗,每个人被点三次.就OK? 罐装的安梨汁有什么营养价值? 秋梨膏能不能用塑料瓶装 求这组图片的出处和剩下的图 谢谢 法国国际广播电台的新闻文本在哪里? 法国国际广播电台收音问题 在哪有法国国际广播电台中文台 法国国际广播中文台 深圳演讲和口才培训班大概多少钱?智狼邦演讲口才怎么样? 员工在工厂停电限产原因提前下班回家意外受伤住院公司能给予赔付吗? 漂白水可以把黄色衣服漂成什么颜色 黄色衣服经过漂白后呈现什么颜色 衣服亮黄用84洗会变成啥颜色 黄色衣服让我用漂白水了弄白了 怎么能让它变回黄色呢? 黄色的衣服用漂白水洗过变成一团团的颜色,该怎么弄? 有那种那漂白白衣服上黄渍迹,还可以把有色衣服变成白色衣服的吗? 衣服漂白成黄色后,怎么变回原来的颜色 怎么用手指画小虾? 乌龟的食物怎么画 在电脑上如何使用iTunes将电脑上的音乐,图片,视频导入到iphone 关于植物特点或新发现的作文350字左右 理想之城最大的疑点,夏明为什么喜欢苏筱? 在理想之城里,苏筱为何能受到重用? 理想之城会计谁演的 理想之城梅姐扮演者是谁 闺蜜17岁生日送什么 小丸子的介绍 我的哥哥快过17岁生日了,送他什么礼物好呢 急需康乃馨的素描图! 日本荏原公司的虾青素品牌是什么?