请编一个函数tim(char*s),函数的功能是把s所指字符串中的内容逆置。 例如:字符串中原有的字符串为:abcdefg,则调用该函数后,串中的内容为:gfedcba。 注意:部分源程序存在文件PROGl.C中。 请勿改动主函数m

admin2013-04-02  25

问题 请编一个函数tim(char*s),函数的功能是把s所指字符串中的内容逆置。
    例如:字符串中原有的字符串为:abcdefg,则调用该函数后,串中的内容为:gfedcba。
    注意:部分源程序存在文件PROGl.C中。
    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
#define N 81
fun (char *s)
{
}
NONO()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
  int i ;
  char a[N] ;
  FILE *rf, *wf ;
  rf = fopen("in.dat","r");
  wf = fopen("out.dat","w");
  for(i = 0 ; i < 10 ; i++) {
    fscanf(rf, "%s", a);
    fun(a);
    fprintf(wf, "%s\n", a);
  }
  fclose(rf);
  fclose(wf);
}
main()
{char a[N];
   printf ("Enter a string : "); gets (a);
   printf ("The original string is : "); puts(a);
   fun (a);
   printf("\n");
   printf ("The string after modified : ");
   puts (a);
   NONO();
}

选项

答案{ char b[N]; int i=0, j; memset(b, 0, N); for(j=strlen(s)-1; j>=0; j--)b[i++]=s[j]; strcpy(s, b); }

解析 进入fun函数,根据前面的分析:
首先求得字符串的长度,然后通过循环进行字符交换。要注意的是,如果字符串长度是奇数,则最中间的元素在逆置前后的位置是没有改变的。
转载请注明原文地址:https://jikaoti.com/ti/ann0FFFM
0

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