给定程序MODll.C中函数fun的功能是:先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面。 例如:当s中的字符串为:”ABCDE”时,则t中的字符串应为:”ABCDEEDCBA”。 请改正程序中的错误

admin2013-04-02  20

问题 给定程序MODll.C中函数fun的功能是:先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面。  
    例如:当s中的字符串为:”ABCDE”时,则t中的字符串应为:”ABCDEEDCBA”。
    请改正程序中的错误,使它能得出正确的结果。
    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
#include
void fun (char *s, char *t)
{int i, s;
    sl = strlen(s);
/************found************/
    for(i=0; i<= sl; i++)
         t = s;
    for (i=0; i    t[sl+i] = s[sl-i-1];
/************found************/
    t[sl]=’\0’
}
main()
{char s[100], t[100];
   printf("\nPlease enter string s:"); scanf("%s", s);
   fun(s, t);
   printf("The result is: %s\n", t);
}

选项

答案sl t[sl+sl]=’\0’

解析 (1)编译程序后可知,for( i=0; i<=s1; i++)这一行有错误,原因是s1变量没有定义,显然这个循环的目的是将s字符串的内容拷贝至t字符串,这里的循环变量i的最大值是s字符串的长度sl,因此第一个标识下是将s1改为sl。
(2)题目要求将s中的字符拷贝至t字符串之后,还需将s按逆序连接到t串的后面,第二个循环已经完成了逆序接到t字符串的工作,最后是确定字符串的结尾,即字符串应该以“\0”结束。此时,字符串t的长度是2*sl,显然t[sl]=’\0’的话字符串长度仍然是sl,故第二个标识下是将t[sl]=’\0’改成t[2*sl]=’\0’或者t[sl+sl]=’\0’。
转载请注明原文地址:https://kaotiyun.com/show/zDJp777K
0

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