user-0 提问: 为什么我写的代码不对？求解答

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 引用 21 楼 还没秃顶的景初 的回复:[quote=引用 19 楼 壹抹尘埃 的回复:] [quote=引用 15 楼 还没秃顶的景初 的回复:] [quote=引用 13 楼 壹抹尘埃 的回复:] [quote=引用 9 楼 还没秃顶的景初 的回复:] [quote=引用 5 楼 壹抹尘埃 的回复:] [quote=引用 4 楼 weixin_45501932 的回复:] [quote=引用 1 楼 壹抹尘埃的回复:]#include<stdio.h> #include<math.h> int main() {     int n;     float p, r=0.07;     for(n=1;n<=10;n++)     p=pow((r+1),n);     printf("p=%.2f",p);//%。2f保留两位小数 }  就是那个for循环那还有点懵，求大佬解答。[/quote]  一共十年，每年增长7%。pow()是math.h中定义的计算x的y次幂，也就是计算公式p=(1+r)的n次，循环十次后就是十年后的增加的百分比。[/quote]  我有一点不同的意见哈，就是他这个每年的增长率不是按照去年的来比的么，按照您这个程序不是每年的增长都是以第一年为基数，这不是产生了问题么[/quote] 我也感觉有点不太对，这个题应该不是累加的。直接int n =10； p=pow((r+1),n);[/quote]  我觉得不是累加的问题，而是这个增长率不是按照第一年的算，每年的基数都不一样，是需要区分算的，然后算到第十年，而不是把所有基数都看成第一年的基数 [/quote] 题中的P是以现在相比的倍数，现在也就是说是第一年。而不是所理解的第二年，第三年。[/quote] 答案求的p是对比第一年的，但是增长率不是对比第一年的不是么[/quote] 我刚开始也是这么想的。实际上他这个公式已经给了，写的很清楚了。只要知道是第几年的，还有年增长率直接带入求即可。

user: user-3
content: 引用 20 楼 壹抹尘埃 的回复:公式为p=(1+r)的n次，r为年增长率，n为年数，p为与现在相比的倍数。题目中公式已经给的很明白了，没必要想的那么多了。好叭，那这样的话就不用循环直接求（1+r）的十次方就可以了

user: user-3
content: 引用 19 楼 壹抹尘埃 的回复:[quote=引用 15 楼 还没秃顶的景初 的回复:] [quote=引用 13 楼 壹抹尘埃 的回复:] [quote=引用 9 楼 还没秃顶的景初 的回复:] [quote=引用 5 楼 壹抹尘埃 的回复:] [quote=引用 4 楼 weixin_45501932 的回复:] [quote=引用 1 楼 壹抹尘埃的回复:]#include<stdio.h> #include<math.h> int main() {     int n;     float p, r=0.07;     for(n=1;n<=10;n++)     p=pow((r+1),n);     printf("p=%.2f",p);//%。2f保留两位小数 }  就是那个for循环那还有点懵，求大佬解答。[/quote]  一共十年，每年增长7%。pow()是math.h中定义的计算x的y次幂，也就是计算公式p=(1+r)的n次，循环十次后就是十年后的增加的百分比。[/quote]  我有一点不同的意见哈，就是他这个每年的增长率不是按照去年的来比的么，按照您这个程序不是每年的增长都是以第一年为基数，这不是产生了问题么[/quote] 我也感觉有点不太对，这个题应该不是累加的。直接int n =10； p=pow((r+1),n);[/quote]  我觉得不是累加的问题，而是这个增长率不是按照第一年的算，每年的基数都不一样，是需要区分算的，然后算到第十年，而不是把所有基数都看成第一年的基数 [/quote] 题中的P是以现在相比的倍数，现在也就是说是第一年。而不是所理解的第二年，第三年。[/quote] 答案求的p是对比第一年的，但是增长率不是对比第一年的不是么

user: user-2
content: 公式为p=(1+r)的n次，r为年增长率，n为年数，p为与现在相比的倍数。题目中公式已经给的很明白了，没必要想的那么多了。

user: user-2
content: 引用 15 楼 还没秃顶的景初 的回复:[quote=引用 13 楼 壹抹尘埃 的回复:] [quote=引用 9 楼 还没秃顶的景初 的回复:] [quote=引用 5 楼 壹抹尘埃 的回复:] [quote=引用 4 楼 weixin_45501932 的回复:] [quote=引用 1 楼 壹抹尘埃的回复:]#include<stdio.h> #include<math.h> int main() {     int n;     float p, r=0.07;     for(n=1;n<=10;n++)     p=pow((r+1),n);     printf("p=%.2f",p);//%。2f保留两位小数 }  就是那个for循环那还有点懵，求大佬解答。[/quote]  一共十年，每年增长7%。pow()是math.h中定义的计算x的y次幂，也就是计算公式p=(1+r)的n次，循环十次后就是十年后的增加的百分比。[/quote]  我有一点不同的意见哈，就是他这个每年的增长率不是按照去年的来比的么，按照您这个程序不是每年的增长都是以第一年为基数，这不是产生了问题么[/quote] 我也感觉有点不太对，这个题应该不是累加的。直接int n =10； p=pow((r+1),n);[/quote]  我觉得不是累加的问题，而是这个增长率不是按照第一年的算，每年的基数都不一样，是需要区分算的，然后算到第十年，而不是把所有基数都看成第一年的基数 [/quote] 题中的P是以现在相比的倍数，现在也就是说是第一年。而不是所理解的第二年，第三年。

user: user-0
content: 引用 15 楼 还没秃顶的景初的回复:[quote=引用 13 楼 壹抹尘埃 的回复:] [quote=引用 9 楼 还没秃顶的景初 的回复:] [quote=引用 5 楼 壹抹尘埃 的回复:] [quote=引用 4 楼 weixin_45501932 的回复:] [quote=引用 1 楼 壹抹尘埃的回复:]#include<stdio.h> #include<math.h> int main() {     int n;     float p, r=0.07;     for(n=1;n<=10;n++)     p=pow((r+1),n);     printf("p=%.2f",p);//%。2f保留两位小数 }  就是那个for循环那还有点懵，求大佬解答。[/quote]  一共十年，每年增长7%。pow()是math.h中定义的计算x的y次幂，也就是计算公式p=(1+r)的n次，循环十次后就是十年后的增加的百分比。[/quote]  我有一点不同的意见哈，就是他这个每年的增长率不是按照去年的来比的么，按照您这个程序不是每年的增长都是以第一年为基数，这不是产生了问题么[/quote] 我也感觉有点不太对，这个题应该不是累加的。直接int n =10； p=pow((r+1),n);[/quote]  我觉得不是累加的问题，而是这个增长率不是按照第一年的算，每年的基数都不一样，是需要区分算的，然后算到第十年，而不是把所有基数都看成第一年的基数 [/quote] 你写下代码程序我看看

user: user-2
content: 引用 14 楼 还没秃顶的景初 的回复:[quote=引用 10 楼 weixin_45501932 的回复:] [quote=引用 8 楼 还没秃顶的景初的回复:]我觉得楼上的回答有一点的问题，因为每年都是按照去年来做增长的，不是按照第一年来做增长，所以P的值每次也需要改变 题中给公式了，最后输出10年后的增长比就行吧。[/quote] 就假设说，第一年是1，增长率是100%，第二年就是2了对吧，但是第二年增长率也是100%的话，第三年就应该是4了。而不是3[/quote] 很明显是最初的时候想多了，没必要用for循环。这个只是跟第一年比所增长的百分比。

user: user-0
content: 引用 13 楼 壹抹尘埃的回复:[quote=引用 9 楼 还没秃顶的景初 的回复:] [quote=引用 5 楼 壹抹尘埃 的回复:] [quote=引用 4 楼 weixin_45501932 的回复:] [quote=引用 1 楼 壹抹尘埃的回复:]#include<stdio.h> #include<math.h> int main() {     int n;     float p, r=0.07;     for(n=1;n<=10;n++)     p=pow((r+1),n);     printf("p=%.2f",p);//%。2f保留两位小数 }  就是那个for循环那还有点懵，求大佬解答。[/quote]  一共十年，每年增长7%。pow()是math.h中定义的计算x的y次幂，也就是计算公式p=(1+r)的n次，循环十次后就是十年后的增加的百分比。[/quote]  我有一点不同的意见哈，就是他这个每年的增长率不是按照去年的来比的么，按照您这个程序不是每年的增长都是以第一年为基数，这不是产生了问题么[/quote] 我也感觉有点不太对，这个题应该不是累加的。直接int n =10； p=pow((r+1),n);[/quote] 是，就是这样，去掉for循环。要求的是10年后我国国民生产总值与现在相比增长多少百分比

user: user-3
content: 引用 13 楼 壹抹尘埃 的回复:[quote=引用 9 楼 还没秃顶的景初 的回复:] [quote=引用 5 楼 壹抹尘埃 的回复:] [quote=引用 4 楼 weixin_45501932 的回复:] [quote=引用 1 楼 壹抹尘埃的回复:]#include<stdio.h> #include<math.h> int main() {     int n;     float p, r=0.07;     for(n=1;n<=10;n++)     p=pow((r+1),n);     printf("p=%.2f",p);//%。2f保留两位小数 }  就是那个for循环那还有点懵，求大佬解答。[/quote]  一共十年，每年增长7%。pow()是math.h中定义的计算x的y次幂，也就是计算公式p=(1+r)的n次，循环十次后就是十年后的增加的百分比。[/quote]  我有一点不同的意见哈，就是他这个每年的增长率不是按照去年的来比的么，按照您这个程序不是每年的增长都是以第一年为基数，这不是产生了问题么[/quote] 我也感觉有点不太对，这个题应该不是累加的。直接int n =10； p=pow((r+1),n);[/quote]  我觉得不是累加的问题，而是这个增长率不是按照第一年的算，每年的基数都不一样，是需要区分算的，然后算到第十年，而不是把所有基数都看成第一年的基数

user: user-3
content: 引用 10 楼 weixin_45501932 的回复:[quote=引用 8 楼 还没秃顶的景初的回复:]我觉得楼上的回答有一点的问题，因为每年都是按照去年来做增长的，不是按照第一年来做增长，所以P的值每次也需要改变 题中给公式了，最后输出10年后的增长比就行吧。[/quote] 就假设说，第一年是1，增长率是100%，第二年就是2了对吧，但是第二年增长率也是100%的话，第三年就应该是4了。而不是3

user: user-2
content: 引用 9 楼 还没秃顶的景初 的回复:[quote=引用 5 楼 壹抹尘埃 的回复:] [quote=引用 4 楼 weixin_45501932 的回复:] [quote=引用 1 楼 壹抹尘埃的回复:]#include<stdio.h> #include<math.h> int main() {     int n;     float p, r=0.07;     for(n=1;n<=10;n++)     p=pow((r+1),n);     printf("p=%.2f",p);//%。2f保留两位小数 }  就是那个for循环那还有点懵，求大佬解答。[/quote]  一共十年，每年增长7%。pow()是math.h中定义的计算x的y次幂，也就是计算公式p=(1+r)的n次，循环十次后就是十年后的增加的百分比。[/quote]  我有一点不同的意见哈，就是他这个每年的增长率不是按照去年的来比的么，按照您这个程序不是每年的增长都是以第一年为基数，这不是产生了问题么[/quote] 我也感觉有点不太对，这个题应该不是累加的。直接int n =10； p=pow((r+1),n);

user: user-3
content: 引用 10 楼 weixin_45501932 的回复:[quote=引用 8 楼 还没秃顶的景初的回复:]我觉得楼上的回答有一点的问题，因为每年都是按照去年来做增长的，不是按照第一年来做增长，所以P的值每次也需要改变 题中给公式了，最后输出10年后的增长比就行吧。[/quote] 是这样没错，但是题目中要求的是十年以后对比十年前的增长比率，但是每年的增长比率都是按照去年来算，按照上面题解来说都是按照第一年来算，这样不是会产生问题么

user: user-0
content: 引用 8 楼 还没秃顶的景初的回复:我觉得楼上的回答有一点的问题，因为每年都是按照去年来做增长的，不是按照第一年来做增长，所以P的值每次也需要改变 题中给公式了，最后输出10年后的增长比就行吧。

user: user-3
content: 引用 5 楼 壹抹尘埃 的回复:[quote=引用 4 楼 weixin_45501932 的回复:] [quote=引用 1 楼 壹抹尘埃的回复:]#include<stdio.h> #include<math.h> int main() {     int n;     float p, r=0.07;     for(n=1;n<=10;n++)     p=pow((r+1),n);     printf("p=%.2f",p);//%。2f保留两位小数 }  就是那个for循环那还有点懵，求大佬解答。[/quote]  一共十年，每年增长7%。pow()是math.h中定义的计算x的y次幂，也就是计算公式p=(1+r)的n次，循环十次后就是十年后的增加的百分比。[/quote]  我有一点不同的意见哈，就是他这个每年的增长率不是按照去年的来比的么，按照您这个程序不是每年的增长都是以第一年为基数，这不是产生了问题么

user: user-0
content: 引用 5 楼 壹抹尘埃的回复:[quote=引用 4 楼 weixin_45501932 的回复:] [quote=引用 1 楼 壹抹尘埃的回复:]#include<stdio.h> #include<math.h> int main() {     int n;     float p, r=0.07;     for(n=1;n<=10;n++)     p=pow((r+1),n);     printf("p=%.2f",p);//%。2f保留两位小数 }  就是那个for循环那还有点懵，求大佬解答。[/quote]  一共十年，每年增长7%。pow()是math.h中定义的计算x的y次幂，也就是计算公式p=(1+r)的n次，循环十次后就是十年后的增加的百分比。[/quote] 好的，懂了，感谢大佬。

user: user-0
content: 我用int n=10; p=pow((1+r),n-1)输出后的结果是1.84和用for循环求出来的结果不一样是为啥？

user: user-2
content: 引用 4 楼 weixin_45501932 的回复:[quote=引用 1 楼 壹抹尘埃的回复:]#include<stdio.h> #include<math.h> int main() {     int n;     float p, r=0.07;     for(n=1;n<=10;n++)     p=pow((r+1),n);     printf("p=%.2f",p);//%。2f保留两位小数 }  就是那个for循环那还有点懵，求大佬解答。[/quote]  一共十年，每年增长7%。pow()是math.h中定义的计算x的y次幂，也就是计算公式p=(1+r)的n次，循环十次后就是十年后的增加的百分比。

user: user-0
content: 引用 1 楼 壹抹尘埃的回复:#include<stdio.h> #include<math.h> int main() {     int n;     float p, r=0.07;     for(n=1;n<=10;n++)     p=pow((r+1),n);     printf("p=%.2f",p);//%。2f保留两位小数 }  就是那个for循环那还有点懵，求大佬解答。

user: user-0
content: 好的，知道了，感谢。