使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun的功能是:首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到e

admin2020-06-02  21

问题 使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun的功能是:首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到e所指数组中,过长的剩余字符接在c所指的数组的尾部。例如,当a所指字符串中的内容为“abedefg”,b所指字符串中的内容为“1234”时,c所指数组中的内容应为“a4b3c2d1efg”;而当a所指字符串中的内容为“1234”,b所指字符串的内容为“abedefg”时,c所指数组中的内容应该为“1g2f3e4deba”。
    请改正程序中的错误,使它能得出正确的结果。
    注意:部分源程序在文件MODI1.C中,不要改动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;
    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:");
  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/mYCp777K
0

最新回复(0)