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

admin2023-02-27  9

问题 使用VC ++2010打开考生文件夹下modil中的解决方案。此解决方案的项目中包含一个源程序文件modil.c。在此程序中,函数fun()的功能是首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,较长字符串的剩余字符接在c所指的数组的尾部。
    例如,当a所指字符串中的内容为"abcdefg",b所指字符串中的内容为"1234"时,c所指数组中的内容应为"a4b3c2dlefg";而当a所指字符串中的内容为"1234",b所指字符串的内容为"abedefg"时,c所指数组中的内容应该为"1g2f3e4dcba"。
    请改正程序中的错误,使它能得出正确的结果。
    注意:部分源程序在文件modil.c中,不要改动main()函数,不得增行或删行,也不得更改程序的结构!
  试题程序:
1 #include<stdio.h>
2 #include<string.h>
3 void fun(char*a,char*b,char*c)
4 {
5   int i,j;char ch;
6  i=0,j=strlen(b)-1;
7  /*********found*********/
8  while(i>j)
9  {ch=b;b=b[j];
10  b[j]=ch;
11  i++;j--;
12  }
13   while(*a ||*b){
14  /*********found*********/
15    If(*a)
16    {*c= *a;c++;a++;}
17    if(*b)
18    {*c=*b,c++;b++;}
19  }
20  *c=0;
21 }
22 main()
23 {
24 char s1[100],s2[100],t[200];
25 printf("\nEnter s1 string:");
26 scanf("%s",s1);
27 printf("\nEnter s2 string:");
28 scanf("%s",s2);
29 fun(s1,s2,t);
30 printf("\nThe result is:%s\n",t);
31 }

选项

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

解析 (1)第1个while循环是将字符串b逆序存放,也就是将第1个元素与最后一个元素交换位置,第2个元素与倒数第2个元素交换,依此类推,直到完成逆序存放。由i和j定义的初值可知,此处应该判断i是否小于j,所以应改为while(i<j)。
    (2)此处将if错写成If,这个错误比较简单,但往往不容易发现。  
转载请注明原文地址:https://jikaoti.com/ti/sBoiFFFM
0

相关试题推荐
随机试题
最新回复(0)