| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 290 人关注过本帖
标题:请指点求下面求幂的函数当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;
}

请指导我写的函数错在哪里,感激不尽。
2018-07-18 15:10
青蝶
Rank: 2
等 级:论坛游民
帖 子:144
专家分: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: 5Rank: 5
等 级:职业侠客
威 望:7
帖 子:97
专家分:367
注 册: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
等 级:论坛游民
帖 子:144
专家分:51
注 册:2018-2-4
  得分:0 
回复 3楼 kfyniriu
sum是从等于a开始的,需要再循环n-1次就行了,不是n次。
2018-07-19 15:27
kfyniriu
Rank: 5Rank: 5
等 级:职业侠客
威 望:7
帖 子:97
专家分:367
注 册:2018-7-6
  得分:0 
回复 4楼 青蝶
多谢指正
2018-07-19 16:47







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

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