| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 958 人关注过本帖
标题:请c语言高手看一下这个函数
只看楼主 加入收藏
明明哥8991
Rank: 1
等 级:新手上路
帖 子:17
专家分:2
注 册:2012-3-27
结帖率:50%
收藏
 问题点数:0 回复次数:10 
请c语言高手看一下这个函数
#include <stdio.h>


void prn_it();

int main()
{
    printf("Input a line: ");
    prn_it();
    printf("\n\n");
    return 0;
}

void prn_it()
{
    char c;
    if((c=getchar())!= '\n')//犯了一个c==getchar()小错误
        prn_it();
    putchar(c);
}
这个函数是怎么实现将字符反着输出的呀
搜索更多相关主题的帖子: void c语言 include return 
2012-04-07 11:49
hifine
Rank: 1
等 级:新手上路
帖 子:7
专家分:7
注 册:2011-9-30
收藏
得分:0 
递归,先进后出
2012-04-07 11:51
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
收藏
得分:0 
这个有一个字符串函数可以实现丶楼主自己去查吧丶


如果想自己写一个你可以用堆栈 丶数组逆序输出什么的都行

编程之路定要走完……
2012-04-07 12:15
tianjigezhu
Rank: 2
等 级:论坛游民
帖 子:3
专家分:10
注 册:2012-4-7
收藏
得分:0 
递归函数,从嘴里面首先执行,依次向外执行
2012-04-07 13:31
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用tianjigezhu在2012-4-7 13:31:13的发言:

递归函数,从嘴里面首先执行,依次向外执行

吃饭不咽下去往外吐?

授人以渔,不授人以鱼。
2012-04-07 13:35
Dick_G
Rank: 2
等 级:论坛游民
帖 子:21
专家分:84
注 册:2012-4-7
收藏
得分:0 
从最里面开始执行.....当递归到最后一个if((c=getchar())!= '\n')时,条件不成立,就开始执行  putchar(c);此时c的值为\n前面一个字符;然后相当于指针往前面移动.....
2012-04-07 18:45
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
5楼的吐槽其实很高雅。
2012-04-07 20:41
MRPutin
Rank: 2
等 级:论坛游民
帖 子:21
专家分:43
注 册:2012-3-28
收藏
得分:0 
1)void prn_it()
{
    char c;
    if((c=getchar())!= '\n')//犯了一个c==getchar()小错误
        prn_it();(1)
    putchar(c);
}
2)void prn_it()
{
    char c;
    if((c=getchar())!= '\n')//犯了一个c==getchar()小错误
        prn_it();
    putchar(c);
}
3)void prn_it()
{
    char c;
    if((c=getchar())!= '\n')//犯了一个c==getchar()小错误
        prn_it();
    putchar(c);
}


你可能不了解递归函数的执行顺序,以输入ab为例。由于getchar函数每次只处理一个字符,当你输入a时if语句检查不是回车键\n,所以第二次调用prn_it()
函数;这时你输入b,if语句检查不是回车键\n,所以第三次次调用prn_it();这时你按了回车键也就是c获得了\n,所以不再调用prn_it()函数。这样第三个prn_it()函数最先执行putchar函数,由于此时c=\n,所以只是换行并不做任何输出prn_it();第三个prn_it()执行完了以后,开始执行第二个putchar,c=b;然后是第一个

*          坚持与积累成就C语言王者之路      *
2012-04-07 21:29
mhb900315zxm
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-3-17
收藏
得分:0 
好厉害
2012-04-08 03:05
mhb900315zxm
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-3-17
收藏
得分:0 
递归是先进后出能解释下吗
2012-04-08 03:06
快速回复:请c语言高手看一下这个函数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013100 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved