/*
求Sn=a+aa+aaa+aa...a(n个a),其中a是一个数字,n表示a的位数,n由键盘输入
*/
#include<stdio.h>
#include<math.h>
int main()
{
int Sn=0,a,n,i;
printf("输入a、n的值:\n");
scanf("%d%d",&a,&n);
for(i=1;i<=n;i++)
{
a=(pow((float)10,i)-1.0)/9.0*a;
Sn+=a;
}
printf("Sn=%d",Sn);
return 0;
}
运行结果:输入2_1,2_2时,Sn=2和Sn=4(正确的),输入2_3,Sn=2466,输入2_4,Sn=2715528(之后都是错误的)
书上的方法是用a*10,然后不断循环,我想用pow函数,但是就出现上述问题。求解。
#include<stdio.h>
#include<math.h>
int main()
{
int a,t,n,i;
printf("输入a、n的值:\n");
scanf("%d%d",&a,&n);
double Sn=0.0;
for(i=1;i<=n;i++)
{
a=(pow(10,(float)i)-1.0)/9.0*a;
Sn+=a;
}
printf("Sn=%.0lf",Sn);
return 0;
}
int类型在c语言中是2个字节,你输入的数超出范围了。
我有个思路,也是解决你这个问题的可以给你参考下
#include "stdio.h"
int main()
{
//Sn=a+aa+aaa+aaaa``````
int S,n;
int result,a,b,i;
char ch;
do{
printf("请输入两个整数S与n:");
scanf("%d %d",&S,&n);
for(result=0,a=1,b=0,i=1;i<=n;i++){
b+=S*a;
a*=10;
result+=b;
//printf("result=%d,b=%d\n",result,b);
}
printf("结果为%d\n",result);
fflush(stdin);
printf("输入n结束,任意键继续:");
ch=getchar();
}while(ch!='n');
return 0;
}
您的问题已经有小伙伴解答了,请点击【采纳】按钮,采纳帮您提供解决思路的答案,给回答的人一些鼓励哦~~
ps:开通问答VIP,享受5次/月 有问必答服务,了解详情↓↓↓
【电脑端】戳>>> https://vip.csdn.net/askvip?utm_source=1146287632
【APP 】 戳>>> https://mall.csdn.net/item/52471?utm_source=1146287632
#include<stdio.h>
#include<math.h>
int main()
{
int a,t,n,i;
printf("输入a、n的值:\n");
scanf("%d%d",&a,&n);
double Sn=0.0;
for(i=1;i<=n;i++)
{
t=t*10+a;
Sn+=t;
}
printf("Sn=%.0lf",Sn);
return 0;
}
这个代码,就无误了。