| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 593 人关注过本帖
标题:求助,我是个初学者,下面这个c语言程序能人帮我解释下,谢谢
只看楼主 加入收藏
初学者569
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-3-20
结帖率:0
收藏
已结贴  问题点数:1 回复次数:10 
求助,我是个初学者,下面这个c语言程序能人帮我解释下,谢谢
#include <stdio.h>
#define T(c) (((c) >= '0') && ((c) <= '9') ? (c) - '0' : -1)
void f1(char ch)
{
    switch(ch){
        case '0': printf("0");
        case '1': printf("1");
        case '2': printf("2");break;
        case '3': printf("3");
        default: printf("9");
    }
    printf("\n");
}
double f2()
{
    return (double)(5/2);
}
double f3(int n)
{
    if(n == 1) return 1.0;
    else return 1.0 + 1.0/f3(n-1);
}
main()
{
    printf("%d %d\n", T('7'), T('a'));
    f1('1');
    printf("%.1f\n", f2());
    printf("%.3f\n", f3(4));
}
这程序看不懂谁能解释一下
搜索更多相关主题的帖子: double default include return 
2012-03-20 21:40
jj369258
Rank: 4
等 级:业余侠客
帖 子:116
专家分:226
注 册:2010-12-2
收藏
得分:0 
#include <stdio.h>
#define T(c) (((c)>='0')&&((c)<='9')?(c)-'0':-1)//如果字符c是否》='0'并且字符c<'9',结果为'c',否则是'-1';

void f1(char ch)//相当于多分枝选择
{
    switch(ch)
    {
    case '0': printf("0");
    case '1': printf("1");
    case '2': printf("2");break;
    case '3': printf("3");
    default: printf("9");
    }
    printf("\n");
}

double f2()//f2()的值为2.0
{
    return (double)(5/2);
}
double f3(int n)//如果n==1,3f(n)的值为1.0,否则返回1.0+1.0/f3(n-1)
{
    if(n==1) 1.0
        return 1.0;
    else return 1.0+1.0/f3(n-1);
}
int main()
{
    printf("%d %d\n", T('7'), T('a'));
    f1('1');
    printf("%.1f\n", f2());
    printf("%.3f\n", f3(4));
    return 0;
}
2012-03-20 22:56
迷途的菜鸟
Rank: 2
等 级:论坛游民
帖 子:36
专家分:50
注 册:2012-3-20
收藏
得分:0 
#include <stdio.h>
#define T(c) (((c) >= '0') && ((c) <= '9') ? (c) - '0' : -1) // c为0-9之间的时转化为数字。否则为-1
void f1(char ch)
{
    switch(ch){
        case '0': printf("0");
        case '1': printf("1");
        case '2': printf("2");break;
        case '3': printf("3");
        default: printf("9");
    }
    printf("\n");
}
double f2()
{
    return (double)(5/2);
}
double f3(int n)
{
    if(n == 1) return 1.0;
    else return 1.0 + 1.0/f3(n-1);
}
main()
{
    printf("%d %d\n", T('7'), T('a'));    //调用宏    7    a不在0-9之间-1
    f1('1');                            //调用f1   
    printf("%.1f\n", f2());                //调用f2        
    printf("%.3f\n", f3(4));            //调用f3    n不等于1,执行else语句 迭代调用f3函数
}
2012-03-21 10:00
徐子锦
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-3-21
收藏
得分:0 
printf("%.1f\n", f2());                  
    printf("%.3f\n", f3(4));            
  两个百分号后面那两个点是怎么回事?
2012-03-21 11:28
徐子锦
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-3-21
收藏
得分:0 
  你哪些步骤不清楚?
2012-03-21 11:45
飞莲
Rank: 2
等 级:论坛游民
帖 子:42
专家分:64
注 册:2011-12-28
收藏
得分:0 
保留小数点后一位和三位
2012-03-21 13:32
喝醉的猫
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:68
专家分:120
注 册:2012-3-13
收藏
得分:0 
回复 4楼 徐子锦
呵呵这个.1和.3的意思是保留小数点后面的位数,明白了么?
2012-03-21 13:39
喝醉的猫
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:68
专家分:120
注 册:2012-3-13
收藏
得分:0 
case '2': printf("2");break;
     case '3': printf("3");
     default: printf("9");
 请问一下,程序不是到2就跳出咯嘛?为什么还要写上下面的3啊?新手哦,勿见怪咯
2012-03-21 14:01
徐子锦
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-3-21
收藏
得分:0 
回复 7楼 喝醉的猫
   我自己也搞懂了,还是谢谢你。  我估计它只是故作玄虚- -    经常可以看到这种switch架构作怪的。
2012-03-21 16:09
徐子锦
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-3-21
收藏
得分:0 
回复 楼主 初学者569
   看你这些代码,自己还跑了一遍,哪里不清晰就问我好了。
2012-03-21 16:11
快速回复:求助,我是个初学者,下面这个c语言程序能人帮我解释下,谢谢
数据加载中...
 
   



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

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