首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
读下列程序说明和C程序,将应填入(n)处。 【程序说明】 该程序定义了两个子函数strsort和strmerge。它们分别实现了将一个字符串按字母顺序排序和将两个字符串合并排序,并删去相同字符。在主函数里,先输入两个字符串s1和s2,然后调用s
读下列程序说明和C程序,将应填入(n)处。 【程序说明】 该程序定义了两个子函数strsort和strmerge。它们分别实现了将一个字符串按字母顺序排序和将两个字符串合并排序,并删去相同字符。在主函数里,先输入两个字符串s1和s2,然后调用s
admin
2009-02-15
55
问题
读下列程序说明和C程序,将应填入(n)处。
【程序说明】
该程序定义了两个子函数strsort和strmerge。它们分别实现了将一个字符串按字母顺序排序和将两个字符串合并排序,并删去相同字符。在主函数里,先输入两个字符串s1和s2,然后调用strsort函数对它们分别排序,然后调用strmerge函数将s1和s2合并,将合并后的字符串赋给字符串s3,最后输出字符串s3。
【程序】
#include<stdio.h>
void strmerge(char,a,char *b,char *c) //将字符串a,b合并到字符串c中
{
char t,*w;
w=c;
while((1))
{//找到字符串a,b当前字符中较小的字符
if(*a< *b)
{
t= *a;
(2);
{
else if (*a>*b)
{
t= *b;
(3);
}
else //字符串a,b当前字符相等
{
t= *a;
a++;
b++;
}
if((4)) //开始,可直接赋值
*w=t;
else if(t!=*w)
//如果a,b中较小的当前字符与c中当前字符不相等,才赋值(5);
}
if(*a!=\’\0’) //如果字符串a还没有结束,则将a的剩余部分赋给C
while(*a!=’\0’)
if(*a!=*w)
{
*(++w)=*a;
a++;
}
else
(6);
if(*6!=’\0’) //如果字符串b还没有结束,则将b的剩余部分赋给c
while(*b!=’\0’)
if(*b! = *w)
{
*(++w)=*b;
b++;
}
else
b++;
(7);
}
void strsort(char*s) //将字符串S中的字符排序
{
int i,j,n;
char t,*w;
W=S;
for(n=0;*w!=’\0’;n++) //得到字符串长度n
w++;
for(i=0;i<n-1;i++) //对字符串s进行排序,按字母先后顺序
for(j=i+1;j<n;j++)
if((8))
{
t=s
;
s
=s[j];
(9);
}
}
void main()
{
char s1[100],s2[100],s3[100];
printf("\nPlease,input the first string:");
scanf("%s",s1);
printf("\nPlease input the second string:");
scanf("%s",s2);
strsort(s1); //将字符串s1排序
strsort(s2); //将字符串s2排序
printf("%s\n",s1);
printf("%s\n",s2);
s3[0]=’\0’; //字符串s3的第一个字符先置’\0’结束标志
(10) //将s1和s2合并,按照字母顺序排列,
//且要删去相同字符,存入s3中
printf("%s",s3);
}
选项
答案
(1)(*a!=’\0’)&&(*b! =’\0’)(2)a++ (3)b ++(4)*w==’\0’(5)*(++w)=t(6)a++ (7)*(++w)=’\0’(8)s[i]>s[j](9)s[j]=t (10)strmerge(s1,s2,s3)
解析
根据题意,对字符串的处理分为三步:第一步是从键盘上输入两个字符串;第二步是将两个字符串分别排序;第三步是将字符串合并;第四步是显示处理结果。
第一步和第四步容易实现,关键是第二步和第三步的处理,下面分别加以说明。
字符串排序是指将一个字符串中各个字符按照ASCII码值的大小排序。例如,字符串“Beijing”由小到大的排序结果应该是:“Bejiign”;排序算法很多,第二个例子,我们就要介绍快速排序算法。在这里使用简单的冒泡排序算法:即将字符串中的每一个字符一个个进行比较,找出最小的字符,然后再在剩下的字符中找最小的字符。例如,字符“Beijing”的排序过程如下:
第一次将字符“Beijing”中的每一个字符:’B’、’e’、’i’、’j’、’i’、’n’、’g’进行比较,找到最小的字符’B’。
第二次在剩下的字符’e’、’i’、’j’、’i’、’n’、’g’中,找到最小的字符’e’。
第三次在剩下的字符’j’、’i’、’n’、’s’中,找到最小的字符’j’。
第三步是合并字符串,合并后的字符串仍然由小到大排序。由于待合并的两个字符串已经排好序。假定两个排好序的字符串分别为A和B,合并后的字符串为C,要使待合并后的字符串仍然由小到大排序,可采取下述步骤:
1.从前往后取A中的字符,并按从前往后的顺序与B中的字符比较,若A中的字符较小,则将该字符存入C,并移到A的下一个字符,继续与B中的字符比较。
2.若A中的字符较大,则将B中的字符存入C,并移到B的下一个字符,继续与A中的字符比较。
3.若A与B中的字符相等,则将A或B中的字符存入C,并将A和B均移到下一个字符。
4.若A或B字符串到达末尾,则将B或A的剩余部分加到字符串 C中。
需要注意的是:A、B和C三个字符串均可以用字符数组来表示,C数组的长度不能小于A、B两数组的长度之和。另外,判别字符串是否结尾的方法是:从A或B中取出的字符是否为’\0’,所有字符串都是以’\0’结尾的。
转载请注明原文地址:https://kaotiyun.com/show/AMDZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
______是当前自动化测试技术不能解决的问题。A.保证测试质量B.提高测试效率C.排除手工操作错误D.降低测试用例设计的难度
程序设计语言中(34)。
在分布式数据库中有分片透明、复制透明、位置透明和逻辑透明等基本概念,其中:___________(19)是指局部数据模型透明,即用户或应用程序无须知道局部使用的是哪种数据模型;___________(20)是指用户或应用程序不需要知道逻辑上访问的表具体是怎
零件关系P(零件名,条形码,供应商,产地,价格)中的(12)属性可以作为该关系的主键。查询产于西安且名称为“P2”的零件,结果以零件名、供应商及零件价格分列表示,对应的SQL语句为:SELECT零件名,供应商,价格FROMPWHE
某软盘有40个磁道,磁头从一个磁道移至另一个磁道需要5ms。文件在磁盘上非连续存放,逻辑上相邻数据块的平均距离为10个磁道,每块的旋转延迟时间及传输时间分别为100ms和25ms,则读取一个100块的文件需要时间为(24)。
以下用例图中,A1和A2为(47)。A1和A2的关系为(48)。(48)
以下关于软件测试原则的叙述中,正确的是______。①测试开始得越早,越有利于发现缺陷②测试覆盖率和测试用例数量成正比③测试用例既需选用合理的输入数据,又需要选择不合理的输入数据④应制定测试计划并严格执行,排除随意性
对某商店业务处理系统采用数据流图(DFD)进行功能建模,其中“检查订货单”是其中的一个①。由于在进行订货单检查时,需要根据客户的欠款情况、订单金额等多个条件判断是否采取发出催款单、准备货物、发出发货单等行为,此时适合采用②进行描述。①处
系统交付后,修改偶尔会出现乱码的问题,该行为属于________________维护。
随机试题
某建设单位在工程竣工验收合格后,未按规定移交地下管线工程档案,造成施工单位在施工中损坏了地下管线,受到建设主管部门的处罚。下列不属于该案处罚范围的是()。
不正当竞争从根本上违背的基本原则是()
处方中写“泡参"时应付
设X1,X2,…,Xn是来自正态总体N(μ,σ2)的简单随机样本,若(Xi+1-Xi)2是参数σ2的无偏估计,则c=()。
成功的项目成本管理首先要让施工项目中各个环节上的管理人员树立强烈的()。
(一)[背景资料]某公司承建一机械厂加工车间机电安装工程,内容有:工艺设备、管道(其中油管道为中压管道)、电气、桥式起重机和储油罐等安装。在施工过程中,甲方现场代表进行检查时,发现一名焊工资格有效期已过。储油罐灌水试验检查合格,放水时
关于职位说明书的说法,正确的是()。
有“尚滋味”,“好辛香”调味传统的是()。
花旗银行迄今已有近200年的历史。进入21世纪,花旗集团的资产规模已达9022亿美元,一级资本545亿美元,被誉为金融界的至尊。时至今日,花旗银行已在世界100多个国家和地区建立了4000多个分支机构,在非洲、中东,花旗银行更是外资银行抢滩的先锋。花旗的骄
ThewhitepopulationofthenewUnitedStatesdidnotstretchfarbeyondtheeasternseaboarduntilthe19thcentury.TheBritis
最新回复
(
0
)