首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用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
33
问题
使用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全国计算机二级
相关试题推荐
下列程序的运行结果为#include<stdio.h>voidabc(char*str){inta,b;for(a=b=0;str[a]!=’\0’;a++)if(str[a]!=’c’
在使用程序流程图来表示算法时,菱形用来表示_______。
下列程序的输出结果是______。main(){inta=0,b=0,c=0;if(++a>0||++b>0)++c;printf("\na=%d,b=%d,c=%d",a,b,c);}
以下程序运行后的输出结果是______。main(){inta=3,b=4,c=5,t=99;i[(b<a&&a<C)t=a;a=c;c=t;if(a<c&&b<C)t=b;b=a;a=t
设有如下程序#include<stdio.h>main(){int**k,*j,i=100;j=&i;k=&j;printf("%d\n",**k);}上述程序的输出结果是______
下列程序执行后的输出结果是______。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(){inti;for(i=1;i<=5;i++)f(i);}f(j){intj;staticinta=1000;auto
下面程序的输出结果是______。main(){staticchara[]="language",b[]="program";char*ptrl=a,*ptr2=b;intkfor(k=0;k<7;k++)if(*(ptrl+k)==
在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是______。
随机试题
下列主要用于指导ARDS机械通气参数设置的呼吸环是
A.黄连解毒汤B.宣毒发表汤C.清咽下痰汤D.清解透表汤E.羚角钩藤汤治疗麻疹初热期应首选的方剂是
患者,女,25岁。刷牙后牙龈出血,血色鲜红,伴齿龈红肿疼痛,口臭,舌红,苔黄,脉洪数。该患者进行辨证论治时,其治法为
期货公司应当在本公司网站和营业场所提示客户可以通过()查询其从业人员资格公示信息。
青少年美术作品是青少年身体发展水平、知觉能力、情感态度和生活经验的产物。下列关于青少年绘画作品的主要特点说法错误的是()。
下列选项中,属于对学习者分析的内容的是()。
心理契约是指个体与组织之间隐含的没有明文规定的双方各自的责任及对对方的期望。根据上述定义,下列属于建立心理契约的措施是:
从所给的四个选项中,选择最合适的一个填入问号处,使之呈现一定的规律性。
为什么说传播的过程可以理解为意义与符号的两度“翻译”过程?(上海大学2002研)
加工一个零件,甲需3分钟,乙需3.5分钟,丙需4分钟,现有1825个零件要加工,为尽早完成任务,甲、乙、丙各加工一定数量零件,那么完成任务所需时间最少是()小时.
最新回复
(
0
)