| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1839 人关注过本帖, 1 人收藏
标题:简短的代码(反序输出字符),有没有更短的?(堆栈实现的反序终于写完了,请 ...
只看楼主 加入收藏
godbless
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:216
专家分:950
注 册:2009-7-24
收藏
得分:0 
回复 10楼 中国

我晕,看不明白你不会把程序分开再看?给你分解一下吧.

#include <stdio.h>  

int main()  
{  
    int i;
    i=getchar();
    if(i!='\n')
      main();
    putchar(i);  
    return 0;  
}
2009-08-18 15:55
wsj3000
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:78
专家分:161
注 册:2009-8-4
收藏
得分:0 
#include <stdio.h>  
main(int i)  
{  
   (i=getchar())!=10 && main(i),putchar(i);  
    return 0;  
}
既然来看我的问题了,我来解释下:
main中的int i是形式参数,会把main的()中的变量值拷贝一份,并在main()的函数内部,就是大括号内,以i这个变量形式出现;&&是逻辑运算符:逻辑与;二目运算符,先后判断&&两侧的表达式的返回值;然后做逻辑与运算;所以:(i=getchar())!=10 ,main(i)这两个表达式都会被执行(注意几乎可以说:表达式+冒号=c语言语句,i=getchar()的返回值还是getchar()的到的字符);最后,逗号表达式是顺序求解从左到右的表达式,就是先(i=getchar())!=10 && main(i),然后putchar(i),最后返回putchar(i)的返回值,就是最后一个表达式的返回值,因为这里没有参数接收所以被遗弃。
最后,递归在操作系统中以堆栈(后进先出)的形式被执行,所以最后输入字符被反序。

推荐c语言入门书籍:c programming language (中文名:C程序设计语言_第2版新版),c primer plus (中文版:c primer plus (第五版)中文版) ,很经典的两本,具体可以上网下pdf,pdg版本的,可以去csdn 下免费的呀,哈哈!
2009-08-20 01:16
lcq12345
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2009-5-5
收藏
得分:0 
2009-08-20 01:45
zhangs140
Rank: 2
等 级:论坛游民
帖 子:63
专家分:59
注 册:2009-7-26
收藏
得分:0 
神奇啊   不懂
2009-08-20 18:04
快速回复:简短的代码(反序输出字符),有没有更短的?(堆栈实现的反序终于写完 ...
数据加载中...
 
   



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

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