C 练习实例18
题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
程序分析:关键是计算出每一项的值。
实例
// Created by study.p2hp.com on 15/11/9.
// Copyright © 2015年 高手教程. All rights reserved.
//
#include<stdio.h>
int main()
{
int s=0,a,n,t;
printf("请输入 a 和 n:\n");
scanf("%d%d",&a,&n);
t=a;
while(n>0)
{
s+=t;
a=a*10;
t+=a;
n--;
}
printf("a+aa+...=%d\n",s);
return 0;
}
以上实例输出结果为:
请输入 a 和 n: 2 5 a+aa+...=24690
C 语言经典100例



Juanjuan
m18***100031@163.com
参考方法:
#include<stdio.h> #include<math.h> int main() { int i, a, n, sum=0; printf("请输入 a 和 n:\n"); scanf("%d%d", &a, &n); for(i=0; i<n; i++) { sum += a*pow(10, i)*(n-i); } printf("sum is %d\n", sum); return 0; }Juanjuan
m18***100031@163.com
Zayn
267***5830@qq.com
参考代码:
思路:利用了数列的一些找规律的方法
#include<stdio.h> #include<math.h> //将计算过程分到了两个函数,其实可以合并,很简单 double f16_step1(int number,int n){ int i=0; double temp1=number/9.0;//计算中间转换分数 double temp2=(pow(10,n)-1)*temp1; printf("%lf\t",temp2); return temp2; } void f16_step2(int number,int n){ int i; double sum=0; for(i=1;i<=n;i++){ sum+=f16_step1(number,i); } printf("sum=%lf\n",sum); } //在主函数中调用f16_step2()即可,修改一下输入和输出,让代码更友好 int main() { f16_step2(2,5); }Zayn
267***5830@qq.com