黑马程序员技术交流社区

标题: 将一个字符串反向输出 没看懂 [打印本页]

作者: 该有个目标了    时间: 2014-8-21 12:49
标题: 将一个字符串反向输出 没看懂
#include<stdio.h>
void str( );
int main( )
{
   str( );
   return 0;           //这都是什么意思啊 ,基础视频里没有说过这些,去黑马能考这样的题吗??
                            // 那位英台明白 给解释一下 每一步 都什么意思啊 万分感谢。程序 我的能运行 ,但是有警告 不知道咋回事。
}
void str( )
{
   char ch;
   if((ch = getchar()) !='\n')
      str( );
      if(ch != ‘\n’)
         putchar(ch);
}

作者: 天蚕飞    时间: 2014-8-21 14:39
本帖最后由 天蚕飞 于 2014-8-21 14:44 编辑

楼主,不知道这是你自己的程序还是哪找的,这程序写的不咋样;这 程序应该是要完成从键盘录入字符,遇到回车符结束输入,然后将录入的字符输出到屏幕;但是不知道为什么要用个递归,这程序运行不是问题,但是这除了能运行和遇到回车结束应该没有用了;从键盘录入数据通常会用while循环,当然其他循环也行;提供两个方案你看下:
1、用while
void str()
{
     char ch;
     while((ch = getchar()) != '\n')//遇到回车进入循环,否则退出while循环
     {
          putchar(ch);
     }
}
2、还是用你的递归
void str( )
{
   char ch;
   if((ch = getchar()) != '\n')//遇到回车结束输入
   {
       putchar(ch);
       str();                             //进入下一次的输入
   }
}
不建议使用第二种方法。还有给个建议,所有的代码块包括if哪怕有一句都应该用{}括起来,避免变量作用域混乱。
作者: 王振宇351x    时间: 2014-8-22 10:46
其实,原理相当于下面的代码
  1. void str()
  2. {
  3.     char ch[20];
  4.     int i = 0;
  5.     ch[0] = '|';
  6.     while (ch[i]!='\n') {
  7.         i++;
  8.         ch[i] = getchar();
  9.     }
  10.     while (i>1) {
  11.         i--;
  12.         putchar(ch[i]);
  13.         
  14.     }
  15. }
  16.    
  17. int main(){
  18.         str();
  19.         return 0;
  20. }
复制代码

作者: 陆习康    时间: 2014-8-22 13:33
天蚕飞 发表于 2014-8-21 14:39
楼主,不知道这是你自己的程序还是哪找的,这程序写的不咋样;这 程序应该是要完成从键盘录入字符,遇到回 ...

话说,您已经被录取了吗?
作者: 该有个目标了    时间: 2014-8-22 13:59
没有 我知识还没看完那  真多啊 ,头都大了
作者: 天蚕飞    时间: 2014-8-23 14:38
陆习康 发表于 2014-8-22 13:33
话说,您已经被录取了吗?

得到名额了,正在填表,等邮件
作者: ❤如止水之絕境    时间: 2014-8-23 19:57
都被录取了啊。。。。羡慕。。。
作者: ixx__123    时间: 2014-8-23 21:16
       学习  中   赞  一个
作者: 朱亚男    时间: 2014-8-23 22:55
天蚕飞 发表于 2014-8-21 14:39
楼主,不知道这是你自己的程序还是哪找的,这程序写的不咋样;这 程序应该是要完成从键盘录入字符,遇到回 ...

楼主说的反向输出,,
作者: 朱亚男    时间: 2014-8-23 23:11
这里的迭代遇到回车结束,相当于每次都卡在str();这一步,遇到回车后不在调用str();然后再反回来一次次执行后面的if(ch != ‘\n’)          putchar(ch);
作者: 周易    时间: 2014-8-23 23:25
小问题中暗藏玄机啊
作者: 天蚕飞    时间: 2014-8-25 13:03
朱亚男 发表于 2014-8-23 22:55
楼主说的反向输出,,

:L,谢谢提醒,忘看标题了
作者: ﹉随♥游✈者    时间: 2014-8-26 14:14
看只能金第四期了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2