用c语言对特殊字符串a的求和

题目易错解析

如题用C语言求特殊字符串a,s=a+aa+aaa+aaaa+aaaa+.........(n个)a的和。这里第一次写到这个题目会让人误以为是a+a*a+a*a*a.....的和,其实不是的。其实是s=a+a*10+a+a*10*10+a......。什么意思呢,举个例子,假设a被赋值为2则s=2+22+222+2222.......依次类推。

解题思路

那要解这类题目,首先不难想到需要用到for循环,那么再用for 循环之前先找找这些数字的规律,我们还是用2举例子,你就会发现22可以拆分为2*10的一次方加2,222可以拆分为2*10的2次方加上22,那么2就可以看作是2*10的0次方加上0,那么规律就出来了,就是所谓的2*10的次方加上前面的数字。这样我们循环体的内容就可以确定了。

接下来我们来写这个程序,1,首先需要定义需要的变量,我们设它为整形

2,运用scanf函数让用户进行输入。

3,设置循环条件,循环体内容。

4,用printf函数输出求和结果。

注意事项:本题需要用到数学指数函数,因此需要报一个<math.h>的头文件。

敲代码

完整代码如下。楼主是一个新人,请多担待,有错误在评论区里指出来,我会认真纠正,欢迎大家讨论。

#include<stdio.h>
#include<math.h>    /*报数学头文件*/
int main()
{
	int j = 0, k = 0, s = 0, s1 = 0,s2=0;    /*定义需要的变量*/
	scanf(" %d %d", &j, &k);    /*输入数值*/
	for (int i = 0; i < k; i++)
	{
		s = j * pow(10, i);   /*pow是指数函数,用法pow(底数,指数)*/
		s1 += s;              /*求出当前循环次数的数*/
		s2 += s1;            /*求出当前循环次数的数与上一次数的和*/
	}
	printf("s=%d", s2);


		return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值