首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
在文件IN3.DAT中有200个正整数,且每个数均在1000至9999之间。函数readDat()的功能是读取这200个数存放到数组aa中。请编制函数JsSort(),该函数的功能是:要求按每个数的后3位的大小进行降序排列,将排序后的前10个数存入数组b中
在文件IN3.DAT中有200个正整数,且每个数均在1000至9999之间。函数readDat()的功能是读取这200个数存放到数组aa中。请编制函数JsSort(),该函数的功能是:要求按每个数的后3位的大小进行降序排列,将排序后的前10个数存入数组b中
admin
2009-02-19
46
问题
在文件IN3.DAT中有200个正整数,且每个数均在1000至9999之间。函数readDat()的功能是读取这200个数存放到数组aa中。请编制函数JsSort(),该函数的功能是:要求按每个数的后3位的大小进行降序排列,将排序后的前10个数存入数组b中,如果数组b中出现后3位相等的数,则对这些数按原始4位数据进行升序排列。最后调用函数writeDat()把结果bb输出到文件OUT3.DAT中。
例如:处理前 9012 5099 6012 7025 8088
处理后 5099 8088 7025 6012 9012
注意:部分源程序已给出。
请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。
试题程序:
#include <stdio.h>
#include <string.h>
#include <conio.h>
int aa[200], bb[10];
void jsSort(
{
}
main ( )
{
readDat );
jsSort( ;
writeDat();
}
readDat ( )
{
FILE *in;
int i;
in = fopen("IN3.DAT", "r");
for(i = 0; i < 200; i++) fscanf(in, "%d,", &aa
);
fclose(in);
}
writeDat ( )
{
FILE *out;
int i;
out = fopen("OUT3.DAT", "w");
clrscr ( );
for (i = 0; i < 10; i++)
{
printf("i=%d,%d\n", i+1, bb
fprintf(out, "%d\n", bb
);
}
fclose (out);
}
选项
答案
void isSort() { int i, j, data; for(i=0;i<199;i++) /*对数组中的4位数按后3位进行从大到小的排序*/ for(j=i+1; j<200; j++) { if (aa[i)%1000<aa[j]%1000)/*比较每个数的后3位*/ {data=aa[i]; aa[i]=aa[j]; aa[i]二data;) else if(aa[i]%1000==aa[j]%1000) /*若后3位数相等*/ if (aa[i]>aa[j] /*则要按原4位数的值进行从小到大的排序*/ {data=aa[i]; aa[i]=aa[j]; aa[j]=data; ) } for(i=0; i<10; i++) /*将排序后的前10个数存入数组b中*/ bb[i]=aa[i]; }
解析
本题实质上考的是对数组元素进行排序的问题。最容易理解的方法是选择法。选择法的基本思想是:依次用当前取得的元素和它后面的其他元素进行比较,比如要从大到小进行排序,则只要发现后面的元素中有比当前元素大的,就把刚发现的较大的元素与当前元素交换,这样做的目的是当与其后的所有元素都比较完后,可以保证当前位置的当前元素存放着最大数。按照同样的方法去取得次大数。由于本题中题目要求要对数组中的4位数的后3位进行排序,因此,要首先取得各个数的后3位并做比较,“aa
%1000”就可以得到每个数的后3位。根据题意,对这些数按后3位进行从大到小的排序。若后3位数相等,则要按原4位数的值进行从小到大的排序。
转载请注明原文地址:https://kaotiyun.com/show/GESZ777K
本试题收录于:
三级数据库技术题库NCRE全国计算机三级分类
0
三级数据库技术
NCRE全国计算机三级
相关试题推荐
在Bootloader的stagel中,以下各步骤的顺序应为()。a.跳转到stage2的C程序入口点b.为加载stage2准备RAM空间c.拷贝stage2的执行代码到RAM空间中d.基本硬件初始化
执行ARM指令LDRHR1,[R2,#4]!之后,以下说法错误的是()。
具有操作系统的嵌人式系统加电后最初执行的操作称为引导或者自举(Boot),对应的程序称为引导程序,或者引导加载程序(Bootloader)。引导加载程序主要完成【71】、外设存在自检、内存地址映射、初始化外围设备、内存寻址定位、加载并启动【72】。
在μC/OS—Ⅱ启动过程中,BootLoader执行完毕后,执行应用程序主文件中main()时,依次执行的三个主要的函数是:①OSInit();②【67】;③【68】。
以下关于Linux的叙述,错误的是()。
以下ARM指令中源操作数属于立即寻址的指令是()。
Linux内核主要是由5个子系统组成的,如下图所示,其中的A是【73】子系统,B是【74】子系统。
下列程序中属于板级支持包(BSP)内容的是()。
若某嵌入式系统的应用程序基于μC/OS—Ⅱ操作系统平台来开发,那么,应用程序的main()函数中,需要用函数【79】来创建任务。创建任务前用函数【80】来初始化μC/OS—Ⅱ。
嵌入式系统开发时,由于受到目标机资源的限制,需要建立一个__________【77】与目标机组成的调试架构来完成开发工作。若目标机为裸机环境时,通常需要通过__________【78】接口来完成硬件环境测试及初始软件的调试和下载。
随机试题
尝试背诵作为一种复习方法是()
巴西火蚁目前在美国南部大量滋生。与巴西的火蚁不同,美国的火蚁一巢中有两只蚁后,这种火蚁比一巢中只有一只蚁后的火蚁更有侵略性,它们几乎消灭了其巢穴附近的所有昆虫以独占食物来源,因而火蚁的数量迅速增长。在巴西由于火蚁的天敌能限制火蚁的数量,所以把这些天敌引进美
颅内压增高最常见的首发症状是【】
通货膨胀会影响大多数经济体。根据通货膨胀产生的原因,可以把它分为需求拉动型通货膨胀和成本推动型通货膨胀。尽管人们通常并不喜欢通货膨胀,但也有人认为通货膨胀会产生有利的影响。因此,政府经常采用货币政策和其他政策工具,试图对通货膨胀率进行控制。解释货币政策
测定血清总蛋白的常规方法是
(2007年)水文循环的主要环节是()。
【背景资料】为了适应经济开发区规模不断扩大的需要,某市政府计划在该区内新建一座110kV的变电站。新建变电站周边居住人口密集,站址内有地下给水管道和一幢6层废弃民宅。为加强现场文明施工管理,项目部制订了相应的现场环境保护措施。主要措施如下:措施l:施
最近20多年里,世界各国都注意总结过去的经验教训,不断探索()相结合的理论与实践,强调更好地发挥社会政策的经济功能。
作为行政(教育)学院的副院长,你认为应当怎样处理教学与科研的关系。
A、Todescribethelifetheydreamabout.B、Totalkaboutinterestingthingsontheirparents’wedding.C、Toarrangethingsabout
最新回复
(
0
)