首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列程序说明和C程序,将应填入(n)处的字句写在答卷纸的对应栏内。 【程序说明】 该程序定义了两个子函数strsort和strmerge。它们分别实现了将一个字符串按字母顺序排序和将两个字符串合并排序,并删去相同字符。在主函数里,先输入两个
阅读下列程序说明和C程序,将应填入(n)处的字句写在答卷纸的对应栏内。 【程序说明】 该程序定义了两个子函数strsort和strmerge。它们分别实现了将一个字符串按字母顺序排序和将两个字符串合并排序,并删去相同字符。在主函数里,先输入两个
admin
2009-02-15
148
问题
阅读下列程序说明和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-H-;
b-H-;
}
if( (4) ) //开始,可直接赋值
*w=t;
else if(t!=*w)
//如果a,b中较小的当前字符与c中当前字符不相等,才赋值
(5)
}
if(*a!=’\O’) //如果字符串a还没有结束,则将a的剩余部分赋给c
while(*a!=’\0’)
if(*a!=*w)
{
*(++w)=*a;
a++;
}
else
(6)
if(*b!=",’\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=O;*w!=’\O’;n++) //得到字符串长度 n
w++;
for(i=O;i<n-1;i++) //对字符串 s 进行排序,按字母先后顺序
forO=i+ 1 ;j<n;j++)
if( (8)
{
t=s
;
s
=s[j];
(9)
}
}
void mainO
{
char s1 [100],s2[100],s3[100];
prinff("\nlPlease input the first string:");
scanfC("% s",s1 );
prinff("\nPlease input the second string:");
scanf("%s",s2);
strsort(s1); //将字符串s1 排序
strson(s2); //将字符串 s2 排序
prinff("%s\n’,s1);
printfC % sW’,s2);
s3[0]=’\O’; //字符串 s3 的第一个字符先置’\0’结束标志
(10); //将s1和s2合并,按照字母顺序排列,
prinff("%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’、’n’、’g’中,找到最小的字符’e’。
第三次在剩下的字符’i’、’j’、’i’、’n’、’g’中,找到最小的字符’j’。
第三步是合并字符串,合并后的字符串仍然由小到大排序。由于待合并的两个字符串已经排好序。假定两个排好序的字符串分别为A和B,合并后的字符串为巴要使待合并后的字符串仍然由小到大排序,可采取下述步骤:
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/hwDZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
对“功能测试的回归测试经常要多次重复”的正确理解是(36)。
软件测评相关的标准一般可以分为国际标准、国家标准、行业标准以及企业标准。一般情况下,技术要求最高的是______。A.国际标准B.国家标准C.行业标准D.企业标准
关于bug管理流程,______是正确的做法。A.开发人员提交新的bug入库,设置状态为“New”B.开发人员确认是bug,设置状态为“Fixed”C.测试人员确认问题解决了,设置状态为“Closed”D.测试人员确认不是bug,设置状态为“Reo
某软件系统的原始需求包括,“当某个查询请求是不适当或非法的,应提示用户”,该需求属于______。
以下关于用例图的叙述中,不正确的是(44)。图书馆管理系统需求中包含“还书”用例和“到书通知”用例,对于“还书”用例,应先查询该书是否有人预定,若有则执行“到书通知”。“还书”用例和“到书通知”用例是(45)关系,以下用例图中,(46)是正确的。管理员处
结构化开发方法中,(35)主要包含对数据结构和算法的设计。对算法设计时,其主要依据来自(36)。描述算法时,(37)不是理想的表达方式。(37)
某个应用中,需要对输入数据进行排序,输入数据序列基本有序(如输入为1,2,5,3,4,6,8,7)。在这种情况下,采用(40)排序算法最好,时间复杂度为(41)。(41)
对于一般的树结构,可以采用孩子.兄弟表示法,即每个结点设置两个指针域,一个指针(左指针)指示当前结点的第一个孩子结点,另一个指针(右指针)指示当前结点的下一个兄弟结点。某树的孩子一兄弟表示如下图所示。以下关于结点D与E的关系的叙述中,正确的是_____。
______是当前自动化测试技术不能解决的问题。A.保证测试质量B.提高测试效率C.排除手工操作错误D.降低测试用例设计的难度
在结构化分析方法中,数据流图描述数据在系统中如何被传送或变换,反映系统必须完成的逻辑功能,用于(38)建模。在绘制数据流图时,(39)。(39)
随机试题
在清管作业时,为防止管线压力波动导致ELBS-10破管检测系统发出自动关闭指令,清管作业期间只要关闭压降速率采集阀即可。()
下列不属于针灸治疗原则的是
改善急性左心衰竭症状最有效的药物是
A.羟基、氨基、羟氨基B.酚羟基、胺基、巯基C.芳香羧酸、芳乙酸、杂环羧酸D.磺酰胺、氨基酸、肼和酰肼E.O一、N一、S一和C一与硫酸的结合反应,主要参与的化学基团有()。
A.当日有效B.不得超过3天C.2日极量D.7日用量E.3日用量急诊处方一般不得超过()
下列选项中,土方填筑与压实的要求叙述正确的是()。
公路工程的造价由()几部分构成。
与普通股票相比,优先股票的特点在于()。
节日:习俗
设在区间上f(x)>0,f’(x)
最新回复
(
0
)