1.19 编写函数reverse(s)将字符串s中的字符顺序颠倒过来。使用该函数编写一个程序,每次颠倒一个输入行中的字符顺序。

1. 自己写的, 用的for循环逆序输出。s[i] 已经存储了字符串 不用在输入 且注意输出格式问题。
  void reverse(char s[])
{
 int j, i;
   //for (i = 0; (c = getchar()) !=EOF && i < MAXLINE - 1; ++i)
     // s[i] = c;   // 
    i = strlen(s);
 for (j = i; j >= 0; --j)
  //printf("%s", s);    输出的整个字符串
    printf("%c",s[j]);
}
2. 答案书上的。
void reverse(char s[])
{
     int i, j;
  char temp;
  i = 0; // 记得初始化
  while(s[i] != '\0')
   ++i;           //    得到s[i]的长度包括'\0' 所以 i 要减1
 
     
  --i;               //  这里为何 --i? 
  if(s[i] == '\n')
   --i;           //  如果字符串第二个字符为'\n', --i
     
     j = 0;
  while(j < i)
  {
         temp = s[i];
   s[i] = s[j];
   s[j] = temp;
   --i;
   ++j;
  }
}
3. csdn上朋友写的,直接用strlen()求出len。 也可以用指针表示。
void reverse(char s[])
{
 int i, len, j;
 char temp;
 len = strlen(s);
    
 for(i = len - 1, j = 0; j < i; --i,++j)  //这里 i为何从len - 1开始呢
 {
        temp = s[i];
       s[i] = s[j];
      s[j] = temp;
  }
}
 后来看到英文  //用于消除行末的换行符,没有该函数的话,输出分为两行,第一行为一个换行符
版答案上还写了个discardnewline()函数
 
void discardnewline(char s[])
{
 int i;
 for(i = 0; s[i] != '\0'; i++)
 {
  if(s[i] == '\n')
        s[i] = '\0';
  }
}


  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值