C语言每日一练(015)
点击上方「嵌入式大杂烩」,选择「置顶公众号」第一时间阅读编程笔记!
题目
求s=a+aa+aaa+aaaa+aa...a的值,其中 a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
代码
方法一
#include <stdio.h>
int main(void)
{
int a, n, count = 1;
long int sn = 0, tn = 0;
printf("please input a and n\n");
scanf("%d %d", &a, &n);
printf("a = %d, n = %d\n", a, n);
while ( count <= n )
{
tn = tn + a;
sn = sn + tn;
a = a*10;
++count;
}
printf("a+aa+...=%ld\n", sn);
return 0;
}
方法二(运用递归)
#include <stdio.h>
int f(int n, int a);
int main(void)
{
int n = 0, a = 0, sn = 0, i =0;
printf("Please a and n\n");
scanf("%d %d", &a, &n);
printf("a = %d, n = %d\n", a, n);
for(i = 1; i <= n; i++)
{
sn += f(i, a);
}
printf("sn = %d\n", sn);
return 0;
}
int f(int n, int a)
{
if(n==1)
return a;
return f(n-1, a)*10 + a;
}
解析:方法一和方法二的思路基本相同,都是要找出通项公式,即后一项总等于前一项乘以10在加上前一项,如 aa=a*10+a
。
运行结果
转发、点在看就是对小编最大的支持!
我的个人博客
zhengnianli.github.io
猜你喜欢
聊天界面输入m获取往期笔记目录