下列给定程序中,函数fun的功能是:首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,过长的剩余字符接在c所指的数组的尾部。 例如,当a所指字符串中的内容为″abcdefg″,b所指

admin2019-04-14  37

问题 下列给定程序中,函数fun的功能是:首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,过长的剩余字符接在c所指的数组的尾部。
例如,当a所指字符串中的内容为″abcdefg″,b所指字符串中的内容为″1234″时,c所指数组中的内容应为″a4b3c2dlefg″;而当a所指字符串中的内容为″1234″,b所指字符串的内容为″abcdefg″时,c所指数组中的内容应该为″1g2f3e4dcba″。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include <stdio.h>
#include <string.h>
void fun(char *a,char *b,char *c)
{
int i,j;char ch;
i=0;j=strlen(b)—1;
/* * * * * * found * * * * * */
while(i>j)
{
ch=b;b=b[j];b[j]=ch;
1+ +;j— —;
}
while( *a|| *b)
{
/* * * * * * found * * * * * */
If( *a)
{ *c = *a;c+ +;a+ +;}
if( *b)
{*c = *b;c+ +;b+ +;}
}
*c=0;
}
main()
{
char s1[100],s2[100],t[200];
printf(″\nEnter s1 string:″);
scanf(″%s″,s1);
printf(″\nEnter s2 string:″);
scanf(″%s″,s2);
fun(s1,s2,t);
printf(″\nThe result is:%s\n″,t);
}

选项

答案(1)while(i<j) (2)if(*a)

解析 (1)由i和j定义的初始值可知,此处应该判断i是否小于j,所以应改为while(i<j)。
(2)此处将if错写成If,这个错误比较简单,但往往不容易发现。
转载请注明原文地址:https://kaotiyun.com/show/D1Rp777K
0

最新回复(0)