首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
函数readDat()是从文件in71.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数JsSon(),其功能是:以行为单位对字符串按下面给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中。最后调用函数wri
函数readDat()是从文件in71.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数JsSon(),其功能是:以行为单位对字符串按下面给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中。最后调用函数wri
admin
2010-01-09
40
问题
函数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://jikaoti.com/ti/0Yp7FFFM
本试题收录于:
三级网络技术题库NCRE全国计算机三级分类
0
三级网络技术
NCRE全国计算机三级
相关试题推荐
设有关系模式W(C,P,S,G,T,R),其中各属性的含义是:C为课程,P为老师,S为学生,G为成绩,T为时间,R为教室,根据定义有如下的函数依赖集:F={C→G,(S,C)→G,(T,R)→C,(T,P)→R,(T,S)→R}W的规范
在数据仓库中,元数据主要分为【15】元数据和业务元数据两类。
在SQLServer2008中,设U1是SQLServer身份验证模式的数据库服务器登录账户,现希望U1在该数据库服务器上具有系统管理员权限。请补全下列语句:EXECsp_addsrvrolemember’U1’,’【9】’
设有学生表(学号,姓名,所在系)和选课表(学号,课程号,成绩),现要利用开窗函数查询每个学生的姓名、所在系及选课门数(不包括没选课的学生)。请补全下列语句:SELECTDISTINCT姓名,所在系,COuNT(*)【4】As选课门数FROM学生
当用户在一个关系表的某一列上建立一个非聚集索引(该表没有聚集索引)时,数据库管理系统会自动为该索引维护一个索引结构。该索引结构中的记录是由【2】和它相对应的指针构成的。
在SQLServer2008中,设U1是SQLServer身份验证模式的数据库服务器登录账户,现希望U1在该数据库服务器上具有系统管理员权限。请补全下列语句:EXECsp_addsrvrolemember′U1′,′【9】′
SQLServer2008提供了方便的数据导入/导出向导,现利用该向导将S1服务器上某数据库中T1表的数据导入到S2服务器某数据库中已有的T2表中。在数据源上的操作由用户U1完成,在目的服务器上的操作由用户U2完成。则U1和u2需要具有的权限是(
从功能上讲,数据库应用系统设计包括四个层次。下列层次中包含索引设计的是()。
设有m个的用户集合US={u1,…,um},现对他们的行为数据进行处理,使得每个用户ui对应一个n维向量Vi=[vi1,…,vin],用于表示用户ui的特征。设有函数sim(Vi,Vj)用于判定用户ui与用户uj之间的相似性。若有算法A,能根据用户间的相
为了保证CPU执行程序指令时能正确访问存储单元,需要将用户程序中的逻辑地址转换为运行时可由机器直接寻址的物理地址,这一过程称为
随机试题
在急性冠状动脉综合征后的下列哪种情况可单用氯吡格雷?
直径为d的实心圆轴受扭,在扭矩不变的情况下,为使扭转最大切应力减小一半,圆轴的直径应改为:
()是一种兼具资本金和债务资金特点的有价证券。
某建筑公司承接一项综合楼任务,建筑面积109828m2,地下3层,地上26层,箱形基础,主体为框架结构。该项目地处城市主要街道交叉路口,是该地区的标志性建筑物。因此,施工单位在施工过程中加强了对工序质量的控制。在第5层楼板钢筋隐蔽工程验收时发现整个楼板受力
证券经营机构的作用主要体现在()几个方面。
在标准成本系统中,直接材料的价格标准是指预计下年度实际需要支付的材料市价。()
()对于领航相当于规则对于()
下列各组软件中,全部属于应用软件的是()。
A--skincareB--sunscreen/sunblockC--whiteningD--daycreamE--nigh
__________________(我对他能度过危机有信心),basedonhismanynarrowescapesinthepast.
最新回复
(
0
)