| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2560 人关注过本帖
标题:有个关于if的问题
只看楼主 加入收藏
songlk
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2017-7-11
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:12 
有个关于if的问题
#include<stdio.h>
double power(double n,int p);   


int main(void)
{
    double x,xpow;
    int exp;
    printf("输入一个数字及幂(输入q放弃):\n");
    while(scanf("%lf%d",&x,&exp)==2)
    {
        xpow=power(x,exp);
        printf("%.3g的%d次幂为%.5g\n",x,exp,xpow);
        printf("再次输入或按q放弃。\n");
    }
    printf("gg\n");
    return 0;
}
double power(double n,int p)
{
    double pow=1;
    int i;
    if(p>0)
        for(i=1;i<=p;i++)
            pow*=n;
    else if(p<0)
        pow=1/power(n,-p);

    else if(n!=0)
        pow=1;
    else
        pow=1/n;
    return pow;

}
搜索更多相关主题的帖子: if double pow int printf 
2017-07-25 15:06
songlk
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2017-7-11
收藏
得分:0 
#include<stdio.h>
double power(double n,int p);   


int main(void)
{
    double x,xpow;
    int exp;
    printf("输入一个数字及幂(输入q放弃):\n");
    while(scanf("%lf%d",&x,&exp)==2)
    {
        xpow=power(x,exp);
        printf("%.3g的%d次幂为%.5g\n",x,exp,xpow);
        printf("再次输入或按q放弃。\n");
    }
    printf("gg\n");
    return 0;
}
double power(double n,int p)
{
    double pow=1;
    int i;
    if(p>0)
        for(i=1;i<=p;i++)
            pow*=n;
    if(p<0)
        pow=1/power(n,-p);

    if(n!=0)
        pow=1;
    else
        pow=1/n;
    return pow;

}
2017-07-25 15:08
songlk
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2017-7-11
收藏
得分:0 
两段程序中,唯一的区别就是power函数里if的用法了
2017-07-25 15:08
songlk
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2017-7-11
收藏
得分:0 
为什么第一段程序可以正常运行,第二段却不行呢?if if连用跟if if else有什么区别吗?
2017-07-25 15:09
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
你让别人用肉眼怎么看出两段代码的差别?

#include<stdio.h>
double power(double n,int p);   


int main(void)
{
    double x,xpow;
    int exp;
    printf("输入一个数字及幂(输入q放弃):\n");
    while(scanf("%lf%d",&x,&exp)==2)
    {
        xpow=power(x,exp);
        printf("%.3g的%d次幂为%.5g\n",x,exp,xpow);
        printf("再次输入或按q放弃。\n");
    }
    printf("gg\n");
    return 0;
}
double power(double n,int p)
{
    double pow=1;
    int i;
    if(p>0)
        for(i=1;i<=p;i++)
            pow*=n;
    else if(p<0) // 第一段代码有else,第二段代码无
        pow=1/power(n,-p);

    else if(n!=0) // 第一段代码有else,第二段代码无
        pow=1;
    else
        pow=1/n;
    return pow;

}
2017-07-25 15:17
songlk
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2017-7-11
收藏
得分:0 
回复 5楼 rjsp
嗯抱歉,我没有意识到要加标注,只是简单的描述了一下,那能不能告诉我两段代码之前的区别呢?
2017-07-25 15:27
sc916054340
Rank: 2
来 自:陕西
等 级:论坛游民
帖 子:9
专家分:24
注 册:2016-6-22
收藏
得分:0 
    //得明白if-else互斥的关系(条件为真执行if语句,条件为假执行else语句),还有对应关系
    double power(double n,int p)
    {
        double pow=1;
        int i;
        //if-else if-else语句
        if(p>0)
            for(i=1;i<=p;i++)
                pow*=n;
        else if(p<0)         
            pow=1/power(n,-p);
   
        else if(n!=0)
            pow=1;
        else                 //p=0   
            pow=1/n;
        return pow;
   
    }
   
    double power(double n,int p)
    {
        double pow=1;
        int i;
        if(p>0)
            for(i=1;i<=p;i++)
                pow*=n;
        if(p<0)
            pow=1/power(n,-p);
   
        if(n!=0)
            pow=1;
        else               //n=0    这里的else对应的是if(n!=0),只有n=0一种情况;
            pow=1/n;          //n=0    可以在分母吗?
        return pow;
   
    }
    return pow;

[此贴子已经被作者于2017-7-26 11:15编辑过]


现在的刀枪不入,
是因为曾经的万箭穿心!
2017-07-26 10:37
sc916054340
Rank: 2
来 自:陕西
等 级:论坛游民
帖 子:9
专家分:24
注 册:2016-6-22
收藏
得分:0 
//第二段程序中,if-else语句逻辑是不是出现了问题,改为:
        if(n==0)
            pow=1;
        else               //n!=0
            pow=1/n;        //当n!=0时,pow=1/n;
        return pow;


[此贴子已经被作者于2017-7-26 11:14编辑过]


现在的刀枪不入,
是因为曾经的万箭穿心!
2017-07-26 10:48
songlk
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2017-7-11
收藏
得分:0 
回复 8楼 sc916054340
程序的目的是为了计算整数的幂,幂可以为正负数,所以你帮忙改的不太对,只能算整数幂好像,我就是搞不懂if if连用和if else if的区别,因为我第一段程序使用if else if可以达到目的,但是我第二段 if if连用就不能,结果好像总是1。我那个if(n==0)的情况就是想让它无意义,因为0的0次幂无意义,不过还是谢谢你了
2017-07-27 11:58
danielxiang
Rank: 2
等 级:论坛游民
帖 子:8
专家分:22
注 册:2017-7-27
收藏
得分:10 
我帮你按照你的两个思路画了两个流程图  相信你自己带着数字按照我这个流程图测试走下去应该就知道错在什么地方了

图片附件: 游客没有浏览图片的权限,请 登录注册


你看哈 正确的那个最后返回的是各种各样的pow值,错误的那个返回的pow值只能是1或者1/n


[此贴子已经被作者于2017-7-27 16:26编辑过]

2017-07-27 16:17
快速回复:有个关于if的问题
数据加载中...
 
   



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

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