首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。函数fun将字符串s1和s2交叉合并形成新字符串s3,合并方法为:先取s1的第1个字符存入s3,再取s2的第1个字符存入s3,以后依次类推;若s
使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。函数fun将字符串s1和s2交叉合并形成新字符串s3,合并方法为:先取s1的第1个字符存入s3,再取s2的第1个字符存入s3,以后依次类推;若s
admin
2018-10-20
60
问题
使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。函数fun将字符串s1和s2交叉合并形成新字符串s3,合并方法为:先取s1的第1个字符存入s3,再取s2的第1个字符存入s3,以后依次类推;若s1和s2的长度不等时,较长字符串多出的字符顺序放在新生成的s3后。
例如,当s1为:"123456789",s2为:"abcdefghijk"时,
输出结果应该是:1a263c4d5e6t7g8h9ijk
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include<stdio.h>
#include<string.h>
#pragma warning(disable:4996)
void fun(char*s1,char*s2,
char*s3)
{int i,j;
/*********found*********/
for(i=0,j=0;(s1
!=’\0’)&&(s2
!=’\0’);i++,j=j+1)
{s3[j]=s1
;
s3[j+1]=s2
;
}
if(s2
!=’\0’)
(for(;s2
!=’\0’;i++,
j++)
/*********found*********/
s3
=s2[j];
}
else if(sl
!=’\0’)
(for(;s1
!=’\0’;i++,j++)
s3[j]=s1
;
)
/*********found*********/
s3[j﹣1]=’\0’;
}
void main()
{char s1[128],s2[128],s3[255];
printf("Please input string1:");
gets(s1);
printf("Please 2nput str2ng2:");
gets(s2);
fun(s1,s2,s3);
printf("string:%s\n",s3);
}
选项
答案
(1)将for循环中的j=j+1改为j=j+2 (2)将s3[i]=s2[j]改为s3[j]:s2[i] (3)将s3[j﹣1]改为s3[j]
解析
(1)函数fun中,在两个字符串都未结束的情况下将s1[0]放入s3[0],将S2[0]放入s3[1],for循环将字符依次放入,即将s1
放入s3[j],s2
放入s3[j+1]中,每次循环数组s3中放入2个字符,所以循环变量j的变化为j=j+2;所以将for循环中的j=j+1改为j=j+2。
(2)当第一个循环结束后,数组s1或数组s2中仍然可能有字符没有存放至s3,根据题目要求,应该将其剩下的字符放入数组s3的尾部。使用for循环把s2放入s3,这里数组s3的下标应为j,所以应将s3
=s2[j]改为s3[j]=s2
。
(3)当s1[]或s2[]的最后一个字符放入s3[j]时,应该设置一个结束标志,该结束标志’\0’应存入s3[j]最后一个位置。因为将最后一个字符放入s3[j]中后,j执行j++,将结束标志’\0’放入此时的s3[j]中,所以将s3[j﹣1]改为s3[j]。
转载请注明原文地址:https://kaotiyun.com/show/TMxp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
以下程序的输出结果是______。main()inta=3;printf("%d\n",(a+=a=a=a*a);}
下列程序的输出结果是______。main(){inta=0,b=0,c=0;if(++a>0||++b>0)++c;printf("\na=%d,b=%d,c=%d",a,b,c);}
设以下变量均为int类型,表达式的值不为7的是()。
下列特征中不是面向对象方法的主要特征的是()。
下面程序的输出结果是()。#include<stdio.h>main(){staticchara[]="zhao",b[]="juan";char*ptr1=a,*ptr2=b;intk;for(k=
运行以下程序后,如果从键盘上输入6514<回车>,则输出结果为______。main(){intm,n;printf("Enterm,n:");scanf("%d%d",&m,&n);while(m!
下列程序执行后的输出结果是______。main(){intm[][3]={1,4.7,6,5,8,3,6,9};inti,k=2for(i=0,i<3;i++){printf("%d",m[k][
有以下程序main(){intk=5,n=0;do{switch(k){case1:case3:n+=1;k--;break;default:n=0;k--;case2:cas
完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例的测试方法是
随机试题
人类对森林的过度砍伐,对草原和湿地的破坏,工业和汽车排放大量的CO2,是我国喜马拉雅山的冰峰不断消融。从因果关系上看,这属于()。
You______thisbook.Youcanborrowitfromthelibrary.
Passingbyasupermarket,Iwasattractedbyalongqueueofpeoplewithbigplasticbagsfullofkindsofgoodstheyboughtout
下列关于胆汁的叙述,哪项是错误的
A、红霉素B、琥乙红霉素C、克拉霉素D、阿齐霉素E、罗红霉素在胃酸中稳定且无味的抗生素是()。
按照消费者对产品两种属性的重视程度进行划分,就会形成不同偏好的细分市场,这时会出现()模式。
用一种钢制的活动防护装置或活动支撑,通过软弱含水层,特别是河底、海底或者城市中心区修建隧道的方法是()。[2012年10月真题]
会计从业资格管理机构作出准予颁发会计从业资格证书的决定,应当自作出决定之日起()内向申请人颁发会计从业资格证书。
做学问,“要大处着眼,小处下手”。由博入专,不可急功近利,能大处着眼,为学方不致流于__________,而有裨益于世;能小处下手,方不致流于__________,所以做学问千万不要求速效。依次填入画横线部分最恰当的一项是()。
把下面的六个图形分为两类,使每一类图形都有各自的共同特征或规律,分类正确的一项是:
最新回复
(
0
)