标题:请指点求下面求幂的函数当n<=0时错在哪里
只看楼主
a779521025
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2018-7-12
结帖率:66.67%
已结贴  问题点数:4 回复次数:4 
请指点求下面求幂的函数当n<=0时错在哪里
程序代码:
#include<stdio.h>
int main(void)
{
    double a;
    int n,i;
    double sum;
    printf("请输入底数\n");
    scanf("%lf",&a);
    printf("请输入指数\n");
    scanf("%d",&n);
    if(n>0)
    {
        for(i=0, sum=a; i<n; i++)
            sum=sum*a;
    }
    else if(n=0)
        sum=1;
    else if(n<0)
    {
        for(i=0, sum=a; -i<-n; i++)
            sum=1/(sum*a);
    }
    printf("%lf",sum);
    return 0;
} 

请指导我写的函数错在哪里,感激不尽。
搜索更多相关主题的帖子:  函数 sum printf scanf 
2018-07-18 15:10
青蝶
Rank: 2
等 级:论坛游民
帖 子:160
专家分:51
注 册:2018-2-4
得分:2 
1.n>0的时候,循环计算sum值多乘了一次a。
2.n等于0的时候,‘=’是赋值运算符,判断是否相等应该写成‘==’。
3.n<0的时候,可以先按n>0计算出sum值,最后再让sum=1/sum就行了。

代码:
#include<stdio.h>
int main(void)
{
    double a;
    int n,i;
    double sum;
    printf("请输入底数\n");
    scanf("%lf",&a);
    printf("请输入指数\n");
    scanf("%d",&n);
    if(n>0)
    {
        for(i=1, sum=a; i<n; i++)
            sum=sum*a;
    }
    else if(n==0)     
        sum=1;
    else if(n<0)
    {
        for(i=1, sum=a; -i>n; i++)
            sum=sum*a;
        sum=1/sum;
    }
    printf("%lf",sum);
    return 0;
}
   
2018-07-18 15:28
kfyniriu
Rank: 6Rank: 6
等 级:侠之大者
威 望:9
帖 子:105
专家分:426
注 册:2018-7-6
得分:2 
for(i=1, sum=a; -i>n; i++)
            sum=sum*a;
        sum=1/sum;

应该是:

 for(i=1, sum=a; -i>=n; i++)
        sum=1/(sum*a);
2018-07-19 09:20
青蝶
Rank: 2
等 级:论坛游民
帖 子:160
专家分:51
注 册:2018-2-4
得分:0 
回复 3楼 kfyniriu
sum是从等于a开始的,需要再循环n-1次就行了,不是n次。
2018-07-19 15:27
kfyniriu
Rank: 6Rank: 6
等 级:侠之大者
威 望:9
帖 子:105
专家分:426
注 册:2018-7-6
得分:0 
回复 4楼 青蝶
多谢指正
2018-07-19 16:47



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-488667-1-1.html




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

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