问题描述
- 我写的代码有什么错?求解释
- 对于问题:给定a和n,计算a+aa+aaa+aaaa+...+a...a(n个a) 的和。我写的用C写的代码如下:
#include
#include
int f(int iint a);
int main(){
int an;
long sum;
scanf(""%d%d""&a&n);
for(int i=1sum=0;i<=n;i++){
sum+=f(ia); //对于i的每次循环,调用f函数
}
printf(""%ld""sum);
return 0;
}
//对于i变量,求出a*11...11(i个1)
int f(int iint a){ //例如当i=4
int j;
for(j=0;i>=1;i--){
j+=pow(10i-1); //当i=4时,则有j=10^3+10^2+10^1+10^0=1111,正好是4个1
}
return a*j; //返回a*1111}
请问各位大神,我错哪了
解决方案
for(j=0;i>=1;i--) 这里有问题,改成for(j=0;j>=1;j--)
解决方案二:
在这里,j起到的是一个累计的作用,类似于sum,所以要初始化成0........并且要是按你说的改成for(j=0;j>=1;j--),j本来就等于0,还自减,不可能会满足判断条件j>=1的........
解决方案三:
类型不匹配吧。pow() 的参数、返回值都是 double。
解决方案四:
不怕超出int范围吗?
解决方案五:
这个代码肯定不行的,只能用数组存每一位,不然很容易溢出
时间: 2025-01-24 20:45:17