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

admin2013-03-29  28

问题 给定程序MODll.C中函数fun的功能是:首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c
所指数组中,过长的剩余字符接在c所指数组的尾部。例如,当a所指字符串中的内容为"abedefg",b所指字符串中的内容为"1234"时,C所指数组中的内容应该为"a4b3c2dlefg";而当a所指字符串中的内容为"1234",b所指字符串中的内容为"abcdefg"时,c所指数组中的内容应该为"1g2f3e4dcba"。
    请改正程序中的错误,使它能得出正确的结果。
    注意:不要改动main函数,不得增行或删行,也不稠更改程序的结构!
#include
#include
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;
    i++;  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:");
scarlf("%s",s2);
  fun(s1,s2,t);
  printf("\nThe result is:%s\n",t);
}

选项

答案(1)while(ii) (2)if(*a)

解析 (1)检查循环控制表达式i>j,就是当i大于j时进入循环,而i的初值小于j,所以根本不会进入循环,应将“while(i>j)"改为“while(i    (2)第二标识下“If(*a)",If没有定义,根据题意,这里是判断a字符串是否已经到达尾部,应使用if判断,故第二标识处应改为“if(*a)"。
转载请注明原文地址:https://jikaoti.com/ti/UKn0FFFM
0

最新回复(0)