查看原文
其他

C语言每日一练(015)

点击上方「嵌入式大杂烩」,选择「置顶公众号」第一时间阅读编程笔记!

题目

求s=a+aa+aaa+aaaa+aa...a的值,其中 a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

代码

方法一

  1. #include <stdio.h>


  2. int main(void)

  3. {

  4. int a, n, count = 1;

  5. long int sn = 0, tn = 0;

  6. printf("please input a and n\n");

  7. scanf("%d %d", &a, &n);

  8. printf("a = %d, n = %d\n", a, n);

  9. while ( count <= n )

  10. {

  11. tn = tn + a;

  12. sn = sn + tn;

  13. a = a*10;

  14. ++count;

  15. }

  16. printf("a+aa+...=%ld\n", sn);


  17. return 0;

  18. }

方法二(运用递归)

  1. #include <stdio.h>


  2. int f(int n, int a);


  3. int main(void)

  4. {

  5. int n = 0, a = 0, sn = 0, i =0;

  6. printf("Please a and n\n");

  7. scanf("%d %d", &a, &n);

  8. printf("a = %d, n = %d\n", a, n);

  9. for(i = 1; i <= n; i++)

  10. {

  11. sn += f(i, a);

  12. }

  13. printf("sn = %d\n", sn);


  14. return 0;

  15. }


  16. int f(int n, int a)

  17. {

  18. if(n==1)

  19. return a;

  20. return f(n-1, a)*10 + a;

  21. }

解析:方法一和方法二的思路基本相同,都是要找出通项公式,即后一项总等于前一项乘以10在加上前一项,如 aa=a*10+a

运行结果

转发、点在看就是对小编最大的支持!


我的个人博客

zhengnianli.github.io


猜你喜欢

C语言每日一练(010)

C语言每日一练(011)

C语言每日一练(012)

C语言每日一练(013)

C语言每日一练(014)


聊天界面输入m获取往期笔记目录


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存