当前位置:C++技术网 > 资讯 > 习题讲解:3 关于c primer plus 第六版第六章编程练习第12题

习题讲解:3 关于c primer plus 第六版第六章编程练习第12题

更新时间:2017-05-04 23:16:58浏览次数:1+次

 您好:

请问怎样才能做到可以让用户循环输入指定的次数呢

我的做法如下,显然得不到想要的结果

#include <stdio.h>
int main()
{
double sum1, sum2;
sum1 = 0;
sum2 = 0;
int item,sign,count;
scanf("%d", &item);
for (count = 1, sign = 1; count <= item;count++, sign *= -1)
{
sum1 += 1.0 / (count);
sum2 += 1.0*sign/ (count);
printf("1.0+1.0/2.0+1.0/3.0+1.0/4.0+........=%f\n", sum1);
printf("1.0-1.0/2.0+1.0/3.0-1.0/4.0+........=%f\n", sum2);
scanf("%d", &item);
}
return 0;
}



C++技术网会员解答:

    您好,感谢您对C++技术网的支持与信任。

    这类问题,很容易绕晕。所以首先非常重要的是,理清其中的思路。我们可以像语文中断句一样来断句,进而来拆分逻辑。否则多层循环、递归等问题,就很容易绕进去。对于这样的问题,记住,一定要冷静,理清思路是关键。代码写起来反而是很简单的。

    描述:让用户循环输入指定的次数。

    拆解:循环输入 + 输入指定次数 + 每次执行一个动作(功能)

    解释:循环输入可以得到一次循环。然后在这个循环中执行了一个动作,也就是指定次数。然后这个次数就是用来执行一个循环的。在这个循环中,执行另外的动作,也就是计算数字的和。

    从上面的解释我们就有了清晰的思路,在一个外层循环,指定一个次数。这个次数是作为里层循环的循环次数。而这个循环次数,则是用来计算数字的和的。所以里层循环是实际执行功能的循环。外层循环是用来控制里层循环的运转的。

    我们可以形象的将外层循环称为控制循环,将里层循环称为功能循环。这种模式非常常见,所以还需要多熟悉熟悉。在今后的开发中,还会出现多层控制循环,比如四层循环中,最外三层都是控制循环,最里面一层循环才是功能循环。或者最外两层循环是控制循环,最里面两层循环是功能循环。

    控制循环是用来控制流程的,功能循环是用来实现具体的功能点的计算。控制循环可以将里层的功能循环的计算结果汇总。或者多层循环可以逐层的汇总结果。

    所以,你在for循环外加一个while循环,可以不停的控制输入内层循环的次数。然后内层循环计算结果。不要在内层循环输入循环的次数,否则产生了循环混乱。因为在内存循环的次数中,还修改循环的次数,很可能永远都会循环下去。

    代码改为这样的,请参考:

#include <stdio.h>
int main()
{
    double sum1, sum2;
    sum1 = 0;
    sum2 = 0;
    int item,sign,count;
    while(true)
    {
        scanf("%d", &item);
        for (count = 1, sign = 1; count <= item;count++, sign *= -1)
        {
            sum1 += 1.0 / (count);
            sum2 += 1.0*sign/ (count);
            printf("1.0+1.0/2.0+1.0/3.0+1.0/4.0+........=%f\n", sum1);
            printf("1.0-1.0/2.0+1.0/3.0-1.0/4.0+........=%f\n", sum2);
        }
    }
    return 0;
}

    多层循环需要多练习体会,然后就熟悉了。