首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
函数readDat()是从文件in71.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数JsSon(),其功能是:以行为单位对字符串按下面给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中。最后调用函数wri
函数readDat()是从文件in71.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数JsSon(),其功能是:以行为单位对字符串按下面给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中。最后调用函数wri
admin
2010-01-09
46
问题
函数readDat()是从文件in71.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数JsSon(),其功能是:以行为单位对字符串按下面给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中。最后调用函数writeDat()把结果xx输出到文件out71.dat中。
条件:从字符串中间一分为二,左边部分按字符的ASCⅡ值降序排序,右边部分按字符的ASCⅡ值升序排序。如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上。
例如: 位置0 1 2 3 4 5 6 7 8
源字符串a b c d h g f e
1 2 3 4 9 8 7 6 5
处理后的字符串d c b a e f g h
4 3 2 1 9 5 6 7 8
注意:部分源程序已给出。
请勿改动主函数main()、读函数readDat()和写函数writeDatO的内容。
试题程序:
#include<stdio.h>
#include<string.h>
#include<conio.h>
char xx[20][80];
void isSoYt()
{
}
void main()
{
readDat();
isSort();
writeDat();
{
readDat ( )
{
FILE *in;
int i=0;
char *p;
in=fopen ("in71.dat", "r");
while (i<20 && fgets(xx
,80,in)!=NULL)
{
p=strchr (xx
, ’\n’ );
if (p)
*p=0;
i++;
}
fclose (in);
}
writeDat ()
{
FILE *out;
int i;
clrscr ();
Out=fopen ("out71. dar ", "w");
for (i=0; i<20; i++)
{
printf("%s\n",xx
);
fprintf {out, "%s\n", xx
);
}
fclose (out);
}
选项
答案
void jsSort () { iht i, j, k, strl,half; char ch; for(i=0;i<20;i++) { strl=strlen (xx[i] ); /*求各行字符串的总长度*/ half=strl/2; /*求总长度的一半*/ for (j=0; j <half-1; j ++) /*左边部分按字符的ASCII值降序排序*/ for (k=j+l; k<half; k++) if(xx[i] [j]<xx[i] [k]) { ch=xx[i] [j]; xx[i] [j~]=xx[i] [k]; xx[i] [k] =ch; } if (strl%2) /*如果原字符串长度为奇数,则跳最中间的字符,使之不参加排序*/ half++; for (j=half; j <strl-1; j++) /*右边部分按字符的ASCII值升序排序* / for (k=j+l; k<strl; k++) if (xx[i] [j]>xx[i] [k]) { ch=xx [i] [j]; xx[i] [j]=xx[i] [k]; xx[i] [k] =ch; } } }
解析
本题考查的知识点如下:
(1)二维数组的访问和下标的控制。
(2)字符的ASCII码的比较。
(3)字符的排序。
本题将数据按行存入到二维数组xx中,行数为数组的第1个下标,每行字符的个数为数组的第2个下标。因为以行为字符串处理的单位,所以要先求得一行字符串的长度。字符可以参加任何整数运算,实际上是字符的ASCII码参与了运算,所以町以直接使用比较运算符对字符进行比较。对从0到(长度/2-1)的字符进行降序排序(数组的下标从0开始)。若长度为奇数,则再从(长度/2+1)开始(跳过最中间的字符)到最后1个字符进行升序排列。否则,从(长度/2)开始到最后1个字符进行升序排列。字符排序使用“选择排序法”,最后使用循环实现对每行数据的处理。
转载请注明原文地址:https://kaotiyun.com/show/pOYZ777K
本试题收录于:
三级网络技术题库NCRE全国计算机三级分类
0
三级网络技术
NCRE全国计算机三级
相关试题推荐
设在SQLServer2008某数据库中,已建立了四个文件组:fg1、fg2、fg3和fg4,以及一个分区函数RangePF1。RangePF1的定义代码如下:CREATEPARTITlONFUNCTIONRangePF1(int)ASRA
数据库应用系统投入运行后,应用系统进入运行管理与维护阶段。设某学生管理系统在运行管理与维护阶段有如下工作:Ⅰ.定期检查数据文件的存储空间占用情况,并根据需要分配存储空间Ⅱ.分斫数据库中各种操作,以发现潜在性能问题Ⅲ.将数据库中历史数据转储到离线存储介
设在SQLServer2008某数据库中,要设置不允许用户U1获得对表T数据的删除权限,请补全实现该授权操作的SQL语句:【9】ONTTOU1;
数据库管理系统提供了数据定义语言(DDL),用于定义各种数据库对象。数据定义语句经DDL编译器编译后,各种对象的描述信息存放在数据库的_________中。
关于数据库概念设计及物理结构设计,下列说法错误的是()
数据库设计主要包括概念设计、逻辑设计和物理设计三个步骤。设有下列活动:Ⅰ.设计ER图Ⅱ.将ER图转换为关系模式Ⅲ.定义数据的约束条件Ⅳ.用SQL语句描述事务活动上述活动中,属于逻辑设计所包含活动的是()
设有职工表(职工号,姓名,地址1,地址2),其中,职工号为主码。现要求地址l和地址2组合起来不能有重复值。在SQLServer2008环境中有下列创建该表的语句:Ⅰ.CREATETABLE职工表(职工号intPRIMARYKE
设有m个的用户集合US={u1,…,um},现对他们的行为数据进行处理,使得每个用户ui对应一个n维向量Vi=[vi1,…,vin],用于表示用户ui的特征。设有函数sim(Vi,Vj)用于判定用户ui与用户uj之间的相似性。若有算法A,能根据用户间的相
在开发数据库应用系统时,使用存储过程可以提高数据访问效率,降低网络流量。下列关于存储过程的说法,错误的是()。
设某并行数据库采用一台具有14个刀片的刀片服务器,每个刀片具有独立的内存和磁盘,各刀片之间通过刀片服务器上的以太网交换机实现通信,则该并行数据库采用的体系结构是【13】结构。
随机试题
下列关于胆囊癌的叙述,哪项是正确的
膜结构的脂质分子层的主要作用是
下列关于支气管哮喘的说法不正确的是()
A.牙尖B.牙窝C.斜面D.切缘嵴E.上牙腭尖和下牙颊尖后牙工作侧:正中早接触,侧方也有早接触,应磨
(2010年)圆柱形外管嘴的长度为L、直径为d、作用水头为H0,则其正常的工作条件为()。
先行指标是指那些在经济活动中预先上升或下降的经济指标。这一组指标不包括( )。
下列有关成年人的健康知识正确的一项是:
2009年1月1日,中共中央、国务院发布了《关于2009年促进农业稳定发展农民持续增收的若干意见》。为贯彻落实这一文件精神,具体部署有关工作,××市人民政府决定于2009年1月16日发文召开各县(市、区)政府一把手和主管农业领导参加的农村工作会议。假如由你
阅读以下史料,并回答问题:初,范阳祖逖,少有大志,与刘琨俱为司州主簿,同寝,中夜闻鸡呜,蹴琨觉,曰:“此非恶声也!”因起舞。及渡江,左丞相睿以为军谘祭酒。逖居京口,纠合骁健,言于睿曰:“晋室之乱,非上无道而下怨叛也,由宗室争权,自相鱼肉,遂使戎狄
Itistruethatthegroupinteractionshavebothpositiveandnegativesides.Whenwe【B1】______,conflictcannotbegottenrido
最新回复
(
0
)