一个C语言程序改错题

来源:百度知道 编辑:UC知道 时间:2024/05/29 08:24:56
sub函数的功能是:将s所指字符串的反序和正序进行连接形成一个新串放在t所指的数组中。例如,当s所指字符串的内容为“ABCD”时,t所指数组中的内容为“DCBAABCD”。请改正函数sub中的两个错误,使它能得出正确的结果。注意:不要改动main 函数,不得增行或删行,也不得修改程序的结构。
#include "stdio.h"
#include "conio.h"
#include "string.h"
void sub( char *s, char *t )
{
int i, d;
d=strlen( s );
for( i=1; i< d ; i++ )
t[i]=s[d-1-i] ;
for( i=0; i<d; i++ )
t[d+i]=s[i] ;
t[2*d]='/0' ;
}
main( )
{
char s[100], t[100];
clrscr( ) ;
printf( " \n Please enter string S : " );
scanf("%s" , s );
sub(s,t) ;
printf( " \n The result is : %s \n ", t );
}

1.
for( i=1; i< d ; i++ )
改为
for( i=0; i<d; i++ )

2.
t[2*d]='/0' ;
改为
t[2*d]='\0';

//你用的是Turbor c 吗,clrscr( ) ;
只有在Turbor c 中可以运行,我说怎么在VC里会有错,汗~

#include "string.h"
void sub(char*s,char*t)
{
int i,d;
d=strlen(s);
for(i=0;i<d;i++) \*把s中字符倒序存入t数组*\
t[i]=s[d-1-i];
for(i=0;i<d;i++) \*把 s中字符正序存入t数组 不过有点麻烦,可以直接拷贝strcmp(t,s),加快运行速度*\
t[d+i]=s[i];
t[2*d]='\0';
}
main()
{
char s[100], t[200];
printf( "\n Please enter string S:"); \*t数组应该是s的二倍*\
scanf("%s",s);
sub(s,t);
printf("\n The result is:%s \n ",t);
}

for(i=1;i<d;i++) i=1改为i=0 因为数组第一个元素是从零开始的;
'/n'改为 '\n' /是一个字符,而\ 后跟 n,b, ,…………是功能字符
还有如果在c++里边应该去掉clrscr()